diff --git a/NOTES.md b/NOTES.md index 93962a2e..31f35f94 100644 --- a/NOTES.md +++ b/NOTES.md @@ -79,24 +79,75 @@ GCP_PACKAGE_BUCKET="{your-unique-id}-gcp-php-packages" \ ```bash cd php-docker GCP_PACKAGE_BUCKET={your_unique_id}-gcp-php-packages TAG={custom-tag} GOOGLE_PROJECT_ID=your-project-123456 ./scripts/build_images.sh -``` +``` ## TODO -- Fix Packaging for librabbitmq -- Re-enable all Structure tests - - Fix licensing tests or white list the couple of packages causing an issue -- Re-enable Extension and Custom tests -- The following extensions need updates to be compatible with php8 - - hprose - - lua - - phalcon - - tcpwrap - - v8js -- Sodium is included in 7.4 and 8.0, re-enable tests if necessary -- PhalconTest removed for 8.0, determine if annotation can skip instead -- Determine how to enable lua module for bionic nginx OR determine if using PPA is suitable -- Review Changes/Additions to `package-build/functions.sh` -- Reconfigure travis settings for testing custom build, if necessary -- `VersionTest.php` - - Review changes - - Need to point to custom built artifacts, not ones affiliated with Google. +- Build Process (`php-docker/package-builder`) + - Scripts + - Review Changes/Additions to `functions.sh` + - [x] `download_from_git` - still needed in interim + - Libraries + - [x] Fix Packaging for librabbitmq + - [x] Remove Build of libvips, use bionic version + - Extensions + - References + - [Pagely PHP Versions and Supported Extensions](https://support.pagely.com/hc/en-us/articles/360057574951-PHP-Versions-and-Supported-Extensions-Reference) + - apcu + - [x] Enabled in php8.0 + - apcu_bc + - [x] Obsolete in php8.0 + - cassandra + - [x] Fix invalid symlink for libcassandra.so + - jsond/jsonc + - included natively in 7.4+ + - Sodium + - [ ] Enabled and test in 7.4 and 8.0 + - Phalcon + - Requires v5.0 to be released for php8 support + - [ ] PhalconTest removed for 8.0, determine how to skip/ignore + - php-80 + - [ ] amqp + - [ ] Test + - [x] apcu + - [ ] cassandra + - [ ] hprose + - [ ] lua + - [ ] phalcon + - [ ] stackdriver_debugger + - [ ] Test + - [ ] Submit PR + - [ ] tcpwrap + - [ ] v8js + - [x] vips + - [x] xmlrpc - added as extension + - [x] xsl - part of xml,dom +- Tests + - Structure + - Switched to [container-structure-test](https://github.com/GoogleContainerTools/container-structure-test) + - Fix licensing tests or exclude the couple of packages causing an issue? + - [ ] php-73 + - [ ] php-74 + - [ ] php-80 + - Cannot find the copyright files for the following libraries + - libext2fs `/usr/share/doc/libext2fs/copyright` + - libssl-dev `../libssl1.1/copyright` in `/usr/share/doc/libssl-dev/copyright` + - openssl `../libssl1.1/copyright` in `/usr/share/doc/openssl/copyright` + - Extension + - [ ] php-73 + - [ ] php-74 + - [ ] php-80 + - Legacy Extension + - [ ] php-73 + - [ ] php-74 + - [ ] php-80 + - Custom + - [ ] php-73 + - [ ] php-74 + - [ ] php-80 + - Travis - check_versions + - `VersionTest.php` + - [x] Fix failures when searching for gcp-phpXX packages + - [x] Need to point to custom built artifacts, not ones affiliated with Google. + - [x] Reconfigure travis settings for testing custom build, if necessary +- nginx + - [ ] Determine how to enable `ngx_http_lua_module` for bionic nginx OR determine if using PPA `ondrej/nginx-mainline` is suitable. (*see* `php-base/nginx.conf`) diff --git a/cloudbuild-ubuntu.yaml b/cloudbuild-ubuntu.yaml index 0c59287d..d7d109ea 100644 --- a/cloudbuild-ubuntu.yaml +++ b/cloudbuild-ubuntu.yaml @@ -59,7 +59,7 @@ steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php-test-runner:$_TAG', '.'] dir: cloudbuild-test-runner - waitFor: ['php73-structure'] + waitFor: ['php80-structure'] id: test-runner # base tests @@ -72,7 +72,7 @@ steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php:$_TAG', '.'] dir: php-onbuild - waitFor: ['php73'] + waitFor: ['php80'] id: php-onbuild - name: gcr.io/gcp-runtimes/container-structure-test args: ['test','-i', 'gcr.io/${_GOOGLE_PROJECT_ID}/php:$_TAG', '--config', '/workspace/php-onbuild/php.yaml', '-v', 'debug'] @@ -121,10 +121,10 @@ steps: args: ['run', '--net=nw_$_TAG', '--name=php80-custom', '-d', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-custom:$_TAG'] waitFor: ['php80-custom-build', 'test-network'] id: php80-custom-app - # - name: gcr.io/cloud-builders/docker - # args: ['run', '--net=nw_$_TAG','-v', '/workspace:/workspace', 'gcr.io/${_GOOGLE_PROJECT_ID}/php-test-runner:$_TAG', '/workspace/testapps/php80_custom/tests'] - # waitFor: ['php80-custom-app', 'test-runner'] - # id: php80-custom-test + - name: gcr.io/cloud-builders/docker + args: ['run', '--net=nw_$_TAG','-v', '/workspace:/workspace', 'gcr.io/${_GOOGLE_PROJECT_ID}/php-test-runner:$_TAG', '/workspace/testapps/php80_custom/tests'] + waitFor: ['php80-custom-app', 'test-runner'] + id: php80-custom-test # php74-custom test - name: gcr.io/cloud-builders/docker @@ -139,10 +139,10 @@ steps: args: ['run', '--net=nw_$_TAG', '--name=php74-custom', '-d', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-custom:$_TAG'] waitFor: ['php74-custom-build', 'test-network'] id: php74-custom-app - # - name: gcr.io/cloud-builders/docker - # args: ['run', '--net=nw_$_TAG','-v', '/workspace:/workspace', 'gcr.io/${_GOOGLE_PROJECT_ID}/php-test-runner:$_TAG', '/workspace/testapps/php74_custom/tests'] - # waitFor: ['php74-custom-app', 'test-runner'] - # id: php74-custom-test + - name: gcr.io/cloud-builders/docker + args: ['run', '--net=nw_$_TAG','-v', '/workspace:/workspace', 'gcr.io/${_GOOGLE_PROJECT_ID}/php-test-runner:$_TAG', '/workspace/testapps/php74_custom/tests'] + waitFor: ['php74-custom-app', 'test-runner'] + id: php74-custom-test # php73-custom test - name: gcr.io/cloud-builders/docker @@ -157,82 +157,82 @@ steps: args: ['run', '--net=nw_$_TAG', '--name=php73-custom', '-d', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-custom:$_TAG'] waitFor: ['php73-custom-build', 'test-network'] id: php73-custom-app - # - name: gcr.io/cloud-builders/docker - # args: ['run', '--net=nw_$_TAG','-v', '/workspace:/workspace', 'gcr.io/${_GOOGLE_PROJECT_ID}/php-test-runner:$_TAG', '/workspace/testapps/php73_custom/tests'] - # waitFor: ['php73-custom-app', 'test-runner'] - # id: php73-custom-test - - # # php73-extensions test - # - name: gcr.io/cloud-builders/docker - # args: ['build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', '.'] - # dir: testapps/php73_extensions - # waitFor: ['php-onbuild'] - # id: php73-extensions-build - # - name: gcr.io/cloud-builders/docker - # args: ['run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', 'ls -al; vendor/bin/phpunit'] - # dir: testapps/php73_extensions - # waitFor: ['php73-extensions-build'] - # id: php73-extensions-test - - # # php73-extensions-legacy test - # - name: gcr.io/cloud-builders/docker - # args: ['build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', '.'] - # dir: testapps/php73_extensions_legacy - # waitFor: ['php-onbuild'] - # id: php73-extensions-legacy-build - # - name: gcr.io/cloud-builders/docker - # args: ['run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', 'vendor/bin/phpunit'] - # dir: testapps/php73_extensions_legacy - # waitFor: ['php73-extensions-build'] - # id: php73-extensions-legacy-test + - name: gcr.io/cloud-builders/docker + args: ['run', '--net=nw_$_TAG','-v', '/workspace:/workspace', 'gcr.io/${_GOOGLE_PROJECT_ID}/php-test-runner:$_TAG', '/workspace/testapps/php73_custom/tests'] + waitFor: ['php73-custom-app', 'test-runner'] + id: php73-custom-test + + # php73-extensions test + - name: gcr.io/cloud-builders/docker + args: ['build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', '.'] + dir: testapps/php73_extensions + waitFor: ['php-onbuild'] + id: php73-extensions-build + - name: gcr.io/cloud-builders/docker + args: ['run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', 'vendor/bin/phpunit'] + dir: testapps/php73_extensions + waitFor: ['php73-extensions-build'] + id: php73-extensions-test + + # php73-extensions-legacy test + - name: gcr.io/cloud-builders/docker + args: ['build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', '.'] + dir: testapps/php73_extensions_legacy + waitFor: ['php-onbuild'] + id: php73-extensions-legacy-build + - name: gcr.io/cloud-builders/docker + args: ['run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php73-extensions:$_TAG', 'vendor/bin/phpunit'] + dir: testapps/php73_extensions_legacy + waitFor: ['php73-extensions-legacy-build'] + id: php73-extensions-legacy-test # php74-extensions test - # - name: gcr.io/cloud-builders/docker - # args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', '.' ] - # dir: testapps/php74_extensions - # waitFor: [ 'php-onbuild' ] - # id: php74-extensions-build - # - name: gcr.io/cloud-builders/docker - # args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', 'vendor/bin/phpunit' ] - # dir: testapps/php74_extensions - # waitFor: [ 'php74-extensions-build' ] - # id: php74-extensions-test + - name: gcr.io/cloud-builders/docker + args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', '.' ] + dir: testapps/php74_extensions + waitFor: [ 'php-onbuild' ] + id: php74-extensions-build + - name: gcr.io/cloud-builders/docker + args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', 'vendor/bin/phpunit' ] + dir: testapps/php74_extensions + waitFor: [ 'php74-extensions-build' ] + id: php74-extensions-test # php74-extensions-legacy test - # - name: gcr.io/cloud-builders/docker - # args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', '.' ] - # dir: testapps/php74_extensions_legacy - # waitFor: [ 'php-onbuild' ] - # id: php74-extensions-legacy-build - # - name: gcr.io/cloud-builders/docker - # args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', 'vendor/bin/phpunit' ] - # dir: testapps/php74_extensions_legacy - # waitFor: [ 'php74-extensions-build' ] - # id: php74-extensions-legacy-test - - # php80-extensions test - # - name: gcr.io/cloud-builders/docker - # args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', '.' ] - # dir: testapps/php80_extensions - # waitFor: [ 'php-onbuild' ] - # id: php80-extensions-build - # - name: gcr.io/cloud-builders/docker - # args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', 'testapps/vendor/bin/phpunit' ] - # dir: testapps/php80_extensions - # waitFor: [ 'php80-extensions-build' ] - # id: php80-extensions-test - - # # php80-extensions-legacy test - # - name: gcr.io/cloud-builders/docker - # args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', '.' ] - # dir: testapps/php80_extensions_legacy - # waitFor: [ 'php-onbuild' ] - # id: php80-extensions-legacy-build - # - name: gcr.io/cloud-builders/docker - # args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', 'testapps/vendor/bin/phpunit' ] - # dir: testapps/php80_extensions_legacy - # waitFor: [ 'php80-extensions-build' ] - # id: php80-extensions-legacy-test + - name: gcr.io/cloud-builders/docker + args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', '.' ] + dir: testapps/php74_extensions_legacy + waitFor: [ 'php-onbuild' ] + id: php74-extensions-legacy-build + - name: gcr.io/cloud-builders/docker + args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php74-extensions:$_TAG', 'vendor/bin/phpunit' ] + dir: testapps/php74_extensions_legacy + waitFor: [ 'php74-extensions-build' ] + id: php74-extensions-legacy-test + + # php80-extensions test - fix php80-vips + - name: gcr.io/cloud-builders/docker + args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', '.' ] + dir: testapps/php80_extensions + waitFor: [ 'php-onbuild' ] + id: php80-extensions-build + - name: gcr.io/cloud-builders/docker + args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', 'vendor/bin/phpunit' ] + dir: testapps/php80_extensions + waitFor: [ 'php80-extensions-build' ] + id: php80-extensions-test + + # php80-extensions-legacy test + - name: gcr.io/cloud-builders/docker + args: [ 'build', '-t', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', '.' ] + dir: testapps/php80_extensions_legacy + waitFor: [ 'php-onbuild' ] + id: php80-extensions-legacy-build + - name: gcr.io/cloud-builders/docker + args: [ 'run', 'gcr.io/${_GOOGLE_PROJECT_ID}/php80-extensions:$_TAG', 'vendor/bin/phpunit' ] + dir: testapps/php80_extensions_legacy + waitFor: [ 'php80-extensions-build' ] + id: php80-extensions-legacy-test images: diff --git a/package-builder/Dockerfile b/package-builder/Dockerfile index 3d3ef4de..4ee2f9df 100644 --- a/package-builder/Dockerfile +++ b/package-builder/Dockerfile @@ -14,7 +14,7 @@ # Dockerfile used to build php binaries. # Example usage: -# docker run -v /mydir:/workspace deb-package-builder 7.3.28-1,7.4.18-1,8.0.5-1 +# docker run -v /mydir:/workspace deb-package-builder 7.3.28-1,7.4.19-1,8.0.6-1 # Then you'll get deb packages in /mydir. FROM gcr.io/gcp-runtimes/ubuntu_18_0_4 @@ -51,7 +51,7 @@ RUN apt-get update -y && \ librecode0 \ libsasl2-modules \ libsqlite3-0 \ - libopenexr22 \ + libvips-dev \ libxml2 \ libxslt1.1 \ sasl2-bin \ @@ -63,28 +63,18 @@ RUN apt-get update -y && \ # headers libbz2-dev \ libcurl4-gnutls-dev \ - fftw-dev \ - libfreetype6-dev \ libgd-dev \ libgettextpo-dev \ - libcfitsio-dev \ - libgif-dev \ libgmp-dev \ libicu-dev \ libjpeg-turbo8-dev \ libjson-c-dev \ liblua5.3-dev \ libmagick++-dev \ - libmatio-dev \ libmcrypt-dev \ libmemcached-dev \ - libopenslide-dev \ - liborc-0.4-dev \ libonig-dev \ - libpango1.0-dev \ libpcre3-dev \ - libpng-dev \ - libpoppler-glib-dev \ libpq-dev \ libreadline6-dev \ libreadline-dev \ @@ -92,10 +82,9 @@ RUN apt-get update -y && \ libsasl2-dev \ libsqlite3-dev \ libsodium-dev \ - libwebp-dev \ + libvips-dev \ libxml2-dev \ libxslt1-dev \ - zlib1g-dev \ libzip-dev \ libzip4 \ # out of date 1.0.2g -> diff --git a/package-builder/build.sh b/package-builder/build.sh index e031ea88..d2e3e979 100755 --- a/package-builder/build.sh +++ b/package-builder/build.sh @@ -43,12 +43,12 @@ PHP_VERSIONS=${1} EXTENSIONS=${2} if [ -z "$EXTENSIONS" ]; then # Explicitly declaring because some extenions depend on others (pq depends on raphf) - EXTENSIONS="amqp,apcu,apcu_bc,apm,bitset,cassandra,couchbase,ds,eio,ev,event,grpc,hprose,imagick,igbinary,jsonc,jsond,krb5,libsodium,lua,lzf,mailparse,memcache,memcached,memprof,mongo,mongodb,oauth,opencensus,phalcon,protobuf,raphf,pq,rdkafka,redis,seaslog,stackdriver_debugger,stomp,suhosin,swoole,sync,tcpwrap,timezonedb,v8js,vips,yaconf,yaf,yaml" + EXTENSIONS="amqp,apcu,apcu_bc,apm,bitset,cassandra,couchbase,ds,eio,ev,event,grpc,hprose,imagick,igbinary,jsonc,jsond,krb5,libsodium,lua,lzf,mailparse,memcache,memcached,memprof,mongo,mongodb,oauth,opencensus,phalcon,protobuf,raphf,pq,rdkafka,redis,seaslog,stackdriver_debugger,stomp,suhosin,swoole,sync,tcpwrap,timezonedb,v8js,vips,xmlrpc,yaconf,yaf,yaml" fi LIBRARIES=${3} if [ -z "$LIBRARIES" ]; then - LIBRARIES="cassandra-cpp-driver,libv8,libvips,librabbitmq" + LIBRARIES="cassandra-cpp-driver,libv8,librabbitmq" fi diff --git a/package-builder/build_packages.sh b/package-builder/build_packages.sh index 8a86c8a2..3c3c4474 100755 --- a/package-builder/build_packages.sh +++ b/package-builder/build_packages.sh @@ -21,7 +21,7 @@ if [ -z "${GOOGLE_PROJECT_ID}" ]; then fi if [ -z "${PHP_VERSIONS}" ]; then - PHP_VERSIONS='8.0.5-1,7.4.18-1,7.3.28-1' + PHP_VERSIONS='8.0.6-1,7.4.19-1,7.3.28-1' echo "Defaulting PHP Versions to: ${PHP_VERSIONS}" fi diff --git a/package-builder/debian/rules.in b/package-builder/debian/rules.in index 138e8c95..ee0507ae 100755 --- a/package-builder/debian/rules.in +++ b/package-builder/debian/rules.in @@ -25,7 +25,6 @@ override_dh_auto_configure: --enable-exif=shared \ --enable-fpm \ --enable-ftp=shared \ - --enable-gd \ --enable-intl=shared \ --enable-mbstring \ --enable-mysqlnd \ @@ -35,31 +34,44 @@ override_dh_auto_configure: --enable-shmop=shared \ --enable-soap=shared \ --enable-sockets \ + --enable-libxml \ --enable-zip \ --with-bz2 \ --with-curl \ --with-gettext=shared \ --with-external-gd=shared \ + --with-gd=shared \ --with-gmp \ --with-freetype \ + --with-freetype-dir=/usr \ --with-jpeg \ + --with-jpeg-dir=/usr \ --with-mcrypt \ + --with-pdo_sqlite=shared,/usr \ + --without-pdo-sqlite=shared,/usr \ --with-pdo-pgsql \ --with-pear \ --with-pgsql \ --with-xmlrpc=shared \ + --with-libxml \ --with-xsl=shared \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ - --with-mysql \ + --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-openssl \ --with-readline \ --with-recode \ - --with-sodium=shared \ + --with-sodium=/usr \ + --with-png-dir=/usr \ + --with-webp \ + --with-webp-dir=/usr \ + --with-xpm \ + --with-xpm-dir=shared \ --with-zip \ - --with-zlib + --with-zlib \ + --with-zlib-dir=/usr override_dh_auto_test: diff --git a/package-builder/extensions/cassandra/build.sh b/package-builder/extensions/cassandra/build.sh index 6a5f0991..b22b6a28 100755 --- a/package-builder/extensions/cassandra/build.sh +++ b/package-builder/extensions/cassandra/build.sh @@ -11,12 +11,16 @@ PNAME="gcp-php${SHORT_VERSION}-cassandra" install_last_package "cassandra-cpp-driver" install_last_package "cassandra-cpp-driver-dev" +LINK="/usr/lib/x86_64-linux-gnu/libcassandra.so" # Temporary fix for broken symlink -if [ -f "/usr/lib/x86_64-linux-gnu/libcassandra.so" ]; then - rm /usr/lib/x86_64-linux-gnu/libcassandra.so +if [ -L ${LINK} ]; then + ls -al ${LINK} + echo "Removing link.." + rm ${LINK} fi -ln -s /usr/lib/x86_64-linux-gnu/libcassandra.so.2.16.0 /usr/lib/x86_64-linux-gnu/libcassandra.so +ln -s /usr/lib/x86_64-linux-gnu/libcassandra.so.2.16.0 ${LINK} +ls -al /usr/lib/x86_64-linux-gnu/libcass* # Download the source #download_from_pecl cassandra @@ -26,4 +30,5 @@ PACKAGE_DIR=`pwd`/ext EXT_VERSION=1.31.1 build_package cassandra -popd \ No newline at end of file +popd +rm -rf php-driver \ No newline at end of file diff --git a/package-builder/extensions/libsodium/build.sh b/package-builder/extensions/libsodium/build.sh index 33c91a4c..2b62a67d 100755 --- a/package-builder/extensions/libsodium/build.sh +++ b/package-builder/extensions/libsodium/build.sh @@ -9,8 +9,8 @@ PNAME="gcp-php${SHORT_VERSION}-libsodium" # Download the source if [ ${SHORT_VERSION} == '56' ]; then download_from_pecl libsodium 1.0.7 -elif [ ${SHORT_VERSION} == '72' ] || [ ${SHORT_VERSION} == '80' ]; then - echo "no need for building libsodium for gcp-php${SHORT_VERSION}" +elif [ ${SHORT_VERSION} == '73' ] || [ ${SHORT_VERSION} == '74' ] || [ ${SHORT_VERSION} == '80' ]; then + echo "Sodium already builtin for gcp-php${SHORT_VERSION}" exit 0 else download_from_pecl libsodium 2.0.23 diff --git a/package-builder/extensions/pq/build.sh b/package-builder/extensions/pq/build.sh index 7f7acbfa..5376010d 100755 --- a/package-builder/extensions/pq/build.sh +++ b/package-builder/extensions/pq/build.sh @@ -17,7 +17,7 @@ PNAME="gcp-php${SHORT_VERSION}-pq" if [ ${SHORT_VERSION} == "56" ]; then download_from_pecl pq 1.1.1 else - download_from_pecl pq + download_from_git https://github.com/m6w6/ext-pq.git 2.1.9 fi build_package pq diff --git a/package-builder/extensions/raphf/build.sh b/package-builder/extensions/raphf/build.sh index 441ae56e..46d28a0a 100755 --- a/package-builder/extensions/raphf/build.sh +++ b/package-builder/extensions/raphf/build.sh @@ -13,7 +13,7 @@ PNAME="gcp-php${SHORT_VERSION}-raphf" if [ ${SHORT_VERSION} == "56" ]; then download_from_pecl raphf 1.1.2 else - download_from_pecl raphf + download_from_git https://github.com/m6w6/ext-raphf.git 2.0.2 fi build_package raphf diff --git a/package-builder/extensions/vips/build.sh b/package-builder/extensions/vips/build.sh index 93e08398..42b04c78 100755 --- a/package-builder/extensions/vips/build.sh +++ b/package-builder/extensions/vips/build.sh @@ -11,13 +11,7 @@ if [ ${SHORT_VERSION} == '56' ]; then exit 0 fi -apt-get install -y \ - libtiff5-dev \ - libjpeg-turbo8-dev \ - libgsf-1-dev - -install_last_package libvips -install_last_package libvips-dev +apt-get install -y libvips42 libvips-dev # Download the source download_from_pecl vips diff --git a/package-builder/extensions/vips/debian/control.in b/package-builder/extensions/vips/debian/control.in index 3f601607..29124eae 100644 --- a/package-builder/extensions/vips/debian/control.in +++ b/package-builder/extensions/vips/debian/control.in @@ -8,5 +8,5 @@ Homepage: https://pecl.php.net/package/vips Package: gcp-php${SHORT_VERSION}-vips Architecture: any -Depends: libvips, libc6 (>= 2.4), gcp-php${SHORT_VERSION} +Depends: libvips42, libc6 (>= 2.4), gcp-php${SHORT_VERSION} Description: vips extension module for gcp-php${SHORT_VERSION} diff --git a/package-builder/extensions/xmlrpc/build.sh b/package-builder/extensions/xmlrpc/build.sh new file mode 100755 index 00000000..ed888ddc --- /dev/null +++ b/package-builder/extensions/xmlrpc/build.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -ex +source ${DEB_BUILDER_DIR}/functions.sh + +echo "Building xmlrpc for gcp-php${SHORT_VERSION}" + +PNAME="gcp-php${SHORT_VERSION}-xmlrpc" + +if [ ${SHORT_VERSION} == '80' ]; then + # Download the source + download_from_pecl xmlrpc 1.0.0RC2 + + build_package xmlrpc +else + echo 'xmlrpc is builtin already' + exit 0 +fi diff --git a/package-builder/libraries/libvips/debian/compat b/package-builder/extensions/xmlrpc/debian/compat similarity index 100% rename from package-builder/libraries/libvips/debian/compat rename to package-builder/extensions/xmlrpc/debian/compat diff --git a/package-builder/extensions/xmlrpc/debian/control.in b/package-builder/extensions/xmlrpc/debian/control.in new file mode 100644 index 00000000..0ca1b836 --- /dev/null +++ b/package-builder/extensions/xmlrpc/debian/control.in @@ -0,0 +1,12 @@ +Source: gcp-php${SHORT_VERSION}-xmlrpc +Section: php +Priority: optional +Maintainer: Brian D. Bradshaw +Build-Depends: debhelper (>= 9), gcp-php${SHORT_VERSION} +Standards-Version: 3.9.5 +Homepage: https://pecl.php.net/package/xmlrpc + +Package: gcp-php${SHORT_VERSION}-xmlrpc +Architecture: any +Depends: libc6 (>= 2.4), gcp-php${SHORT_VERSION} +Description: xmlrpc extension module for gcp-php${SHORT_VERSION} diff --git a/package-builder/extensions/xmlrpc/debian/copyright b/package-builder/extensions/xmlrpc/debian/copyright new file mode 100644 index 00000000..85406a03 --- /dev/null +++ b/package-builder/extensions/xmlrpc/debian/copyright @@ -0,0 +1,72 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: xmlrpc +Upstream-Contact: Christoph M. Becker +Source: https://pecl.php.net/package/xmlrpc + +Files: * +Copyright: 1999-2014, The PHP Group +License: PHP-3.0.1 + This software is subject to version 3.01 of the PHP + license, as shown below. + . + -------------------------------------------------------------------- + The PHP License, version 3.01 + Copyright (c) 1999 - 2010 The PHP Group. All rights reserved. + -------------------------------------------------------------------- + . + Redistribution and use in source and binary forms, with or without + modification, is permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + . + 3. The name "PHP" must not be used to endorse or promote products + derived from this software without prior written permission. For + written permission, please contact group@php.net. + . + 4. Products derived from this software may not be called "PHP", nor + may "PHP" appear in their name, without prior written permission + from group@php.net. You may indicate that your software works in + conjunction with PHP by saying "Foo for PHP" instead of calling + it "PHP Foo" or "phpfoo" + . + 5. The PHP Group may publish revised and/or new versions of the + license from time to time. Each version will be given a + distinguishing version number. + Once covered code has been published under a particular version + of the license, you may always continue to use it under the terms + of that version. You may also choose to use such covered code + under the terms of any subsequent version of the license + published by the PHP Group. No one other than the PHP Group has + the right to modify the terms applicable to covered code created + under this License. + . + 6. Redistributions of any form whatsoever must retain the following + acknowledgment: + "This product includes PHP software, freely available from + ". + . + THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND + ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP + DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + . + -------------------------------------------------------------------- + +Files: debian/* +Copyright: 2017 Google, Inc. +License: Apache-2.0 diff --git a/package-builder/extensions/xmlrpc/debian/ext-xmlrpc.ini b/package-builder/extensions/xmlrpc/debian/ext-xmlrpc.ini new file mode 100644 index 00000000..b03d93cf --- /dev/null +++ b/package-builder/extensions/xmlrpc/debian/ext-xmlrpc.ini @@ -0,0 +1 @@ +extension=xmlrpc.so diff --git a/package-builder/extensions/xmlrpc/debian/gcp-php-xmlrpc.install.in b/package-builder/extensions/xmlrpc/debian/gcp-php-xmlrpc.install.in new file mode 100644 index 00000000..ed27f964 --- /dev/null +++ b/package-builder/extensions/xmlrpc/debian/gcp-php-xmlrpc.install.in @@ -0,0 +1 @@ +debian/ext-xmlrpc.ini opt/php${SHORT_VERSION}/lib/ext.available diff --git a/package-builder/extensions/xmlrpc/debian/rules.in b/package-builder/extensions/xmlrpc/debian/rules.in new file mode 100644 index 00000000..c97f1dbf --- /dev/null +++ b/package-builder/extensions/xmlrpc/debian/rules.in @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +%: + dh $@ + +override_dh_auto_configure: + phpize && \ + ./configure + +override_dh_auto_test: + +override_dh_auto_install: + INSTALL_ROOT=$(CURDIR)/debian/gcp-php${SHORT_VERSION}-xmlrpc \ + dh_auto_install diff --git a/package-builder/functions.sh b/package-builder/functions.sh index 0448f516..364f8b6b 100644 --- a/package-builder/functions.sh +++ b/package-builder/functions.sh @@ -24,39 +24,6 @@ with_retry() done } -curl_latest_from_pecl() -{ - # Download the source code, rename, extract it for debian package - # Usage: - # curl_latest_from_pecl mailparse # for the latest - # curl_latest_from_pecl mailparse 2.1.6 # for a specific version - if [ -z "$1" ]; then - echo 'missing argument for curl_from_pecl' - exit $E_PARAM_ERR - fi - PACKAGE_SHORT_NAME=$1 - - if [ -z "$2" ]; then - with_retry "curl -fsSOJL https://pecl.php.net/get/${PACKAGE_SHORT_NAME}" 6 - - # determine the downloaded version - EXT_VERSION=$(ls ${PACKAGE_SHORT_NAME}-*.tgz | \ - sed -E "s/${PACKAGE_SHORT_NAME}-([0-9]+\.[0-9]+(\.[0-9]+)+.*)\.tgz/\1/") - else - EXT_VERSION="${2}" - with_retry "curl -fsSOJL https://pecl.php.net/get/${PACKAGE_SHORT_NAME}-${EXT_VERSION}.tgz" 6 - fi - - PACKAGE_VERSION="${EXT_VERSION}-${PHP_VERSION}" - PACKAGE_FULL_VERSION="${EXT_VERSION}-${FULL_VERSION}" - PACKAGE_DIR=${PNAME}-${PACKAGE_VERSION} - mv ${PACKAGE_SHORT_NAME}-${EXT_VERSION}.tgz \ - ${PNAME}-${PACKAGE_VERSION}.orig.tar.gz - mkdir -p ${PACKAGE_DIR} - tar zxf ${PNAME}-${PACKAGE_VERSION}.orig.tar.gz \ - -C ${PACKAGE_DIR} --strip-components=1 -} - download_from_pecl() { # Download the source code, rename, extract it for debian package @@ -72,9 +39,11 @@ download_from_pecl() # chop off optional -beta from the package name. it is needed to specify # we are downloading a beta version, but is not actually part of the # package name + # Also remove any release candidate suffix PACKAGE_SHORT_NAME=$(basename ${PECL_PACKAGE_NAME} -beta) PACKAGE_SHORT_NAME=$(basename ${PACKAGE_SHORT_NAME} -alpha) PACKAGE_SHORT_NAME=$(basename ${PACKAGE_SHORT_NAME} -devel) + PACKAGE_SHORT_NAME=$(echo ${PACKAGE_SHORT_NAME} | sed -E "s/(.*)RC[0-9]$/\1/") if [ -z "$2" ]; then with_retry "pecl download ${PECL_PACKAGE_NAME}" 6 diff --git a/package-builder/libraries/cassandra-cpp-driver/build.sh b/package-builder/libraries/cassandra-cpp-driver/build.sh index 31993f25..ebe8a3a3 100755 --- a/package-builder/libraries/cassandra-cpp-driver/build.sh +++ b/package-builder/libraries/cassandra-cpp-driver/build.sh @@ -8,6 +8,7 @@ echo "Building cassandra cpp driver" PNAME="cassandra-cpp-driver" VERSION=2.16.0 +SONAME=2.16.0 OUTPUT_FILE="${PNAME}_${VERSION}-1~gcp8+1_amd64.deb" @@ -19,6 +20,7 @@ if [ ! -f "${ARTIFACT_LIB_DIR}/${OUTPUT_FILE}" ]; then pushd ${PACKAGE_DIR} sed -i 's/libuv-dev/libuv1-dev/g' debian/control + envsubst '${SONAME}' < debian/cassandra-cpp-driver-dev.links > debian/cassandra-cpp-driver-dev.links #sed -i 's/\$(SOVER)/2.16.0/g' debian/rules sed -i 's/release=1/release=1~gcp8+1/g' build_deb.sh ./build_deb.sh diff --git a/package-builder/libraries/librabbitmq/debian/control b/package-builder/libraries/librabbitmq/debian/control index 2587498c..20657e1a 100644 --- a/package-builder/libraries/librabbitmq/debian/control +++ b/package-builder/libraries/librabbitmq/debian/control @@ -9,11 +9,11 @@ Homepage: https://github.com/alanxz/rabbitmq-c Package: librabbitmq Section: libs Architecture: any -Depends: libssl1.1, libc6 (>= 2.17) +Depends: libssl1.1, libc6 (>= 2.14) Description: AMQP client library written in C Package: librabbitmq-dev Section: libdevel Architecture: any -Depends: librabbitmq (>= 0.11.0), libssl-dev (>= 1.1.1) +Depends: librabbitmq (>= 0.11.0) Description: AMQP client library written in C diff --git a/package-builder/libraries/libvips/build.sh b/package-builder/libraries/libvips/build.sh deleted file mode 100755 index ccb00021..00000000 --- a/package-builder/libraries/libvips/build.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -set -ex - -source ${DEB_BUILDER_DIR}/functions.sh - -echo "Building libvips" - -PNAME="libvips" -VERSION="8.10.6" - -OUTPUT_FILE="${PNAME}_${VERSION}-1~gcp8+1_amd64.deb" - -apt-get install -y \ - libexif-dev \ - libexpat-dev \ - libgif-dev \ - libglib2.0-dev \ - libjpeg-dev \ - liblcms2-dev \ - liborc-dev \ - libpng-dev \ - librsvg2-dev - -if [ ! -f "${ARTIFACT_LIB_DIR}/${OUTPUT_FILE}" ]; then - # Download the source - download_from_tarball https://github.com/libvips/libvips/releases/download/v${VERSION}/vips-${VERSION}.tar.gz ${VERSION} - - cp -R ${DEB_BUILDER_DIR}/libraries/libvips/debian ${PACKAGE_DIR} - - chmod +x ${PACKAGE_DIR}/debian/rules - - pushd ${PACKAGE_DIR} - dch --create -v "${VERSION}-1~gcp8+1" \ - --package ${PNAME} --empty -M \ - "Build ${VERSION}-1~gcp8+1 of ${PNAME}" - dpkg-buildpackage -us -uc -j"$(nproc)" - cp ../*.deb ${ARTIFACT_LIB_DIR} - popd -fi diff --git a/package-builder/libraries/libvips/debian/control b/package-builder/libraries/libvips/debian/control deleted file mode 100644 index afc15b95..00000000 --- a/package-builder/libraries/libvips/debian/control +++ /dev/null @@ -1,20 +0,0 @@ -Source: libvips -Section: libs -Priority: optional -Maintainer: Jeff Ching -Build-Depends: debhelper (>= 9) -Standards-Version: 3.9.5 -Homepage: https://github.com/jcupitt/libvips - -Package: libvips -Section: libs -Architecture: any -Depends: libilmbase12, libopenexr22, libexif12, librsvg2-2, libtiff5, libjpeg-turbo8, libgsf-1-114, libc6 (>= 2.4) -Description: Large image processing library - - -Package: libvips-dev -Section: libdevel -Architecture: any -Depends: libtiff5-dev, libjpeg-turbo8-dev, libgsf-1-dev, libvips -Description: Large image processing library - development files diff --git a/package-builder/libraries/libvips/debian/copyright b/package-builder/libraries/libvips/debian/copyright deleted file mode 100644 index 01442509..00000000 --- a/package-builder/libraries/libvips/debian/copyright +++ /dev/null @@ -1,12 +0,0 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: libvips -Upstream-Contact: John Cupitt -Source: https://github.com/jcupitt/libvips - -Files: * -Copyright: 1999-2014, John Cupitt -License: LGPL 2.1+ - -Files: debian/* -Copyright: 2017 Google, Inc. -License: Apache-2.0 diff --git a/package-builder/libraries/libvips/debian/libvips-dev.install b/package-builder/libraries/libvips/debian/libvips-dev.install deleted file mode 100755 index bd417f4d..00000000 --- a/package-builder/libraries/libvips/debian/libvips-dev.install +++ /dev/null @@ -1,3 +0,0 @@ -#! /usr/bin/dh-exec - -usr/include/vips/*.h diff --git a/package-builder/libraries/libvips/debian/libvips.install b/package-builder/libraries/libvips/debian/libvips.install deleted file mode 100755 index 3df605d0..00000000 --- a/package-builder/libraries/libvips/debian/libvips.install +++ /dev/null @@ -1,5 +0,0 @@ -#! /usr/bin/dh-exec - -usr/lib/${DEB_HOST_MULTIARCH}/* -usr/bin/* -usr/share/* diff --git a/package-builder/libraries/libvips/debian/rules b/package-builder/libraries/libvips/debian/rules deleted file mode 100755 index 23238a51..00000000 --- a/package-builder/libraries/libvips/debian/rules +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/make -f - -%: - dh $@ - -# override_dh_auto_configure: -# ./configure - -override_dh_auto_test: diff --git a/php-base/Dockerfile b/php-base/Dockerfile index cb16f597..1d2709ce 100644 --- a/php-base/Dockerfile +++ b/php-base/Dockerfile @@ -28,7 +28,6 @@ RUN apt-get update -y && \ apt-get install -y --no-install-recommends \ curl \ libssl1.1 \ - libssl-dev \ openssl \ gettext \ git \ @@ -40,14 +39,15 @@ RUN apt-get update -y && \ libevent-openssl-2.1-6 \ libeio1 \ libext2fs2 \ + # gd + libfontconfig1 \ + libfreetype6 \ + libxpm4 \ libgd-dev \ + libgd3 \ libgmp10 \ - libgsf-1-114 \ - libgsf-1-dev \ libicu60 \ - libilmbase12 \ libjpeg-turbo8 \ - libjpeg-turbo8-dev \ libjudydebian1 \ liblua5.3-0 \ libmcrypt4 \ @@ -55,18 +55,15 @@ RUN apt-get update -y && \ libmemcachedutil2 \ libonig4 \ libexif12 \ - libopenexr22 \ libpcre2-dev \ libpcre3 \ - libpng16-16 \ libpq5 \ libreadline7 \ librecode0 \ - librsvg2-2 \ libsasl2-modules \ libsodium23 \ libsqlite3-0 \ - libtiff5-dev \ + libtiff5 \ libwrap0 \ libxml2 \ libxslt1.1 \ @@ -74,6 +71,27 @@ RUN apt-get update -y && \ libzip4 \ imagemagick \ mercurial \ + # vips + liborc-0.4-0 \ + libgif7 \ + libglib2.0-0 \ + libgsf-1-114 \ + libjpeg8 \ + liblcms2-2 \ + libmatio4 \ + libpng16-16 \ + libpoppler-glib8 \ + librsvg2-2 \ + libwebp6 \ + libcairo2 \ + libcfitsio5 \ + fftw3 \ + libopenexr22 \ + libopenslide0 \ + libpango-1.0-0 \ + libwebpdemux2 \ + libwebpmux3 \ + libvips42 \ # nginx-extras \ gnupg \ ca-certificates \ diff --git a/php-base/build-scripts/install_php80.sh b/php-base/build-scripts/install_php80.sh index f67544d1..6b118ddf 100755 --- a/php-base/build-scripts/install_php80.sh +++ b/php-base/build-scripts/install_php80.sh @@ -40,7 +40,7 @@ apt-get install -y --no-install-recommends \ # Enable some extensions for backward compatibility ln -sf ${PHP80_DIR}/bin/php80-enmod ${PHP80_DIR}/bin/php-enmod ln -sf ${PHP80_DIR}/bin/php80-dismod ${PHP80_DIR}/bin/php-dismod -#${PHP80_DIR}/bin/php80-enmod apcu-bc +${PHP80_DIR}/bin/php80-enmod apcu ${PHP80_DIR}/bin/php80-enmod mailparse ${PHP80_DIR}/bin/php80-enmod memcached diff --git a/php-base/tests/DetectPhpVersionTest.php b/php-base/tests/DetectPhpVersionTest.php index 3df9e044..266a0b08 100644 --- a/php-base/tests/DetectPhpVersionTest.php +++ b/php-base/tests/DetectPhpVersionTest.php @@ -16,17 +16,14 @@ */ use PHPUnit\Framework\TestCase; -use InvalidVersionException; -use ExactVersionException; -use NoSpecifiedVersionException; require_once(__DIR__ . "/../build-scripts/src/DetectPhpVersion.php"); class DetectPhpVersionTest extends TestCase { const PHP_73 = '7.3.28'; - const PHP_74 = '7.4.18'; - const PHP_80 = '8.0.5'; + const PHP_74 = '7.4.19'; + const PHP_80 = '8.0.6'; const AVAILABLE_VERSIONS = [ self::PHP_73, self::PHP_74, diff --git a/php-versioned/Dockerfile.in b/php-versioned/Dockerfile.in index 4a6a484e..f0f3e92b 100644 --- a/php-versioned/Dockerfile.in +++ b/php-versioned/Dockerfile.in @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Dockerfile for PHP 5.6/7.0/7.1/7.2/7.3/7.4/8.0 using nginx as the webserver. +# Dockerfile for PHP 7.3/7.4/8.0 using nginx as the webserver. FROM ${PHP_BASE_IMAGE} @@ -23,7 +23,6 @@ RUN /bin/bash /build-scripts/install_composer.sh RUN chgrp www-data /build-scripts/detect_php_version.php # Temporary enable the shell for www-data # We will disable it in lockdown.sh - # ls -al && \ RUN if [ -f "/composer.json" ]; then cp /composer.json /build-scripts/ ; fi RUN chown -R www-data:www-data /build-scripts/ && \ chsh -s /bin/bash www-data && \ diff --git a/scripts/build_images.sh b/scripts/build_images.sh index f14edf2b..6628b7ce 100755 --- a/scripts/build_images.sh +++ b/scripts/build_images.sh @@ -58,7 +58,6 @@ gcloud builds submit . \ --config "${CLOUDBUILD_CONFIG}" \ --timeout 3600 \ --substitutions _GOOGLE_PROJECT_ID=$GOOGLE_PROJECT_ID,_TAG=$TAG,_GCP_PACKAGE_BUCKET=$GCP_PACKAGE_BUCKET,_RUNTIME_DISTRIBUTION=$RUNTIME_DISTRIBUTION - --verbosity="debug" if [ -z "${RUN_E2E_TESTS}" ] then diff --git a/scripts/ubuntu-packages.cfg b/scripts/ubuntu-packages.cfg index f531614f..c730e476 100644 --- a/scripts/ubuntu-packages.cfg +++ b/scripts/ubuntu-packages.cfg @@ -5,6 +5,6 @@ env_vars { env_vars { key: "PHP_VERSIONS" - value: "7.3.28-1,7.4.18-1,8.0.5-1" + value: "7.3.28-1,7.4.19-1,8.0.6-1" } diff --git a/testapps/build_pipeline/tests/composer.json b/testapps/build_pipeline/tests/composer.json index c4551701..137ed877 100644 --- a/testapps/build_pipeline/tests/composer.json +++ b/testapps/build_pipeline/tests/composer.json @@ -2,6 +2,6 @@ "require-dev": { "google/cloud-tools": "^0.12", "guzzlehttp/guzzle": "~6.0", - "symfony/browser-kit": "~2" + "symfony/browser-kit": "~5" } } diff --git a/testapps/build_pipeline_std/tests/composer.json b/testapps/build_pipeline_std/tests/composer.json index f83675f1..137ed877 100644 --- a/testapps/build_pipeline_std/tests/composer.json +++ b/testapps/build_pipeline_std/tests/composer.json @@ -1,7 +1,7 @@ { "require-dev": { - "google/cloud-tools": "~0.6", + "google/cloud-tools": "^0.12", "guzzlehttp/guzzle": "~6.0", - "symfony/browser-kit": "~2" + "symfony/browser-kit": "~5" } } diff --git a/testapps/build_pipeline_std/tests/tests/EndToEndTest.php b/testapps/build_pipeline_std/tests/tests/EndToEndTest.php index bbb4c037..f0c6291f 100644 --- a/testapps/build_pipeline_std/tests/tests/EndToEndTest.php +++ b/testapps/build_pipeline_std/tests/tests/EndToEndTest.php @@ -33,7 +33,7 @@ class EndToEndTest extends TestCase const SERVICE_ACCOUNT_ENV = 'SERVICE_ACCOUNT_JSON'; const RUNTIME_BUILDER_ROOT_ENV = 'RUNTIME_BUILDER_ROOT'; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $project_id = getenv(self::PROJECT_ENV); $e2e_test_version = getenv(self::VERSION_ENV); @@ -111,7 +111,7 @@ public static function deploy($project_id, $e2e_test_version) self::fail('Deployment failed.'); } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { // TODO: check the return value and maybe retry? $cmd = sprintf( @@ -139,8 +139,7 @@ private static function execWithError($command, $errorPrefix) } } - public function setUp() - { + public function setUp(): void { $this->eventuallyConsistentRetryCount = 10; $this->catchAllExceptions = true; diff --git a/testapps/integration-individual-packages/composer.json b/testapps/integration-individual-packages/composer.json index 13696ee9..254e5701 100644 --- a/testapps/integration-individual-packages/composer.json +++ b/testapps/integration-individual-packages/composer.json @@ -16,8 +16,8 @@ "behat/mink": "^1.7", "behat/mink-goutte-driver": "^1.2", "phpunit/phpunit": "^9", - "symfony/browser-kit": "^3.0", - "symfony/http-kernel": "^3.0", - "google/cloud-tools": "^0.6" + "symfony/browser-kit": "^5.0", + "symfony/http-kernel": "^5.0", + "google/cloud-tools": "^0.12" } } diff --git a/testapps/integration/composer.json b/testapps/integration/composer.json index aeb4336a..5d9b6c04 100644 --- a/testapps/integration/composer.json +++ b/testapps/integration/composer.json @@ -13,8 +13,8 @@ "behat/mink": "^1.7", "behat/mink-goutte-driver": "^1.2", "phpunit/phpunit": "^9", - "symfony/browser-kit": "^3.0", - "symfony/http-kernel": "^3.0", - "google/cloud-tools": "^0.6" + "symfony/browser-kit": "^5.0", + "symfony/http-kernel": "^5.0", + "google/cloud-tools": "^0.12" } } diff --git a/testapps/php73_custom/Dockerfile.in b/testapps/php73_custom/Dockerfile.in index 22651fdf..2b1ce1c8 100644 --- a/testapps/php73_custom/Dockerfile.in +++ b/testapps/php73_custom/Dockerfile.in @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_73_IMAGE} +FROM ${BASE_IMAGE} ENV DOCUMENT_ROOT=/app/web ENV FRONT_CONTROLLER_FILE=app.php diff --git a/testapps/php73_custom/composer.json b/testapps/php73_custom/composer.json index 39f42938..cb87cf33 100644 --- a/testapps/php73_custom/composer.json +++ b/testapps/php73_custom/composer.json @@ -5,7 +5,6 @@ "ext-calendar": "*", "ext-exif": "*", "ext-ftp": "*", - "ext-gd": "*", "ext-gettext": "*", "ext-intl": "*", "ext-shmop": "*", diff --git a/testapps/php73_custom/tests/tests/PHP73CustomTest.php b/testapps/php73_custom/tests/tests/PHP73CustomTest.php index 78f43e61..d5cc982c 100644 --- a/testapps/php73_custom/tests/tests/PHP73CustomTest.php +++ b/testapps/php73_custom/tests/tests/PHP73CustomTest.php @@ -70,7 +70,7 @@ class PHP7CustomTest extends TestCase 'calendar', 'exif', 'ftp', - 'gd', + // 'gd', 'gettext', 'intl', 'mbstring', @@ -87,13 +87,13 @@ class PHP7CustomTest extends TestCase 'imagick', ); - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { // Wait for nginx to start sleep(3); } - public function setUp() + public function setUp(): void { $this->client = new Client(['base_uri' => 'http://php73-custom:8080/']); } diff --git a/testapps/php73_e2e/Dockerfile.in b/testapps/php73_e2e/Dockerfile.in index 95253f2f..1aace809 100644 --- a/testapps/php73_e2e/Dockerfile.in +++ b/testapps/php73_e2e/Dockerfile.in @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_73_IMAGE} +FROM ${BASE_IMAGE} ENV DOCUMENT_ROOT /app/web diff --git a/testapps/php73_e2e/tests/composer.json b/testapps/php73_e2e/tests/composer.json index f83675f1..137ed877 100644 --- a/testapps/php73_e2e/tests/composer.json +++ b/testapps/php73_e2e/tests/composer.json @@ -1,7 +1,7 @@ { "require-dev": { - "google/cloud-tools": "~0.6", + "google/cloud-tools": "^0.12", "guzzlehttp/guzzle": "~6.0", - "symfony/browser-kit": "~2" + "symfony/browser-kit": "~5" } } diff --git a/testapps/php73_e2e/tests/tests/EndToEndTest.php b/testapps/php73_e2e/tests/tests/EndToEndTest.php index f781801c..7a1a2098 100644 --- a/testapps/php73_e2e/tests/tests/EndToEndTest.php +++ b/testapps/php73_e2e/tests/tests/EndToEndTest.php @@ -32,7 +32,7 @@ class EndToEndTest extends TestCase const VERSION_ENV = 'TAG'; const SERVICE_ACCOUNT_ENV = 'SERVICE_ACCOUNT_JSON'; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $project_id = getenv(self::PROJECT_ENV); $e2e_test_version = getenv(self::VERSION_ENV); @@ -94,7 +94,7 @@ public static function deploy($project_id, $e2e_test_version) } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { // TODO: check the return value and maybe retry? $cmd = sprintf( @@ -122,7 +122,7 @@ private static function execWithError($command, $errorPrefix) } } - public function setUp() + public function setUp(): void { $this->eventuallyConsistentRetryCount = 10; $this->catchAllExceptions = true; diff --git a/testapps/php73_extensions/Dockerfile.in b/testapps/php73_extensions/Dockerfile.in index db5b1c2b..6e73ea21 100644 --- a/testapps/php73_extensions/Dockerfile.in +++ b/testapps/php73_extensions/Dockerfile.in @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_73_IMAGE} +FROM ${BASE_IMAGE} diff --git a/testapps/php73_extensions/tests/GdTest.php b/testapps/php73_extensions/tests/GdTest.php index c663b508..400655dc 100644 --- a/testapps/php73_extensions/tests/GdTest.php +++ b/testapps/php73_extensions/tests/GdTest.php @@ -18,9 +18,13 @@ class GdTest extends TestCase { - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('gd')); + if (!extension_loaded('gd')) { + $this->markTestSkipped( + 'The gd extension is not available.' + ); + } } public function testFreetypeSupport() diff --git a/testapps/php73_extensions/tests/GmpTest.php b/testapps/php73_extensions/tests/GmpTest.php index ed7e0821..6ffe0731 100644 --- a/testapps/php73_extensions/tests/GmpTest.php +++ b/testapps/php73_extensions/tests/GmpTest.php @@ -18,9 +18,13 @@ class GmpTest extends TestCase { - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('gmp')); + if (!extension_loaded('gmp')) { + $this->markTestSkipped( + 'The gmp extension is not available.' + ); + } } public function testGcd() diff --git a/testapps/php73_extensions/tests/ImagickTest.php b/testapps/php73_extensions/tests/ImagickTest.php index 4670b141..edd4c6b4 100644 --- a/testapps/php73_extensions/tests/ImagickTest.php +++ b/testapps/php73_extensions/tests/ImagickTest.php @@ -20,9 +20,13 @@ class ImagickTest extends TestCase { private $success = false; - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('imagick')); + if (!extension_loaded('imagick')) { + $this->markTestSkipped( + 'The imagick extension is not available.' + ); + } } public function testLoadImage() diff --git a/testapps/php73_extensions/tests/OauthTest.php b/testapps/php73_extensions/tests/OauthTest.php index f0fa2572..1ff97c27 100644 --- a/testapps/php73_extensions/tests/OauthTest.php +++ b/testapps/php73_extensions/tests/OauthTest.php @@ -20,6 +20,15 @@ class OauthTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('oauth')) { + $this->markTestSkipped( + 'The oauth extension is not available.' + ); + } + } + public function testExtensionLoaded() { $this->assertTrue(extension_loaded('oauth')); diff --git a/testapps/php73_extensions/tests/PhalconTest.php b/testapps/php73_extensions/tests/PhalconTest.php index 84ed26d1..b4598c9b 100644 --- a/testapps/php73_extensions/tests/PhalconTest.php +++ b/testapps/php73_extensions/tests/PhalconTest.php @@ -20,9 +20,17 @@ class PhalconTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('phalcon')) { + $this->markTestSkipped( + 'The phalcon extension is not available.' + ); + } + } + public function testExtensionLoaded() { - $this->markTestSkipped('Phalcon is not available for PHP 7.1 yet.'); - // $this->assertTrue(extension_loaded('phalcon')); + $this->assertTrue(extension_loaded('phalcon')); } } diff --git a/testapps/php73_extensions/tests/ProtobufTest.php b/testapps/php73_extensions/tests/ProtobufTest.php index 0d9606e5..752f7908 100644 --- a/testapps/php73_extensions/tests/ProtobufTest.php +++ b/testapps/php73_extensions/tests/ProtobufTest.php @@ -20,6 +20,15 @@ class ProtobufTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('protobuf')) { + $this->markTestSkipped( + 'The Protobuf extension is not available.' + ); + } + } + public function testExtensionLoaded() { $this->assertTrue(extension_loaded('protobuf')); diff --git a/testapps/php73_extensions/tests/RdkafkaTest.php b/testapps/php73_extensions/tests/RdkafkaTest.php index 2e522a4e..3ad07f67 100644 --- a/testapps/php73_extensions/tests/RdkafkaTest.php +++ b/testapps/php73_extensions/tests/RdkafkaTest.php @@ -20,6 +20,15 @@ class RdkafkaTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('rdkafka')) { + $this->markTestSkipped( + 'The rdkafka extension is not available.' + ); + } + } + public function testExtensionLoaded() { $this->assertTrue(extension_loaded('rdkafka')); diff --git a/testapps/php73_extensions_legacy/Dockerfile.in b/testapps/php73_extensions_legacy/Dockerfile.in index db5b1c2b..6e73ea21 100644 --- a/testapps/php73_extensions_legacy/Dockerfile.in +++ b/testapps/php73_extensions_legacy/Dockerfile.in @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_73_IMAGE} +FROM ${BASE_IMAGE} diff --git a/testapps/php73_extensions_legacy/php.ini b/testapps/php73_extensions_legacy/php.ini index 188e7335..d82d2650 100644 --- a/testapps/php73_extensions_legacy/php.ini +++ b/testapps/php73_extensions_legacy/php.ini @@ -6,6 +6,7 @@ extension=imagick.so extension=mongodb.so extension=oauth.so extension=opencensus.so +extension=raphf.so extension=pq.so extension=protobuf.so extension=rdkafka.so diff --git a/testapps/php73_extensions_legacy/tests/EvTest.php b/testapps/php73_extensions_legacy/tests/EvTest.php index cd556d33..b84b5ca1 100644 --- a/testapps/php73_extensions_legacy/tests/EvTest.php +++ b/testapps/php73_extensions_legacy/tests/EvTest.php @@ -20,9 +20,13 @@ class EvTest extends TestCase { private $success = false; - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('ev')); + if (!extension_loaded('ev')) { + $this->markTestSkipped( + 'The ev extension is not available.' + ); + } } public function testTimer() diff --git a/testapps/php73_extensions_legacy/tests/EventTest.php b/testapps/php73_extensions_legacy/tests/EventTest.php index 1fe6535f..d7fd0aa3 100644 --- a/testapps/php73_extensions_legacy/tests/EventTest.php +++ b/testapps/php73_extensions_legacy/tests/EventTest.php @@ -20,6 +20,15 @@ class EventTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('event')) { + $this->markTestSkipped( + 'The event extension is not available.' + ); + } + } + public function testExtensionLoaded() { $this->assertTrue(extension_loaded('event')); diff --git a/testapps/php73_extensions_legacy/tests/GdTest.php b/testapps/php73_extensions_legacy/tests/GdTest.php index c663b508..400655dc 100644 --- a/testapps/php73_extensions_legacy/tests/GdTest.php +++ b/testapps/php73_extensions_legacy/tests/GdTest.php @@ -18,9 +18,13 @@ class GdTest extends TestCase { - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('gd')); + if (!extension_loaded('gd')) { + $this->markTestSkipped( + 'The gd extension is not available.' + ); + } } public function testFreetypeSupport() diff --git a/testapps/php73_extensions_legacy/tests/GmpTest.php b/testapps/php73_extensions_legacy/tests/GmpTest.php index ed7e0821..6ffe0731 100644 --- a/testapps/php73_extensions_legacy/tests/GmpTest.php +++ b/testapps/php73_extensions_legacy/tests/GmpTest.php @@ -18,9 +18,13 @@ class GmpTest extends TestCase { - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('gmp')); + if (!extension_loaded('gmp')) { + $this->markTestSkipped( + 'The gmp extension is not available.' + ); + } } public function testGcd() diff --git a/testapps/php73_extensions_legacy/tests/ImagickTest.php b/testapps/php73_extensions_legacy/tests/ImagickTest.php index 4670b141..edd4c6b4 100644 --- a/testapps/php73_extensions_legacy/tests/ImagickTest.php +++ b/testapps/php73_extensions_legacy/tests/ImagickTest.php @@ -20,9 +20,13 @@ class ImagickTest extends TestCase { private $success = false; - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('imagick')); + if (!extension_loaded('imagick')) { + $this->markTestSkipped( + 'The imagick extension is not available.' + ); + } } public function testLoadImage() diff --git a/testapps/php73_extensions_legacy/tests/LibSodiumTest.php b/testapps/php73_extensions_legacy/tests/LibSodiumTest.php index 9f2ac230..470c549a 100644 --- a/testapps/php73_extensions_legacy/tests/LibSodiumTest.php +++ b/testapps/php73_extensions_legacy/tests/LibSodiumTest.php @@ -18,9 +18,13 @@ class LibsodiumTest extends TestCase { - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('sodium')); + if (!extension_loaded('sodium')) { + $this->markTestSkipped( + 'The Sodium extension is not available.' + ); + } } public function testLoadImage() diff --git a/testapps/php73_extensions_legacy/tests/OauthTest.php b/testapps/php73_extensions_legacy/tests/OauthTest.php index f0fa2572..1ff97c27 100644 --- a/testapps/php73_extensions_legacy/tests/OauthTest.php +++ b/testapps/php73_extensions_legacy/tests/OauthTest.php @@ -20,6 +20,15 @@ class OauthTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('oauth')) { + $this->markTestSkipped( + 'The oauth extension is not available.' + ); + } + } + public function testExtensionLoaded() { $this->assertTrue(extension_loaded('oauth')); diff --git a/testapps/php73_extensions_legacy/tests/PhalconTest.php b/testapps/php73_extensions_legacy/tests/PhalconTest.php index 84ed26d1..b4598c9b 100644 --- a/testapps/php73_extensions_legacy/tests/PhalconTest.php +++ b/testapps/php73_extensions_legacy/tests/PhalconTest.php @@ -20,9 +20,17 @@ class PhalconTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('phalcon')) { + $this->markTestSkipped( + 'The phalcon extension is not available.' + ); + } + } + public function testExtensionLoaded() { - $this->markTestSkipped('Phalcon is not available for PHP 7.1 yet.'); - // $this->assertTrue(extension_loaded('phalcon')); + $this->assertTrue(extension_loaded('phalcon')); } } diff --git a/testapps/php73_extensions_legacy/tests/ProtobufTest.php b/testapps/php73_extensions_legacy/tests/ProtobufTest.php index 0d9606e5..752f7908 100644 --- a/testapps/php73_extensions_legacy/tests/ProtobufTest.php +++ b/testapps/php73_extensions_legacy/tests/ProtobufTest.php @@ -20,6 +20,15 @@ class ProtobufTest extends TestCase { private $success = false; + protected function setUp(): void + { + if (!extension_loaded('protobuf')) { + $this->markTestSkipped( + 'The Protobuf extension is not available.' + ); + } + } + public function testExtensionLoaded() { $this->assertTrue(extension_loaded('protobuf')); diff --git a/testapps/php74_custom/Dockerfile.in b/testapps/php74_custom/Dockerfile.in index 2b936948..2b1ce1c8 100644 --- a/testapps/php74_custom/Dockerfile.in +++ b/testapps/php74_custom/Dockerfile.in @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_74_IMAGE} +FROM ${BASE_IMAGE} ENV DOCUMENT_ROOT=/app/web ENV FRONT_CONTROLLER_FILE=app.php diff --git a/testapps/php74_custom/tests/tests/PHP74CustomTest.php b/testapps/php74_custom/tests/tests/PHP74CustomTest.php index 9482f179..2b1b6f05 100644 --- a/testapps/php74_custom/tests/tests/PHP74CustomTest.php +++ b/testapps/php74_custom/tests/tests/PHP74CustomTest.php @@ -52,7 +52,6 @@ class PHP7CustomTest extends TestCase 'Phar', 'posix', 'readline', - 'recode', 'Reflection', 'mysqlnd', 'SimpleXML', @@ -87,13 +86,13 @@ class PHP7CustomTest extends TestCase 'imagick', ); - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { // Wait for nginx to start sleep(3); } - public function setUp() + public function setUp(): void { $this->client = new Client(['base_uri' => 'http://php74-custom:8080/']); } diff --git a/testapps/php74_e2e/Dockerfile.in b/testapps/php74_e2e/Dockerfile.in index f10f4934..1aace809 100644 --- a/testapps/php74_e2e/Dockerfile.in +++ b/testapps/php74_e2e/Dockerfile.in @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_74_IMAGE} +FROM ${BASE_IMAGE} ENV DOCUMENT_ROOT /app/web diff --git a/testapps/php74_e2e/tests/composer.json b/testapps/php74_e2e/tests/composer.json index f83675f1..137ed877 100644 --- a/testapps/php74_e2e/tests/composer.json +++ b/testapps/php74_e2e/tests/composer.json @@ -1,7 +1,7 @@ { "require-dev": { - "google/cloud-tools": "~0.6", + "google/cloud-tools": "^0.12", "guzzlehttp/guzzle": "~6.0", - "symfony/browser-kit": "~2" + "symfony/browser-kit": "~5" } } diff --git a/testapps/php74_e2e/tests/tests/EndToEndTest.php b/testapps/php74_e2e/tests/tests/EndToEndTest.php index f781801c..7a1a2098 100644 --- a/testapps/php74_e2e/tests/tests/EndToEndTest.php +++ b/testapps/php74_e2e/tests/tests/EndToEndTest.php @@ -32,7 +32,7 @@ class EndToEndTest extends TestCase const VERSION_ENV = 'TAG'; const SERVICE_ACCOUNT_ENV = 'SERVICE_ACCOUNT_JSON'; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $project_id = getenv(self::PROJECT_ENV); $e2e_test_version = getenv(self::VERSION_ENV); @@ -94,7 +94,7 @@ public static function deploy($project_id, $e2e_test_version) } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { // TODO: check the return value and maybe retry? $cmd = sprintf( @@ -122,7 +122,7 @@ private static function execWithError($command, $errorPrefix) } } - public function setUp() + public function setUp(): void { $this->eventuallyConsistentRetryCount = 10; $this->catchAllExceptions = true; diff --git a/testapps/php74_extensions/Dockerfile.in b/testapps/php74_extensions/Dockerfile.in index 77aeaa65..6e73ea21 100644 --- a/testapps/php74_extensions/Dockerfile.in +++ b/testapps/php74_extensions/Dockerfile.in @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_74_IMAGE} +FROM ${BASE_IMAGE} diff --git a/testapps/php74_extensions_legacy/Dockerfile.in b/testapps/php74_extensions_legacy/Dockerfile.in index 77aeaa65..6e73ea21 100644 --- a/testapps/php74_extensions_legacy/Dockerfile.in +++ b/testapps/php74_extensions_legacy/Dockerfile.in @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_74_IMAGE} +FROM ${BASE_IMAGE} diff --git a/testapps/php74_extensions_legacy/php.ini b/testapps/php74_extensions_legacy/php.ini index 188e7335..d82d2650 100644 --- a/testapps/php74_extensions_legacy/php.ini +++ b/testapps/php74_extensions_legacy/php.ini @@ -6,6 +6,7 @@ extension=imagick.so extension=mongodb.so extension=oauth.so extension=opencensus.so +extension=raphf.so extension=pq.so extension=protobuf.so extension=rdkafka.so diff --git a/testapps/php80_custom/Dockerfile.in b/testapps/php80_custom/Dockerfile.in index f5b02d45..2b1ce1c8 100644 --- a/testapps/php80_custom/Dockerfile.in +++ b/testapps/php80_custom/Dockerfile.in @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_80_IMAGE} +FROM ${BASE_IMAGE} ENV DOCUMENT_ROOT=/app/web ENV FRONT_CONTROLLER_FILE=app.php diff --git a/testapps/php80_custom/composer.json b/testapps/php80_custom/composer.json index 334d3a46..d0ce75eb 100644 --- a/testapps/php80_custom/composer.json +++ b/testapps/php80_custom/composer.json @@ -1,6 +1,7 @@ { "require": { "php": "8.0.*", + "ext-apcu": "*", "ext-bcmath": "*", "ext-calendar": "*", "ext-exif": "*", diff --git a/testapps/php80_custom/php80.yaml b/testapps/php80_custom/php80.yaml index 0c83c46a..337aaed1 100644 --- a/testapps/php80_custom/php80.yaml +++ b/testapps/php80_custom/php80.yaml @@ -4,3 +4,6 @@ commandTests: command: "/opt/php/bin/php" args: ["-v"] expectedOutput: ["PHP 8\\.0.*"] +# licenseTests: +# - debian: true +# files: [] \ No newline at end of file diff --git a/testapps/php80_custom/tests/.phpunit.result.cache b/testapps/php80_custom/tests/.phpunit.result.cache new file mode 100644 index 00000000..d99175e8 --- /dev/null +++ b/testapps/php80_custom/tests/.phpunit.result.cache @@ -0,0 +1 @@ +C:37:"PHPUnit\Runner\DefaultTestResultCache":697:{a:2:{s:7:"defects";a:4:{s:50:"Google\Cloud\tests\PHP80CustomTest::testExtensions";i:3;s:74:"Google\Cloud\tests\PHP80CustomTest::testApcIsAbleToExecuteCommonOperations";i:4;s:54:"Google\Cloud\tests\PHP80CustomTest::testImagickCanLoad";i:4;s:62:"Google\Cloud\tests\PHP80CustomTest::testFrontControllerFileEnv";i:4;}s:5:"times";a:4:{s:50:"Google\Cloud\tests\PHP80CustomTest::testExtensions";d:0.033000000000000002;s:74:"Google\Cloud\tests\PHP80CustomTest::testApcIsAbleToExecuteCommonOperations";d:0.10199999999999999;s:54:"Google\Cloud\tests\PHP80CustomTest::testImagickCanLoad";d:0.0080000000000000002;s:62:"Google\Cloud\tests\PHP80CustomTest::testFrontControllerFileEnv";d:0.0030000000000000001;}}} \ No newline at end of file diff --git a/testapps/php80_custom/tests/composer.json b/testapps/php80_custom/tests/composer.json index c3a35663..e4cb56d4 100644 --- a/testapps/php80_custom/tests/composer.json +++ b/testapps/php80_custom/tests/composer.json @@ -1,6 +1,6 @@ { "require-dev": { "guzzlehttp/guzzle": "~6.0", - "symfony/browser-kit": "~2" + "symfony/browser-kit": "~5" } } diff --git a/testapps/php80_custom/tests/composer.lock b/testapps/php80_custom/tests/composer.lock new file mode 100644 index 00000000..aba2f40d --- /dev/null +++ b/testapps/php80_custom/tests/composer.lock @@ -0,0 +1,951 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "e21d7aeb7f9354ede499636bebe131bd", + "packages": [], + "packages-dev": [ + { + "name": "guzzlehttp/guzzle", + "version": "6.5.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.6.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.17.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/6.5" + }, + "time": "2020-06-16T21:01:06+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.4.1" + }, + "time": "2021-03-07T09:25:29+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.8.2" + }, + "time": "2021-04-26T09:17:50+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v5.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "b1c9d5701273a255da3a580f85066b83bd94e97d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/b1c9d5701273a255da3a580f85066b83bd94e97d", + "reference": "b1c9d5701273a255da3a580f85066b83bd94e97d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/dom-crawler": "^4.4|^5.0" + }, + "require-dev": { + "symfony/css-selector": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v5.2.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-04-08T10:27:02+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v5.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "400e265163f65aceee7e904ef532e15228de674b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/400e265163f65aceee7e904ef532e15228de674b", + "reference": "400e265163f65aceee7e904ef532e15228de674b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^4.4|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-15T18:55:04+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483", + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/testapps/php80_custom/tests/tests/PHP80CustomTest.php b/testapps/php80_custom/tests/tests/PHP80CustomTest.php index 9fc7fa53..906968d7 100644 --- a/testapps/php80_custom/tests/tests/PHP80CustomTest.php +++ b/testapps/php80_custom/tests/tests/PHP80CustomTest.php @@ -30,8 +30,6 @@ class PHP80CustomTest extends TestCase 'openssl', 'pcre', 'zlib', - 'apc', - 'apcu', 'bz2', 'ctype', 'curl', @@ -52,7 +50,6 @@ class PHP80CustomTest extends TestCase 'Phar', 'posix', 'readline', - 'recode', 'Reflection', 'mysqlnd', 'SimpleXML', @@ -66,6 +63,7 @@ class PHP80CustomTest extends TestCase 'zip', 'cgi-fcgi', # shared + 'apcu', 'bcmath', 'calendar', 'exif', @@ -87,13 +85,13 @@ class PHP80CustomTest extends TestCase 'imagick', ); - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { // Wait for nginx to start sleep(3); } - public function setUp() + public function setUp(): void { $this->client = new Client(['base_uri' => 'http://php80-custom:8080/']); } diff --git a/testapps/php80_e2e/Dockerfile.in b/testapps/php80_e2e/Dockerfile.in index 781fa6be..1aace809 100644 --- a/testapps/php80_e2e/Dockerfile.in +++ b/testapps/php80_e2e/Dockerfile.in @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_80_IMAGE} +FROM ${BASE_IMAGE} ENV DOCUMENT_ROOT /app/web diff --git a/testapps/php80_e2e/tests/composer.json b/testapps/php80_e2e/tests/composer.json index f83675f1..137ed877 100644 --- a/testapps/php80_e2e/tests/composer.json +++ b/testapps/php80_e2e/tests/composer.json @@ -1,7 +1,7 @@ { "require-dev": { - "google/cloud-tools": "~0.6", + "google/cloud-tools": "^0.12", "guzzlehttp/guzzle": "~6.0", - "symfony/browser-kit": "~2" + "symfony/browser-kit": "~5" } } diff --git a/testapps/php80_e2e/tests/tests/EndToEndTest.php b/testapps/php80_e2e/tests/tests/EndToEndTest.php index f781801c..7a1a2098 100644 --- a/testapps/php80_e2e/tests/tests/EndToEndTest.php +++ b/testapps/php80_e2e/tests/tests/EndToEndTest.php @@ -32,7 +32,7 @@ class EndToEndTest extends TestCase const VERSION_ENV = 'TAG'; const SERVICE_ACCOUNT_ENV = 'SERVICE_ACCOUNT_JSON'; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $project_id = getenv(self::PROJECT_ENV); $e2e_test_version = getenv(self::VERSION_ENV); @@ -94,7 +94,7 @@ public static function deploy($project_id, $e2e_test_version) } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { // TODO: check the return value and maybe retry? $cmd = sprintf( @@ -122,7 +122,7 @@ private static function execWithError($command, $errorPrefix) } } - public function setUp() + public function setUp(): void { $this->eventuallyConsistentRetryCount = 10; $this->catchAllExceptions = true; diff --git a/testapps/php80_extensions/Dockerfile.in b/testapps/php80_extensions/Dockerfile.in index b3f462e8..6e73ea21 100644 --- a/testapps/php80_extensions/Dockerfile.in +++ b/testapps/php80_extensions/Dockerfile.in @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_80_IMAGE} +FROM ${BASE_IMAGE} diff --git a/testapps/php80_extensions/tests/GdTest.php b/testapps/php80_extensions/tests/GdTest.php index c663b508..400655dc 100644 --- a/testapps/php80_extensions/tests/GdTest.php +++ b/testapps/php80_extensions/tests/GdTest.php @@ -18,9 +18,13 @@ class GdTest extends TestCase { - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('gd')); + if (!extension_loaded('gd')) { + $this->markTestSkipped( + 'The gd extension is not available.' + ); + } } public function testFreetypeSupport() diff --git a/testapps/php80_extensions_legacy/Dockerfile.in b/testapps/php80_extensions_legacy/Dockerfile.in index b3f462e8..6e73ea21 100644 --- a/testapps/php80_extensions_legacy/Dockerfile.in +++ b/testapps/php80_extensions_legacy/Dockerfile.in @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ${PHP_80_IMAGE} +FROM ${BASE_IMAGE} diff --git a/testapps/php80_extensions_legacy/php.ini b/testapps/php80_extensions_legacy/php.ini index 56aeaa8b..2ba415c1 100644 --- a/testapps/php80_extensions_legacy/php.ini +++ b/testapps/php80_extensions_legacy/php.ini @@ -6,6 +6,7 @@ extension=imagick.so extension=mongodb.so extension=oauth.so extension=opencensus.so +extension=raphf.so extension=pq.so extension=protobuf.so extension=rdkafka.so diff --git a/testapps/php80_extensions_legacy/tests/ExtensionsLoadedTest.php b/testapps/php80_extensions_legacy/tests/ExtensionsLoadedTest.php index 6bf2f3f4..622c4d98 100644 --- a/testapps/php80_extensions_legacy/tests/ExtensionsLoadedTest.php +++ b/testapps/php80_extensions_legacy/tests/ExtensionsLoadedTest.php @@ -34,19 +34,19 @@ public function extensions() ['couchbase'], ['ds'], ['eio'], - ['hprose'], + // ['hprose'], ['igbinary'], - ['jsond'], ['krb5'], - ['lua'], + // ['lua'], ['lzf'], ['memprof'], ['opencensus'], + ['raphf'], ['seaslog'], ['stackdriver_debugger'], ['stomp'], ['sync'], - ['tcpwrap'], + // ['tcpwrap'], ['timezonedb'], ['vips'], ['yaconf'], diff --git a/testapps/php80_extensions_legacy/tests/GdTest.php b/testapps/php80_extensions_legacy/tests/GdTest.php index c663b508..400655dc 100644 --- a/testapps/php80_extensions_legacy/tests/GdTest.php +++ b/testapps/php80_extensions_legacy/tests/GdTest.php @@ -18,9 +18,13 @@ class GdTest extends TestCase { - public function testExtensionLoaded() + protected function setUp(): void { - $this->assertTrue(extension_loaded('gd')); + if (!extension_loaded('gd')) { + $this->markTestSkipped( + 'The gd extension is not available.' + ); + } } public function testFreetypeSupport()