diff --git a/Dockerfile-nts-alpine b/Dockerfile-nts-alpine index 2c59de46..56c5462f 100644 --- a/Dockerfile-nts-alpine +++ b/Dockerfile-nts-alpine @@ -13,6 +13,19 @@ RUN git fetch \ cp "$EXTENSION_DIR/uv.so" /uv.so RUN sha256sum /uv.so +## Build ext-meminfo +FROM php:7.4-cli-alpine3.11 AS build-meminfo +RUN apk update && \ + apk add --no-cache $PHPIZE_DEPS git libuv-dev && \ + git clone https://github.com/BitOne/php-meminfo.git +WORKDIR /php-meminfo/extension/php7 +RUN phpize +RUN ./configure --enable-meminfo +RUN make install +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` && \ + cp "$EXTENSION_DIR/meminfo.so" /meminfo.so +RUN sha256sum /meminfo.so + FROM php:7.4-cli-alpine3.11 AS nts-root # Build-time metadata as defined at http://label-schema.org @@ -85,7 +98,15 @@ RUN touch /.you-are-in-a-wyrihaximus.net-php-docker-image-dev # Install docker help scripts COPY src/php/utils/docker/alpine/ /usr/local/bin/ -RUN apk add --no-cache \ +# Copy in meminfo extension +RUN true +COPY --from=build-meminfo /meminfo.so /meminfo.so +RUN true + +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` \ + && mv /*.so "$EXTENSION_DIR/" \ + && docker-php-ext-enable meminfo\ + && apk add --no-cache \ make \ git \ openssh-client \ diff --git a/Dockerfile-nts-debian b/Dockerfile-nts-debian index aa97db71..48f1707f 100644 --- a/Dockerfile-nts-debian +++ b/Dockerfile-nts-debian @@ -13,6 +13,19 @@ RUN git fetch \ cp "$EXTENSION_DIR/uv.so" /uv.so RUN sha256sum /uv.so +## Build ext-meminfo +FROM php:7.4-zts-buster AS build-meminfo +RUN apt-get update && \ + yes | apt-get install $PHPIZE_DEPS git && \ + git clone https://github.com/BitOne/php-meminfo.git +WORKDIR /php-meminfo/extension/php7 +RUN phpize +RUN ./configure --enable-meminfo +RUN make install +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` && \ + cp "$EXTENSION_DIR/meminfo.so" /meminfo.so +RUN sha256sum /meminfo.so + FROM php:7.4-cli-buster AS nts-root # Build-time metadata as defined at http://label-schema.org @@ -95,7 +108,15 @@ RUN touch /.you-are-in-a-wyrihaximus.net-php-docker-image-dev # Install docker help scripts COPY src/php/utils/docker/ /usr/local/bin/ -RUN apt-get update \ +# Copy in meminfo extension +RUN true +COPY --from=build-meminfo /meminfo.so /meminfo.so +RUN true + +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` \ + && mv /*.so "$EXTENSION_DIR/" \ + && docker-php-ext-enable meminfo \ + && apt-get update \ && yes | apt-get install \ make \ git \ diff --git a/Dockerfile-zts-alpine b/Dockerfile-zts-alpine index 8f6a220d..32a3c7d9 100644 --- a/Dockerfile-zts-alpine +++ b/Dockerfile-zts-alpine @@ -13,6 +13,19 @@ RUN git fetch \ cp "$EXTENSION_DIR/uv.so" /uv.so RUN sha256sum /uv.so +## Build ext-meminfo +FROM php:7.4-zts-alpine3.11 AS build-meminfo +RUN apk update && \ + apk add --no-cache $PHPIZE_DEPS git libuv-dev && \ + git clone https://github.com/BitOne/php-meminfo.git +WORKDIR /php-meminfo/extension/php7 +RUN phpize +RUN ./configure --enable-meminfo +RUN make install +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` && \ + cp "$EXTENSION_DIR/meminfo.so" /meminfo.so +RUN sha256sum /meminfo.so + FROM php:7.4-zts-alpine3.11 AS zts-root # Build-time metadata as defined at http://label-schema.org @@ -92,7 +105,15 @@ RUN touch /.you-are-in-a-wyrihaximus.net-php-docker-image-dev # Install docker help scripts COPY src/php/utils/docker/alpine/ /usr/local/bin/ -RUN apk add --no-cache \ +# Copy in meminfo extension +RUN true +COPY --from=build-meminfo /meminfo.so /meminfo.so +RUN true + +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` \ + && mv /*.so "$EXTENSION_DIR/" \ + && docker-php-ext-enable meminfo \ + && apk add --no-cache \ make \ git \ openssh-client \ diff --git a/Dockerfile-zts-debian b/Dockerfile-zts-debian index 37f52b05..77014b12 100644 --- a/Dockerfile-zts-debian +++ b/Dockerfile-zts-debian @@ -27,6 +27,19 @@ RUN git fetch \ cp "$EXTENSION_DIR/uv.so" /uv.so RUN sha256sum /uv.so +## Build ext-meminfo +FROM php:7.4-zts-buster AS build-meminfo +RUN apt-get update && \ + yes | apt-get install $PHPIZE_DEPS git && \ + git clone https://github.com/BitOne/php-meminfo.git +WORKDIR /php-meminfo/extension/php7 +RUN phpize +RUN ./configure --enable-meminfo +RUN make install +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` && \ + cp "$EXTENSION_DIR/meminfo.so" /meminfo.so +RUN sha256sum /meminfo.so + FROM php:7.4-zts-buster AS zts-root # Build-time metadata as defined at http://label-schema.org @@ -111,7 +124,15 @@ RUN touch /.you-are-in-a-wyrihaximus.net-php-docker-image-dev # Install docker help scripts COPY src/php/utils/docker/ /usr/local/bin/ -RUN apt-get update \ +# Copy in meminfo extension +RUN true +COPY --from=build-meminfo /meminfo.so /meminfo.so +RUN true + +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` \ + && mv /*.so "$EXTENSION_DIR/" \ + && docker-php-ext-enable meminfo \ + && apt-get update \ && yes | apt-get install \ make \ git \ diff --git a/test/container/functional/meminfo.php b/test/container/functional/meminfo.php new file mode 100644 index 00000000..374da161 --- /dev/null +++ b/test/container/functional/meminfo.php @@ -0,0 +1,23 @@ + Off => Off' in configuration + +@pytest.mark.php_dev +def test_php_meminfo_is_enabled(host): + output = host.run('if [ $(php -v | grep 7.4 | wc -l) != 0 ] ; then php -r "echo(\'meminfo\');"; else php -r "exit(function_exists(\'meminfo_dump\') ? 0 : 255);"; fi') + assert output.rc == 0 + +@pytest.mark.php_no_dev +def test_php_meminfo_is_not_enabled(host): + output = host.run('php -r "exit(function_exists(\'meminfo_dump\') ? 0 : 255);"') + assert output.rc == 255 + +@pytest.mark.php_dev +def test_php_ext_meminfo_is_functional(host): + output = host.run('if [ $(php -v | grep 7.4 | wc -l) != 0 ] ; then php -r "echo(\'meminfo\');"; else php /tests/container/functional/meminfo.php; fi') + assert output.stdout == 'meminfo' + assert output.rc == 0 diff --git a/test/container/test_php_ext.py b/test/container/test_php_ext.py index 0e310286..4e678fde 100644 --- a/test/container/test_php_ext.py +++ b/test/container/test_php_ext.py @@ -20,6 +20,10 @@ def test_gmp_is_loaded(host): def test_iconv_is_loaded(host): assert 'iconv' in host.run('php -m').stdout +@pytest.mark.php_dev +def test_meminfo_is_loaded(host): + assert 'meminfo' in host.run('php -m').stdout + @pytest.mark.php_zts def test_parallel_is_loaded(host): assert 'parallel' in host.run('php -m').stdout