feat: 更新 install-php-extensions 脚本 (#1406)

This commit is contained in:
zhengkunwang 2024-05-14 14:18:24 +08:00 committed by GitHub
parent 149792aba0
commit ba9bf2f767
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 6539 additions and 1282 deletions

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=2.1.28
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,53 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ' | sed -r 's# *<#\n<#g' | grep '<v>' | sed 's#<v>##g' | sed 's# ##g')"
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_afterCaret}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -422,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -650,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='libssl1.0'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -715,10 +744,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake"
;;
ddtrace@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev"
;;
ddtrace@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent curl"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev"
;;
dba@alpine)
@ -732,8 +761,18 @@ buildRequiredPackageLists() {
fi
;;
decimal@debian)
if test $DISTRO_MAJMIN_VERSION -lt 1200; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmpdec[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmpdec-dev"
fi
;;
ecma_intl@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev"
;;
ecma_intl@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev"
;;
enchant@alpine)
if test $DISTRO_MAJMIN_VERSION -ge 312; then
@ -780,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -817,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -910,6 +958,9 @@ buildRequiredPackageLists() {
imagick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent imagemagick libgomp"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile imagemagick-dev"
if [ $DISTRO_MAJMIN_VERSION -ge 319 ]; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ghostscript libheif libjxl libraw librsvg"
fi
;;
imagick@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$"
@ -1015,6 +1066,9 @@ buildRequiredPackageLists() {
memcached@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev"
if test $DISTRO_MAJMIN_VERSION -ge 12; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
fi
;;
mongo@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsasl $buildRequiredPackageLists_libssl"
@ -1026,10 +1080,18 @@ buildRequiredPackageLists() {
mongodb@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libsasl $buildRequiredPackageLists_libssl snappy"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev cyrus-sasl-dev snappy-dev $buildRequiredPackageLists_libssldev zlib-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
fi
;;
mongodb@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev libsasl2-dev libsnappy-dev $buildRequiredPackageLists_libssldev zlib1g-dev"
if test $PHP_MAJMIN_VERSION -ge 704; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev"
fi
;;
mosquitto@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent mosquitto-libs"
@ -1113,6 +1175,12 @@ buildRequiredPackageLists() {
php_trie@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
pkcs11@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent softhsm"
;;
pkcs11@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsofthsm2"
;;
pspell@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-libs $(expandASpellDictionaries)"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile aspell-dev"
@ -1148,6 +1216,10 @@ buildRequiredPackageLists() {
;;
esac
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zstd-dev"
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev"
fi
fi
;;
redis@debian)
@ -1165,13 +1237,23 @@ buildRequiredPackageLists() {
;;
esac
fi
if test $PHP_MAJMIN_VERSION -ge 702; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev"
fi
;;
relay@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs"
if test $DISTRO_MAJMIN_VERSION -ge 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssl1.1"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl"
fi
;;
saxon@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip"
;;
seasclick@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
simdjson@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
;;
@ -1232,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1298,23 +1383,38 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git cmake gperf zlib1g-dev $buildRequiredPackageLists_libssldev"
;;
tensor@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack libexecinfo openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev libexecinfo-dev openblas-dev"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent openblas"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lapack-dev openblas-dev"
if test $DISTRO_MAJMIN_VERSION -le 317; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lapack"
if test $DISTRO_MAJMIN_VERSION -le 316; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libexecinfo"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libexecinfo-dev"
if test $DISTRO_MAJMIN_VERSION -le 310; then
if ! stringInList --force-overwrite "$IPE_APK_FLAGS"; then
IPE_APK_FLAGS="$IPE_APK_FLAGS --force-overwrite"
fi
fi
fi
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapack"
fi
;;
tensor@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke libopenblas-base"
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblapacke"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev"
if test $DISTRO_VERSION_NUMBER -ge 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
elif test $DISTRO_VERSION_NUMBER -ge 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8"
if test $DISTRO_VERSION_NUMBER -le 9; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-6 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-6-dev"
elif test $DISTRO_VERSION_NUMBER -le 10; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-8 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-8-dev"
elif test $DISTRO_VERSION_NUMBER -le 11; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-10 libopenblas-base"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-10-dev"
else
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev"
fi
;;
tidy@alpine)
@ -1336,6 +1436,14 @@ buildRequiredPackageLists() {
uuid@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile uuid-dev"
;;
uv@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv-dev"
;;
uv@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuv1"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libuv1-dev"
;;
vips@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent vips"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile vips-dev"
@ -1350,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1564,6 +1680,10 @@ expandInstalledSystemPackageName() {
# Output:
# The number of processor cores available
getProcessorCount() {
if test -n "${IPE_PROCESSOR_COUNT:-}"; then
echo $IPE_PROCESSOR_COUNT
return
fi
if command -v nproc >/dev/null 2>&1; then
nproc
else
@ -1616,6 +1736,9 @@ getModuleFullPath() {
apcu_bc)
getModuleFullPath_path="$PHP_EXTDIR/apc.so"
;;
seasclick)
getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so"
;;
*)
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
;;
@ -1890,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -1937,27 +2060,36 @@ isMicrosoftSqlServerODBCInstalled() {
}
# Install the Microsoft SQL Server ODBC Driver
# see https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
installMicrosoftSqlServerODBC() {
printf 'Installing the Microsoft SQL Server ODBC Driver\n'
case "$DISTRO" in
alpine)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#alpine17
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_18.0.1.1-1_amd64.apk
case $(uname -m) in
aarch64 | arm64 | armv8)
installMicrosoftSqlServerODBC_arch=arm64
;;
*)
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
;;
debian)
# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#debian17
printf -- '- installing the Microsoft APT key\n'
if test $DISTRO_VERSION_NUMBER -ge 11; then
# apt-key is deprecated
if test $DISTRO_VERSION_NUMBER -eq 11; then
curl -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
elif test $DISTRO_VERSION_NUMBER -ge 12; then
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg
else
# apt-key is deprecated
curl -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
fi
if ! test -f /etc/apt/sources.list.d/mssql-release.list; then
@ -1968,8 +2100,8 @@ installMicrosoftSqlServerODBC() {
printf -- '- installing the APT package\n'
if test $PHP_MAJMIN_VERSION -le 703; then
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql17
elif test $DISTRO_VERSION_NUMBER -ge 9 && $DISTRO_VERSION_NUMBER -le 11; then
# On Debian 9 and 11 we have both msodbcsql17 and msodbcsql18: let's install just one
elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 12; then
# On Debian 9 to 12 we have both msodbcsql17 and msodbcsql18: let's install just one
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS msodbcsql18
else
DEBIAN_FRONTEND=noninteractive ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS '^msodbcsql[0-9]+$'
@ -1984,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -1996,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2023,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2041,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2053,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2079,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2087,6 +2230,69 @@ installLibavif() {
cd - >/dev/null
}
# Install libmpdec
installLibMPDec() {
installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installLibMPDec_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2203,6 +2409,56 @@ installSourceGuardian() {
exit 1
}
# Install Cargo (if not yet installed)
installCargo() {
if command -v cargo >/dev/null; then
return
fi
printf '# Installing cargo\n'
case "$DISTRO" in
alpine)
# see https://github.com/hyperledger/indy-vdr/issues/69#issuecomment-998104850
export RUSTFLAGS='-C target-feature=-crt-static'
;;
esac
curl https://sh.rustup.rs -sSf | sh -s -- -y -q
. "$HOME/.cargo/env"
if test -z "${IPE_UNINSTALL_CARGO:-}"; then
IPE_UNINSTALL_CARGO=y
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2268,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2285,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2437,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2444,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2490,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2505,6 +2774,8 @@ installRemoteModule() {
installRemoteModule_version=1.9.3
elif test $PHP_MAJMIN_VERSION -le 505; then
installRemoteModule_version=1.9.4
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.11.0
fi
fi
;;
@ -2581,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2611,29 +2882,43 @@ installRemoteModule() {
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
case "$DISTRO" in
alpine)
if ! test -f /usr/local/lib/libmpdec.so; then
installRemoteModule_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz)"
cd -- "$installRemoteModule_src"
./configure --disable-cxx
make -j$(getProcessorCount)
make install
cd - >/dev/null
installLibMPDec
fi
;;
debian)
if test $DISTRO_MAJMIN_VERSION -ge 1200; then
if test -z "$(ldconfig -p | grep -E '\slibmpdec.so\s')"; then
installLibMPDec
fi
fi
;;
esac
;;
ds)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
if test $PHP_MAJMIN_VERSION -lt 703; then
installRemoteModule_version=1.3.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=1.4.0
fi
fi
;;
ecma_intl)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
fi
;;
event)
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then
@ -2706,7 +2991,7 @@ installRemoteModule() {
case "$DISTRO" in
alpine)
if ! test -e /usr/local/include/libgearman/gearman.h || ! test -e /usr/local/lib/libgearman.so; then
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.20/gearmand-1.1.20.tar.gz)"
installRemoteModule_src="$(getPackageSource https://github.com/gearman/gearmand/releases/download/1.1.21/gearmand-1.1.21.tar.gz)"
cd -- "$installRemoteModule_src"
./configure
make -j$(getProcessorCount) install-binPROGRAMS
@ -2724,7 +3009,7 @@ installRemoteModule() {
geos)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=71b5f9001512e16d3cf4657b517e8a051d6ef36f
installRemoteModule_version=0def35611f773c951432f1f06a155471a5cb7611
fi
installRemoteModule_src="$(getPackageSource https://git.osgeo.org/gitea/geos/php-geos/archive/$installRemoteModule_version.tar.gz)"
cd "$installRemoteModule_src"
@ -2768,10 +3053,6 @@ installRemoteModule() {
esac
fi
fi
if test -z "$installRemoteModule_version"; then
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=1.55.0
fi
if test -z "$installRemoteModule_version" || test "$installRemoteModule_version" = 1.35.0; then
case "$DISTRO_VERSION" in
alpine@3.13)
@ -2807,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2847,6 +3134,13 @@ installRemoteModule() {
fi
fi
;;
jsonpath)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=1.0.1
fi
fi
;;
luasandbox)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 702; then
@ -2971,8 +3265,34 @@ installRemoteModule() {
installRemoteModule_version=1.9.2
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=1.11.1
elif test $PHP_MAJMIN_VERSION -le 703; then
installRemoteModule_version=1.16.2
fi
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.17.0) -ge 0; then
# Enable developer flags? (yes/no)
addConfigureOption enable-mongodb-developer-flags no
# Enable code coverage? (yes/no)
addConfigureOption enable-mongodb-coverage no
# Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)
addConfigureOption with-mongodb-system-libs no
# Enable client-side encryption? (auto/yes/no)
addConfigureOption with-mongodb-client-side-encryption yes
# Enable Snappy for compression? (auto/yes/no)
addConfigureOption with-mongodb-snappy yes
# Enable zlib for compression? (auto/system/bundled/no)
addConfigureOption with-mongodb-zlib yes
# Enable zstd for compression? (auto/yes/no)
addConfigureOption with-mongodb-zstd yes
# Enable SASL for Kerberos authentication? (auto/cyrus/no)
addConfigureOption with-mongodb-sasl yes
# Enable crypto and TLS? (auto/openssl/libressl/darwin/no)
addConfigureOption with-mongodb-ssl yes
# Use system crypto profile (OpenSSL only)? (yes/no)
addConfigureOption enable-mongodb-crypto-system-profile yes
# Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)
addConfigureOption with-mongodb-utf8proc bundled
fi
;;
mosquitto)
if test -z "$installRemoteModule_version"; then
@ -2986,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -2993,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3002,6 +3334,8 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=4.10.0
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=22.0.0
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3013,6 +3347,48 @@ installRemoteModule() {
installRemoteModule_sockets=no
fi
installRemoteModule_openssl=yes
if test -n "$installRemoteModule_version" && test $(compareVersions "$installRemoteModule_version" 22.1.2) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.1) -ge 0; then
# enable c-ares support?
addConfigureOption enable-cares yes
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.1.0) -ge 0; then
# enable coroutine sockets?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 protocol?
addConfigureOption enable-http2 yes
# enable coroutine mysqlnd?
addConfigureOption enable-mysqlnd yes
# enable coroutine curl?
addConfigureOption enable-hook-curl yes
# enable coroutine postgres?
addConfigureOption with-postgres yes
elif test $(compareVersions "$installRemoteModule_version" 22.0.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
@ -3021,25 +3397,38 @@ installRemoteModule() {
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '22.8.0') -ge 0; then
#enable hook curl support?
# enable hook curl support?
addConfigureOption enable-hook-curl yes
# enable postgres support?
addConfigureOption with-postgres yes
else
elif test $(compareVersions "$installRemoteModule_version" 4.8.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '4.8.0') -ge 0; then
# enable postgres support?
addConfigureOption with-postgres yes
fi
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
else
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
# enable openssl support?
addConfigureOption enable-openssl $installRemoteModule_openssl
# enable http2 support?
addConfigureOption enable-http2 yes
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
fi
;;
parallel)
@ -3092,11 +3481,12 @@ installRemoteModule() {
;;
protobuf)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=3.12.4
else
# See https://github.com/protocolbuffers/protobuf/issues/10619
installRemoteModule_version=3.23.2
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3154,19 +3544,21 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=4.3.0
elif test $PHP_MAJMIN_VERSION -le 701; then
installRemoteModule_version=5.3.7
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
# Enable igbinary serializer support?
if php --ri igbinary >/dev/null 2>/dev/null; then
addConfigureOption 'enable-redis-igbinary' 'yes'
addConfigureOption enable-redis-igbinary yes
else
addConfigureOption 'enable-redis-igbinary' 'no'
addConfigureOption enable-redis-igbinary no
fi
# Enable lzf compression support?
addConfigureOption 'enable-redis-lzf' 'yes'
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '5.0.0') -ge 0; then
addConfigureOption enable-redis-lzf yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then
if ! test -e /usr/include/zstd.h || ! test -e /usr/lib/libzstd.so -o -e "/usr/lib/$TARGET_TRIPLET/libzstd.so"; then
installRemoteModule_zstdVersion=1.4.4
installRemoteModule_zstdVersionMajor=$(echo $installRemoteModule_zstdVersion | cut -d. -f1)
@ -3182,7 +3574,19 @@ installRemoteModule() {
cd - >/dev/null
fi
# Enable zstd compression support?
addConfigureOption 'enable-redis-zstd' 'yes'
addConfigureOption enable-redis-zstd yes
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then
# Enable msgpack serializer support?
if php --ri msgpack >/dev/null 2>/dev/null; then
addConfigureOption enable-redis-msgpack yes
else
addConfigureOption enable-redis-msgpack no
fi
# Enable lz4 compression?
addConfigureOption enable-redis-lz4 yes
# Use system liblz4?
addConfigureOption with-liblz4 yes
fi
fi
;;
relay)
@ -3226,6 +3630,50 @@ installRemoteModule() {
installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)"
installRemoteModule_manuallyInstalled=1
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
fi
installRemoteModule_majorVersion="${installRemoteModule_version%%.*}"
if test "$installRemoteModule_majorVersion" -ge 12; then
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-aarch64-v${installRemoteModule_version}.zip
;;
*)
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-linux-x86_64-v${installRemoteModule_version}.zip
;;
esac
else
installRemoteModule_url=https://downloads.saxonica.com/SaxonC/EE/${installRemoteModule_majorVersion}/libsaxon-EEC-setup64-v${installRemoteModule_version}.zip
fi
installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)"
if ! test -f /usr/lib/libsaxon-*.so; then
if test "$installRemoteModule_majorVersion" -ge 12; then
cp $installRemoteModule_dir/libs/nix/*.so /usr/lib/
else
cp $installRemoteModule_dir/*.so /usr/lib/
fi
ldconfig || true
fi
cd "$installRemoteModule_dir/Saxon.C.API"
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
seasclick)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version=0.1.0
fi
fi
;;
snappy)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
@ -3243,7 +3691,11 @@ installRemoteModule() {
snuffleupagus)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=0.9.0
else
installRemoteModule_version=0.10.0
fi
fi
installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)"
cd "$installRemoteModule_src/src"
@ -3272,8 +3724,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
elif test $PHP_MAJMIN_VERSION -lt 704; then
installRemoteModule_version=2.6.0
fi
fi
;;
@ -3284,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.13
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3316,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3352,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3370,6 +3829,12 @@ installRemoteModule() {
fi
;;
esac
if test $PHP_MAJMIN_VERSION -eq 803; then
# see https://github.com/swoole/docker-swoole/issues/45
installRemoteModule_curl=no
else
installRemoteModule_curl=yes
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3378,7 +3843,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
# enable brotli support?
@ -3391,7 +3856,7 @@ installRemoteModule() {
# enable mysqlnd support?
addConfigureOption enable-mysqlnd yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -ge 0; then
@ -3406,7 +3871,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
# enable cares support?
addConfigureOption enable-cares yes
elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -ge 0; then
@ -3421,7 +3886,7 @@ installRemoteModule() {
# enable json support?
addConfigureOption enable-swoole-json yes
# enable curl support?
addConfigureOption enable-swoole-curl yes
addConfigureOption enable-swoole-curl $installRemoteModule_curl
elif test $(compareVersions "$installRemoteModule_version" 4.4.0) -ge 0; then
# enable sockets supports?
addConfigureOption enable-sockets $installRemoteModule_sockets
@ -3545,6 +4010,66 @@ installRemoteModule() {
installRemoteModule_version=2.2.3
fi
fi
case "$DISTRO" in
alpine)
if test $DISTRO_MAJMIN_VERSION -ge 315 && test $DISTRO_MAJMIN_VERSION -le 317; then
if test -e /usr/lib/liblapacke.so.3 && ! test -e /usr/lib/liblapacke.so; then
ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so
fi
fi
;;
esac
;;
tideways)
case "$DISTRO" in
alpine)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
debian)
case $(uname -m) in
aarch64 | arm64 | armv8)
installRemoteModule_architecture=arm64
;;
*)
installRemoteModule_architecture=x86_64
;;
esac
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
installRemoteModule_src="$installRemoteModule_src/dist"
fi
installRemoteModule_src="$installRemoteModule_src/tideways-php"
case "$DISTRO" in
alpine)
installRemoteModule_src="$installRemoteModule_src-alpine"
;;
esac
installRemoteModule_src="$installRemoteModule_src-$PHP_MAJDOTMIN_VERSION"
if test $PHP_THREADSAFE -eq 1; then
installRemoteModule_src="$installRemoteModule_src-zts"
fi
installRemoteModule_src="$installRemoteModule_src.so"
if ! test -f "$installRemoteModule_src"; then
echo 'tideways does not support the current environment' >&2
exit 1
fi
mv "$installRemoteModule_src" $(getPHPExtensionsDir)/tideways.so
installRemoteModule_manuallyInstalled=1
;;
uopz)
if test -z "$installRemoteModule_version"; then
@ -3571,6 +4096,51 @@ installRemoteModule() {
fi
fi
;;
uv)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=0.2.4
else
installRemoteModule_version=beta
fi
fi
;;
vld)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.14.0
else
installRemoteModule_version=beta
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -3751,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -3768,7 +4345,7 @@ moduleMayUsePecl() {
@composer | @fix_letsencrypt)
return 1
;;
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib)
blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways)
return 1
;;
esac
@ -4018,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)
@ -4038,6 +4615,10 @@ fixLetsEncrypt() {
# Cleanup everything at the end of the execution
cleanup() {
if test "${IPE_UNINSTALL_CARGO:-}" = y; then
. "$HOME/.cargo/env"
rustup self uninstall -y
fi
if test -n "$UNNEEDED_PACKAGE_LINKS"; then
printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n'
for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do
@ -4046,25 +4627,27 @@ cleanup() {
fi
done
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
case "$DISTRO" in
alpine)
if stringInList icu-libs "${PACKAGES_PERSISTENT_NEW:-}" && stringInList icu-data-en "${PACKAGES_PERSISTENT_NEW:-}"; then
apk del icu-data-en >/dev/null 2>&1 || true
fi
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
apk del --purge $PACKAGES_VOLATILE
fi
;;
debian)
if test -n "$PACKAGES_VOLATILE"; then
printf '### REMOVING UNNEEDED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y $PACKAGES_VOLATILE
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$DISTRO" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends --no-upgrade $IPE_APTGET_INSTALLOPTIONS $PACKAGES_PREVIOUS
fi
;;
esac
fi
docker-php-source delete
rm -rf /tmp/src
rm -rf /tmp/pickle
@ -4101,7 +4684,7 @@ esac
setPHPVersionVariables
setPHPPreinstalledModules
case "$PHP_MAJMIN_VERSION" in
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802) ;;
505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803) ;;
*)
printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100))
;;
@ -4137,6 +4720,7 @@ fi
if test $USE_PICKLE -gt 1; then
buildPickle
fi
for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do
case "$PHP_MODULE_TO_INSTALL" in
@fix_letsencrypt)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=master
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,74 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
case "$resolveWantedPHPModuleVersion_afterCaret" in
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolveWantedPHPModuleVersion_wantedStability="${resolveWantedPHPModuleVersion_afterCaret##*@}"
resolveWantedPHPModuleVersion_wantedVersion="${resolveWantedPHPModuleVersion_afterCaret%@*}"
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolveWantedPHPModuleVersion_wantedStability=''
resolveWantedPHPModuleVersion_wantedVersion="$resolveWantedPHPModuleVersion_afterCaret"
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolveWantedPHPModuleVersion_wantedStability"; then
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | grep "<s>$resolveWantedPHPModuleVersion_wantedStability</s>")"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed 's#^.*<v>##')"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | cut -d'<' -f1)"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -443,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -671,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='^libssl[0-9]+(\.[0-9]+)*$'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -811,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -848,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -1297,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1438,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1985,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -2039,7 +2067,7 @@ installMicrosoftSqlServerODBC() {
alpine)
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
case $(uname -m) in
aarch64 | arm64 | armv8)
@ -2049,7 +2077,7 @@ installMicrosoftSqlServerODBC() {
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$installMicrosoftSqlServerODBC_arch.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
@ -2088,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -2100,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2127,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2145,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2157,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2183,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2201,6 +2240,59 @@ installLibMPDec() {
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2336,6 +2428,37 @@ installCargo() {
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2401,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2418,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2570,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2577,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2623,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2716,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2745,9 +2881,12 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
else
installCargo
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
@ -2949,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -3161,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -3168,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3274,11 +3431,6 @@ installRemoteModule() {
addConfigureOption enable-swoole-curl yes
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
fi
;;
parallel)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 701; then
@ -3333,6 +3485,8 @@ installRemoteModule() {
installRemoteModule_version=3.12.4
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3478,8 +3632,8 @@ installRemoteModule() {
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version='11.6'
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
@ -3506,9 +3660,7 @@ installRemoteModule() {
fi
ldconfig || true
fi
set -x
cd "$installRemoteModule_dir/Saxon.C.API"
exit
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
@ -3586,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.14
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3618,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3654,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3871,7 +4028,7 @@ installRemoteModule() {
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
@ -3887,6 +4044,10 @@ installRemoteModule() {
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
@ -3953,6 +4114,33 @@ installRemoteModule() {
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -4133,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -4400,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=master
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,74 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
case "$resolveWantedPHPModuleVersion_afterCaret" in
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolveWantedPHPModuleVersion_wantedStability="${resolveWantedPHPModuleVersion_afterCaret##*@}"
resolveWantedPHPModuleVersion_wantedVersion="${resolveWantedPHPModuleVersion_afterCaret%@*}"
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolveWantedPHPModuleVersion_wantedStability=''
resolveWantedPHPModuleVersion_wantedVersion="$resolveWantedPHPModuleVersion_afterCaret"
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolveWantedPHPModuleVersion_wantedStability"; then
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | grep "<s>$resolveWantedPHPModuleVersion_wantedStability</s>")"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed 's#^.*<v>##')"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | cut -d'<' -f1)"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -443,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -671,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='^libssl[0-9]+(\.[0-9]+)*$'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -811,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -848,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -1297,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1438,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1985,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -2039,7 +2067,7 @@ installMicrosoftSqlServerODBC() {
alpine)
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
case $(uname -m) in
aarch64 | arm64 | armv8)
@ -2049,7 +2077,7 @@ installMicrosoftSqlServerODBC() {
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$installMicrosoftSqlServerODBC_arch.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
@ -2088,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -2100,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2127,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2145,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2157,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2183,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2201,6 +2240,59 @@ installLibMPDec() {
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2336,6 +2428,37 @@ installCargo() {
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2401,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2418,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2570,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2577,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2623,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2716,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2745,9 +2881,12 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
else
installCargo
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
@ -2949,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -3161,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -3168,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3274,11 +3431,6 @@ installRemoteModule() {
addConfigureOption enable-swoole-curl yes
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
fi
;;
parallel)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 701; then
@ -3333,6 +3485,8 @@ installRemoteModule() {
installRemoteModule_version=3.12.4
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3478,8 +3632,8 @@ installRemoteModule() {
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version='11.6'
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
@ -3506,9 +3660,7 @@ installRemoteModule() {
fi
ldconfig || true
fi
set -x
cd "$installRemoteModule_dir/Saxon.C.API"
exit
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
@ -3586,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.14
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3618,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3654,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3871,7 +4028,7 @@ installRemoteModule() {
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
@ -3887,6 +4044,10 @@ installRemoteModule() {
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
@ -3953,6 +4114,33 @@ installRemoteModule() {
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -4133,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -4400,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)

View File

@ -21,7 +21,7 @@ if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable
exit 1
fi
IPE_VERSION=master
IPE_VERSION=2.2.14
StandWithUkraine() {
if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then
@ -357,74 +357,81 @@ getModuleSourceCodePath() {
fi
}
# Get the wanted PHP module version, resolving it if it starts with '^'
# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
# $1: the name of the module to be normalized
# $1: the name of the module
# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
resolveWantedPHPModuleVersion() {
resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
printf '%s' "$resolveWantedPHPModuleVersion_raw"
resolvePHPModuleVersion() {
resolvePHPModuleVersion_module="$1"
if test $# -lt 2; then
resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
else
resolvePHPModuleVersion_raw="$2"
fi
resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
case "$resolveWantedPHPModuleVersion_afterCaret" in
case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
resolveWantedPHPModuleVersion_wantedStability="${resolveWantedPHPModuleVersion_afterCaret##*@}"
resolveWantedPHPModuleVersion_wantedVersion="${resolveWantedPHPModuleVersion_afterCaret%@*}"
resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
resolveWantedPHPModuleVersion_wantedStability=''
resolveWantedPHPModuleVersion_wantedVersion="$resolveWantedPHPModuleVersion_afterCaret"
resolvePHPModuleVersion_wantedStability=''
resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
resolvePHPModuleVersion_peclModule="$(getPeclModuleName "$resolvePHPModuleVersion_module")"
resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_peclModule/allreleases.xml")"
# remove line endings, collapse spaces
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg <r><v>1.2.3</v><s>stable</s></r>)
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolveWantedPHPModuleVersion_wantedStability"; then
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#<r#\n<r#g')"
if test -n "$resolvePHPModuleVersion_wantedStability"; then
# keep the lines with the wanted stability
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | grep "<s>$resolveWantedPHPModuleVersion_wantedStability</s>")"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "<s>$resolvePHPModuleVersion_wantedStability</s>")"
fi
# remove everything's up to '<v>' (included)
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed 's#^.*<v>##')"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*<v>##')"
# keep just the versions
resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | cut -d'<' -f1)"
resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion.}"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
if test -z "$resolveWantedPHPModuleVersion_suffix"; then
if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
fi
case "$resolveWantedPHPModuleVersion_suffix" in
case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
printf '%s' "$resolveWantedPHPModuleVersion_version"
printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@ -443,7 +450,8 @@ resolvePeclStabilityVersion() {
return
;;
esac
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$1/$2.txt"
resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")"
peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt"
if ! peclStabilityFlagToVersion_result="$(curl -sSLf "$peclStabilityFlagToVersion_url")"; then
peclStabilityFlagToVersion_result=''
fi
@ -671,7 +679,7 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS"
fi
if test -z "$(apk info 2>/dev/null | grep -E ^libssl)"; then
buildRequiredPackageLists_libssl='^libssl[0-9]+(\.[0-9]+)*$'
buildRequiredPackageLists_libssl="$(apk search | grep -E '^libssl[0-9]' | head -1 | cut -d- -f1)"
elif test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libtls')" && test -z "$(apk info 2>/dev/null | grep -E '^libressl.*-libssl')" && test -z "$(apk info 2>/dev/null | grep -E '^libretls-')"; then
buildRequiredPackageLists_libssl=$(apk search -q libressl*-libtls)
else
@ -811,6 +819,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
ftp@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
ftp@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@ -848,7 +862,10 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev"
if test $PHP_MAJMIN_VERSION -ge 801; then
if ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
if test $DISTRO_VERSION_NUMBER -ge 12; then
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libavif[0-9]+$ ^libaom[0-9]+$ ^libdav1d[0-9]+$"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev libaom-dev libdav1d-dev"
elif ! isLibaomInstalled || ! isLibdav1dInstalled || ! isLibyuvInstalled || ! isLibavifInstalled; then
case "${IPE_GD_WITHOUTAVIF:-}" in
1 | y* | Y*) ;;
*)
@ -1297,6 +1314,9 @@ buildRequiredPackageLists() {
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libcurl3-gnutls"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-gnutls-dev libxml2-dev"
;;
sourceguardian@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs"
;;
spx@alpine)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev"
;;
@ -1438,6 +1458,14 @@ buildRequiredPackageLists() {
wddx@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev"
;;
wikidiff2@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git"
;;
wikidiff2@debian)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libthai0"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git libthai-dev"
;;
xdebug@alpine)
if test $PHP_MAJMIN_VERSION -ge 800; then
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers"
@ -1985,11 +2013,11 @@ installOracleInstantClient() {
mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH"
echo 'done.'
fi
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH/sdk" && ! test -L "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"; then
printf 'Downloading Oracle Instant SDK v%s... ' "$installOracleInstantClient_version"
installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_sdk)"
ln -sf "$installOracleInstantClient_src/sdk" "$ORACLE_INSTANTCLIENT_LIBPATH/sdk"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS '$ORACLE_INSTANTCLIENT_LIBPATH/sdk'"
UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS $ORACLE_INSTANTCLIENT_LIBPATH/sdk"
echo 'done.'
fi
case "$DISTRO" in
@ -2039,7 +2067,7 @@ installMicrosoftSqlServerODBC() {
alpine)
rm -rf /tmp/src/msodbcsql.apk
if test $PHP_MAJMIN_VERSION -le 703; then
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.9.1.1-1_amd64.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
else
case $(uname -m) in
aarch64 | arm64 | armv8)
@ -2049,7 +2077,7 @@ installMicrosoftSqlServerODBC() {
installMicrosoftSqlServerODBC_arch=amd64
;;
esac
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$installMicrosoftSqlServerODBC_arch.apk
curl -sSLf -o /tmp/src/msodbcsql.apk https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_$installMicrosoftSqlServerODBC_arch.apk
fi
printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk
rm -rf /tmp/src/msodbcsql.apk
@ -2088,7 +2116,7 @@ installMicrosoftSqlServerODBC() {
# 0 (true)
# 1 (false)
isLibaomInstalled() {
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so; then
if ! test -f /usr/local/lib/libaom.so && ! test -f /usr/lib/libaom.so && ! test -f /usr/lib/x86_64*/libaom.so; then
return 1
fi
if ! test -f /usr/local/include/aom/aom_codec.h && ! test -f /usr/include/aom/aom_codec.h; then
@ -2100,7 +2128,18 @@ isLibaomInstalled() {
# Install libaom
installLibaom() {
printf 'Installing libaom\n'
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v3.3.0.tar.gz)"
installLibaom_version=3.8.1
case "$DISTRO_VERSION" in
debian@10)
case $(uname -m) in
aarch* | arm*)
#see https://bugs.chromium.org/p/aomedia/issues/detail?id=3543
installLibaom_version=3.5.0
;;
esac
;;
esac
installLibaom_dir="$(getPackageSource https://aomedia.googlesource.com/aom/+archive/v$installLibaom_version.tar.gz)"
mkdir -- "$installLibaom_dir/my.build"
cd -- "$installLibaom_dir/my.build"
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DCMAKE_INSTALL_LIBDIR:PATH=lib ..
@ -2127,7 +2166,7 @@ isLibdav1dInstalled() {
# Install libdav1d
installLibdav1d() {
printf 'Installing libdav1d\n'
installLibdav1d_dir="$(getPackageSource https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz)"
installLibdav1d_dir="$(getPackageSource https://github.com/videolan/dav1d/archive/refs/tags/1.3.0.tar.gz)"
mkdir -- "$installLibdav1d_dir/build"
cd -- "$installLibdav1d_dir/build"
meson --buildtype release -Dprefix=/usr ..
@ -2145,7 +2184,7 @@ installLibdav1d() {
# 0 (true)
# 1 (false)
isLibyuvInstalled() {
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so; then
if ! test -f /usr/local/lib/libyuv.so && ! test -f /usr/lib/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so && ! test -f /usr/lib/x86_64*/libyuv.so.*; then
return 1
fi
if ! test -f /usr/local/include/libyuv.h && ! test -f /usr/include/libyuv.h; then
@ -2157,7 +2196,7 @@ isLibyuvInstalled() {
# Install libyuv
installLibyuv() {
printf 'Installing libyuv\n'
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/25d0a5110be796eef47004412baf43333d9ecf26.tar.gz)"
installLibyuv_dir="$(getPackageSource https://chromium.googlesource.com/libyuv/libyuv/+archive/d359a9f922af840b043535d43cf9d38b220d102e.tar.gz)"
mkdir -- "$installLibyuv_dir/build"
cd -- "$installLibyuv_dir/build"
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -B. ..
@ -2183,7 +2222,7 @@ isLibavifInstalled() {
# Install libavif
installLibavif() {
printf 'Installing libavif\n'
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v0.9.3)"
installLibavif_dir="$(getPackageSource https://codeload.github.com/AOMediaCodec/libavif/tar.gz/refs/tags/v1.0.3)"
mkdir -- "$installLibavif_dir/build"
cd -- "$installLibavif_dir/build"
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DAVIF_CODEC_AOM=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib
@ -2201,6 +2240,59 @@ installLibMPDec() {
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibDatrieInstalled() {
if ! test -f /usr/local/lib/libdatrie.so && ! test -f /usr/lib/libdatrie.so && ! test -f /usr/lib/x86_64*/libdatrie.so; then
return 1
fi
if ! test -f /usr/local/include/datrie/trie.h && ! test -f /usr/include/datrie/trie.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibDatrie() {
printf 'Installing libdatrie\n'
installLibDatrie_src="$(getPackageSource https://github.com/tlwg/libdatrie/releases/download/v0.2.13/libdatrie-0.2.13.tar.xz)"
cd -- "$installLibDatrie_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Check if libdatrie is installed
#
# Return:
# 0 (true)
# 1 (false)
isLibThaiInstalled() {
return 1
if ! test -f /usr/local/lib/libthai.so && ! test -f /usr/lib/libthai.so && ! test -f /usr/lib/x86_64*/libthai.so; then
return 1
fi
if ! test -f /usr/local/include/thai/thailib.h && ! test -f /usr/include/thai/thailib.h; then
return 1
fi
return 0
}
# Install libdatrie
installLibThai() {
printf 'Installing libthai\n'
installLibThai_src="$(getPackageSource https://github.com/tlwg/libthai/releases/download/v0.1.29/libthai-0.1.29.tar.xz)"
cd -- "$installLibThai_src"
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
}
# Install Composer
installComposer() {
installComposer_version="$(getWantedPHPModuleVersion @composer)"
@ -2336,6 +2428,37 @@ installCargo() {
fi
}
installNewRelic() {
printf '# Installing newrelic\n'
installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux'
case "$DISTRO" in
alpine)
installNewRelic_search="$installNewRelic_search-musl"
;;
esac
installNewRelic_file="$(curl -sSLf -o- https://download.newrelic.com/php_agent/release/ | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)"
installNewRelic_url="https://download.newrelic.com/php_agent/release/$installNewRelic_file"
installNewRelic_src="$(getPackageSource "$installNewRelic_url")"
cd -- "$installNewRelic_src"
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install
case "${IPE_NEWRELIC_DAEMON:-}" in
1 | y* | Y*)
NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install_daemon
;;
esac
cd - >/dev/null
cat <<EOT
NewRelic has been installed from $installNewRelic_url
You may need to:
- change the owner/permissions of /var/log/newrelic
(for example: chown -R www-data:www-data /var/log/newrelic)
- set the value of the newrelic.license configuration key in
$PHP_INI_DIR/conf.d/newrelic.ini
(if you didn't set the NR_INSTALL_KEY environment variable)
EOT
}
# Install a bundled PHP module given its handle
#
# Arguments:
@ -2401,6 +2524,9 @@ EOF
cd - >/dev/null
fi
;;
ftp)
docker-php-ext-configure ftp --with-openssl-dir=/usr
;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@ -2418,6 +2544,11 @@ EOF
installBundledModule_tmp=1
fi
;;
debian)
if test $DISTRO_VERSION_NUMBER -ge 12; then
installBundledModule_tmp=1
fi
;;
esac
if test $installBundledModule_tmp -eq 0; then
case "${IPE_GD_WITHOUTAVIF:-}" in
@ -2570,6 +2701,9 @@ EOF
esac
;;
esac
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
php -r 'return;' >/dev/null 2>/dev/null || true
installBundledModule_errAfter="$(php -r 'return;' 2>&1 || true)"
if test "$installBundledModule_errAfter" != "$installBundledModule_errBefore"; then
@ -2577,6 +2711,8 @@ EOF
rm "$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" || true
return 1
fi
;;
esac
}
# Fetch a tar.gz file, extract it and returns the path of the extracted folder.
@ -2623,7 +2759,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@ -2716,7 +2852,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
installRemoteModule_tmp=0.30.3
installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@ -2745,9 +2881,12 @@ installRemoteModule() {
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=0.75.0
else
installCargo
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
fi
if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.75.0) -ge 0; then
installCargo
fi
;;
decimal)
@ -2949,6 +3088,12 @@ installRemoteModule() {
fi
fi
;;
imap)
# Include Kerberos Support
addConfigureOption with-kerberos yes
# Include SSL Support
addConfigureOption with-imap-ssl yes
;;
inotify)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -3161,6 +3306,10 @@ installRemoteModule() {
fi
fi
;;
newrelic)
installNewRelic
installRemoteModule_manuallyInstalled=2
;;
oauth)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
@ -3168,6 +3317,14 @@ installRemoteModule() {
fi
fi
;;
oci8 | pdo_oci)
installOracleInstantClient
if test "$installRemoteModule_module" = oci8; then
addConfigureOption with-oci8 "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
elif test "$installRemoteModule_module" = pdo_oci; then
addConfigureOption with-pdo-oci "instantclient,$ORACLE_INSTANTCLIENT_LIBPATH"
fi
;;
opencensus)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=alpha
@ -3274,11 +3431,6 @@ installRemoteModule() {
addConfigureOption enable-swoole-curl yes
fi
;;
opentelemetry)
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=beta
fi
;;
parallel)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 701; then
@ -3333,6 +3485,8 @@ installRemoteModule() {
installRemoteModule_version=3.12.4
elif test $PHP_MAJMIN_VERSION -lt 800; then
installRemoteModule_version=3.24.4
elif test $PHP_MAJMIN_VERSION -lt 801; then
installRemoteModule_version=3.25.3
fi
fi
;;
@ -3478,8 +3632,8 @@ installRemoteModule() {
;;
saxon)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 506; then
installRemoteModule_version='11.6'
if test $PHP_MAJMIN_VERSION -ge 800; then
installRemoteModule_version='12.4.2'
else
installRemoteModule_version='12.3'
fi
@ -3506,9 +3660,7 @@ installRemoteModule() {
fi
ldconfig || true
fi
set -x
cd "$installRemoteModule_dir/Saxon.C.API"
exit
phpize
./configure --enable-saxon
make -j$(getProcessorCount) install
@ -3586,7 +3738,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
installRemoteModule_version=v0.4.14
installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@ -3618,6 +3770,8 @@ installRemoteModule() {
installRemoteModule_version=5.9.0
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=5.10.1
elif test $PHP_MAJMIN_VERSION -le 800; then
installRemoteModule_version=5.11.1
fi
fi
;;
@ -3654,6 +3808,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
elif test $PHP_BITS -eq 32; then
# See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
@ -3871,7 +4028,7 @@ installRemoteModule() {
installRemoteModule_architecture=alpine-arm64
;;
*)
installRemoteModule_architecture=alpine
installRemoteModule_architecture=alpine-x86_64
;;
esac
;;
@ -3887,6 +4044,10 @@ installRemoteModule() {
;;
esac
installRemoteModule_url="$(curl -sSLf -o - https://tideways.com/profiler/downloads | grep -Eo "\"[^\"]+/tideways-php-([0-9]+\.[0-9]+\.[0-9]+)-$installRemoteModule_architecture.tar.gz\"" | cut -d'"' -f2)"
if test -z "$installRemoteModule_url"; then
echo 'Failed to find the tideways tarball to be downloaded'
exit 1
fi
printf 'Downloading tideways from %s\n' "$installRemoteModule_url"
installRemoteModule_src="$(getPackageSource $installRemoteModule_url)"
if test -d "$installRemoteModule_src/dist"; then
@ -3953,6 +4114,33 @@ installRemoteModule() {
fi
fi
;;
wikidiff2)
case "$DISTRO" in
alpine)
if ! isLibDatrieInstalled; then
installLibDatrie
fi
if ! isLibThaiInstalled; then
installLibThai
fi
;;
esac
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 702; then
installRemoteModule_version=1.13.0
else
installRemoteModule_version="$(git -c versionsort.suffix=- ls-remote --tags --refs --quiet --exit-code --sort=version:refname https://github.com/wikimedia/mediawiki-php-wikidiff2.git 'refs/tags/*.*.*' | tail -1 | cut -d/ -f3)"
fi
fi
installRemoteModule_src="$(getPackageSource "https://codeload.github.com/wikimedia/mediawiki-php-wikidiff2/tar.gz/refs/tags/$installRemoteModule_version")"
cd -- "$installRemoteModule_src"
phpize
./configure
make -j$(getProcessorCount)
make install
cd - >/dev/null
installRemoteModule_manuallyInstalled=1
;;
xdebug)
if test -z "$installRemoteModule_version"; then
if test $PHP_MAJMIN_VERSION -le 500; then
@ -4133,8 +4321,15 @@ installRemoteModule() {
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags" "$installRemoteModule_path"
fi
postProcessModule "$installRemoteModule_module"
if test $installRemoteModule_manuallyInstalled -lt 2; then
case "${IPE_SKIP_CHECK:-}" in
1 | y* | Y*) ;;
*)
checkModuleWorking "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
;;
esac
enablePhpExtension "$installRemoteModule_module" "$installRemoteModule_ini_basename" "$installRemoteModule_ini_extra"
fi
}
# Check if a module/helper may be installed using the pecl archive
@ -4400,7 +4595,7 @@ fixLetsEncrypt() {
invokeAptGetUpdate
fi
printf -- '- installing newer ca-certificates package\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends $IPE_APTGET_INSTALLOPTIONS ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends ${IPE_APTGET_INSTALLOPTIONS:-} ca-certificates
fi
;;
*)