Merge pull request #167 from mcfedr/pickle

Support for using pickle as drop in for pecl on php 8
pull/170/head
Michele Locati 2020-09-19 04:59:02 +02:00 committed by GitHub
commit a5fdfc6d8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 107 additions and 53 deletions

View File

@ -51,6 +51,7 @@ jobs:
- alpine3.9 - alpine3.9
- alpine3.10 - alpine3.10
- alpine3.11 - alpine3.11
- alpine3.12
- jessie - jessie
- stretch - stretch
- buster - buster

View File

@ -1,3 +1,4 @@
parallel zts parallel zts
pthreads zts pthreads zts
tdlib !alpine3.7 !jessie tdlib !alpine3.7 !jessie
enchant !7.2-alpine3.12 !7.3-alpine3.12 !7.4-alpine3.12

View File

@ -1,81 +1,81 @@
amqp 5.5 5.6 7.0 7.1 7.2 7.3 7.4 amqp 5.5 5.6 7.0 7.1 7.2 7.3 7.4
apcu 5.5 5.6 7.0 7.1 7.2 7.3 7.4 apcu 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
apcu_bc 7.0 7.1 7.2 7.3 7.4 apcu_bc 7.0 7.1 7.2 7.3 7.4 8.0
bcmath 5.5 5.6 7.0 7.1 7.2 7.3 7.4 bcmath 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
bz2 5.5 5.6 7.0 7.1 7.2 7.3 7.4 bz2 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
calendar 5.5 5.6 7.0 7.1 7.2 7.3 7.4 calendar 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
cmark 7.0 7.1 7.2 7.3 7.4 cmark 7.0 7.1 7.2 7.3 7.4
dba 5.5 5.6 7.0 7.1 7.2 7.3 7.4 dba 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
decimal 7.0 7.1 7.2 7.3 7.4 decimal 7.0 7.1 7.2 7.3 7.4
enchant 5.5 5.6 7.0 7.1 7.2 7.3 7.4 enchant 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
exif 5.5 5.6 7.0 7.1 7.2 7.3 7.4 exif 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
ffi 7.4 ffi 7.4 8.0
gd 5.5 5.6 7.0 7.1 7.2 7.3 7.4 gd 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
gettext 5.5 5.6 7.0 7.1 7.2 7.3 7.4 gettext 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
gmagick 5.5 5.6 7.0 7.1 7.2 7.3 7.4 gmagick 5.5 5.6 7.0 7.1 7.2 7.3 7.4
gmp 5.5 5.6 7.0 7.1 7.2 7.3 7.4 gmp 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
grpc 5.5 5.6 7.0 7.1 7.2 7.3 7.4 grpc 5.5 5.6 7.0 7.1 7.2 7.3 7.4
http 5.5 5.6 7.0 7.1 7.2 7.3 7.4 http 5.5 5.6 7.0 7.1 7.2 7.3 7.4
igbinary 5.5 5.6 7.0 7.1 7.2 7.3 7.4 igbinary 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
imagick 5.5 5.6 7.0 7.1 7.2 7.3 7.4 imagick 5.5 5.6 7.0 7.1 7.2 7.3 7.4
imap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 imap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
interbase 5.5 5.6 7.0 7.1 7.2 7.3 interbase 5.5 5.6 7.0 7.1 7.2 7.3
intl 5.5 5.6 7.0 7.1 7.2 7.3 7.4 intl 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
ldap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 ldap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
mailparse 5.5 5.6 7.0 7.1 7.2 7.3 7.4 mailparse 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
mcrypt 5.5 5.6 7.0 7.1 7.2 7.3 7.4 mcrypt 5.5 5.6 7.0 7.1 7.2 7.3 7.4
memcache 5.5 5.6 7.0 7.1 7.2 7.3 7.4 memcache 5.5 5.6 7.0 7.1 7.2 7.3 7.4
memcached 5.5 5.6 7.0 7.1 7.2 7.3 7.4 memcached 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
mongo 5.5 5.6 mongo 5.5 5.6
mongodb 5.5 5.6 7.0 7.1 7.2 7.3 7.4 mongodb 5.5 5.6 7.0 7.1 7.2 7.3 7.4
msgpack 5.5 5.6 7.0 7.1 7.2 7.3 7.4 msgpack 5.5 5.6 7.0 7.1 7.2 7.3 7.4
mssql 5.5 5.6 mssql 5.5 5.6
mysql 5.5 5.6 mysql 5.5 5.6
mysqli 5.5 5.6 7.0 7.1 7.2 7.3 7.4 mysqli 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
oauth 5.5 5.6 7.0 7.1 7.2 7.3 7.4 oauth 5.5 5.6 7.0 7.1 7.2 7.3 7.4
odbc 5.5 5.6 7.0 7.1 7.2 7.3 7.4 odbc 5.5 5.6 7.0 7.1 7.2 7.3 7.4
opcache 5.5 5.6 7.0 7.1 7.2 7.3 7.4 opcache 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
opencensus 7.0 7.1 7.2 7.3 7.4 opencensus 7.0 7.1 7.2 7.3 7.4
parallel 7.1 7.2 7.3 7.4 parallel 7.1 7.2 7.3 7.4
pcntl 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pcntl 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
pcov 7.0 7.1 7.2 7.3 7.4 pcov 7.0 7.1 7.2 7.3 7.4 8.0
pdo_dblib 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pdo_dblib 5.5 5.6 7.0 7.1 7.2 7.3 7.4
pdo_firebird 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pdo_firebird 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
pdo_mysql 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pdo_mysql 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
pdo_odbc 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pdo_odbc 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
pdo_pgsql 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pdo_pgsql 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
pdo_sqlsrv 7.0 7.1 7.2 7.3 7.4 pdo_sqlsrv 7.0 7.1 7.2 7.3 7.4
pgsql 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pgsql 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
propro 5.5 5.6 7.0 7.1 7.2 7.3 7.4 propro 5.5 5.6 7.0 7.1 7.2 7.3 7.4
protobuf 5.5 5.6 7.0 7.1 7.2 7.3 7.4 protobuf 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
pspell 5.5 5.6 7.0 7.1 7.2 7.3 7.4 pspell 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
pthreads 5.5 5.6 7.0 pthreads 5.5 5.6 7.0
raphf 5.5 5.6 7.0 7.1 7.2 7.3 7.4 raphf 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
rdkafka 5.5 5.6 7.0 7.1 7.2 7.3 7.4 rdkafka 5.5 5.6 7.0 7.1 7.2 7.3 7.4
recode 5.5 5.6 7.0 7.1 7.2 7.3 recode 5.5 5.6 7.0 7.1 7.2 7.3
redis 5.5 5.6 7.0 7.1 7.2 7.3 7.4 redis 5.5 5.6 7.0 7.1 7.2 7.3 7.4
shmop 5.5 5.6 7.0 7.1 7.2 7.3 7.4 shmop 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
snuffleupagus 7.0 7.1 7.2 7.3 7.4 snuffleupagus 7.0 7.1 7.2 7.3 7.4
snmp 5.5 5.6 7.0 7.1 7.2 7.3 7.4 snmp 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
soap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 soap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
sockets 5.5 5.6 7.0 7.1 7.2 7.3 7.4 sockets 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
solr 5.5 5.6 7.0 7.1 7.2 7.3 7.4 solr 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
sqlsrv 7.0 7.1 7.2 7.3 7.4 sqlsrv 7.0 7.1 7.2 7.3 7.4
ssh2 5.5 5.6 7.0 7.1 7.2 7.3 7.4 ssh2 5.5 5.6 7.0 7.1 7.2 7.3 7.4
sybase_ct 5.5 5.6 sybase_ct 5.5 5.6
sysvmsg 5.5 5.6 7.0 7.1 7.2 7.3 7.4 sysvmsg 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
sysvsem 5.5 5.6 7.0 7.1 7.2 7.3 7.4 sysvsem 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
sysvshm 5.5 5.6 7.0 7.1 7.2 7.3 7.4 sysvshm 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
tdlib 7.0 7.1 7.2 7.3 7.4 tdlib 7.0 7.1 7.2 7.3 7.4
tidy 5.5 5.6 7.0 7.1 7.2 7.3 7.4 tidy 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
timezonedb 5.5 5.6 7.0 7.1 7.2 7.3 7.4 timezonedb 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
uopz 5.5 5.6 7.0 7.1 7.2 7.3 7.4 uopz 5.5 5.6 7.0 7.1 7.2 7.3 7.4
uuid 5.5 5.6 7.0 7.1 7.2 7.3 7.4 uuid 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
wddx 5.5 5.6 7.0 7.1 7.2 7.3 wddx 5.5 5.6 7.0 7.1 7.2 7.3
xdebug 5.5 5.6 7.0 7.1 7.2 7.3 7.4 xdebug 5.5 5.6 7.0 7.1 7.2 7.3 7.4
xhprof 5.5 5.6 7.0 7.1 7.2 7.3 7.4 xhprof 5.5 5.6 7.0 7.1 7.2 7.3 7.4
xmlrpc 5.5 5.6 7.0 7.1 7.2 7.3 7.4 xmlrpc 5.5 5.6 7.0 7.1 7.2 7.3 7.4
xsl 5.5 5.6 7.0 7.1 7.2 7.3 7.4 xsl 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
yaml 5.5 5.6 7.0 7.1 7.2 7.3 7.4 yaml 5.5 5.6 7.0 7.1 7.2 7.3 7.4
zip 5.5 5.6 7.0 7.1 7.2 7.3 7.4 zip 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
zookeeper 5.5 5.6 7.0 7.1 7.2 7.3 7.4 zookeeper 5.5 5.6 7.0 7.1 7.2 7.3 7.4

View File

@ -27,7 +27,9 @@ setDistro() {
exit 1 exit 1
fi fi
DISTRO="$(cat /etc/os-release | grep -E ^ID= | cut -d = -f 2)" DISTRO="$(cat /etc/os-release | grep -E ^ID= | cut -d = -f 2)"
DISTRO_VERSION="$(printf '%s@%s' $DISTRO $(cat /etc/os-release | grep -E ^VERSION_ID= | cut -d = -f 2 | cut -d '"' -f 2 | cut -d . -f 1,2))" DISTRO_VERSION_NUMBER="$(cat /etc/os-release | grep -E ^VERSION_ID= | cut -d = -f 2 | cut -d '"' -f 2 | cut -d . -f 1,2)"
DISTRO_VERSION="$(printf '%s@%s' $DISTRO $DISTRO_VERSION_NUMBER)"
DISTRO_MAJMIN_VERSION="$(echo "$DISTRO_VERSION_NUMBER" | awk -F. '{print $1*100+$2}')"
} }
# Set the PHP_MAJMIN_VERSION variable containing the PHP Major-Minor version as an integer value, in format MMmm (example: 506 for PHP 5.6.15) # Set the PHP_MAJMIN_VERSION variable containing the PHP Major-Minor version as an integer value, in format MMmm (example: 506 for PHP 5.6.15)
@ -241,8 +243,13 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev" buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
;; ;;
enchant@alpine) enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent enchant2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile enchant2-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent enchant" buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent enchant"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile enchant-dev" buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile enchant-dev"
fi
;; ;;
enchant@debian) enchant@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libenchant1c2a" buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libenchant1c2a"
@ -1355,8 +1362,7 @@ installPECLModule() {
if test "$1" != "$installPECLModule_actual"; then if test "$1" != "$installPECLModule_actual"; then
printf ' (installing version %s)\n' "$installPECLModule_actual" printf ' (installing version %s)\n' "$installPECLModule_actual"
fi fi
pecl channel-update pecl.php.net || true printf "$installPECLModule_stdin" | MAKE="make -j$(getCompilationProcessorCount $1)" $PECL_COMMAND "$installPECLModule_actual"
printf "$installPECLModule_stdin" | MAKE="make -j$(getCompilationProcessorCount $1)" pecl install "$installPECLModule_actual"
fi fi
case "$1" in case "$1" in
apcu_bc) apcu_bc)
@ -1377,6 +1383,27 @@ installPECLModule() {
esac esac
} }
# Installs pickle to use instead of pecl
# and add the zip extension that it requires, making sure its installed first
installPickle() {
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
if ! stringInList "$PHP_MODULE_TO_INSTALL" "$BUNDLED_MODULES"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
pecl channel-update pecl.php.net || true
PECL_COMMAND="pecl install"
return
fi
curl -L -f https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar -o /tmp/pickle
chmod +x /tmp/pickle
if ! stringInList 'zip' "$(getPHPInstalledModules)"; then
PHP_MODULES_TO_INSTALL="zip $(removeStringFromList 'zip' "$PHP_MODULES_TO_INSTALL")"
fi
PECL_COMMAND="/tmp/pickle install --defaults"
return
fi
done
}
# Check if a string is in a list of space-separated string # Check if a string is in a list of space-separated string
# #
# Arguments: # Arguments:
@ -1457,6 +1484,7 @@ cleanup() {
docker-php-source delete docker-php-source delete
rm -rf /tmp/pear rm -rf /tmp/pear
rm -rf /tmp/src rm -rf /tmp/src
rm -rf /tmp/pickle
} }
resetIFS resetIFS
@ -1465,7 +1493,7 @@ IPE_ERRFLAG_FILE="$(mktemp -p /tmp/src)"
setDistro setDistro
setPHPMajorMinor setPHPMajorMinor
case "$PHP_MAJMIN_VERSION" in case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704) ;; 505 | 506 | 700 | 701 | 702 | 703 | 704 | 800) ;;
*) *)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100)) printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;; ;;
@ -1479,12 +1507,14 @@ fi
sortModulesToInstall sortModulesToInstall
docker-php-source extract
BUNDLED_MODULES="$(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | xargs -n1 dirname | xargs -n1 basename | xargs)"
installPickle
buildRequiredPackageLists $PHP_MODULES_TO_INSTALL buildRequiredPackageLists $PHP_MODULES_TO_INSTALL
if test -n "$PACKAGES_PERSISTENT$PACKAGES_VOLATILE"; then if test -n "$PACKAGES_PERSISTENT$PACKAGES_VOLATILE"; then
installRequiredPackages installRequiredPackages
fi fi
docker-php-source extract
BUNDLED_MODULES="$(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | xargs -n1 dirname | xargs -n1 basename | xargs)"
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
if stringInList "$PHP_MODULE_TO_INSTALL" "$BUNDLED_MODULES"; then if stringInList "$PHP_MODULE_TO_INSTALL" "$BUNDLED_MODULES"; then
installBundledModule "$PHP_MODULE_TO_INSTALL" installBundledModule "$PHP_MODULE_TO_INSTALL"

View File

@ -109,6 +109,9 @@ filterUnsupportedExensionsForDistro() {
# the full docker image ID # the full docker image ID
getDockerImageName() { getDockerImageName() {
case "$2" in case "$2" in
8.0)
getDockerImageName_version="$2-rc"
;;
*) *)
getDockerImageName_version="$2" getDockerImageName_version="$2"
;; ;;
@ -154,6 +157,10 @@ getDockerImageName() {
# Outputs: # Outputs:
# the space-separated list of supported PHP versions # the space-separated list of supported PHP versions
getAllPHPVersionsForExtensions() { getAllPHPVersionsForExtensions() {
if test -n "${PHP_VERSION_TO_TEST:-}"; then
echo "$PHP_VERSION_TO_TEST"
return
fi
getAllPHPVersionsForExtensions_result='' getAllPHPVersionsForExtensions_result=''
IFS=' ' IFS=' '
for getAllPHPVersionsForExtensions_extension in $1; do for getAllPHPVersionsForExtensions_extension in $1; do
@ -208,7 +215,22 @@ getAllPHPVersionsForExtension() {
fi fi
done done
done <"$CI_BUILD_DIR/data/supported-extensions" done <"$CI_BUILD_DIR/data/supported-extensions"
printf '%s' "$getAllPHPVersionsForExtension_result"
filterUnsupportedExensionsForDistro_reqs="$CI_BUILD_DIR/data/special-requirements"
if test -f "$filterUnsupportedExensionsForDistro_reqs"; then
getAllPHPVersionsForExtension_filtered_result=''
for getAllPHPVersionsForExtension_result_filter in $getAllPHPVersionsForExtension_result; do
if stringInList "!$getAllPHPVersionsForExtension_result_filter-$DOCKER_DISTRO" "$(cat "$filterUnsupportedExensionsForDistro_reqs" | grep -E "^$1[ \t]")"; then
printf 'Note: extension "%s" is not supported for distro "%s" using php "%s"\n' "$1" "$DOCKER_DISTRO" "$getAllPHPVersionsForExtension_result_filter" >/dev/stderr
else
getAllPHPVersionsForExtension_filtered_result="$getAllPHPVersionsForExtension_filtered_result $getAllPHPVersionsForExtension_result_filter"
fi
done
else
getAllPHPVersionsForExtension_filtered_result="$getAllPHPVersionsForExtension_result"
fi
printf '%s' "${getAllPHPVersionsForExtension_filtered_result# }"
} }
# Test extensions # Test extensions

View File

@ -55,7 +55,7 @@ try {
$image2 = $loadFuntion($tempFile); $image2 = $loadFuntion($tempFile);
unlink($tempFile); unlink($tempFile);
$tempFile = null; $tempFile = null;
if (!is_resource($image2) || imagesx($image2) !== $imageWidth || imagesy($image2) !== $imageHeight) { if (!(is_resource($image2) || is_object($image2)) || imagesx($image2) !== $imageWidth || imagesy($image2) !== $imageHeight) {
throw new Exception("{$loadFuntion}() failed"); throw new Exception("{$loadFuntion}() failed");
} }
imagedestroy($image2); imagedestroy($image2);