From e2a6d50cb68da3bbf49cac0469c6f681047acf54 Mon Sep 17 00:00:00 2001 From: soheil khaledabadi Date: Sat, 6 Jun 2026 21:31:28 +0330 Subject: [PATCH] refactor(docker): replace install-php-extensions script with direct docker-php-ext-install commands in Dockerfile --- Dockerfile | 16 +- docker/php/install-php-extensions | 5736 ----------------------------- 2 files changed, 9 insertions(+), 5743 deletions(-) delete mode 100755 docker/php/install-php-extensions diff --git a/Dockerfile b/Dockerfile index 4eb1d37..5e854e6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,22 +3,24 @@ WORKDIR /var/www/html ENV COMPOSER_ALLOW_SUPERUSER=1 -COPY docker/php/install-php-extensions /usr/local/bin/install-php-extensions COPY docker/apt/debian.sources /etc/apt/sources.list.d/debian.sources RUN apt-get -o Acquire::Check-Valid-Until=false update \ && apt-get install -y --no-install-recommends \ + $PHPIZE_DEPS \ curl \ default-mysql-client \ + default-libmysqlclient-dev \ + libicu-dev \ + libzip-dev \ unzip \ - && install-php-extensions \ - bcmath \ - intl \ - pcntl \ - pdo_mysql \ - zip \ + && docker-php-ext-install -j"$(nproc)" bcmath intl pcntl pdo_mysql zip \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ && apt-get purge -y --auto-remove \ + $PHPIZE_DEPS \ + default-libmysqlclient-dev \ + libicu-dev \ + libzip-dev \ && rm -rf /var/lib/apt/lists/* COPY docker/php/php.ini /usr/local/etc/php/conf.d/99-production.ini diff --git a/docker/php/install-php-extensions b/docker/php/install-php-extensions deleted file mode 100755 index 8c3f8eb..0000000 --- a/docker/php/install-php-extensions +++ /dev/null @@ -1,5736 +0,0 @@ -#!/bin/sh - -# This script wraps docker-php-ext-install, properly configuring the system. -# -# Copyright (c) Michele Locati, 2018-2023 -# -# Source: https://github.com/mlocati/docker-php-extension-installer -# -# License: MIT - see https://github.com/mlocati/docker-php-extension-installer/blob/master/LICENSE - -# Let's set a sane environment -set -o errexit -set -o nounset - -if test "${IPE_DEBUG:-}" = "1"; then - set -x -fi - -if ! which docker-php-ext-configure >/dev/null || ! which docker-php-ext-enable >/dev/null || ! which docker-php-ext-install >/dev/null || ! which docker-php-source >/dev/null; then - printf 'The script %s is meant to be used with official Docker PHP Images - https://hub.docker.com/_/php\n' "$0" >&2 - exit 1 -fi - -IPE_VERSION=2.11.1 - -StandWithUkraine() { - if test -t 1 && ! grep -Eq '^VERSION=.*jessie' /etc/os-release; then - printf '\e[37;44m#StandWith\e[30;43mUkraine\e[0m\n' - else - printf '#StandWithUkraine\n' - fi -} - -if test "$IPE_VERSION" = master && test "${CI:-}" != true; then - cat <&2 - exit 1 - fi - DISTRO="$(cat /etc/os-release | grep -E ^ID= | cut -d = -f 2)" - DISTRO_VERSION_NUMBER="$(cat /etc/os-release | grep -E ^VERSION_ID= | cut -d = -f 2 | cut -d '"' -f 2 | cut -d . -f 1,2)" - DISTRO_VERSION="$(printf '%s@%s' $DISTRO $DISTRO_VERSION_NUMBER)" - DISTRO_MAJMIN_VERSION="$(echo "$DISTRO_VERSION_NUMBER" | awk -F. '{print $1*100+$2}')" -} - -# Set: -# - PHP_MAJMIN_VERSION: Major-Minor version, format MMmm (example 800 for PHP 8.0.1) -# - PHP_MAJDOTMIN_VERSION: Major-Minor version, format M.m (example 8.0 for PHP 8.0.1) -# - PHP_MAJMINPAT_VERSION: Major-Minor-Patch version, format MMmmpp (example 80001 for PHP 8.0.1) variables containing integers value -# - PHP_MAJDOTMINDOTPAT_VERSION: Major-Minor-Patch version, format M.m.p (example 8.0.1 for PHP 8.0.1) -# - PHP_THREADSAFE: 1 if PHP is thread-safe (TS), 0 if not thread-safe (NTS) -# - PHP_DEBUGBUILD: 1 if PHP is debug build (configured with "--enable-debug"), 0 otherwise -# - PHP_BITS: 32 if PHP is compiled for 32-bit, 64 if 64-bit -# - PHP_EXTDIR: the absolute path where the PHP extensions reside -setPHPVersionVariables() { - PHP_MAJDOTMINDOTPAT_VERSION="$(php-config --version)" - PHP_MAJMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*100+$2}') - PHP_MAJDOTMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | cut -d. -f1-2) - PHP_MAJMINPAT_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*10000+$2*100+$3}') - PHP_THREADSAFE=$(php -n -r 'echo ZEND_THREAD_SAFE ? 1 : 0;') - PHP_DEBUGBUILD=$(php -n -r 'echo ZEND_DEBUG_BUILD ? 1 : 0;') - PHP_BITS=$(php -n -r 'echo PHP_INT_SIZE * 8;') - PHP_EXTDIR="$(php -d display_errors=stderr -r 'echo realpath(ini_get("extension_dir"));')" -} - -# Fix apt-get being very slow on Debian Jessie -# See https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1332440 -fixMaxOpenFiles() { - fixMaxOpenFiles_cur=$(ulimit -n 2>/dev/null || echo 0) - if test "$fixMaxOpenFiles_cur" -gt 10000; then - ulimit -n 10000 - fi -} - -# Get the directory containing the compiled PHP extensions -# -# Output: -# The absolute path of the extensions dir -getPHPExtensionsDir() { - php -i | grep -E '^extension_dir' | head -n1 | tr -s '[:space:]*=>[:space:]*' '|' | cut -d'|' -f2 -} - -# Normalize the name of a PHP extension -# -# Arguments: -# $1: the name of the module to be normalized -# -# Output: -# The normalized module name -normalizePHPModuleName() { - normalizePHPModuleName_name="$1" - case "$normalizePHPModuleName_name" in - *A* | *B* | *C* | *D* | *E* | *F* | *G* | *H* | *I* | *J* | *K* | *L* | *M* | *N* | *O* | *P* | *Q* | *R* | *S* | *T* | *U* | *V* | *W* | *X* | *Y* | *Z*) - normalizePHPModuleName_name="$(LC_CTYPE=C printf '%s' "$normalizePHPModuleName_name" | tr '[:upper:]' '[:lower:]')" - ;; - esac - case "$normalizePHPModuleName_name" in - datadog_trace) - normalizePHPModuleName_name=ddtrace - ;; - ioncube | ioncube\ loader) - normalizePHPModuleName_name='ioncube_loader' - ;; - pecl_http) - normalizePHPModuleName_name='http' - ;; - zend\ opcache) - normalizePHPModuleName_name='opcache' - ;; - libsodium) - if test $PHP_MAJMIN_VERSION -ge 700; then - normalizePHPModuleName_name='sodium' - fi - ;; - saxonc) - normalizePHPModuleName_name=saxon - ;; - sodium) - if test $PHP_MAJMIN_VERSION -lt 700; then - normalizePHPModuleName_name='libsodium' - fi - ;; - *\ *) - printf '### WARNING Unrecognized module name: %s ###\n' "$1" >&2 - ;; - esac - printf '%s' "$normalizePHPModuleName_name" -} - -# Get the PECL name of PHP extension -# -# Arguments: -# $1: the name of the extension -# -# Output: -# The PECL name of the extension -getPeclModuleName() { - normalizePHPModuleName_name="$1" - case "$normalizePHPModuleName_name" in - ddtrace) - normalizePHPModuleName_name=datadog_trace - ;; - http) - normalizePHPModuleName_name=pecl_http - ;; - sodium) - normalizePHPModuleName_name=libsodium - ;; - esac - printf '%s' "$normalizePHPModuleName_name" -} - -# Parse a package.xml (or package2.xml) file and extract the module name and version -# -# Arguments: -# $1: the patho to the XML file -# -# Set these variables: -# - EXTRACTPACKAGEVERSIONFROMXML_NAME -# - EXTRACTPACKAGEVERSIONFROMXML_VERSION -# -# Output: -# Nothing -# -# Return: -# 0 (true): if the string is in the list -# 1 (false): if the string is not in the list -extractPackageVersionFromXML() { - if ! test -f "$1"; then - printf 'Unable to find the file\n%s\n' >&2 - return 1 - fi - extractPackageVersionFromXML_code="$( - cat <<'EOT' -$doc = new DOMDocument(); -if (!$doc->load($argv[1])) { - fwrite(STDERR, "Failed to load XML file\n"); - exit(1); -} -set_error_handler( - static function($errno, $errstr) { - fwrite(STDERR, trim((string) $errstr) . "\n"); - exit(1); - }, - -1 -); -$xpath = new DOMXpath($doc); -$xpath->registerNamespace('v20', 'http://pear.php.net/dtd/package-2.0'); -$xpath->registerNamespace('v21', 'http://pear.php.net/dtd/package-2.1'); -if ($xpath->query('/v20:package/v20:dependencies')->length === 1) { - $ns = 'v20:'; -} elseif ($xpath->query('/v21:package/v21:dependencies')->length === 1) { - $ns = 'v21:'; -} elseif ($xpath->query('/package')->length === 1) { - $ns = ''; -} else { - fwrite(STDERR, "Unsupported namespace of the XML of package version details\n"); - exit(1); -} -$nodes = $xpath->query("/{$ns}package/{$ns}name"); -$name = trim((string) $nodes[0]->nodeValue); -$nodes = $xpath->query("/{$ns}package/{$ns}version/{$ns}release"); -if ($nodes->length === 0) { - $nodes = $xpath->query("/{$ns}package/{$ns}release/{$ns}version"); - if ($nodes->length === 0) { - $nodes = $xpath->query("/{$ns}package/{$ns}version"); - if ($nodes->length === 0) { - fwrite(STDERR, "Unable to find the version in the XML of package version details\n"); - exit(1); - } - } -} -$version = trim((string) $nodes[0]->nodeValue); -echo "EXTRACTPACKAGEVERSIONFROMXML_NAME='{$name}'\n"; -echo "EXTRACTPACKAGEVERSIONFROMXML_VERSION='{$version}'\n"; -exit(0); -EOT - )" - extractPackageVersionFromXML_vars="$(php -n -d display_errors=stderr -r "$extractPackageVersionFromXML_code" "$1")" - if test -z "$extractPackageVersionFromXML_vars"; then - return 1 - fi - eval "$extractPackageVersionFromXML_vars" - return 0 -} - -# Parse a module name (and optionally version) as received via command arguments, extracting the version and normalizing it -# Examples: -# xdebug-2.9.8 -# xdebug-^2 -# xdebug-^2.9 -# -# Arguments: -# $1: the name of the module to be normalized -# -# Set these variables: -# - PROCESSED_PHP_MODULE_ARGUMENT -# -# Update these variables: -# - FORCED_REMOTE_MODULES -# -# Optionally set these variables: -# - PHP_WANTEDMODULEVERSION_<...> (where <...> is the normalized module name) -# - PHP_MODULESOURCECODEPATH_<...> (where <...> is the normalized module name) -# -# Output: -# Nothing -processPHPModuleArgument() { - processPHPModuleArgument_arg="$1" - # Convert GitHub short form to long url, - # for example: from - # php-memcached-dev/php-memcached@8f106564e6bb005ca6100b12ccc89000daafa9d8 - # to - # https://codeload.github.com/php-memcached-dev/php-memcached/tar.gz/8f106564e6bb005ca6100b12ccc89000daafa9d8 - processPHPModuleArgument_arg="$(printf '%s' "$processPHPModuleArgument_arg" | sed -E 's/^([a-zA-Z0-9_.\-]+\/[a-zA-Z0-9_.\-]+)@(.+$)/https:\/\/codeload.github.com\/\1\/tar.gz\/\2/')" - # Let's check if $processPHPModuleArgument_arg is an URL - if printf '%s' "$processPHPModuleArgument_arg" | grep -Eq '^https?://[^ ]+/[^ ]+$'; then - printf 'Downloading source from %s\n' "$processPHPModuleArgument_arg" - processPHPModuleArgument_arg="$(getPackageSource "$processPHPModuleArgument_arg")" - fi - # Let's check if $processPHPModuleArgument_arg the absolute path of an existing directory - if test "$processPHPModuleArgument_arg" != "${processPHPModuleArgument_arg#/}" && test -d "$processPHPModuleArgument_arg"; then - if test -f "$processPHPModuleArgument_arg/package2.xml"; then - printf 'Checking package2.xml of directory %s... ' "$processPHPModuleArgument_arg" - if ! extractPackageVersionFromXML "$processPHPModuleArgument_arg/package2.xml"; then - return 1 - fi - elif test -f "$processPHPModuleArgument_arg/package.xml"; then - printf 'Checking package.xml of directory %s... ' "$processPHPModuleArgument_arg" - if ! extractPackageVersionFromXML "$processPHPModuleArgument_arg/package.xml"; then - return 1 - fi - else - printf 'Unable to find the package.xml file in the directory\n%s\n' "$processPHPModuleArgument_arg" - return 1 - fi - printf 'good (name: %s, version: %s)\n' "$EXTRACTPACKAGEVERSIONFROMXML_NAME" "$EXTRACTPACKAGEVERSIONFROMXML_VERSION" - PROCESSED_PHP_MODULE_ARGUMENT="$(normalizePHPModuleName "$EXTRACTPACKAGEVERSIONFROMXML_NAME")" - processPHPModuleArgument_version="$EXTRACTPACKAGEVERSIONFROMXML_VERSION" - if printf '%s' "$PROCESSED_PHP_MODULE_ARGUMENT" | grep -Eq '^[a-zA-Z0-9_]+$'; then - eval PHP_MODULESOURCECODEPATH_$PROCESSED_PHP_MODULE_ARGUMENT="$processPHPModuleArgument_arg" - else - printf 'Unable to parse the following module name:\n%s\n' "$PROCESSED_PHP_MODULE_ARGUMENT" >&2 - exit 1 - fi - else - PROCESSED_PHP_MODULE_ARGUMENT="${processPHPModuleArgument_arg%%-*}" - if test -n "$PROCESSED_PHP_MODULE_ARGUMENT" && test "$PROCESSED_PHP_MODULE_ARGUMENT" != "$processPHPModuleArgument_arg"; then - processPHPModuleArgument_version="${processPHPModuleArgument_arg#*-}" - else - processPHPModuleArgument_version='' - fi - PROCESSED_PHP_MODULE_ARGUMENT="$(normalizePHPModuleName "$PROCESSED_PHP_MODULE_ARGUMENT")" - fi - if test -n "$processPHPModuleArgument_version"; then - FORCED_REMOTE_MODULES="${FORCED_REMOTE_MODULES:+$FORCED_REMOTE_MODULES }$PROCESSED_PHP_MODULE_ARGUMENT" - if printf '%s' "$PROCESSED_PHP_MODULE_ARGUMENT" | grep -Eq '^[a-zA-Z0-9_]+$'; then - eval PHP_WANTEDMODULEVERSION_$PROCESSED_PHP_MODULE_ARGUMENT="$processPHPModuleArgument_version" - elif printf '%s' "$PROCESSED_PHP_MODULE_ARGUMENT" | grep -Eq '^@[a-zA-Z0-9_]+$'; then - eval PHP_WANTEDMODULEVERSION__${PROCESSED_PHP_MODULE_ARGUMENT#@}="$processPHPModuleArgument_version" - else - printf 'Unable to parse the following module name:\n%s\n' "$PROCESSED_PHP_MODULE_ARGUMENT" >&2 - fi - fi -} - -# Get the wanted PHP module version, as specified in the command line arguments. -# -# Arguments: -# $1: the name of the module to be normalized -# -# Output: -# The wanted version (if any) -getWantedPHPModuleVersion() { - if printf '%s' "$1" | grep -Eq '^[a-zA-Z0-9_]+$'; then - eval printf '%s' "\${PHP_WANTEDMODULEVERSION_$1:-}" - elif printf '%s' "$1" | grep -Eq '^@[a-zA-Z0-9_]+$'; then - eval printf '%s' "\${PHP_WANTEDMODULEVERSION__${1#@}:-}" - fi -} - -# Get source code path of a PHP module version, as specified in the command line arguments. -# -# Arguments: -# $1: the name of the module to be normalized -# -# Output: -# The wanted version (if any) -getModuleSourceCodePath() { - if printf '%s' "$1" | grep -Eq '^[a-zA-Z0-9_]+$'; then - eval printf '%s' "\${PHP_MODULESOURCECODEPATH_$1:-}" - fi -} - -# Get the actual PHP module version, resolving it if it starts with '^' -# -# Arguments: -# $1: the name of the module -# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion) -# -# Output: -# The version to be used -resolvePHPModuleVersion() { - resolvePHPModuleVersion_module="$1" - if test $# -lt 2; then - resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$resolvePHPModuleVersion_module")" - else - resolvePHPModuleVersion_raw="$2" - fi - resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}" - if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then - printf '%s' "$resolvePHPModuleVersion_raw" - return - fi - 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 $IPE_CURL_FLAGS -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 1.2.3stable) - resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed -r 's#$resolvePHPModuleVersion_wantedStability")" - fi - # remove everything's up to '' (included) - resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*##')" - # keep just the versions - resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)" - resetIFS - 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' "$resolvePHPModuleVersion_version" - return - fi - done - 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 "$resolvePHPModuleVersion_suffix"; then - # Example: looking for 1.0, found exactly it - printf '%s' "$resolvePHPModuleVersion_version" - return - fi - 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' "$resolvePHPModuleVersion_version" - return - ;; - esac - done - 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 -} - -# Get the actual version of a PECL pmodule, resolving 'latest', 'stable', 'beta', 'alpha', 'devel'. -# -# Arguments: -# $1: the module name as known on the PECL archive -# $2: the version to be resolved -# Output: -# $2 itself if $1 is not 'latest', 'stable', 'beta', 'alpha', or 'devel', the actual version otherwise -resolvePeclStabilityVersion() { - case "$2" in - latest | stable | beta | alpha | devel) ;; - *) - printf '%s' "$2" - return - ;; - esac - resolvePeclStabilityVersion_peclModule="$(getPeclModuleName "$1")" - peclStabilityFlagToVersion_url="http://pecl.php.net/rest/r/$resolvePeclStabilityVersion_peclModule/$2.txt" - if ! peclStabilityFlagToVersion_result="$(curl $IPE_CURL_FLAGS -sSLf "$peclStabilityFlagToVersion_url")"; then - peclStabilityFlagToVersion_result='' - fi - if test -z "$peclStabilityFlagToVersion_result"; then - printf 'Failed to resolve the PECL package version "%s" of %s from %s\n' "$2" "$1" "$peclStabilityFlagToVersion_url" >&2 - exit 1 - fi - printf '%s' "$peclStabilityFlagToVersion_result" -} - -# Set these variables: -# - PHP_PREINSTALLED_MODULES the normalized list of PHP modules installed before running this script -setPHPPreinstalledModules() { - PHP_PREINSTALLED_MODULES='' - IFS=' -' - for getPHPInstalledModules_module in $(php -m); do - getPHPInstalledModules_moduleNormalized='' - case "$getPHPInstalledModules_module" in - \[PHP\ Modules\]) ;; - \[Zend\ Modules\]) - break - ;; - *) - getPHPInstalledModules_moduleNormalized="$(normalizePHPModuleName "$getPHPInstalledModules_module")" - if ! stringInList "$getPHPInstalledModules_moduleNormalized" "$PHP_PREINSTALLED_MODULES"; then - PHP_PREINSTALLED_MODULES="$PHP_PREINSTALLED_MODULES $getPHPInstalledModules_moduleNormalized" - fi - ;; - esac - done - if command -v composer >/dev/null; then - PHP_PREINSTALLED_MODULES="$PHP_PREINSTALLED_MODULES @composer" - fi - resetIFS - PHP_PREINSTALLED_MODULES="${PHP_PREINSTALLED_MODULES# }" -} - -# Get the handles of the modules to be installed -# -# Arguments: -# $@: all module handles -# -# Set: -# PHP_MODULES_TO_INSTALL -# FORCED_REMOTE_MODULES -# -# Output: -# Nothing -processCommandArguments() { - processCommandArguments_endArgs=0 - PHP_MODULES_TO_INSTALL='' - FORCED_REMOTE_MODULES='' - # Support deprecated flag IPE_FIX_CACERTS - case "${IPE_FIX_CACERTS:-}" in - 1 | y* | Y*) - PHP_MODULES_TO_INSTALL="$PHP_MODULES_TO_INSTALL @fix_letsencrypt" - ;; - esac - while :; do - if test $# -lt 1; then - break - fi - processCommandArguments_skip=0 - if test $processCommandArguments_endArgs -eq 0; then - case "$1" in - --cleanup) - printf '### WARNING the %s option is deprecated (we always cleanup everything) ###\n' "$1" >&2 - processCommandArguments_skip=1 - ;; - --) - processCommandArguments_skip=1 - processCommandArguments_endArgs=1 - ;; - -*) - printf 'Unrecognized option: %s\n' "$1" >&2 - exit 1 - ;; - esac - fi - if test $processCommandArguments_skip -eq 0; then - processPHPModuleArgument "$1" - processCommandArguments_name="$PROCESSED_PHP_MODULE_ARGUMENT" - if stringInList "$processCommandArguments_name" "$PHP_MODULES_TO_INSTALL"; then - printf '### WARNING Duplicated module name specified: %s ###\n' "$processCommandArguments_name" >&2 - elif stringInList "$processCommandArguments_name" "$PHP_PREINSTALLED_MODULES"; then - printf '### WARNING Module already installed: %s ###\n' "$processCommandArguments_name" >&2 - else - PHP_MODULES_TO_INSTALL="$PHP_MODULES_TO_INSTALL $processCommandArguments_name" - fi - fi - shift - done - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL# }" -} - -# Add a module that's required by another module -# -# Arguments: -# $1: module that requires another module -# $2: the required module -# -# Update: -# PHP_MODULES_TO_INSTALL -# -# Output: -# Nothing -checkRequiredModule() { - if ! stringInList "$1" "$PHP_MODULES_TO_INSTALL"; then - return - fi - if stringInList "$2" "$PHP_PREINSTALLED_MODULES"; then - return - fi - PHP_MODULES_TO_INSTALL="$(removeStringFromList "$1" "$PHP_MODULES_TO_INSTALL")" - if ! stringInList "$2" "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$PHP_MODULES_TO_INSTALL $2" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL# }" - fi - PHP_MODULES_TO_INSTALL="$PHP_MODULES_TO_INSTALL $1" -} - -# Sort the modules to be installed, in order to fix dependencies -# -# Update: -# PHP_MODULES_TO_INSTALL -# -# Output: -# Nothing -sortModulesToInstall() { - # apcu_bc requires apcu - checkRequiredModule 'apcu_bc' 'apcu' - # http requires propro (for PHP < 8) and raphf - if test $PHP_MAJMIN_VERSION -le 704; then - checkRequiredModule 'http' 'propro' - fi - checkRequiredModule 'http' 'raphf' - # event requires sockets (for PHP <= 5.6) - if test $PHP_MAJMIN_VERSION -le 506; then - checkRequiredModule event sockets - fi - # relay requires msgpack - checkRequiredModule relay msgpack - # relay requires igbinary - checkRequiredModule relay igbinary - # pq requires raphf - checkRequiredModule pq raphf - # phalcon up to v5.0.0beta3 requires psr - if test $PHP_MAJMINPAT_VERSION -lt 70401; then - checkRequiredModule phalcon psr - fi - # Some module installation may use sockets if available: move it before other modules - if stringInList 'sockets' "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$(removeStringFromList 'sockets' "$PHP_MODULES_TO_INSTALL")" - PHP_MODULES_TO_INSTALL="sockets $PHP_MODULES_TO_INSTALL" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL% }" - fi - # Some module installation may use igbinary if available: move it before other modules - if stringInList 'igbinary' "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$(removeStringFromList 'igbinary' "$PHP_MODULES_TO_INSTALL")" - PHP_MODULES_TO_INSTALL="igbinary $PHP_MODULES_TO_INSTALL" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL% }" - fi - # Some module installation may use msgpack if available: move it before other modules - if stringInList 'msgpack' "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$(removeStringFromList 'msgpack' "$PHP_MODULES_TO_INSTALL")" - PHP_MODULES_TO_INSTALL="msgpack $PHP_MODULES_TO_INSTALL" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL% }" - fi - # Some module installation may use socket if available: move it before other modules - if stringInList 'socket' "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$(removeStringFromList 'socket' "$PHP_MODULES_TO_INSTALL")" - PHP_MODULES_TO_INSTALL="socket $PHP_MODULES_TO_INSTALL" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL% }" - fi - # Some module installation may use apcu if available: move it before other modules - if stringInList 'apcu' "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$(removeStringFromList 'apcu' "$PHP_MODULES_TO_INSTALL")" - PHP_MODULES_TO_INSTALL="apcu $PHP_MODULES_TO_INSTALL" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL% }" - fi - # Some module installation may use raphf if available: move it before other modules - if stringInList 'raphf' "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$(removeStringFromList 'raphf' "$PHP_MODULES_TO_INSTALL")" - PHP_MODULES_TO_INSTALL="raphf $PHP_MODULES_TO_INSTALL" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL% }" - fi - # In any case, first of all, we need to install composer - if stringInList '@composer' "$PHP_MODULES_TO_INSTALL"; then - PHP_MODULES_TO_INSTALL="$(removeStringFromList '@composer' "$PHP_MODULES_TO_INSTALL")" - PHP_MODULES_TO_INSTALL="@composer $PHP_MODULES_TO_INSTALL" - PHP_MODULES_TO_INSTALL="${PHP_MODULES_TO_INSTALL% }" - fi -} - -# Expand the IPE_ASPELL_LANGUAGES environment variable into apk/apt package names -expandASpellDictionaries() { - expandASpellDictionaries_languages="${IPE_ASPELL_LANGUAGES:-en}" - expandASpellDictionaries_result='' - resetIFS - for expandASpellDictionaries_language in $expandASpellDictionaries_languages; do - expandASpellDictionaries_result="$expandASpellDictionaries_result aspell-$expandASpellDictionaries_language" - done - printf '%s' "${expandASpellDictionaries_result# }" -} - -# Get the required APT/APK packages for a specific PHP version and for the list of module handles -# -# Arguments: -# $@: the PHP module handles -# -# Set: -# PACKAGES_PERSISTENT_NEW the list of packages required at runtime that must be installed -# PACKAGES_PERSISTENT_PRE the list of packages required at runtime that are already installed -# PACKAGES_VOLATILE the list of packages required at compile time that must be installed -# PACKAGES_PREVIOUS the list of packages (with their version) that are installed right now (calculated only on Debian and only if PACKAGES_PERSISTENT_NEW or PACKAGES_VOLATILE are not empty) -# COMPILE_LIBS -buildRequiredPackageLists() { - buildRequiredPackageLists_persistent='' - buildRequiredPackageLists_volatile='' - COMPILE_LIBS='' - case "$DISTRO" in - alpine) - apk update - ;; - debian) - invokeAptGetUpdate - ;; - esac - buildRequiredPackageLists_sslTextVersion="$(php -d display_errors=stderr -r 'echo defined("OPENSSL_VERSION_TEXT") ? OPENSSL_VERSION_TEXT : "";' 2>/dev/null)" - if test $? -ne 0 || test -z "$buildRequiredPackageLists_sslTextVersion"; then - printf 'Unable to determine the version of the SSL library\n' >&2 - exit 1 - fi - case "$buildRequiredPackageLists_sslTextVersion" in - OpenSSL\ *) - buildRequiredPackageLists_sslLib=openssl - buildRequiredPackageLists_sslMajorVersion="$(php -d display_errors=stderr -r 'echo defined("OPENSSL_VERSION_NUMBER") ? (OPENSSL_VERSION_NUMBER >> 28) : "";' 2>/dev/null)" - if test $? -ne 0 || test -z "$buildRequiredPackageLists_sslMajorVersion"; then - printf 'Unable to determine the major version of the SSL library\n' >&2 - exit 1 - fi - buildRequiredPackageLists_sslMajorMinorVersion="$(php -d display_errors=stderr -r 'echo defined("OPENSSL_VERSION_NUMBER") ? ((OPENSSL_VERSION_NUMBER >> 28) . "." . ((OPENSSL_VERSION_NUMBER >> 20) & 0xFF)) : "";' 2>/dev/null)" - if test $? -ne 0 || test -z "$buildRequiredPackageLists_sslMajorMinorVersion"; then - printf 'Unable to determine the major.minor version of the SSL library\n' >&2 - exit 1 - fi - ;; - LibreSSL\ *) - buildRequiredPackageLists_sslLib=libressl - buildRequiredPackageLists_sslMajorVersion="${buildRequiredPackageLists_sslTextVersion#LibreSSL }" - buildRequiredPackageLists_sslMajorVersion="${buildRequiredPackageLists_sslMajorVersion%%.*}" - buildRequiredPackageLists_sslMajorMinorVersion="${buildRequiredPackageLists_sslTextVersion#LibreSSL }" - buildRequiredPackageLists_sslMajorMinorVersion="${buildRequiredPackageLists_sslMajorMinorVersion%.*}" - ;; - *) - printf 'Unrecognized SSL library: %s\n' "$buildRequiredPackageLists_sslTextVersion" >&2 - exit 1 - ;; - esac - case "$DISTRO_VERSION" in - alpine@*) - if test $# -gt 1 || test "${1:-}" != '@composer'; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $PHPIZE_DEPS" - fi - case "$buildRequiredPackageLists_sslLib" in - openssl) - if test $buildRequiredPackageLists_sslMajorVersion -le 1; then - buildRequiredPackageLists_libssl="libssl$buildRequiredPackageLists_sslMajorMinorVersion" - else - buildRequiredPackageLists_libssl="libssl$buildRequiredPackageLists_sslMajorVersion" - fi - buildRequiredPackageLists_libssldev='openssl-dev' - ;; - libressl) - buildRequiredPackageLists_libssl="libressl$buildRequiredPackageLists_sslMajorMinorVersion-libssl" - buildRequiredPackageLists_libssldev='libressl-dev' - ;; - *) - printf 'Unsupported SSL library for Alpine: %s\n' "$buildRequiredPackageLists_sslLib" >&2 - exit 1 - ;; - esac - buildRequiredPackageLists_icuPersistent='' - if test $DISTRO_MAJMIN_VERSION -ge 316; then - case "${IPE_ICU_EN_ONLY:-}" in - 1 | y* | Y*) ;; - *) - buildRequiredPackageLists_icuPersistent='icu-data-full' - ;; - esac - fi - buildRequiredPackageLists_libpcredev=pcre-dev - ;; - debian@*) - case "$buildRequiredPackageLists_sslLib" in - openssl) - if test $buildRequiredPackageLists_sslMajorVersion -le 1; then - buildRequiredPackageLists_libssl="libssl$buildRequiredPackageLists_sslMajorMinorVersion" - if test $DISTRO_VERSION_NUMBER -eq 9 && test "$buildRequiredPackageLists_sslMajorMinorVersion" = '1.0'; then - buildRequiredPackageLists_libssldev="libssl$buildRequiredPackageLists_sslMajorMinorVersion-dev" - else - buildRequiredPackageLists_libssldev="libssl-dev" - fi - else - buildRequiredPackageLists_libssl="libssl$buildRequiredPackageLists_sslMajorVersion" - buildRequiredPackageLists_libssldev="libssl-dev" - fi - ;; - *) - printf 'Unsupported SSL library for Debian: %s\n' "$buildRequiredPackageLists_sslLib" >&2 - exit 1 - ;; - esac - if test $DISTRO_VERSION_NUMBER -ge 13; then - buildRequiredPackageLists_libpcredev=libpcre2-dev - else - buildRequiredPackageLists_libpcredev=libpcre3-dev - fi - ;; - esac - if test $USE_PICKLE -gt 1; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile git" - fi - while :; do - if test $# -lt 1; then - break - fi - case "$1@$DISTRO" in - @composer@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent unzip" - ;; - amqp@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent rabbitmq-c" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile rabbitmq-c-dev" - ;; - amqp@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^librabbitmq[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile librabbitmq-dev libssh-dev" - ;; - bz2@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libbz2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile bzip2-dev" - ;; - bz2@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libbz2-dev" - ;; - cassandra@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent cassandra-cpp-driver gmp" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cassandra-cpp-driver-dev gmp-dev" - ;; - cmark@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake" - ;; - cmark@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake" - ;; - ddtrace@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgcc" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev automake libtool" - ;; - ddtrace@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev automake libtool" - ;; - dba@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent db" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile db-dev" - ;; - dba@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile ^libdb5\.3-dev$" - if test $PHP_MAJMIN_VERSION -le 505; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile patch" - 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 - if test $PHP_MAJMIN_VERSION -ge 800; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent enchant2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile enchant2-dev" - else - # The system provides libenchant2, supported since PHP 8.0: we need to build libenchant1 on our own - if ! isLibenchant1Installed; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent glib aspell-libs libhunspell" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile glib-dev aspell-dev hunspell-dev" - COMPILE_LIBS="$COMPILE_LIBS libenchant1" - fi - fi - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent enchant" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile enchant-dev" - fi - ;; - enchant@debian) - if test $DISTRO_VERSION_NUMBER -ge 11; then - if test $PHP_MAJMIN_VERSION -ge 800; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libenchant-2-2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libenchant-2-dev" - else - if ! isLibenchant1Installed; then - # The system provides libenchant2, supported since PHP 8.0: we need to build libenchant1 on our own - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent aspell-en libhunspell-1.7-0" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libglib2.0-dev libaspell-dev libhunspell-dev" - COMPILE_LIBS="$COMPILE_LIBS libenchant1" - fi - fi - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libenchant1c2a" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libenchant-dev" - fi - ;; - event@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libevent" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libevent-dev" - ;; - event@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl ^libevent[0-9\.\-]*$ ^libevent-openssl[0-9\.\-]*$ ^libevent-extra[0-9\.\-]*$ ^libevent-pthreads[0-9\.\-]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libevent-dev" - ;; - ffi@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libffi" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev" - ;; - ffi@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev" - ;; - ftp@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev" - ;; - ftp@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - 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" - if test $PHP_MAJMIN_VERSION -le 506; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libvpx" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libvpx-dev" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libwebp" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev" - if test $PHP_MAJMIN_VERSION -ge 801; then - if test $DISTRO_MAJMIN_VERSION -ge 315; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libavif aom-libs libdav1d" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libavif-dev aom-dev dav1d-dev" - elif isLibaomInstalled && isLibdav1dInstalled && isLibyuvInstalled && isLibavifInstalled; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - else - case "${IPE_GD_WITHOUTAVIF:-}" in - 1 | y* | Y*) ;; - *) - if ! isLibaomInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libaom" - fi - if ! isLibdav1dInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libdav1d" - fi - if ! isLibyuvInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libyuv" - fi - if ! isLibavifInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libavif" - fi - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake nasm meson" - ;; - esac - fi - fi - fi - ;; - gd@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libfreetype6 libjpeg62-turbo ^libpng[0-9]+-[0-9]+$ libxpm4" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libfreetype6-dev libjpeg62-turbo-dev libpng-dev libxpm-dev" - if test $PHP_MAJMIN_VERSION -le 506; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libvpx[0-9]+$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libvpx-dev" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libwebp[0-9]+$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libwebp-dev" - if test $PHP_MAJMIN_VERSION -ge 801; 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*) ;; - *) - if ! isLibaomInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libaom" - fi - if ! isLibdav1dInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libdav1d" - fi - if ! isLibyuvInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libyuv" - fi - if ! isLibavifInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libavif" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake nasm meson" - ;; - esac - fi - fi - fi - ;; - gearman@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++ libuuid" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile boost-dev gperf libmemcached-dev libevent-dev util-linux-dev" - ;; - gearman@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libgearman[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgearman-dev" - ;; - geoip@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent geoip" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile geoip-dev" - ;; - geoip@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libgeoip1[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgeoip-dev" - ;; - geos@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent geos-dev" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile geos" - ;; - geos@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libgeos-c1(v[0-9]*)?$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgeos-dev" - ;; - gettext@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libintl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile gettext-dev" - ;; - gmagick@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent graphicsmagick libgomp" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile graphicsmagick-dev libtool" - ;; - gmagick@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libgraphicsmagick(-q16-)?[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgraphicsmagick1-dev" - ;; - gmp@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gmp" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile gmp-dev" - ;; - gmp@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgmp-dev" - ;; - gnupg@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gpgme" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile gpgme-dev" - ;; - gnupg@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libgpgme[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile ^libgpgme[0-9]*-dev$" - ;; - grpc@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev linux-headers" - ;; - grpc@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib1g-dev" - ;; - http@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libevent" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev curl-dev libevent-dev" - if test $PHP_MAJMIN_VERSION -le 506; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libidn" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libidn-dev" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent libidn" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev libidn-dev" - fi - ;; - http@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl ^libevent[0-9\.\-]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev zlib1g-dev libcurl4-openssl-dev libevent-dev" - if test $PHP_MAJMIN_VERSION -le 506; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile ^libidn1[0-9+]-dev$" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$ ^libidn2-[0-9+]$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev ^libidn2-[0-9+]-dev$ ^libgcrypt[0-9]+-dev$" - fi - ;; - 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) - if test $DISTRO_VERSION_NUMBER -ge 13; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-7.q16-[0-9]+$ ^libmagickcore-7.q16-[0-9]+-extra$ libheif-plugin-aomenc" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmagickwand-6.q16-[0-9]+$ ^libmagickcore-6.q16-[0-9]+-extra$" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmagickwand-dev" - ;; - imap@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl c-client" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev krb5-dev imap-dev" - ;; - imap@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libkrb5-dev" - if test $DISTRO_VERSION_NUMBER -ge 13; then - # Since Debian 13 (trixie) libc-client2007e is no more available - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent sgml-base" - if ! isLibcClient2007eInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libc-client2007e" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libpam0g-dev $buildRequiredPackageLists_libssldev" - fi - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libc-client2007e" - if test $DISTRO_VERSION_NUMBER -eq 9; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev comerr-dev krb5-multidev libc-client2007e libgssrpc4 libkadm5clnt-mit11 libkadm5srv-mit11 libkdb5-8 libpam0g-dev libssl-doc mlock" - else - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libc-client-dev" - fi - fi - ;; - interbase@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev ncurses-dev" - if ! isFirebirdInstalled; then - COMPILE_LIBS="$COMPILE_LIBS firebird" - fi - ;; - interbase@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libfbclient2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile firebird-dev libib-util" - ;; - intl@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent icu-libs $buildRequiredPackageLists_icuPersistent" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev" - if test $DISTRO_MAJMIN_VERSION -ge 322 && test $PHP_MAJMIN_VERSION -eq 801 && test $PHP_MAJMINPAT_VERSION -lt 80133; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile patch" - fi - ;; - intl@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libicu[0-9]+$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libicu-dev" - ;; - ion@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake git" - ;; - ion@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake git" - ;; - ip2location@alpine) - if ! isLibIP2LocationInstalled; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile automake libtool" - COMPILE_LIBS="$COMPILE_LIBS libip2location" - fi - ;; - ip2location@debian) - if ! isLibIP2LocationInstalled; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile automake libtool" - COMPILE_LIBS="$COMPILE_LIBS libip2location" - fi - ;; - judy@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent judy" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile judy-dev" - ;; - judy@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libjudydebian1" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libjudy-dev" - ;; - ldap@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libldap" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile openldap-dev" - ;; - ldap@debian) - if test $DISTRO_VERSION_NUMBER -ge 9; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libldap-common" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libldap2-dev" - ;; - luasandbox@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lua5.1-libs" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lua5.1-dev" - ;; - luasandbox@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblua5.1-0" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblua5.1-0-dev" - ;; - lz4@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile lz4-dev" - ;; - lz4@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev" - ;; - maxminddb@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmaxminddb" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmaxminddb-dev" - ;; - maxminddb@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libmaxminddb[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmaxminddb-dev" - ;; - memprof@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent judy" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile judy-dev bsd-compat-headers" - ;; - memprof@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libjudydebian1" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libjudy-dev" - ;; - mcrypt@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmcrypt" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmcrypt-dev" - ;; - mcrypt@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmcrypt4" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmcrypt-dev" - ;; - memcache@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev" - ;; - memcache@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib1g-dev" - ;; - memcached@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcached-libs" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib-dev" - ;; - memcached@debian) - if test $DISTRO_VERSION_NUMBER -ge 13; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2t64" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmemcachedutil2" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmemcached-dev zlib1g-dev" - if test $DISTRO_MAJMIN_VERSION -ge 12; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev" - fi - ;; - mongo@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libsasl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev cyrus-sasl-dev" - ;; - mongo@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libsasl2-dev" - ;; - mongodb@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl icu-libs $buildRequiredPackageLists_icuPersistent libsasl snappy" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev icu-dev cyrus-sasl-dev snappy-dev 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 $buildRequiredPackageLists_libssl ^libsnappy[0-9]+(v[0-9]+)?$ ^libicu[0-9]+$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libicu-dev libsasl2-dev libsnappy-dev 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" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile mosquitto-dev" - ;; - mosquitto@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libmosquitto1" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libmosquitto-dev" - ;; - mssql@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetds" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetds-dev" - ;; - mssql@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsybdb5" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetds-dev" - ;; - nsq@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libevent" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libevent-dev" - ;; - nsq@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl ^libevent[0-9\.\-]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libevent-dev" - ;; - oauth@alpine) - if test $PHP_MAJMIN_VERSION -ge 700; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libpcredev" - fi - ;; - oauth@debian) - if test $PHP_MAJMIN_VERSION -ge 700; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libpcredev" - fi - ;; - oci8@alpine | pdo_oci@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libaio libc6-compat libnsl" - if test $DISTRO_MAJMIN_VERSION -le 307; then - # The unzip tool of Alpine 3.7 can't extract symlinks from ZIP archives: let's use bsdtar instead - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libarchive-tools" - fi - ;; - oci8@debian | pdo_oci@debian) - if test $DISTRO_VERSION_NUMBER -ge 13; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libaio1t64" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libaio[0-9]*$" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile unzip" - ;; - odbc@alpine | pdo_odbc@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent unixodbc" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile unixodbc-dev" - ;; - odbc@debian | pdo_odbc@debian) - if test $DISTRO_VERSION_NUMBER -ge 13; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libodbc2" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libodbc1" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile unixodbc-dev" - ;; - openswoole@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl postgresql-libs libstdc++" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev curl-dev postgresql-dev linux-headers" - ;; - openswoole@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libpq5" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libcurl4-openssl-dev libpq-dev" - ;; - parle@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - ;; - pdo_dblib@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetds" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetds-dev" - ;; - pdo_dblib@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsybdb5" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetds-dev" - ;; - pdo_firebird@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile icu-dev ncurses-dev" - if ! isFirebirdInstalled; then - COMPILE_LIBS="$COMPILE_LIBS firebird" - if test $PHP_MAJMIN_VERSION -ge 804; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev" - if ! isLibTommathInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libtommath" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake" - fi - if ! isLibTomcryptInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libtomcrypt" - fi - fi - fi - ;; - pdo_firebird@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libfbclient2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile firebird-dev libib-util" - ;; - pgsql@alpine | pdo_pgsql@alpine | pq@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent postgresql-libs" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile postgresql-dev" - ;; - pgsql@debian | pdo_pgsql@debian | pq@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libpq5" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libpq-dev" - ;; - php_trie@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - ;; - phpy@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent python3" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile python3-dev" - ;; - phpy@debian) - if test $DISTRO_VERSION_NUMBER -ge 13; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libpython3.13" - elif test $DISTRO_VERSION_NUMBER -ge 12; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libpython3.11" - elif test $DISTRO_VERSION_NUMBER -ge 11; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libpython3.9" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libpython3.7" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile python3-dev" - ;; - 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" - ;; - pspell@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libaspell15 $(expandASpellDictionaries)" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libpspell-dev" - ;; - rdkafka@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent librdkafka" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile librdkafka-dev" - ;; - rdkafka@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^librdkafka\+*[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile librdkafka-dev" - ;; - recode@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent recode" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile recode-dev" - ;; - recode@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent librecode0" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile librecode-dev" - ;; - redis@alpine) - if test $PHP_MAJMIN_VERSION -ge 700; then - case "$DISTRO_VERSION" in - alpine@3.7) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd" - ;; - *) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs" - ;; - 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) - if test $PHP_MAJMIN_VERSION -ge 700; then - case "$DISTRO_VERSION" in - debian@8) - ## There's no APT package for libzstd - ;; - debian@9) - ## libzstd is too old (available: 1.1.2, required: 1.3.0+) - ;; - *) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev" - ;; - esac - fi - if test $PHP_MAJMIN_VERSION -ge 702; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liblz4-1" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblz4-dev" - fi - ;; - rrd@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent librrd" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile rrdtool-dev" - ;; - rrd@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile librrd-dev" - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^librrd[0-9]*$" - ;; - relay@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent lz4-libs zstd-libs" - if test $DISTRO_MAJMIN_VERSION -ge 317; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - fi - ;; - saxon@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - ;; - saxon@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_volatile unzip" - ;; - seasclick@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - ;; - simdjson@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - ;; - smbclient@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsmbclient" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile samba-dev" - ;; - smbclient@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsmbclient" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libsmbclient-dev" - ;; - snappy@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent snappy" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile snappy-dev" - ;; - snappy@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsnappy1(v[0-9]+)?$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libsnappy-dev" - ;; - snmp@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent net-snmp-libs" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile net-snmp-dev" - ;; - snmp@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent snmp" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libsnmp-dev" - ;; - snuffleupagus@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent pcre" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libpcredev" - ;; - snuffleupagus@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libpcredev" - ;; - soap@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev" - ;; - soap@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev" - ;; - sockets@alpine) - if test $PHP_MAJMIN_VERSION -ge 802; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers" - fi - ;; - sodium@alpine | libsodium@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libsodium" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libsodium-dev" - ;; - sodium@debian | libsodium@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libsodium[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libsodium-dev" - ;; - solr@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev libxml2-dev" - ;; - solr@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev libxml2-dev" - ;; - sourceguardian@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent eudev-libs" - ;; - spx@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev" - ;; - spx@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib1g-dev" - ;; - sqlsrv@alpine | pdo_sqlsrv@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++ unixodbc" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile unixodbc-dev" - ;; - sqlsrv@debian | pdo_sqlsrv@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent unixodbc" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile unixodbc-dev" - if ! isMicrosoftSqlServerODBCInstalled; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile gnupg apt-transport-https" - fi - ;; - pdo_snowflake@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libstdc++6 libcurl4" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev cmake g++ libcurl4-openssl-dev" - ;; - ssh2@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssh2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libssh2-dev" - ;; - ssh2@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libssh2-1-dev" - ;; - statgrab@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstatgrab" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libstatgrab-dev" - ;; - statgrab@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libstatgrab[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libstatgrab-dev" - ;; - stomp@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev" - ;; - stomp@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev" - ;; - swoole@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl postgresql-libs libstdc++" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev curl-dev postgresql-dev linux-headers" - if test $PHP_MAJMIN_VERSION -ge 702; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent c-ares" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile c-ares-dev" - if test $PHP_MAJMIN_VERSION -ge 801; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zstd-libs" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile sqlite-dev zstd-dev" - if test $PHP_MAJMIN_VERSION -ge 802; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libssh2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile ncurses-dev libssh2-dev" - if test $PHP_MAJMIN_VERSION -ge 804; then # swoole 6.2+ requires firebird 3+, but with PHP < 8.4 we install firebird 2.5 (see installFirebird) - if ! isFirebirdInstalled; then - COMPILE_LIBS="$COMPILE_LIBS firebird" - if ! isLibTommathInstalled; then - if ! isLibTomcryptInstalled; then - COMPILE_LIBS="$COMPILE_LIBS libtomcrypt" - fi - COMPILE_LIBS="$COMPILE_LIBS libtommath" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile cmake" - fi - fi - fi - fi - fi - fi - case "${IPE_SWOOLE_WITHOUT_IOURING:-}" in - 1 | y* | Y*) ;; - *) - # iouring support in swoole 6 requires liburing 2.5+: available since Alpine 3.19 - # but with Alpine 3.19 we have a "invalid use of incomplete type 'const struct statx'" error - if test $DISTRO_MAJMIN_VERSION -ge 320; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liburing" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liburing-dev" - fi - ;; - esac - ;; - swoole@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libpq5" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev libcurl4-openssl-dev libpq-dev" - if test $PHP_MAJMIN_VERSION -ge 702; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libc-ares2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libc-ares-dev" - if test $PHP_MAJMIN_VERSION -ge 800; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libbrotli1" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib1g-dev libbrotli-dev" - if test $PHP_MAJMIN_VERSION -ge 801; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libsqlite3-dev" - if test $DISTRO_VERSION_NUMBER -ge 11; then - # swoole 6 requires libzstd >= 1.4.0, but on debian 10 (buster) we have 1.3.8 - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libzstd[0-9]*$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzstd-dev" - fi - if test $PHP_MAJMIN_VERSION -ge 802; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libfbclient2 ^libssh2(-[0-9]+)$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile firebird-dev ^libssh2(-[0-9]+)*-dev$" - fi - fi - fi - fi - if test $DISTRO_VERSION_NUMBER -ge 13; then - # iouring support in swoole 6 requires liburing 2.5+: available since Debian Trixie (13) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent liburing2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liburing-dev" - fi - ;; - sybase_ct@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetds" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetds-dev" - ;; - sybase_ct@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libct4" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetds-dev" - ;; - tdlib@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libstdc++" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev git cmake gperf zlib-dev linux-headers readline-dev" - ;; - tdlib@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev git cmake gperf zlib1g-dev" - ;; - tensor@alpine) - 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" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile liblapack-dev libopenblas-dev liblapacke-dev" - 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" - elif test $DISTRO_VERSION_NUMBER -le 12; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent gfortran-12 libopenblas0" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-12-dev" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libgfortran5 libopenblas0" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libgfortran-14-dev" - fi - ;; - tidy@alpine) - if test $DISTRO_MAJMIN_VERSION -ge 315; then - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent tidyhtml" - else - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent tidyhtml-libs" - fi - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile tidyhtml-dev" - ;; - tidy@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libtidy-?[0-9][0-9.\-]*(deb[0-9])?$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libtidy-dev" - ;; - uuid@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libuuid" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile util-linux-dev" - ;; - 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" - ;; - vips@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libvips" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libvips-dev" - ;; - wddx@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev" - ;; - 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" - fi - ;; - xlswriter@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib-dev" - ;; - xlswriter@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile zlib1g-dev" - ;; - xmldiff@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libstdc++" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev" - ;; - xmldiff@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev" - ;; - xmlrpc@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev" - ;; - xmlrpc@debian) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxml2-dev" - ;; - xpass@alpine) - if ! isLibXCryptInstalled; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile linux-headers" - COMPILE_LIBS="$COMPILE_LIBS libxcrypt" - fi - ;; - xsl@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libxslt" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxslt-dev libgcrypt-dev" - ;; - xsl@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent ^libxslt1\.1$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libxslt-dev" - ;; - yaml@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent yaml" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile yaml-dev" - ;; - yaml@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libyaml-0-2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libyaml-dev" - ;; - yar@alpine) - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile curl-dev" - ;; - yar@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libcurl4-openssl-dev" - ;; - zip@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl libzip" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev cmake libzip-dev zlib-dev" - ;; - zip@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent $buildRequiredPackageLists_libssl ^libzip[0-9]$" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev cmake libzip-dev libbz2-dev zlib1g-dev" - ;; - zmq@alpine) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent zeromq-dev" - ;; - zmq@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libzmq3-dev" - ;; - zookeeper@alpine) - if ! test -f /usr/local/include/zookeeper/zookeeper.h; then - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile maven automake libtool openjdk8" - fi - ;; - zookeeper@debian) - buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent libzookeeper-mt2" - buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libzookeeper-mt-dev" - ;; - esac - shift - done - PACKAGES_PERSISTENT_NEW='' - PACKAGES_PERSISTENT_PRE='' - PACKAGES_VOLATILE='' - PACKAGES_PREVIOUS='' - if test -z "$buildRequiredPackageLists_persistent$buildRequiredPackageLists_volatile"; then - return - fi - if test -n "$buildRequiredPackageLists_persistent"; then - PACKAGES_PERSISTENT_NEW="$(expandPackagesToBeInstalled $buildRequiredPackageLists_persistent)" - if test -s "$IPE_ERRFLAG_FILE"; then - exit 1 - fi - resetIFS - for buildRequiredPackageLists_package in $buildRequiredPackageLists_persistent; do - buildRequiredPackageLists_package="$(expandInstalledSystemPackageName "$buildRequiredPackageLists_package")" - if test -n "$buildRequiredPackageLists_package"; then - PACKAGES_PERSISTENT_PRE="$PACKAGES_PERSISTENT_PRE $buildRequiredPackageLists_package" - fi - done - PACKAGES_PERSISTENT_PRE="${PACKAGES_PERSISTENT_PRE# }" - fi - if test -n "$buildRequiredPackageLists_volatile"; then - buildRequiredPackageLists_packages="$(expandPackagesToBeInstalled $buildRequiredPackageLists_volatile)" - if test -s "$IPE_ERRFLAG_FILE"; then - exit 1 - fi - resetIFS - for buildRequiredPackageLists_package in $buildRequiredPackageLists_packages; do - if ! stringInList "$buildRequiredPackageLists_package" "$PACKAGES_PERSISTENT_NEW"; then - if test "$buildRequiredPackageLists_package" != icu-data-en || ! stringInList icu-data-full "$PACKAGES_PERSISTENT_NEW"; then - PACKAGES_VOLATILE="$PACKAGES_VOLATILE $buildRequiredPackageLists_package" - fi - fi - done - PACKAGES_VOLATILE="${PACKAGES_VOLATILE# }" - fi - if test -n "$PACKAGES_PERSISTENT_NEW$PACKAGES_VOLATILE"; then - case "$DISTRO" in - debian) - PACKAGES_PREVIOUS="$(dpkg --get-selections | grep -E '\sinstall$' | awk '{ print $1 }')" - ;; - esac - fi -} - -# Get the full list of APT/APK packages that will be installed, given the required packages -# -# Arguments: -# $1: the list of required APT/APK packages -# -# Output: -# Space-separated list of every APT/APK packages that will be installed -expandPackagesToBeInstalled() { - expandPackagesToBeInstalled_result='' - case "$DISTRO" in - alpine) - expandPackagesToBeInstalled_log="$(apk add --simulate $@ 2>&1 || printf '\nERROR: apk failed\n')" - if test -n "$(printf '%s' "$expandPackagesToBeInstalled_log" | grep -E '^ERROR:')"; then - printf 'FAILED TO LIST THE WHOLE PACKAGE LIST FOR\n' >&2 - printf '%s ' "$@" >&2 - printf '\n\nCOMMAND OUTPUT:\n%s\n' "$expandPackagesToBeInstalled_log" >&2 - echo 'y' >"$IPE_ERRFLAG_FILE" - exit 1 - fi - IFS=' -' - for expandPackagesToBeInstalled_line in $expandPackagesToBeInstalled_log; do - if test -n "$(printf '%s' "$expandPackagesToBeInstalled_line" | grep -E '^\( *[0-9]*/[0-9]*) Installing ')"; then - expandPackagesToBeInstalled_result="$expandPackagesToBeInstalled_result $(printf '%s' "$expandPackagesToBeInstalled_line" | sed -E 's/^\(.+\) Installing //' | cut -d ' ' -f 1)" - fi - done - resetIFS - ;; - debian) - expandPackagesToBeInstalled_log="$(apt-get install -sy --no-install-recommends $@ 2>&1 || printf '\nE: apt-get failed\n')" - if test -n "$(printf '%s' "$expandPackagesToBeInstalled_log" | grep -E '^E:')"; then - printf 'FAILED TO LIST THE WHOLE PACKAGE LIST FOR\n' >&2 - printf '%s ' "$@" >&2 - printf '\n\nCOMMAND OUTPUT:\n%s\n' "$expandPackagesToBeInstalled_log" >&2 - echo 'y' >"$IPE_ERRFLAG_FILE" - exit 1 - fi - expandPackagesToBeInstalled_inNewPackages=0 - IFS=' -' - for expandPackagesToBeInstalled_line in $expandPackagesToBeInstalled_log; do - if test $expandPackagesToBeInstalled_inNewPackages -eq 0; then - if test "$expandPackagesToBeInstalled_line" = 'The following NEW packages will be installed:'; then - expandPackagesToBeInstalled_inNewPackages=1 - fi - elif test "$expandPackagesToBeInstalled_line" = "${expandPackagesToBeInstalled_line# }"; then - break - else - resetIFS - for expandPackagesToBeInstalled_newPackage in $expandPackagesToBeInstalled_line; do - expandPackagesToBeInstalled_result="$expandPackagesToBeInstalled_result $expandPackagesToBeInstalled_newPackage" - done - IFS=' -' - fi - done - resetIFS - ;; - esac - printf '%s' "${expandPackagesToBeInstalled_result# }" -} - -# Check if a system package is installed; if so we prints its name. -# -# Arguments: -# $1: the name of the package to be checked (regular expressions accepted: they must start with a ^) -expandInstalledSystemPackageName() { - if test "$1" = "${1#^}"; then - expandInstalledSystemPackageName_grepflags='-Fx' - else - expandInstalledSystemPackageName_grepflags='-E' - fi - case "$DISTRO" in - alpine) - apk info | grep $expandInstalledSystemPackageName_grepflags -- "$1" || test $? -eq 1 - ;; - debian) - dpkg --get-selections | grep -E '\sinstall$' | awk '{ print $1 }' | cut -d: -f1 | grep $expandInstalledSystemPackageName_grepflags -- "$1" || test $? -eq 1 - ;; - esac -} - -# Retrieve the number of available cores (alternative to nproc if not available) -# -# 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 - getProcessorCount_tmp=$(cat /proc/cpuinfo | grep -E '^processor\s*:\s*\d+$' | wc -l) - if test $getProcessorCount_tmp -ge 1; then - echo $getProcessorCount_tmp - else - echo 1 - fi - fi -} - -# Set these variables: -# - TARGET_TRIPLET the build target tripled (eg 'x86_64-linux-gnu', 'x86_64-alpine-linux-musl') -setTargetTriplet() { - TARGET_TRIPLET="$(gcc -print-multiarch 2>/dev/null || true)" - if test -z "$TARGET_TRIPLET"; then - TARGET_TRIPLET="$(gcc -dumpmachine)" - fi -} - -# Retrieve the number of processors to be used when compiling an extension -# -# Arguments: -# $1: the handle of the PHP extension to be compiled -# Output: -# The number of processors to be used -getCompilationProcessorCount() { - case "$1" in - '') - # The above extensions don't support parallel compilation - echo 1 - ;; - *) - # All the other extensions support parallel compilation - getProcessorCount - ;; - esac -} - -# Get the full path of a PHP extension given its name. -# -# Arguments: -# $1: the name of the PHP extension -# -# Output: -# The absolute path of the PHP extension file (or nothing if the file can't be found) -getModuleFullPath() { - case "$1" in - apcu_bc) - getModuleFullPath_path="$PHP_EXTDIR/apc.so" - ;; - seasclick) - getModuleFullPath_path="$PHP_EXTDIR/SeasClick.so" - ;; - *) - getModuleFullPath_path="$PHP_EXTDIR/$1.so" - ;; - esac - if ! test -f "$getModuleFullPath_path"; then - printf 'Unable to find the file of the PHP extension "%s"\n' "$1" >&2 - exit 1 - fi - printf '%s' "$getModuleFullPath_path" -} - -# Post-process a PHP module just compiled and installed in the PHP extension directory -# -# Arguments: -# $1: the name of the PHP extension -# -# Return: -# 0 (true): if succeeded -# non-zero (false): in case of errors -postProcessModule() { - postProcessModule_file="$(getModuleFullPath "$1")" - if test $PHP_DEBUGBUILD -ne 1; then - case "${IPE_NOSTRIP:-}" in - 1 | y* | Y*) ;; - *) - printf 'Removing symbols from %s... ' "$postProcessModule_file" - postProcessModule_preSize="$(stat -c %s "$postProcessModule_file")" - strip --strip-all "$postProcessModule_file" - postProcessModule_postSize="$(stat -c %s "$postProcessModule_file")" - printf 'done (%s bytes saved).\n' "$((postProcessModule_preSize - postProcessModule_postSize))" - ;; - esac - fi - return $? -} - -# Get the type of the php.ini entry to be used for a PHP extension -# -# Arguments: -# $1: the name of the PHP extension -# -# Output: -# zend_extension or extension -getModuleIniEntryType() { - case "$1" in - ioncube_loader | sourceguardian) - # On PHP 5.5, docker-php-ext-enable fails to detect that ionCube Loader and sourceguardian are Zend extensions - if test $PHP_MAJMIN_VERSION -le 505; then - printf 'zend_extension' - return 0 - fi - ;; - esac - getModuleIniEntryType_file="$(getModuleFullPath "$1")" - if readelf --wide --syms "$getModuleIniEntryType_file" | grep -Eq ' zend_extension_entry$'; then - printf 'zend_extension' - else - printf 'extension' - fi -} - -# Create the contents of a PHP ini file that enables an extension -# -# Arguments: -# $1: the name of the PHP extension -# $2: additional php.ini configuration (optional) -# -# Output: -# The contents of the ini file -buildPhpExtensionIniContent() { - buildPhpExtensionIniContent_type="$(getModuleIniEntryType "$1")" - buildPhpExtensionIniContent_soFile="$(getModuleFullPath "$1")" - buildPhpExtensionIniContent_result="$(printf '%s=%s' "$buildPhpExtensionIniContent_type" "${buildPhpExtensionIniContent_soFile##$PHP_EXTDIR/}")" - if test -n "${2:-}"; then - buildPhpExtensionIniContent_result="$(printf '%s\n%s' "$buildPhpExtensionIniContent_result" "$2")" - fi - printf '%s' "$buildPhpExtensionIniContent_result" -} - -# Check that a PHP module actually works (better to run this check before enabling the extension) -# -# Arguments: -# $1: the name of the PHP extension -# $2: base name (without path and extension) of additional php.ini configuration (optional) -# $3: additional php.ini configuration (optional) -# -# Return: -# 0 (true): if the string is in the list -# 1 (false): if the string is not in the list -checkModuleWorking() { - if test -n "${2:-}"; then - checkModuleWorking_iniFile="$PHP_INI_DIR/conf.d/$2--temp.ini" - else - checkModuleWorking_iniFile="$PHP_INI_DIR/conf.d/docker-php-ext-$1--temp.ini" - fi - checkModuleWorking_iniContent="$(buildPhpExtensionIniContent "$1" "${3:-}")" - printf 'Check if the %s module can be loaded... ' "$1" - checkModuleWorking_errBefore="$(php -r 'return;' 2>&1 || true)" - printf '%s' "$checkModuleWorking_iniContent" >"$checkModuleWorking_iniFile" - checkModuleWorking_errAfter="$(php -r 'return;' 2>&1 || true)" - rm "$checkModuleWorking_iniFile" - if test "$checkModuleWorking_errAfter" != "$checkModuleWorking_errBefore"; then - printf 'Error loading the "%s" extension:\n%s\n' "$1" "$checkModuleWorking_errAfter" >&2 - return 1 - fi - printf 'ok.\n' - return 0 -} - -# Enable a PHP extension -# -# Arguments: -# $1: the name of the PHP extension to be enabled -# $2: base name (without path and extension) of additional php.ini configuration (optional) -# $3: additional php.ini configuration (optional) -enablePhpExtension() { - if test -n "${2:-}"; then - enablePhpExtension_iniFile="$PHP_INI_DIR/conf.d/$2.ini" - else - enablePhpExtension_iniFile="$PHP_INI_DIR/conf.d/docker-php-ext-$1.ini" - fi - enablePhpExtension_iniContent="$(buildPhpExtensionIniContent "$1" "${3:-}")" - case "${IPE_DONT_ENABLE:-}" in - 1 | y* | Y*) - enablePhpExtension_enableCommand="/usr/local/bin/docker-php-ext-enable-$1" - printf '%s' "$enablePhpExtension_iniContent" >"$enablePhpExtension_iniFile-disabled" - printf '\n' >>"$enablePhpExtension_iniFile-disabled" - cat <"$enablePhpExtension_enableCommand" -#!/bin/sh - -if test -f '$enablePhpExtension_iniFile-disabled'; then - echo 'Enabling extension $1' - mv '$enablePhpExtension_iniFile-disabled' '$enablePhpExtension_iniFile' -else - echo 'The extension $1 has already been enabled' -fi -EOT - chmod +x "$enablePhpExtension_enableCommand" - printf '## Extension %s not enabled.\nYou can enable it by running the following command:\n%s\n\n' "$1" "$(basename "$enablePhpExtension_enableCommand")" - ;; - *) - printf '%s' "$enablePhpExtension_iniContent" >"$enablePhpExtension_iniFile" - printf '\n' >>"$enablePhpExtension_iniFile" - ;; - esac -} - -# Mark the pre-installed APT/APK packages as used -# that way they won't be uninstalled by accident -markPreinstalledPackagesAsUsed() { - printf '### MARKING PRE-INSTALLED PACKAGES AS IN-USE ###\n' - case "$DISTRO" in - alpine) - printf '# Packages: %s\n' "$PACKAGES_PERSISTENT_PRE" - apk add $PACKAGES_PERSISTENT_PRE - ;; - debian) - apt-mark manual $PACKAGES_PERSISTENT_PRE - ;; - esac -} - -# Install the required APT/APK packages -# -# Arguments: -# $@: the list of APT/APK packages to be installed -installRequiredPackages() { - printf '### INSTALLING REQUIRED PACKAGES ###\n' - printf '# Packages to be kept after installation: %s\n' "$PACKAGES_PERSISTENT_NEW" - if test -n "${IPE_SAVE_PERMDEPS_TO:-}"; then - printf '%s\n' "$PACKAGES_PERSISTENT_NEW" >"$IPE_SAVE_PERMDEPS_TO" - fi - printf '# Packages to be used only for installation: %s\n' "$PACKAGES_VOLATILE" - if test -n "${IPE_SAVE_VOLDEPS_TO:-}"; then - printf '%s\n' "$PACKAGES_VOLATILE" >"$IPE_SAVE_VOLDEPS_TO" - fi - case "$DISTRO" in - alpine) - apk add $IPE_APK_FLAGS $PACKAGES_PERSISTENT_NEW $PACKAGES_VOLATILE - # https://gitlab.alpinelinux.org/alpine/aports/-/issues/12763#note_172090 - # https://github.com/mlocati/docker-php-extension-installer/issues/385 - # https://github.com/mlocati/docker-php-extension-installer/issues/537#issuecomment-1078748882 - for installRequiredPackages_item in wget; do - if test -n "$(expandInstalledSystemPackageName "$installRequiredPackages_item")"; then - apk add --upgrade "$installRequiredPackages_item" - fi - done - ;; - debian) - apt-get install -qqy --no-install-recommends $PACKAGES_PERSISTENT_NEW $PACKAGES_VOLATILE - ;; - esac -} - -# Get the version of an installed APT/APK package -# -# Arguments: -# $1: the name of the installed package -# -# Output: -# The numeric part of the package version, with from 1 to 3 numbers -# -# Example: -# 1 -# 1.2 -# 1.2.3 -getInstalledPackageVersion() { - case "$DISTRO" in - alpine) - apk info "$1" | head -n1 | cut -c $((${#1} + 2))- | grep -o -E '^[0-9]+(\.[0-9]+){0,2}' - ;; - debian) - dpkg-query --showformat='${Version}' --show "$1" 2>/dev/null | grep -o -E '^[0-9]+(\.[0-9]+){0,2}' - ;; - esac -} - -# Compare two versions -# -# Arguments: -# $1: the first version -# $2: the second version -# -# Output -# -1 if $1 is less than $2 -# 0 if $1 is the same as $2 -# 1 if $1 is greater than $2 -compareVersions() { - compareVersions_v1="$1.0.0" - compareVersions_v2="$2.0.0" - compareVersions_vMin="$(printf '%s\n%s' "$compareVersions_v1" "$compareVersions_v2" | sort -t '.' -n -k1,1 -k2,2 -k3,3 | head -n 1)" - if test "$compareVersions_vMin" != "$compareVersions_v1"; then - echo '1' - elif test "$compareVersions_vMin" = "$compareVersions_v2"; then - echo '0' - else - echo '-1' - fi -} - -# Install Oracle Instant Client & SDK -# -# Set: -# ORACLE_INSTANTCLIENT_LIBPATH -installOracleInstantClient() { - case "${IPE_INSTANTCLIENT_BASIC:-}" in - 1 | y* | Y*) - installOracleInstantClient_handle=basic - ;; - *) - installOracleInstantClient_handle=basiclite - ;; - esac - case $PHP_BITS in - 32) - installOracleInstantClient_client=client - installOracleInstantClient_version='19.9' - installOracleInstantClient_ic=https://download.oracle.com/otn_software/linux/instantclient/199000/instantclient-$installOracleInstantClient_handle-linux-$installOracleInstantClient_version.0.0.0dbru.zip - installOracleInstantClient_sdk=https://download.oracle.com/otn_software/linux/instantclient/199000/instantclient-sdk-linux-$installOracleInstantClient_version.0.0.0dbru.zip - ;; - *) - case $(uname -m) in - aarch64*) - installOracleInstantClient_client=client64 - installOracleInstantClient_version='19.10' - installOracleInstantClient_ic=https://download.oracle.com/otn_software/linux/instantclient/191000/instantclient-$installOracleInstantClient_handle-linux.arm64-$installOracleInstantClient_version.0.0.0dbru.zip - installOracleInstantClient_sdk=https://download.oracle.com/otn_software/linux/instantclient/191000/instantclient-sdk-linux.arm64-$installOracleInstantClient_version.0.0.0dbru.zip - ;; - *) - installOracleInstantClient_client=client64 - installOracleInstantClient_version='21.1' - installOracleInstantClient_ic=https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-$installOracleInstantClient_handle-linux.x64-$installOracleInstantClient_version.0.0.0.zip - installOracleInstantClient_sdk=https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-sdk-linux.x64-$installOracleInstantClient_version.0.0.0.zip - ;; - esac - ;; - esac - ORACLE_INSTANTCLIENT_LIBPATH=/usr/lib/oracle/$installOracleInstantClient_version/$installOracleInstantClient_client/lib - if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH"; then - printf 'Downloading Oracle Instant Client v%s (%s)... ' "$installOracleInstantClient_version" "$installOracleInstantClient_handle" - installOracleInstantClient_src="$(getPackageSource $installOracleInstantClient_ic)" - mkdir -p "/usr/lib/oracle/$installOracleInstantClient_version/$installOracleInstantClient_client" - mv "$installOracleInstantClient_src" "$ORACLE_INSTANTCLIENT_LIBPATH" - echo 'done.' - fi - 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" - echo 'done.' - fi - case "$DISTRO" in - alpine) - if ! test -e /usr/lib/libresolv.so.2 && test -e /lib/libc.so.6; then - ln -s /lib/libc.so.6 /usr/lib/libresolv.so.2 - fi - installOracleInstantClient_ldconf=/etc/ld-musl-${TARGET_TRIPLET%-alpine-linux-musl}.path - if test -e "$installOracleInstantClient_ldconf"; then - if ! cat "$installOracleInstantClient_ldconf" | grep -q "$ORACLE_INSTANTCLIENT_LIBPATH"; then - cat "$ORACLE_INSTANTCLIENT_LIBPATH" | awk -v suffix=":$ORACLE_INSTANTCLIENT_LIBPATH" '{print NR==1 ? $0suffix : $0}' >"$ORACLE_INSTANTCLIENT_LIBPATH" - fi - else - case $PHP_BITS in - 32) - echo "/lib:/usr/local/lib:/usr/lib:$ORACLE_INSTANTCLIENT_LIBPATH" >"$installOracleInstantClient_ldconf" - ;; - *) - echo "/lib64:/lib:/usr/local/lib:/usr/lib:$ORACLE_INSTANTCLIENT_LIBPATH" >"$installOracleInstantClient_ldconf" - ;; - esac - fi - ;; - debian) - if ! test -e /etc/ld.so.conf.d/oracle-instantclient.conf; then - echo "$ORACLE_INSTANTCLIENT_LIBPATH" >/etc/ld.so.conf.d/oracle-instantclient.conf - ldconfig - fi - ;; - esac -} - -# Check if the Microsoft SQL Server ODBC Driver is installed -# -# Return: -# 0 (true): if the string is in the list -# 1 (false): if the string is not in the list -isMicrosoftSqlServerODBCInstalled() { - test -d /opt/microsoft/msodbcsql*/ -} - -# 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) - rm -rf /tmp/src/msodbcsql.apk - if test $PHP_MAJMIN_VERSION -le 703; then - installMicrosoftSqlServerODBC_url=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) - installMicrosoftSqlServerODBC_arch=arm64 - ;; - *) - installMicrosoftSqlServerODBC_arch=amd64 - ;; - esac - installMicrosoftSqlServerODBC_url=https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_$installMicrosoftSqlServerODBC_arch.apk - fi - printf 'APK package URL: %s\n' "$installMicrosoftSqlServerODBC_url" - curl $IPE_CURL_FLAGS -sSLf -o /tmp/src/msodbcsql.apk "$installMicrosoftSqlServerODBC_url" - printf '\n' | apk add --allow-untrusted /tmp/src/msodbcsql.apk - rm -rf /tmp/src/msodbcsql.apk - ;; - debian) - printf -- '- installing the Microsoft APT key\n' - if test $DISTRO_VERSION_NUMBER -ge 13; then - curl $IPE_CURL_FLAGS https://packages.microsoft.com/keys/microsoft-2025.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg - elif test $DISTRO_VERSION_NUMBER -ge 12; then - curl $IPE_CURL_FLAGS https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor --yes --output /usr/share/keyrings/microsoft-prod.gpg - elif test $DISTRO_VERSION_NUMBER -ge 11; then - curl $IPE_CURL_FLAGS -sSLf -o /etc/apt/trusted.gpg.d/microsoft.asc https://packages.microsoft.com/keys/microsoft.asc - else - curl $IPE_CURL_FLAGS -sSLf https://packages.microsoft.com/keys/microsoft.asc | apt-key add - - fi - if ! test -f /etc/apt/sources.list.d/mssql-release.list; then - printf -- '- adding the Microsoft APT source list\n' - curl $IPE_CURL_FLAGS -sSLf https://packages.microsoft.com/config/debian/$DISTRO_VERSION_NUMBER/prod.list >/etc/apt/sources.list.d/mssql-release.list - invokeAptGetUpdate - fi - printf -- '- installing the APT package\n' - if test $PHP_MAJMIN_VERSION -le 703; then - ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends msodbcsql17 - elif test $DISTRO_VERSION_NUMBER -ge 9 && test $DISTRO_VERSION_NUMBER -le 13; then - # On Debian 9 to 13 we have both msodbcsql17 and msodbcsql18: let's install just one - # see https://packages.microsoft.com/debian/9/prod/pool/main/m/ - # see https://packages.microsoft.com/debian/13/prod/pool/main/m/ - ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends msodbcsql18 - else - ACCEPT_EULA=Y apt-get install -qqy --no-install-recommends '^msodbcsql[0-9]+$' - fi - ;; - esac -} - -# Check if libaom is installed -# -# Return: -# 0 (true) -# 1 (false) -isLibaomInstalled() { - 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 - return 1 - fi - return 0 -} - -# Install libaom -installLibaom() { - printf 'Installing libaom\n' - installLibaom_version=3.10.0 - 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 .. - ninja -j $(getProcessorCount) install - cd - >/dev/null - ldconfig || true -} - -# Check if libdav1d is installed -# -# Return: -# 0 (true) -# 1 (false) -isLibdav1dInstalled() { - if ! test -f /usr/local/lib/libdav1d.so && ! test -f /usr/lib/libdav1d.so && ! test -f /usr/lib/x86_64*/libdav1d.so; then - return 1 - fi - if ! test -f /usr/local/include/dav1d/dav1d.h && ! test -f /usr/include/dav1d/dav1d.h; then - return 1 - fi - return 0 -} - -# Install libdav1d -installLibdav1d() { - printf 'Installing libdav1d\n' - 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 .. - ninja -j $(getProcessorCount) install - cd - >/dev/null - if test -f /usr/lib/$TARGET_TRIPLET/libdav1d.so && ! test -f /usr/lib/libdav1d.so; then - ln -s /usr/lib/$TARGET_TRIPLET/libdav1d.so /usr/lib/ - fi - ldconfig || true -} - -# Check if libyuv is installed -# -# Return: -# 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 && ! 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 - return 1 - fi - return 0 -} - -# Install libyuv -installLibyuv() { - printf 'Installing libyuv\n' - 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. .. - make -j$(getProcessorCount) install - cd - >/dev/null -} - -# Check if libavif is installed -# -# Return: -# 0 (true) -# 1 (false) -isLibavifInstalled() { - if ! test -f /usr/local/lib/libavif.so && ! test -f /usr/lib/libavif.so && ! test -f /usr/lib/x86_64*/libavif.so; then - return 1 - fi - if ! test -f /usr/local/include/avif/avif.h && ! test -f /usr/include/avif/avif.h; then - return 1 - fi - return 0 -} - -# Install libavif -installLibavif() { - printf 'Installing libavif\n' - 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 - make -j$(getProcessorCount) install - cd - >/dev/null -} - -# Install libmpdec -installLibMPDec() { - installLibMPDec_version=4.0.1 - printf '# Installing libmpdec v%s\n' "$installLibMPDec_version" - installLibMPDec_src="$(getPackageSource https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-$installLibMPDec_version.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 -} - -isLibTommathInstalled() { - if test -f /usr/local/lib/libtommath.a && test -f /usr/local/include/tommath.h; then - return 0 - fi - return 1 -} - -installLibTommath() { - printf 'Installing libtommath\n' - installLibTommath_src="$(getPackageSource https://github.com/libtom/libtommath/releases/download/v1.3.0/ltm-1.3.0.tar.xz)" - mkdir -p "$installLibTommath_src/build" - cd -- "$installLibTommath_src/build" - CFLAGS='-fPIC' cmake -DCMAKE_BUILD_TYPE=Release .. - make -j$(getProcessorCount) - make install - cd - >/dev/null -} - -isLibTomcryptInstalled() { - if test -f /usr/local/lib/libtomcrypt.a && test -f /usr/local/include/tomcrypt.h; then - return 0 - fi - return 1 -} - -installLibTomcrypt() { - printf 'Installing libtomcrypt\n' - installLibTomcrypt_src="$(getPackageSource https://github.com/libtom/libtomcrypt/releases/download/v1.18.2/crypt-1.18.2.tar.xz)" - cd -- "$installLibTomcrypt_src" - CFLAGS='-fPIC' make -j$(getProcessorCount) - make install -} - -isFirebirdInstalled() { - if test -f /usr/lib/libfbclient.so && test -f /usr/include/ibase.h; then - return 0 - fi - if test -d /tmp/src/firebird; then - return 0 - fi - return 1 -} - -installFirebird() { - printf 'Installing firebird\n' - if test $PHP_MAJMIN_VERSION -ge 804; then - installFirebird_src="$(getPackageSource https://github.com/FirebirdSQL/firebird/releases/download/v5.0.3/Firebird-5.0.3.1683-0-source.tar.xz)" - cd -- "$installFirebird_src" - # Turn off profiling on arm64, otherwise the build fails with "undefined reference to `_mcount'" - sed -i 's/ -p / /g; s/ -p$//g; s/^-p //g' builds/posix/prefix.linux_arm64 - ./configure --enable-client-only - make -j$(getProcessorCount) - cp -Rd gen/Release/firebird/include/* /usr/include - cp -Rd gen/Release/firebird/lib/* /usr/lib - cd - >/dev/null - else - mv "$(getPackageSource https://github.com/FirebirdSQL/firebird/releases/download/R2_5_9/Firebird-2.5.9.27139-0.tar.bz2)" /tmp/src/firebird - cd /tmp/src/firebird - # Patch rwlock.h (this has been fixed in later release of firebird 3.x) - sed -i '194s/.*/#if 0/' src/common/classes/rwlock.h - if [ "$DISTRO" = alpine ] && [ "$DISTRO_MAJMIN_VERSION" -ge 322 ]; then - # Firebird 2.5.x does not support recent ICU versions - ./configure - else - ./configure --with-system-icu - fi - # Don't try to enable parallel build: Firebird forces -j1 - make -s btyacc_binary gpre_boot libfbstatic libfbclient - cp gen/firebird/lib/libfbclient.so /usr/lib/ - ln -s /usr/lib/libfbclient.so /usr/lib/libfbclient.so.2 - cd - >/dev/null - fi -} - -isLibXCryptInstalled() { - if ! test -f /usr/local/lib/libcrypt.so && ! test -f /usr/lib/libcrypt.so && ! test -f /usr/lib/x86_64*/libcrypt.so; then - return 1 - fi - return 0 -} - -installLibXCrypt() { - printf 'Installing libxcrypt\n' - installLibXCrypt_version=4.4.36 - installLibXCrypt_src="$(getPackageSource "https://github.com/besser82/libxcrypt/releases/download/v$installLibXCrypt_version/libxcrypt-$installLibXCrypt_version.tar.xz")" - cd -- "$installLibXCrypt_src" - ./configure --prefix /usr --disable-werror - make -j$(getProcessorCount) - make install - cd - >/dev/null -} - -isLibenchant1Installed() { - if test -f /usr/lib/libenchant.so || test -f /usr/local/lib/libenchant.so; then - return 0 - fi - return 1 -} - -installLibenchant1() { - printf 'Installing libenchant1\n' - installLibenchant1_src="$(getPackageSource https://github.com/rrthomas/enchant/releases/download/enchant-1-6-1/enchant-1.6.1.tar.gz)" - cd -- "$installLibenchant1_src" - ./configure - make -j$(getProcessorCount) - make install - cd - >/dev/null -} - -isLibcClient2007eInstalled() { - if test -f /usr/lib/libc-client.so.2007e && test -f /usr/include/c-client/utf8.h; then - return 0 - fi - return 1 -} - -isLibIP2LocationInstalled() { - if test -f /usr/local/lib/libIP2Location.so && test -f /usr/local/include/IP2Location.h; then - return 0 - fi - return 1 -} - -installLibIP2Location() { - printf 'Installing libIP2Location\n' - installLibIP2Location_src="$(getPackageSource https://codeload.github.com/chrislim2888/IP2Location-C-Library/tar.gz/8.7.0)" - cd -- "$installLibIP2Location_src" - autoreconf -fiv - ./configure - make -j$(getProcessorCount) - make install - cd - >/dev/null - ldconfig || true -} - -installLibcClient2007e() { - mkdir -p /tmp/src - installLibcClient2007e_arch="$(dpkg --print-architecture)" - # See: - # - https://packages.debian.org/bookworm/mlock - # - https://packages.debian.org/bookworm/libc-client2007e - # - https://packages.debian.org/bookworm/libc-client2007e-dev - case "$installLibcClient2007e_arch" in - amd64) - installLibcClient2007e_version='2007f~dfsg-7+b2' - ;; - *) - installLibcClient2007e_version='2007f~dfsg-7+b1' - ;; - esac - if ! test -f /usr/bin/mlock; then - installLibcClient2007e_url="http://ftp.debian.org/debian/pool/main/u/uw-imap/mlock_${installLibcClient2007e_version}_${installLibcClient2007e_arch}.deb" - installLibcClient2007e_deb="$(mktemp -p /tmp/src)" - printf '# Installing mlock from %s\n' "$installLibcClient2007e_url" - curl $IPE_CURL_FLAGS -sSLf -o "$installLibcClient2007e_deb" "$installLibcClient2007e_url" - dpkg -i "$installLibcClient2007e_deb" - fi - if ! test -f /usr/lib/libc-client.so.2007e; then - installLibcClient2007e_url="http://ftp.debian.org/debian/pool/main/u/uw-imap/libc-client2007e_${installLibcClient2007e_version}_${installLibcClient2007e_arch}.deb" - installLibcClient2007e_deb="$(mktemp -p /tmp/src)" - printf '# Installing libc-client2007e from %s\n' "$installLibcClient2007e_url" - curl $IPE_CURL_FLAGS -sSLf -o "$installLibcClient2007e_deb" "$installLibcClient2007e_url" - dpkg -i "$installLibcClient2007e_deb" - fi - if ! test -f /usr/include/c-client/utf8.h; then - installLibcClient2007e_url="http://ftp.debian.org/debian/pool/main/u/uw-imap/libc-client2007e-dev_${installLibcClient2007e_version}_${installLibcClient2007e_arch}.deb" - installLibcClient2007e_deb="$(mktemp -p /tmp/src)" - printf '# Installing libc-client2007e-dev from %s\n' "$installLibcClient2007e_url" - curl $IPE_CURL_FLAGS -sSLf -o "$installLibcClient2007e_deb" "$installLibcClient2007e_url" - dpkg -i "$installLibcClient2007e_deb" - PACKAGES_VOLATILE="$PACKAGES_VOLATILE libc-client2007e-dev" - fi -} - -# Install Composer -installComposer() { - installComposer_version="$(getWantedPHPModuleVersion @composer)" - installComposer_version="${installComposer_version#^}" - if test -z "$installComposer_version"; then - installComposer_fullname=composer - installComposer_flags='' - else - installComposer_fullname="$(printf 'composer v%s' "$installComposer_version")" - if printf '%s' "$installComposer_version" | grep -Eq '^[0-9]+$'; then - installComposer_flags="--$installComposer_version" - else - installComposer_flags="--version=$installComposer_version" - fi - fi - printf '### INSTALLING %s ###\n' "$installComposer_fullname" - actuallyInstallComposer /usr/local/bin composer "$installComposer_flags" -} - -# Actually install composer -# -# Arguments: -# $1: the directory where composer should be installed (required) -# $2: the composer filename (optional, default: composer) -# $3. additional flags for the composer installed (optional) -actuallyInstallComposer() { - actuallyInstallComposer_installer="$(mktemp -p /tmp/src)" - curl $IPE_CURL_FLAGS -sSLf -o "$actuallyInstallComposer_installer" https://getcomposer.org/installer - actuallyInstallComposer_expectedSignature="$(curl $IPE_CURL_FLAGS -sSLf https://composer.github.io/installer.sig)" - actuallyInstallComposer_actualSignature="$(php -n -r "echo hash_file('sha384', '$actuallyInstallComposer_installer');")" - if test "$actuallyInstallComposer_expectedSignature" != "$actuallyInstallComposer_actualSignature"; then - printf 'Verification of composer installer failed!\nExpected signature: %s\nActual signature: %s\n' "$actuallyInstallComposer_expectedSignature" "$actuallyInstallComposer_actualSignature" >&2 - exit 1 - fi - actuallyInstallComposer_flags="--install-dir=$1" - if test -n "${2:-}"; then - actuallyInstallComposer_flags="$actuallyInstallComposer_flags --filename=$2" - else - actuallyInstallComposer_flags="$actuallyInstallComposer_flags --filename=composer" - fi - if test -n "${3:-}"; then - actuallyInstallComposer_flags="$actuallyInstallComposer_flags $3" - fi - php "$actuallyInstallComposer_installer" $actuallyInstallComposer_flags - rm -- "$actuallyInstallComposer_installer" -} - -# Install ionCube Loader -installIonCubeLoader() { - installIonCubeLoader_version='' - installIonCubeLoader_soPrefix=ioncube_loader_lin - installIonCubeLoader_url='https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin' - case "$DISTRO" in - alpine) - if test $DISTRO_MAJMIN_VERSION -le 312; then - installIonCubeLoader_version=14.0.0 # For 14.4.0 we have a Segmentation Fault - fi - if test -z "$installIonCubeLoader_version" || test $(compareVersions "$installIonCubeLoader_version" 14.4.0) -ge 0; then - installIonCubeLoader_url="${installIonCubeLoader_url}-musl" - installIonCubeLoader_soPrefix="${installIonCubeLoader_soPrefix}-musl" - fi - ;; - esac - case $PHP_BITS in - 32) - case $(uname -m) in - aarch* | arm*) - installIonCubeLoader_url="${installIonCubeLoader_url}_armv7l" - ;; - *) - installIonCubeLoader_url="${installIonCubeLoader_url}_x86" - ;; - esac - ;; - *) - case $(uname -m) in - aarch64 | arm64 | armv8) - installIonCubeLoader_url="${installIonCubeLoader_url}_aarch64" - ;; - *) - installIonCubeLoader_url="${installIonCubeLoader_url}_x86-64" - ;; - esac - ;; - esac - installIonCubeLoader_versionDisplayName=latest - if test -n "$installIonCubeLoader_version"; then - installIonCubeLoader_url="${installIonCubeLoader_url}_${installIonCubeLoader_version}" - installIonCubeLoader_versionDisplayName="v$installIonCubeLoader_version" - fi - installIonCubeLoader_url="${installIonCubeLoader_url}.tar.gz" - # See https://www.ioncube.com/loaders.php - printf 'Downloading ionCube Loader (%s)... ' "$installIonCubeLoader_versionDisplayName" - installIonCubeLoader_dir="$(getPackageSource $installIonCubeLoader_url)" - echo 'done.' - installIonCubeLoader_so="${installIonCubeLoader_soPrefix}_${PHP_MAJDOTMIN_VERSION}" - if test $PHP_THREADSAFE -eq 1; then - installIonCubeLoader_so="${installIonCubeLoader_so}_ts" - fi - installIonCubeLoader_so="${installIonCubeLoader_so}.so" - cp "$installIonCubeLoader_dir/$installIonCubeLoader_so" "$(getPHPExtensionsDir)/ioncube_loader.so" -} - -# Install SourceGuardian Loader -installSourceGuardian() { - # See https://www.sourceguardian.com/loaders.html - case $PHP_BITS in - 32) - installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-i386.tar.gz - ;; - *) - case $(uname -m) in - aarch64 | arm64 | armv8) - installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-aarch64.tar.gz - ;; - *) - installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz - ;; - esac - ;; - esac - printf 'Downloading SourceGuardian... ' - installSourceGuardian_dir="$(getPackageSource $installSourceGuardian_url)" - printf 'done (version: %s)\n' "$(cat "$installSourceGuardian_dir/version")" - for installSourceGuardian_phpv in $PHP_MAJDOTMINDOTPAT_VERSION $PHP_MAJDOTMIN_VERSION; do - installSourceGuardian_file="$installSourceGuardian_dir/ixed.$PHP_MAJDOTMIN_VERSION" - if test $PHP_THREADSAFE -eq 1; then - installSourceGuardian_file="${installSourceGuardian_file}ts" - fi - installSourceGuardian_file="${installSourceGuardian_file}.lin" - if test -f "$installSourceGuardian_file"; then - mv "$installSourceGuardian_file" "$(getPHPExtensionsDir)/sourceguardian.so" - return - fi - done - printf 'Unable to find a SourceGuardian compatible with PHP %s or PHP %s.\nAvailable SourceGuardian versions:\n' "$PHP_MAJDOTMINDOTPAT_VERSION" "$PHP_MAJDOTMIN_VERSION" >&2 - ls -1 "$installSourceGuardian_dir" | grep -E '^ixed\..*\.lin$' | sed -E 's/^[^0-9]+([0-9]+(\.[0-9]+)*).*$/\1/' | sort | uniq >&2 - exit 1 -} - -# Install Cargo (if not yet installed) -installCargo() { - if command -v cargo >/dev/null; then - return - fi - installCargo_cargoversion= - if ! test -f "$HOME/.cargo/env"; then - 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 $IPE_CURL_FLAGS https://sh.rustup.rs -sSf | sh -s -- -y -q - case "$DISTRO" in - alpine) - if test $DISTRO_MAJMIN_VERSION -le 310; then - # With version 1.84.0 we have this error: - # Error relocating /root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/cargo: posix_spawn_file_actions_addchdir_np: symbol not found - # See https://github.com/rust-lang/rust/pull/131851#issue-2595663507 - installCargo_cargoversion=1.83.0 - fi - ;; - esac - fi - . "$HOME/.cargo/env" - if test -n "$installCargo_cargoversion"; then - rustup default -- "$installCargo_cargoversion" - fi - if test -z "${IPE_UNINSTALL_CARGO:-}"; then - IPE_UNINSTALL_CARGO=y - fi -} - -# Install New Relic -# -# Arguments: -# $1: the version to be installed (optional) -installNewRelic() { - printf '# Installing newrelic\n' - installNewRelic_version="${1:-}" - if test -z "$installNewRelic_version"; then - # see https://docs.newrelic.com/docs/apm/agents/php-agent/getting-started/php-agent-compatibility-requirements/ - if test $PHP_MAJMIN_VERSION -le 701; then - installNewRelic_version=10.21.0.11 - fi - fi - if test -z "$installNewRelic_version"; then - installNewRelic_baseUrl=https://download.newrelic.com/php_agent/release/ - else - installNewRelic_baseUrl="https://download.newrelic.com/php_agent/archive/$installNewRelic_version/" - fi - installNewRelic_search='\bnewrelic-php[0-9.]*-[0-9]+(\.[0-9]+)*-linux' - case "$DISTRO" in - alpine) - installNewRelic_search="$installNewRelic_search-musl" - ;; - esac - installNewRelic_file="$(curl $IPE_CURL_FLAGS -sSLf -o- "$installNewRelic_baseUrl" | sed -E 's/<[^>]*>//g' | grep -Eo "$installNewRelic_search.tar.gz" | sort | head -1)" - installNewRelic_url="$installNewRelic_baseUrl$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 - case "${IPE_NEWRELIC_KEEPLOG:-}" in - 1 | y* | Y*) ;; - *) - rm -f /tmp/nrinstall-*.tar - ;; - esac - cd - >/dev/null - cat <&2 - fi - if test -n "$(getModuleSourceCodePath "$installBundledModule_module")"; then - printf '### WARNING the module "%s" is bundled with PHP, you can NOT specify a source code path for it\n' "$installBundledModule_module" >&2 - fi - case "$installBundledModule_module" in - dba) - if test -e /usr/lib/$TARGET_TRIPLET/libdb-5.3.so && ! test -e /usr/lib/libdb-5.3.so; then - ln -s /usr/lib/$TARGET_TRIPLET/libdb-5.3.so /usr/lib/ - fi - if test $PHP_MAJMIN_VERSION -le 505; then - docker-php-source extract - patch /usr/src/php/ext/dba/config.m4 </dev/null - ;; - oci8 | pdo_oci) - # oci8/pdo_oci must be loaded after smbclient (otherwise we have a segmentation fault when using smbclient_open) - installBundledModule_ini_basename="xx-php-ext-$installBundledModule_module" - case "$DISTRO" in - debian) - if test $DISTRO_VERSION_NUMBER -ge 13; then - if test -f /usr/lib/$TARGET_TRIPLET/libaio.so.1t64 && ! test -f /usr/lib/$TARGET_TRIPLET/libaio.so.1; then - ln -s /usr/lib/$TARGET_TRIPLET/libaio.so.1t64 /usr/lib/$TARGET_TRIPLET/libaio.so.1 - fi - if test -f /usr/lib/$TARGET_TRIPLET/libaio.so.1 && ! test -f /usr/lib/$TARGET_TRIPLET/libaio.so; then - ln -s /usr/lib/$TARGET_TRIPLET/libaio.so.1 /usr/lib/$TARGET_TRIPLET/libaio.so - fi - fi - ;; - esac - installOracleInstantClient - if test "$installBundledModule_module" = oci8; then - docker-php-ext-configure "$installBundledModule_module" "--with-oci8=instantclient,$ORACLE_INSTANTCLIENT_LIBPATH" - elif test "$installBundledModule_module" = pdo_oci; then - docker-php-ext-configure "$installBundledModule_module" "--with-pdo-oci=instantclient,$ORACLE_INSTANTCLIENT_LIBPATH" - fi - ;; - pdo_odbc) - docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr - ;; - snmp) - case "$DISTRO" in - alpine) - mkdir -p -m 0755 /var/lib/net-snmp/mib_indexes - ;; - esac - ;; - sockets) - case "$PHP_MAJDOTMINDOTPAT_VERSION" in - 8.0.15 | 8.1.2) - sed -i '70 i #ifndef _GNU_SOURCE' /usr/src/php/ext/sockets/config.m4 - sed -i '71 i #define _GNU_SOURCE' /usr/src/php/ext/sockets/config.m4 - sed -i '72 i #endif' /usr/src/php/ext/sockets/config.m4 - ;; - esac - ;; - sybase_ct) - docker-php-ext-configure sybase_ct --with-sybase-ct=/usr - ;; - tidy) - case "$DISTRO" in - alpine) - if ! test -f /usr/include/buffio.h; then - ln -s /usr/include/tidybuffio.h /usr/include/buffio.h - UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS /usr/include/buffio.h" - fi - ;; - esac - ;; - zip) - if test $PHP_MAJMIN_VERSION -le 505; then - docker-php-ext-configure zip - elif test $PHP_MAJMIN_VERSION -le 703; then - docker-php-ext-configure zip --with-libzip - else - docker-php-ext-configure zip --with-zip - fi - ;; - esac - installBundledModule_errBefore="$(php -r 'return;' 2>&1 || true)" - docker-php-ext-install -j$(getProcessorCount) "$installBundledModule_module" - if test -z "$installBundledModule_ini_basename"; then - installBundledModule_ini_basename="docker-php-ext-$installBundledModule_module" - else - mv "$PHP_INI_DIR/conf.d/docker-php-ext-$installBundledModule_module.ini" "$PHP_INI_DIR/conf.d/$installBundledModule_ini_basename.ini" - fi - case "$installBundledModule_module" in - imap) - case "$DISTRO_VERSION" in - debian@9) - dpkg -r libc-client2007e-dev - ;; - 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 - printf 'PHP has problems after installing the "%s" extension:\n%s\n' "$installBundledModule_module" "$installBundledModule_errAfter" >&2 - rm "$PHP_INI_DIR/conf.d/$installBundledModule_ini_basename.ini" || true - return 1 - fi - ;; - esac -} - -# Fetch a tar.gz file, extract it and returns the path of the extracted folder. -# -# Arguments: -# $1: the URL of the file to be downloaded -# -# Output: -# The path of the extracted directory -getPackageSource() { - mkdir -p /tmp/src - getPackageSource_tempFile=$(mktemp -p /tmp/src) - curl $IPE_CURL_FLAGS -sSLf -o "$getPackageSource_tempFile" "$1" - getPackageSource_tempDir=$(mktemp -p /tmp/src -d) - cd "$getPackageSource_tempDir" - tar -xzf "$getPackageSource_tempFile" 2>/dev/null || tar -xf "$getPackageSource_tempFile" 2>/dev/null || ( - if command -v bsdtar >/dev/null; then - bsdtar -xf "$getPackageSource_tempFile" - else - unzip -q "$getPackageSource_tempFile" - fi - ) - cd - >/dev/null - unlink "$getPackageSource_tempFile" - getPackageSource_outDir='' - for getPackageSource_i in $(ls "$getPackageSource_tempDir"); do - if test -n "$getPackageSource_outDir" || test -f "$getPackageSource_tempDir/$getPackageSource_i"; then - getPackageSource_outDir='' - break - fi - getPackageSource_outDir="$getPackageSource_tempDir/$getPackageSource_i" - done - if test -n "$getPackageSource_outDir"; then - printf '%s' "$getPackageSource_outDir" - else - printf '%s' "$getPackageSource_tempDir" - fi -} - -# Install a PECL/remote PHP module given its handle -# -# Arguments: -# $1: the handle of the PHP module -installRemoteModule() { - installRemoteModule_module="$1" - printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module" - installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")" - installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")" - rm -rf "$CONFIGURE_FILE" - installRemoteModule_manuallyInstalled=0 - installRemoteModule_cppflags='' - installRemoteModule_ini_basename='' - installRemoteModule_ini_extra='' - case "$installRemoteModule_module" in - amqp) - if test -z "$installRemoteModule_version"; then - if test "$DISTRO_VERSION" = debian@8; then - # in Debian Jessie we have librabbitmq version 0.5.2 - 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 - ;; - apcu) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=4.0.11 - fi - fi - ;; - apcu_bc) - # apcu_bc must be loaded after apcu - installRemoteModule_ini_basename="xx-php-ext-$installRemoteModule_module" - ;; - ast) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 701; then - installRemoteModule_version=1.0.16 - fi - fi - ;; - bitset) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.0.4 - fi - fi - ;; - blackfire) - case $(uname -m) in - i386 | i686 | x86) - installRemoteModule_tmp1=i386 - ;; - aarch64 | arm64 | armv8) - installRemoteModule_tmp1=arm64 - ;; - *) - installRemoteModule_tmp1=amd64 - ;; - esac - case $DISTRO in - alpine) - installRemoteModule_distro=alpine - ;; - *) - installRemoteModule_distro=linux - ;; - esac - installRemoteModule_tmp2=$(php -r 'echo PHP_MAJOR_VERSION . PHP_MINOR_VERSION . (ZEND_THREAD_SAFE ? "-zts" : "");') - installRemoteModule_tmp="$(mktemp -p /tmp/src -d)" - cd "$installRemoteModule_tmp" - curl $IPE_CURL_FLAGS -sSLf --user-agent Docker https://blackfire.io/api/v1/releases/probe/php/$installRemoteModule_distro/$installRemoteModule_tmp1/$installRemoteModule_tmp2 | tar xz - mv blackfire-*.so $(getPHPExtensionsDir)/blackfire.so - cd - >/dev/null - installRemoteModule_manuallyInstalled=1 - installRemoteModule_ini_extra="$(printf '%sblackfire.agent_socket=tcp://blackfire:8307\n' "$installRemoteModule_ini_extra")" - ;; - brotli) - if test -z "$installRemoteModule_version"; then - case "$DISTRO_VERSION" in - debian@8) - # In Debian Jessie we have brotli version 0.18.2 - installRemoteModule_version=0.18.2 - ;; - esac - fi - ;; - cassandra) - installRemoteModule_src="$(getPackageSource https://github.com/nano-interactive/ext-cassandra/tarball/1cf12c5ce49ed43a2c449bee4b7b23ce02a37bf0)" - cd "$installRemoteModule_src/ext" - phpize - ./configure - make -j$(getProcessorCount) install - cd - >/dev/null - installRemoteModule_manuallyInstalled=1 - ;; - cmark) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 701; then - installRemoteModule_version=1.1.0 - fi - fi - if ! test -e /usr/local/lib/libcmark.so && ! test -e /usr/local/lib64/libcmark.so && ! test -e /usr/lib/libcmark.so && ! test -e /usr/lib64/libcmark.so && ! test -e /lib/libcmark.so; then - installRemoteModule_cmakeVersion="$(cmake --version | head -n1 | sed -E 's/^.* //')" - if test $(compareVersions "$installRemoteModule_cmakeVersion" '3.7') -lt 0; then - installRemoteModule_cmarkVersion=0.29.0 - elif test $(compareVersions "$installRemoteModule_cmakeVersion" '3.15') -lt 0; then - installRemoteModule_cmarkVersion=0.31.1 - else - installRemoteModule_cmarkVersion=0.31.2 - fi - printf 'Installing libcmark %s\n' "$installRemoteModule_cmarkVersion" - cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_cmarkVersion.tar.gz)" - make -s -j$(getProcessorCount) cmake_build - make -s -j$(getProcessorCount) install - cd - >/dev/null - case "$DISTRO" in - alpine) - if test -e /usr/local/lib64/libcmark.so.$installRemoteModule_cmarkVersion && ! test -e /usr/local/lib/libcmark.so.$installRemoteModule_cmarkVersion; then - ln -s /usr/local/lib64/libcmark.so.$installRemoteModule_cmarkVersion /usr/local/lib/ - fi - ;; - *) - ldconfig || true - ;; - esac - fi - ;; - csv) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=0.3.1 - fi - fi - ;; - ddtrace) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 700; then - installRemoteModule_version=0.75.0 - fi - if test -z "$installRemoteModule_version"; then - case "$DISTRO" in - alpine) - if test $DISTRO_MAJMIN_VERSION -le 312; then - # cc is not supported due to a memcmp related bug - installRemoteModule_version=1.1.0 - fi - ;; - esac - 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 - 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 - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 802; then - installRemoteModule_version=1.5.1 - fi - fi - ;; - ds) - if test -z "$installRemoteModule_version"; 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 - elif test $PHP_MAJMIN_VERSION -lt 802; then - installRemoteModule_version=1.6.0 - fi - fi - ;; - ecma_intl) - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=alpha - fi - ;; - ev) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 800; then - installRemoteModule_version=1.1.5 - fi - fi - ;; - event) - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.4.0) -ge 0; then - # Enable internal debugging in Event - addConfigureOption enable-event-debug no - # Enable sockets support in Event - if php --ri sockets >/dev/null 2>/dev/null; then - addConfigureOption enable-event-sockets yes - else - addConfigureOption enable-event-sockets no - fi - # libevent installation prefix - addConfigureOption with-event-libevent-dir /usr - # Include libevent's pthreads library and enable thread safety support in Event - addConfigureOption with-event-pthreads yes - # Include libevent protocol-specific functionality support including HTTP, DNS, and RPC - addConfigureOption with-event-extra yes - # Include libevent OpenSSL support - addConfigureOption with-event-openssl yes - # PHP Namespace for all Event classes - if test -n "${IPE_EVENT_NAMESPACE:-}"; then - addConfigureOption with-event-ns "$IPE_EVENT_NAMESPACE" - else - addConfigureOption with-event-ns no - fi - # openssl installation prefix - addConfigureOption with-openssl-dir yes - elif test $(compareVersions "$installRemoteModule_version" 1.7.6) -ge 0; then - # Enable internal debugging in Event - addConfigureOption enable-event-debug no - # Enable sockets support in Event - if php --ri sockets >/dev/null 2>/dev/null; then - addConfigureOption enable-event-sockets yes - else - addConfigureOption enable-event-sockets no - fi - # libevent installation prefix - addConfigureOption with-event-libevent-dir /usr - # Include libevent's pthreads library and enable thread safety support in Event - addConfigureOption with-event-pthreads yes - # Include libevent protocol-specific functionality support including HTTP, DNS, and RPC - addConfigureOption with-event-extra yes - # Include libevent OpenSSL support - addConfigureOption with-event-openssl yes - # openssl installation prefix - addConfigureOption with-openssl-dir no - elif test $(compareVersions "$installRemoteModule_version" 1.3.0) -ge 0; then - # Enable internal debugging in event - addConfigureOption enable-event-debug no - # libevent installation prefix - addConfigureOption with-event-libevent-dir /usr - # Include libevent's pthreads library and enable thread safety support in event - addConfigureOption with-event-pthreads yes - # Include libevent protocol-specific functionality support including HTTP, DNS, and RPC - addConfigureOption with-event-extra yes - # Include libevent OpenSSL support - addConfigureOption with-event-openssl yes - # openssl installation prefix - addConfigureOption with-openssl-dir no - fi - # event must be loaded after sockets - installRemoteModule_ini_basename="xx-php-ext-$installRemoteModule_module" - ;; - excimer) - if test -z "$installRemoteModule_version"; then - case "$DISTRO" in - alpine) - if test $DISTRO_MAJMIN_VERSION -le 313; then - # With newer versions we have: - # configure: error: excimer requires timer_create or kevent - installRemoteModule_version=1.2.3 - fi - ;; - esac - fi - ;; - gearman) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.1.2 - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=2.1.3 - elif test $PHP_MAJMIN_VERSION -le 701; then - installRemoteModule_version=2.1.4 - elif test $DISTRO_VERSION_NUMBER -eq 10 && { test $PHP_MAJMIN_VERSION -eq 801 || test $PHP_MAJMIN_VERSION -eq 802; }; then - # I don't know why on Debian Buster sometimes we have "undefined symbol: zif_gearman_client_set_ssl" - installRemoteModule_version=2.1.4 - fi - fi - 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.22/gearmand-1.1.22.tar.gz)" - cd -- "$installRemoteModule_src" - ./configure - make -j$(getProcessorCount) install-binPROGRAMS - make -j$(getProcessorCount) install-nobase_includeHEADERS - cd - >/dev/null - fi - ;; - esac - ;; - geoip) - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=beta - fi - ;; - geos) - if test -z "$installRemoteModule_path"; then - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=dfe1ab17b0f155cc315bc13c75689371676e02e1 - fi - installRemoteModule_src="$(getPackageSource https://github.com/libgeos/php-geos/archive/$installRemoteModule_version.tar.gz)" - cd "$installRemoteModule_src" - ./autogen.sh - ./configure - make -j$(getProcessorCount) install - cd - >/dev/null - installRemoteModule_manuallyInstalled=1 - fi - ;; - geospatial) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.2.1 - elif test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=0.3.2 - else - installRemoteModule_version=beta - fi - fi - ;; - gmagick) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.1.7RC3 - else - installRemoteModule_version=beta - fi - fi - ;; - grpc) - installRemoteModule_cppflags='-Wno-maybe-uninitialized -Wno-attributes -Wno-return-type' - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.33.1 - else - case "$DISTRO_VERSION" in - debian@8) - installRemoteModule_version=1.46.3 - ;; - alpine@3.7 | alpine@3.8 | debian@9) # With newer version: "This package requires GCC 7 or higher" - installRemoteModule_version=1.52.1 - ;; - alpine@3.13) # With 1.71.0, 1.72.0: "src/core/call/call_filters.h:1002:69: internal compiler error: in assign_temp, at function.c:984" - installRemoteModule_version=1.70.0 - ;; - esac - fi - fi - ;; - http) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.6.0 - elif test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=3.2.4 - fi - fi - if test $PHP_MAJMIN_VERSION -ge 700; then - if ! test -e /usr/local/lib/libidnkit.so; then - installRemoteModule_src="$(getPackageSource https://jprs.co.jp/idn/idnkit-2.3.tar.bz2)" - cd -- "$installRemoteModule_src" - CFLAGS=-Wno-incompatible-pointer-types ./configure - make -j$(getProcessorCount) install - cd - >/dev/null - fi - fi - # http must be loaded after raphf and propro - installRemoteModule_ini_basename="xx-php-ext-$installRemoteModule_module" - ;; - igbinary) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.0.8 - fi - fi - ;; - imap) - # Include Kerberos Support - addConfigureOption with-kerberos yes - # Include SSL Support - addConfigureOption with-imap-ssl yes - ;; - imagick) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 506; then - installRemoteModule_version=3.7.0 - fi - fi - ;; - inotify) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.1.6 - fi - fi - ;; - ion) - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=alpha - fi - if ! test -f /usr/local/lib/libionc.so || ! test -f /usr/local/include/ionc/ion.h; then - echo 'Installing ion-c... ' - installRemoteModule_src="$(mktemp -p /tmp/src -d)" - git clone -q -c advice.detachedHead=false --depth 1 --branch v1.1.4 https://github.com/amzn/ion-c.git "$installRemoteModule_src/ion" - ( - cd "$installRemoteModule_src/ion" - git submodule init -q - git submodule update -q - mkdir -p build - cd build - CFLAGS='-Wno-incompatible-pointer-types -Wno-stringop-overflow -Wno-discarded-qualifiers' cmake -DCMAKE_BUILD_TYPE=Release .. -Wno-dev - make clean - make -j$(getProcessorCount) install - ) - rm -rf "$installRemoteModule_src" - fi - addConfigureOption with-ion "shared,/usr/local" - ;; - ioncube_loader) - installIonCubeLoader - installRemoteModule_manuallyInstalled=1 - ;; - jsmin) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 700; then - installRemoteModule_version=2.0.1 - 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 - installRemoteModule_version=3.0.3 - fi - fi - ;; - lz4) - if test -z "$installRemoteModule_path"; then - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=0.4.3 - fi - installRemoteModule_src="$(getPackageSource https://github.com/kjdev/php-ext-lz4/archive/refs/tags/$installRemoteModule_version.tar.gz)" - cd "$installRemoteModule_src" - phpize - ./configure --with-lz4-includedir=/usr - make -j$(getProcessorCount) install - cd - >/dev/null - installRemoteModule_manuallyInstalled=1 - fi - ;; - lzf) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 702; then - installRemoteModule_version=1.6.8 - fi - else - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - fi - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '1.5.0') -ge 0; then - # Sacrifice speed in favour of compression ratio? - case "${IPE_LZF_BETTERCOMPRESSION:-}" in - 1 | y* | Y*) - addConfigureOption 'enable-lzf-better-compression' 'yes' - ;; - *) - addConfigureOption 'enable-lzf-better-compression' 'no' - ;; - esac - fi - ;; - mailparse) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.1.6 - elif test $PHP_MAJMIN_VERSION -le 702; then - installRemoteModule_version=3.1.3 - fi - fi - ;; - memcache) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.2.7 - elif test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=4.0.5.2 - fi - fi - ;; - memcached) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.2.0 - fi - else - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - fi - # Set the path to libmemcached install prefix - addConfigureOption 'with-libmemcached-dir' 'no' - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '3.0.0') -ge 0; then - # Set the path to ZLIB install prefix - addConfigureOption 'with-zlib-dir' 'no' - # Use system FastLZ library - addConfigureOption 'with-system-fastlz' 'no' - # Enable memcached igbinary serializer support - if php --ri igbinary >/dev/null 2>/dev/null; then - addConfigureOption 'enable-memcached-igbinary' 'yes' - else - addConfigureOption 'enable-memcached-igbinary' 'no' - fi - # Enable memcached msgpack serializer support - if php --ri msgpack >/dev/null 2>/dev/null; then - addConfigureOption 'enable-memcached-msgpack' 'yes' - else - addConfigureOption 'enable-memcached-msgpack' 'no' - fi - # Enable memcached json serializer support - addConfigureOption 'enable-memcached-json' 'yes' - # Enable memcached protocol support - addConfigureOption 'enable-memcached-protocol' 'no' # https://github.com/php-memcached-dev/php-memcached/issues/418#issuecomment-449587972 - # Enable memcached sasl support - addConfigureOption 'enable-memcached-sasl' 'yes' - # Enable memcached session handler support - addConfigureOption 'enable-memcached-session' 'yes' - fi - # memcached must be loaded after msgpack - installRemoteModule_ini_basename="xx-php-ext-$installRemoteModule_module" - ;; - memprof) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.0.0 - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=2.1.0 - fi - fi - ;; - mongo) - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '1.5.0') -ge 0; then - # Build with Cyrus SASL (MongoDB Enterprise Authentication) support? - addConfigureOption '-with-mongo-sasl' 'yes' - fi - ;; - mongodb) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 505; then - installRemoteModule_version=1.5.5 - elif test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.7.5 - elif test $PHP_MAJMIN_VERSION -le 700; then - 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 - elif test $PHP_MAJMIN_VERSION -le 800; then - installRemoteModule_version=1.20.1 - 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 - installRemoteModule_version=beta - fi - ;; - msgpack) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.5.7 - fi - fi - ;; - newrelic) - installNewRelic "$installRemoteModule_version" - installRemoteModule_manuallyInstalled=2 - ;; - oauth) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.2.3 - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=2.0.9 - fi - fi - ;; - oci8 | pdo_oci) - # oci8/pdo_oci must be loaded after smbclient (otherwise we have a segmentation fault when using smbclient_open) - installRemoteModule_ini_basename="xx-php-ext-$installRemoteModule_module" - case "$DISTRO" in - debian) - if test $DISTRO_VERSION_NUMBER -ge 13; then - if test -f /usr/lib/$TARGET_TRIPLET/libaio.so.1t64 && ! test -f /usr/lib/$TARGET_TRIPLET/libaio.so.1; then - ln -s /usr/lib/$TARGET_TRIPLET/libaio.so.1t64 /usr/lib/$TARGET_TRIPLET/libaio.so.1 - fi - if test -f /usr/lib/$TARGET_TRIPLET/libaio.so.1 && ! test -f /usr/lib/$TARGET_TRIPLET/libaio.so; then - ln -s /usr/lib/$TARGET_TRIPLET/libaio.so.1 /usr/lib/$TARGET_TRIPLET/libaio.so - fi - fi - ;; - esac - 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 - fi - ;; - openswoole) - 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 - elif test $PHP_MAJMIN_VERSION -lt 802; then - installRemoteModule_version=22.1.2 - elif test $PHP_MAJMIN_VERSION -lt 803; then - installRemoteModule_version=25.2.0 - fi - else - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - fi - if php --ri sockets >/dev/null 2>/dev/null; then - installRemoteModule_sockets=yes - installRemoteModule_ini_basename="xx-php-ext-$installRemoteModule_module" - else - 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? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable http2 support? - addConfigureOption enable-http2 yes - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable hook curl support? - addConfigureOption enable-hook-curl yes - # enable postgres support? - addConfigureOption with-postgres yes - 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 - # enable postgres support? - addConfigureOption with-postgres yes - 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 - ;; - opentelemetry) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 801; then - installRemoteModule_version=1.1.3 - fi - fi - ;; - operator) - 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 - installRemoteModule_version=0.8.3 - elif test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=1.1.4 - fi - fi - ;; - parle) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 704; then - installRemoteModule_version=0.8.3 - else - installRemoteModule_version=beta - fi - fi - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 0.8.4) -ge 0; then - # Enable internal UTF-32 support in parle - addConfigureOption enable-parle-utf32 yes - fi - ;; - pcov) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=0.9.0 - fi - fi - ;; - phalcon) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMINPAT_VERSION -lt 70401; then - installRemoteModule_version=4.1.2 - elif test $PHP_MAJMIN_VERSION -lt 800; then - installRemoteModule_version=5.4.0 - elif test $PHP_MAJMIN_VERSION -lt 801; then - installRemoteModule_version=5.10.0 - fi - fi - installRemoteModule_cppflags='-Wno-incompatible-pointer-types' - ;; - php_trie) - if ! test -f /usr/local/include/hat-trie/include/tsl/htrie_map.h; then - installRemoteModule_src="$(getPackageSource https://codeload.github.com/Tessil/hat-trie/tar.gz/v0.7.1)" - mkdir -p /usr/local/include/hat-trie - mv "$installRemoteModule_src/include" /usr/local/include/hat-trie - fi - ;; - pq) - # pq must be loaded after raphf - installRemoteModule_ini_basename="xx-php-ext-$installRemoteModule_module" - ;; - propro) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.0.2 - fi - fi - ;; - protobuf) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 700; then - 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 - elif test $PHP_MAJMIN_VERSION -lt 802; then - installRemoteModule_version=4.33.5 - fi - fi - ;; - psr) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 506; then - installRemoteModule_version=0.5.1 - elif test $PHP_MAJMIN_VERSION -lt 700; then - installRemoteModule_version=0.6.1 - elif test $PHP_MAJMIN_VERSION -lt 703; then - installRemoteModule_version=1.1.0 - fi - fi - ;; - pthreads) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.0.10 - fi - fi - ;; - raphf) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.1.2 - fi - fi - ;; - rdkafka) - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - if test -z "$installRemoteModule_version"; then - installRemoteModule_version1='' - if test $PHP_MAJMIN_VERSION -le 505; then - installRemoteModule_version1=3.0.5 - elif test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version1=4.1.2 - fi - installRemoteModule_version2='' - case "$DISTRO" in - alpine) - installRemoteModule_tmp='librdkafka' - ;; - debian) - installRemoteModule_tmp='librdkafka*' - ;; - *) - installRemoteModule_tmp='' - ;; - esac - if test -n "$installRemoteModule_tmp"; then - installRemoteModule_tmp="$(getInstalledPackageVersion "$installRemoteModule_tmp")" - if test -n "$installRemoteModule_tmp" && test $(compareVersions "$installRemoteModule_tmp" '0.11.0') -lt 0; then - installRemoteModule_version2=3.1.3 - fi - fi - if test -z "$installRemoteModule_version1" || test -z "$installRemoteModule_version2"; then - installRemoteModule_version="$installRemoteModule_version1$installRemoteModule_version2" - elif test $(compareVersions "$installRemoteModule_version1" "$installRemoteModule_version2") -le 0; then - installRemoteModule_version="$installRemoteModule_version1" - else - installRemoteModule_version="$installRemoteModule_version2" - fi - fi - ;; - redis) - 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 - elif test $PHP_MAJMIN_VERSION -le 703; then - installRemoteModule_version=6.0.2 - 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 - else - 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 - 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) - rm -rf /tmp/src/zstd - mv "$(getPackageSource https://github.com/facebook/zstd/releases/download/v$installRemoteModule_zstdVersion/zstd-$installRemoteModule_zstdVersion.tar.gz)" /tmp/src/zstd - cd /tmp/src/zstd - make V=0 -j$(getProcessorCount) lib - cp -f lib/libzstd.so "/usr/lib/$TARGET_TRIPLET/libzstd.so.$installRemoteModule_zstdVersion" - ln -sf "/usr/lib/$TARGET_TRIPLET/libzstd.so.$installRemoteModule_zstdVersion" "/usr/lib/$TARGET_TRIPLET/libzstd.so.$installRemoteModule_zstdVersionMajor" - ln -sf "/usr/lib/$TARGET_TRIPLET/libzstd.so.$installRemoteModule_zstdVersion" "/usr/lib/$TARGET_TRIPLET/libzstd.so" - ln -sf /tmp/src/zstd/lib/zstd.h /usr/include/zstd.h - UNNEEDED_PACKAGE_LINKS="$UNNEEDED_PACKAGE_LINKS /usr/include/zstd.h" - cd - >/dev/null - fi - # Enable zstd compression support? - 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) - if test -z "$installRemoteModule_version"; then - installRemoteModule_version="$(curl $IPE_CURL_FLAGS -sSLf https://builds.r2.relay.so/meta/latest)" - installRemoteModule_version="${installRemoteModule_version#v}" - fi - case $(uname -m) in - aarch64 | arm64 | armv8) - installRemoteModule_hardware=aarch64 - ;; - *) - installRemoteModule_hardware=x86-64 - ;; - esac - installRemoteModule_distro="$DISTRO" - installRemoteModule_flags='' - case "$DISTRO" in - alpine) - if test $DISTRO_MAJMIN_VERSION -lt 317; then - installRemoteModule_distro=alpine3.9 - else - installRemoteModule_distro=alpine3.17 - fi - ;; - debian) - if dpkg -l 'libssl*' | grep -E '^ii ' | cut -d' ' -f3 | grep -q '^libssl3'; then - installRemoteModule_flags=+libssl3 - fi - ;; - esac - # See https://relay.so/builds - installRemoteModule_url="https://builds.r2.relay.so/v${installRemoteModule_version}/relay-v${installRemoteModule_version}-php${PHP_MAJDOTMIN_VERSION}-${installRemoteModule_distro}-${installRemoteModule_hardware}${installRemoteModule_flags}.tar.gz" - printf 'Downloading relay v%s (%s) from %s... ' "$installRemoteModule_version" "$installRemoteModule_hardware" "$installRemoteModule_url" - installRemoteModule_src="$(getPackageSource $installRemoteModule_url)" - echo 'done.' - if test $PHP_THREADSAFE -eq 1; then - cp -- "$installRemoteModule_src/relay-zts.so" "$PHP_EXTDIR/relay.so" - else - cp -- "$installRemoteModule_src/relay-pkg.so" "$PHP_EXTDIR/relay.so" - fi - sed -i "s/00000000-0000-0000-0000-000000000000/$(cat /proc/sys/kernel/random/uuid)/" "$PHP_EXTDIR/relay.so" - installRemoteModule_ini_extra="$(grep -vE '^[ \t]*extension[ \t]*=' $installRemoteModule_src/relay.ini)" - installRemoteModule_manuallyInstalled=1 - ;; - rrd) - installRemoteModule_cppflags='-Wno-incompatible-pointer-types' - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 700; then - installRemoteModule_version=1.1.3 - fi - fi - ;; - saxon) - case "${IPE_SAXON_EDITION:-}" in - EE | PE | HE) - installRemoteModule_edition=$IPE_SAXON_EDITION - ;; - *) - installRemoteModule_edition=EE - ;; - esac - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 800; then - installRemoteModule_version='12.3' - fi - fi - case $(uname -m) in - aarch64 | arm64 | armv8) - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" '12.9') -ge 0 || test $(compareVersions "$installRemoteModule_version" '12.6') -lt 0; then - installRemoteModule_architecture=linux-arm64 - else - installRemoteModule_architecture=linux-aarch64 - fi - ;; - *) - installRemoteModule_architecture=linux-x86_64 - ;; - esac - installRemoteModule_majorVersion= - if test -n "$installRemoteModule_version"; then - installRemoteModule_majorVersion="${installRemoteModule_version%%.*}" - if test "$installRemoteModule_majorVersion" -ge 12; then - installRemoteModule_url=https://downloads.saxonica.com/SaxonC/${installRemoteModule_edition}/${installRemoteModule_majorVersion}/libsaxon-${installRemoteModule_edition}C-${installRemoteModule_architecture}-v${installRemoteModule_version}.zip - else - installRemoteModule_url=https://downloads.saxonica.com/SaxonC/${installRemoteModule_edition}/${installRemoteModule_majorVersion}/libsaxon-${installRemoteModule_edition}C-setup64-v${installRemoteModule_version}.zip - fi - else - installRemoteModule_regex="https://downloads.saxonica.com/SaxonC/${installRemoteModule_edition}/[0-9]+/SaxonC${installRemoteModule_edition}-${installRemoteModule_architecture}-[0-9\-]+.zip" - installRemoteModule_url="$(curl $IPE_CURL_FLAGS -sSLf https://www.saxonica.com/download/c.xml | grep -Eo "$installRemoteModule_regex" | head -n 1)" - if test $? -ne 0 || test -z "$installRemoteModule_url"; then - printf "Failed to determine SaxonC download URL - Nothing matches\n%s\n" "$installRemoteModule_regex" - exit 1 - fi - fi - printf 'Downloading SaxonC %s from %s\n' "$installRemoteModule_edition" "$installRemoteModule_url" - installRemoteModule_dir="$(getPackageSource $installRemoteModule_url)" - if ! test -f /usr/lib/libsaxon-*.so; then - installRemoteModule_files="$(find "$installRemoteModule_dir" \( -type f -o -type l \) \( -name 'libsaxonc-*.so*' -o -name 'libsaxon-*.so*' \))" - for installRemoteModule_file in $installRemoteModule_files; do - cp -P "$installRemoteModule_file" /usr/lib/ - done - ldconfig || true - fi - installRemoteModule_files="$(find "$installRemoteModule_dir" -type f -name php8_XsltExecutable.cpp)" - for installRemoteModule_file in $installRemoteModule_files; do - sed -i 's/Z_TYPE_P(val) != NULL/Z_TYPE_P(val) != IS_NULL/g' "$installRemoteModule_file" - done - if test -d "$installRemoteModule_dir/php/src"; then - cd "$installRemoteModule_dir/php/src" - else - cd "$installRemoteModule_dir/Saxon.C.API" - fi - phpize - ./configure --with-saxon="$installRemoteModule_dir/SaxonC${installRemoteModule_edition}" - 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 - ;; - seaslog) - installRemoteModule_cppflags='-Wno-incompatible-pointer-types' - ;; - smbclient) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.1.1 - elif test $PHP_MAJMIN_VERSION -le 703; then - installRemoteModule_version=1.1.2 - fi - fi - ;; - snappy) - if test -z "$installRemoteModule_path"; then - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=0.2.1 - fi - installRemoteModule_src="$(getPackageSource https://github.com/kjdev/php-ext-snappy/archive/refs/tags/$installRemoteModule_version.tar.gz)" - cd "$installRemoteModule_src" - phpize - ./configure --with-snappy-includedir=/usr - make -j$(getProcessorCount) install - cd - >/dev/null - installRemoteModule_manuallyInstalled=1 - fi - ;; - snuffleupagus) - if test -z "$installRemoteModule_path"; then - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 800; then - installRemoteModule_version=0.9.0 - elif test $PHP_MAJMIN_VERSION -le 801; then - installRemoteModule_version=0.10.0 - else - installRemoteModule_version=0.13.0 - fi - fi - installRemoteModule_src="$(getPackageSource https://codeload.github.com/jvoisin/snuffleupagus/tar.gz/v$installRemoteModule_version)" - cd "$installRemoteModule_src/src" - phpize - ./configure --enable-snuffleupagus - make -j$(getProcessorCount) install - cd - >/dev/null - cp -a "$installRemoteModule_src/config/default.rules" "$PHP_INI_DIR/conf.d/snuffleupagus.rules" - if test $(compareVersions "$installRemoteModule_version" 0.8.0) -ge 0; then - printf '\n# Disable "PHP version is not officially maintained anymore" message\nsp.global.show_old_php_warning.disable();\n' >>"$PHP_INI_DIR/conf.d/snuffleupagus.rules" - fi - else - if test -f "$installRemoteModule_path/config/default.rules"; then - cp -a "$installRemoteModule_path/config/default.rules" "$PHP_INI_DIR/conf.d/snuffleupagus.rules" - fi - fi - installRemoteModule_ini_extra="$(printf '%ssp.configuration_file=%s\n' "$installRemoteModule_ini_extra" "$PHP_INI_DIR/conf.d/snuffleupagus.rules")" - installRemoteModule_manuallyInstalled=1 - ;; - sodium | libsodium) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 700; then - installRemoteModule_version=1.0.7 - fi - fi - ;; - solr) - if test -z "$installRemoteModule_version"; 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 - ;; - sourceguardian) - installSourceGuardian - installRemoteModule_manuallyInstalled=1 - ;; - spx) - if test -z "$installRemoteModule_path"; then - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=v0.4.21 - fi - if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then - installRemoteModule_displayVersion="$installRemoteModule_version" - else - installRemoteModule_displayVersion="git--master-$installRemoteModule_version" - fi - installRemoteModule_src="$(getPackageSource https://codeload.github.com/NoiseByNorthwest/php-spx/tar.gz/$installRemoteModule_version)" - cd -- "$installRemoteModule_src" - phpize - ./configure - make -j$(getProcessorCount) install - cd - >/dev/null - installRemoteModule_manuallyInstalled=1 - fi - ;; - sqlsrv | pdo_sqlsrv) - isMicrosoftSqlServerODBCInstalled || installMicrosoftSqlServerODBC - if test -z "$installRemoteModule_version"; then - # https://docs.microsoft.com/it-it/sql/connect/php/system-requirements-for-the-php-sql-driver?view=sql-server-2017 - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=3.0.1 - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=5.3.0 - elif test $PHP_MAJMIN_VERSION -le 701; then - installRemoteModule_version=5.6.1 - elif test $PHP_MAJMIN_VERSION -le 702; then - installRemoteModule_version=5.8.1 - elif test $PHP_MAJMIN_VERSION -le 703; then - 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 - elif test $PHP_MAJMIN_VERSION -le 802; then - installRemoteModule_version=5.12.0 - fi - fi - ;; - pdo_snowflake) - if test -z "$installRemoteModule_version"; then - installRemoteModule_version="$(curl $IPE_CURL_FLAGS -sSLf https://api.github.com/repos/snowflakedb/pdo_snowflake/releases/latest 2>/dev/null | grep -o '"tag_name": *"[^"]*"' | head -1 | sed 's/.*"v*\([^"]*\)".*/\1/')" - if test -z "$installRemoteModule_version"; then - printf 'Failed to detect pdo_snowflake version\n' >&2 - exit 1 - fi - fi - printf 'Downloading pdo_snowflake v%s source code (this may take a while)... ' "$installRemoteModule_version" - installRemoteModule_src="$(getPackageSource "https://codeload.github.com/snowflakedb/pdo_snowflake/tar.gz/v${installRemoteModule_version}")" - echo 'done.' - cd "$installRemoteModule_src" - chmod +x scripts/build_pdo_snowflake.sh - PHP_HOME="$(php-config --prefix)" ./scripts/build_pdo_snowflake.sh - cp modules/pdo_snowflake.so "$PHP_EXTDIR/pdo_snowflake.so" - if test -f libsnowflakeclient/cacert.pem; then - installRemoteModule_cacert_path="/usr/local/share/snowflake/cacert.pem" - mkdir -p "$(dirname "$installRemoteModule_cacert_path")" - cp libsnowflakeclient/cacert.pem "$installRemoteModule_cacert_path" - installRemoteModule_ini_extra="pdo_snowflake.cacert=$installRemoteModule_cacert_path" - fi - cd - >/dev/null - rm -rf "$installRemoteModule_src" - installRemoteModule_manuallyInstalled=1 - ;; - ssh2) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.13 - elif test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=1.4.1 - fi - fi - ;; - statgrab) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=0.6.0 - fi - fi - ;; - stomp) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.0.9 - fi - fi - if test "$DISTRO" = debian; then - addConfigureOption with-openssl-dir yes - else - addConfigureOption with-openssl-dir /usr - fi - ;; - swoole) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 502; then - installRemoteModule_version=1.6.10 - elif test $PHP_MAJMIN_VERSION -le 504; then - installRemoteModule_version=2.0.4 - elif test $PHP_MAJMIN_VERSION -le 506; then - # Using 2.0.11 when libpcre-dev is installed causes a Segmentation fault in php 5 (see https://github.com/mlocati/docker-php-extension-installer/issues/1282) - if test "$DISTRO" = debian && { dpkg -l 'libpcre*-dev' 2>/dev/null | grep -Eq '^ii'; }; then - installRemoteModule_version=2.0.10 - else - installRemoteModule_version=2.0.11 - fi - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=4.3.6 - elif test $PHP_MAJMIN_VERSION -le 701; then - 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')" - else - case "$DISTRO" in - alpine) - if test $DISTRO_MAJMIN_VERSION -le 312; then - installRemoteModule_version=5.1.2 - elif test $DISTRO_MAJMIN_VERSION -le 315; then - # With later versions: 'pthread_getname_np' was not declared in this scope - installRemoteModule_version=5.1.8 - fi - ;; - esac - fi - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 800; then - installRemoteModule_version=5.1.3 - elif test $PHP_MAJMIN_VERSION -le 801; then - installRemoteModule_version=6.1.7 - else - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" stable)" - fi - fi - else - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - fi - if php --ri sockets >/dev/null 2>/dev/null; then - installRemoteModule_sockets=yes - else - installRemoteModule_sockets=no - fi - installRemoteModule_openssl=yes - if test $PHP_THREADSAFE -eq 1; then - installRemoteModule_zts=yes - else - installRemoteModule_zts=no - fi - installRemoteModule_sqlite=yes - installRemoteModule_iouring=no - installRemoteModule_curl=yes - case "$DISTRO" in - alpine) - if test $DISTRO_MAJMIN_VERSION -lt 317; then - # we need sqlite3 >= 3.7.7 - installRemoteModule_sqlite=no - fi - case "${IPE_SWOOLE_WITHOUT_IOURING:-}" in - 1 | y* | Y*) ;; - *) - # iouring support in swoole 6 requires liburing 2.5+: available since Alpine 3.19 - # but with Alpine 3.19 we have a "invalid use of incomplete type 'const struct statx'" error - if test $DISTRO_MAJMIN_VERSION -lt 320; then - : # swoole requires liburing 2.5+: available since Alpine 3.20 - elif test $(compareVersions "$installRemoteModule_version" 6.2.0) -ge 0 && test $DISTRO_MAJMIN_VERSION -lt 321; then - : # swoole 6.2.0+ requires liburing 2.8+: available since Alpine 3.21 - else - installRemoteModule_iouring=yes - fi - ;; - esac - ;; - debian) - if test $PHP_MAJMIN_VERSION -ge 800; then - # see https://github.com/swoole/swoole-src/issues/5365 - installRemoteModule_curl=no - fi - if test $DISTRO_MAJMIN_VERSION -lt 1200; then - # we need sqlite3 >= 3.7.7 - installRemoteModule_sqlite=no - fi - case "${IPE_SWOOLE_WITHOUT_IOURING:-}" in - 1 | y* | Y*) ;; - *) - if test $DISTRO_VERSION_NUMBER -lt 13; then - : # swoole 6+ requires liburing 2.5+: available since Debian Trixie (13) - else - installRemoteModule_iouring=yes - fi - ;; - esac - ;; - esac - installRemoteModule_zstd=yes - case "$DISTRO" in - debian) - if test $DISTRO_VERSION_NUMBER -lt 11; then - # swoole 6 requires libzstd >= 1.4.0, but on debian 10 (buster) we have 1.3.8 - installRemoteModule_zstd=no - fi - ;; - esac - installRemoteModule_firebird=yes - case "$DISTRO" in - alpine) - if test $PHP_MAJMIN_VERSION -lt 804; then # swoole 6.2+ requires firebird 3+, but with PHP < 8.4 we install firebird 2.5 (see installFirebird) - installRemoteModule_firebird=no - fi - ;; - esac - if test $(compareVersions "$installRemoteModule_version" 6.2.0) -ge 0; then - # enable sockets support? - addConfigureOption enable-sockets $installRemoteModule_sockets - # specify openssl installation directory (requires openssl 1.1.0 or later)? - addConfigureOption with-openssl-dir $installRemoteModule_openssl - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable curl support? - addConfigureOption enable-swoole-curl $installRemoteModule_curl - # enable cares support? - addConfigureOption enable-cares yes - # enable brotli support? - addConfigureOption enable-brotli yes - # specify brotli installation directory? - addConfigureOption with-brotli-dir no - # enable zstd support (requires zstd 1.4.0 or later)? - addConfigureOption enable-zstd $installRemoteModule_zstd - # enable PostgreSQL database support? - addConfigureOption enable-swoole-pgsql yes - # enable ODBC database support? - addConfigureOption with-swoole-odbc no - # enable Oracle database support? - addConfigureOption with-swoole-oracle no - # enable Sqlite database support? - addConfigureOption enable-swoole-sqlite $installRemoteModule_sqlite - # enable Firebird database support? - addConfigureOption with-swoole-firebird $installRemoteModule_firebird - # enable swoole thread support (need php zts support)? - addConfigureOption enable-swoole-thread $installRemoteModule_zts - # enable iouring for file async support? - addConfigureOption enable-iouring $installRemoteModule_iouring - # specify liburing installation directory (requires liburing 2.8 or later)? - addConfigureOption with-liburing-dir no - # enable iouring for http coroutine server support? - addConfigureOption enable-uring-socket $installRemoteModule_iouring - # enable async ssh2 client support? - addConfigureOption with-swoole-ssh2 yes - # enable async ftp client support? - addConfigureOption enable-swoole-ftp no # conflicts with ftp PHP extension - elif test $(compareVersions "$installRemoteModule_version" 6.0.0) -ge 0; then - # enable sockets support? - addConfigureOption enable-sockets $installRemoteModule_sockets - # enable openssl support? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable curl support? - addConfigureOption enable-swoole-curl $installRemoteModule_curl - # enable cares support? - addConfigureOption enable-cares yes - # enable brotli support? - addConfigureOption enable-brotli yes - # enable zstd support? - addConfigureOption enable-zstd $installRemoteModule_zstd - # enable PostgreSQL database support? - addConfigureOption enable-swoole-pgsql yes - # enable ODBC database support? - addConfigureOption with-swoole-odbc no - # enable Oracle database support? - addConfigureOption with-swoole-oracle no - # enable Sqlite database support? - addConfigureOption enable-swoole-sqlite $installRemoteModule_sqlite - # enable swoole thread support (need php zts support)? - addConfigureOption enable-swoole-thread $installRemoteModule_zts - # enable iouring for file async support? - addConfigureOption enable-iouring $installRemoteModule_iouring - elif test $(compareVersions "$installRemoteModule_version" 5.1.0) -ge 0; then - # enable sockets supports? - addConfigureOption enable-sockets $installRemoteModule_sockets - # enable openssl support? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable curl support? - addConfigureOption enable-swoole-curl $installRemoteModule_curl - # enable cares support? - addConfigureOption enable-cares yes - # enable brotli support? - addConfigureOption enable-brotli yes - # enable PostgreSQL database support? - addConfigureOption enable-swoole-pgsql yes - # enable ODBC database support? - addConfigureOption with-swoole-odbc no - # enable Oracle database support? - addConfigureOption with-swoole-oracle no - # enable Sqlite database support? - addConfigureOption enable-swoole-sqlite $installRemoteModule_sqlite - elif test $(compareVersions "$installRemoteModule_version" 5.0.1) -ge 0; then - # enable sockets supports? - addConfigureOption enable-sockets $installRemoteModule_sockets - # enable openssl support? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable curl support? - addConfigureOption enable-swoole-curl $installRemoteModule_curl - # enable cares support? - addConfigureOption enable-cares yes - # enable brotli support? - addConfigureOption enable-brotli yes - elif test $(compareVersions "$installRemoteModule_version" 5.0.0) -ge 0; then - # enable sockets supports? - addConfigureOption enable-sockets $installRemoteModule_sockets - # enable openssl support? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable curl support? - addConfigureOption enable-swoole-curl $installRemoteModule_curl - # enable cares support? - addConfigureOption enable-cares yes - elif test $(compareVersions "$installRemoteModule_version" 4.8.11) -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 $installRemoteModule_curl - # enable cares support? - addConfigureOption enable-cares yes - elif test $(compareVersions "$installRemoteModule_version" 4.6.1) -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 $installRemoteModule_curl - elif test $(compareVersions "$installRemoteModule_version" 4.4.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 - elif test $(compareVersions "$installRemoteModule_version" 4.2.11) -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 postgresql coroutine client support? - addConfigureOption enable-coroutine-postgresql yes - elif test $(compareVersions "$installRemoteModule_version" 4.2.7) -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 postgresql coroutine client support? - addConfigureOption enable-coroutine-postgresql yes - # enable kernel debug/trace log? (it will degrade performance) - addConfigureOption enable-debug-log no - elif test $(compareVersions "$installRemoteModule_version" 4.2.6) -ge 0; then - # enable debug/trace log support? - addConfigureOption enable-debug-log no - # 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 postgresql coroutine client support? - addConfigureOption enable-coroutine-postgresql yes - elif test $(compareVersions "$installRemoteModule_version" 4.2.0) -ge 0; then - # enable debug/trace log support? - addConfigureOption enable-debug-log no - # enable sockets supports? - addConfigureOption enable-sockets $installRemoteModule_sockets - # enable openssl support? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable http2 support? - addConfigureOption enable-http2 yes - # enable async-redis support? - addConfigureOption enable-async-redis yes - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable postgresql coroutine client support? - addConfigureOption enable-coroutine-postgresql yes - elif test $(compareVersions "$installRemoteModule_version" 2.1.2) -ge 0; then - # enable debug/trace log support? - addConfigureOption enable-swoole-debug no - # enable sockets supports? - addConfigureOption enable-sockets $installRemoteModule_sockets - # enable openssl support? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable http2 support? - addConfigureOption enable-http2 yes - # enable async-redis support? - addConfigureOption enable-async-redis yes - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - # enable postgresql coroutine client support? - addConfigureOption enable-coroutine-postgresql yes - elif test $(compareVersions "$installRemoteModule_version" 1.10.4) -ge 0 && test $(compareVersions "$installRemoteModule_version" 1.10.5) -le 0; then - # enable debug/trace log support? - addConfigureOption enable-swoole-debug no - # enable sockets supports? - addConfigureOption enable-sockets $installRemoteModule_sockets - # enable openssl support? - addConfigureOption enable-openssl $installRemoteModule_openssl - # enable http2 support? - addConfigureOption enable-http2 yes - # enable async-redis support? - addConfigureOption enable-async-redis yes - # enable mysqlnd support? - addConfigureOption enable-mysqlnd yes - fi - ;; - tdlib) - if ! test -f /usr/lib/libphpcpp.so || ! test -f /usr/include/phpcpp.h; then - if test $PHP_MAJMIN_VERSION -le 701; then - cd "$(getPackageSource https://codeload.github.com/CopernicaMarketingSoftware/PHP-CPP/tar.gz/v2.1.4)" - elif test $PHP_MAJMIN_VERSION -le 703; then - cd "$(getPackageSource https://codeload.github.com/CopernicaMarketingSoftware/PHP-CPP/tar.gz/v2.2.0)" - else - cd "$(getPackageSource https://codeload.github.com/CopernicaMarketingSoftware/PHP-CPP/tar.gz/444d1f90cf6b7f3cb5178fa0d0b5ab441b0389d0)" - fi - make -j$(getProcessorCount) - make install - cd - >/dev/null - fi - if test -z "$installRemoteModule_path"; then - installRemoteModule_tmp="$(mktemp -p /tmp/src -d)" - git clone --depth=1 --recurse-submodules https://github.com/yaroslavche/phptdlib.git "$installRemoteModule_tmp" - mkdir "$installRemoteModule_tmp/build" - cd "$installRemoteModule_tmp/build" - cmake -D USE_SHARED_PHPCPP:BOOL=ON .. - make - make install - cd - >/dev/null - rm "$PHP_INI_DIR/conf.d/tdlib.ini" - installRemoteModule_manuallyInstalled=1 - fi - ;; - tensor) - installRemoteModule_cppflags='-Wno-incompatible-pointer-types' - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 703; then - installRemoteModule_version=2.2.3 - elif test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=3.0.5 - 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 - ;; - debian) - if test $DISTRO_VERSION_NUMBER -ge 13; then - if test -f /usr/lib/$TARGET_TRIPLET/libblas.so.3 && ! test -f /usr/lib/$TARGET_TRIPLET/libblas.so; then - ln -s /usr/lib/$TARGET_TRIPLET/libblas.so.3 /usr/lib/$TARGET_TRIPLET/libblas.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 $IPE_CURL_FLAGS -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 - ;; - translit) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 506; then - installRemoteModule_version=0.6.1 - elif test $PHP_MAJMIN_VERSION -lt 700; then - installRemoteModule_version=0.6.3 - else - installRemoteModule_version=beta - fi - fi - ;; - uopz) - installRemoteModule_cppflags='-Wno-incompatible-pointer-types' - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.0.7 - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=5.0.2 - elif test $PHP_MAJMIN_VERSION -le 740; then - installRemoteModule_version=6.1.2 - fi - fi - ;; - uploadprogress) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 701; then - installRemoteModule_version=1.1.4 - fi - fi - ;; - uuid) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.0.5 - 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 - ;; - xattr) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -lt 702; then - installRemoteModule_version=1.3.1 - fi - fi - ;; - xdebug) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 500; then - installRemoteModule_version=2.0.5 - elif test $PHP_MAJMIN_VERSION -le 503; then - installRemoteModule_version=2.2.7 - elif test $PHP_MAJMIN_VERSION -le 504; then - installRemoteModule_version=2.4.1 - elif test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=2.5.5 - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=2.6.1 - elif test $PHP_MAJMIN_VERSION -le 701; then - installRemoteModule_version=2.9.8 - elif test $PHP_MAJMIN_VERSION -le 704; then - installRemoteModule_version=3.1.6 - fi - fi - ;; - xdiff) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.5.2 - fi - fi - if ! test -f /usr/local/lib/libxdiff.* && ! test -f /usr/lib/libxdiff.* && ! test -f /usr/lib/x86_64*/libxdiff.*; then - installRemoteModule_src="$(getPackageSource https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/assets/resources/libxdiff-0.23.tar.gz)" - cd -- "$installRemoteModule_src" - ./configure --disable-shared --disable-dependency-tracking --with-pic - make -j$(getProcessorCount) - make install - cd - >/dev/null - fi - ;; - xhprof) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.9.4 - fi - fi - ;; - xlswriter) - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.2.7) -ge 0; then - # enable reader supports? - addConfigureOption enable-reader yes - fi - ;; - xmldiff) - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - if test -z "$installRemoteModule_version"; then - case "$DISTRO_VERSION" in - debian@8) - # The gcc version of Debian Jessie is too old => error: 'nullptr' was not declared in this scope - installRemoteModule_version=1.1.4 - ;; - esac - fi - ;; - xmlrpc) - if test -z "$installRemoteModule_version"; then - installRemoteModule_version=beta - fi - ;; - yac) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.9.2 - fi - else - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - fi - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 2.2.0) -ge 0; then - # Enable igbinary serializer support - if php --ri igbinary >/dev/null 2>/dev/null; then - addConfigureOption enable-igbinary yes - else - addConfigureOption enable-igbinary no - fi - # Enable json serializer support - if php --ri json >/dev/null 2>/dev/null; then - addConfigureOption enable-json yes - else - addConfigureOption enable-json no - fi - # Enable msgpack serializer support - if php --ri msgpack >/dev/null 2>/dev/null; then - addConfigureOption enable-msgpack yes - else - addConfigureOption enable-msgpack no - fi - fi - ;; - yaml) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.3.1 - elif test $PHP_MAJMIN_VERSION -le 700; then - installRemoteModule_version=2.0.4 - fi - fi - ;; - yar) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=1.2.5 - fi - else - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - fi - if test -z "$installRemoteModule_version" || test $(compareVersions "$installRemoteModule_version" 1.2.4) -ge 0; then - # Enable Msgpack Supports - if php --ri msgpack >/dev/null 2>/dev/null; then - addConfigureOption enable-msgpack yes - else - addConfigureOption enable-msgpack no - fi - fi - ;; - zmq) - if test -z "$installRemoteModule_version"; then - installRemoteModule_src="$(getPackageSource https://github.com/zeromq/php-zmq/tarball/master)" - cd "$installRemoteModule_src" - phpize - ./configure - make -j$(getProcessorCount) - make install - cd - >/dev/null - installRemoteModule_manuallyInstalled=1 - fi - ;; - zookeeper) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.5.0 - fi - fi - installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")" - case "$DISTRO" in - alpine) - if ! test -f /usr/local/include/zookeeper/zookeeper.h; then - if test $(compareVersions "$installRemoteModule_version" 1.0.0) -lt 0; then - installRemoteModule_src="$(getPackageSource http://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9.tar.gz)" - else - installRemoteModule_tmp="$(curl $IPE_CURL_FLAGS -sSLf https://downloads.apache.org/zookeeper/stable | sed -E 's/["<>]/\n/g' | grep -E '^(apache-)?zookeeper-[0-9]+\.[0-9]+\.[0-9]+\.(tar\.gz|tgz)$' | head -n1)" - if test -z "$installRemoteModule_tmp"; then - echo 'Failed to detect the zookeeper library URL' >&2 - exit 1 - fi - installRemoteModule_src="$(getPackageSource https://downloads.apache.org/zookeeper/stable/$installRemoteModule_tmp)" - fi - cd -- "$installRemoteModule_src" - if test -d ~/.m2; then - installRemoteModule_delm2=n - else - installRemoteModule_delm2=y - fi - mvn -pl zookeeper-jute compile - cd - >/dev/null - cd -- "$installRemoteModule_src/zookeeper-client/zookeeper-client-c" - autoreconf -if - ./configure --without-cppunit - make -j$(getProcessorCount) CFLAGS='-Wno-stringop-truncation -Wno-format-overflow' - make install - cd - >/dev/null - if test $installRemoteModule_delm2 = y; then - rm -rf ~/.m2 - fi - fi - ;; - esac - ;; - zstd) - if test -z "$installRemoteModule_version"; then - if test $PHP_MAJMIN_VERSION -le 506; then - installRemoteModule_version=0.11.0 - fi - fi - ;; - esac - if test $installRemoteModule_manuallyInstalled -eq 0; then - if test -n "$installRemoteModule_path"; then - printf ' (installing version %s from %s)\n' "$installRemoteModule_version" "$installRemoteModule_path" - elif test -n "$installRemoteModule_version"; then - printf ' (installing version %s)\n' "$installRemoteModule_version" - fi - 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 -# -# Arguments: -# $1: the name of the module -# -# Return: -# 0: true -# 1: false -moduleMayUsePecl() { - case "$1" in - @composer | @fix_letsencrypt) - return 1 - ;; - blackfire | geos | ioncube_loader | snuffleupagus | sourceguardian | spx | tdlib | tideways) - return 1 - ;; - esac - if test -n "$(getModuleSourceCodePath "$1")"; then - return 1 - fi - if stringInList "$1" "$BUNDLED_MODULES"; then - return 1 - fi - return 0 -} - -# Configure the PECL package installer -# -# Updates: -# PHP_MODULES_TO_INSTALL -# Sets: -# USE_PICKLE 0: no, 1: yes (already downloaded), 2: yes (build it from source) -configureInstaller() { - USE_PICKLE=0 - if ! which pecl >/dev/null; then - for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do - if ! moduleMayUsePecl "$PHP_MODULE_TO_INSTALL"; then - continue - fi - if false && anyStringInList '' "$PHP_MODULES_TO_INSTALL"; then - USE_PICKLE=2 - else - curl $IPE_CURL_FLAGS -sSLf https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar -o /tmp/pickle - chmod +x /tmp/pickle - USE_PICKLE=1 - fi - break - done - fi - if test $USE_PICKLE -eq 0; then - if test -z "$(pear config-get http_proxy)"; then - if test -n "${http_proxy:-}"; then - pear config-set http_proxy "$http_proxy" || true - elif test -n "${HTTP_PROXY:-}"; then - pear config-set http_proxy "$HTTP_PROXY" || true - fi - fi - pecl channel-update pecl.php.net || true - fi -} - -buildPickle() { - printf '### BUILDING PICKLE ###\n' - buildPickle_tempDir="$(mktemp -p /tmp/src -d)" - cd -- "$buildPickle_tempDir" - printf 'Downloading... ' - git clone --quiet --depth 1 https://github.com/FriendsOfPHP/pickle.git . - git tag 0.7.0 - printf 'done.\n' - printf 'Installing composer... ' - actuallyInstallComposer . composer '--1 --quiet' - printf 'done.\n' - printf 'Installing composer dependencies... ' - ./composer install --no-dev --no-progress --no-suggest --optimize-autoloader --ignore-platform-reqs --quiet --no-cache - printf 'done.\n' - printf 'Building... ' - php -d phar.readonly=0 box.phar build - mv pickle.phar /tmp/pickle - printf 'done.\n' - cd - >/dev/null -} - -# Add a configure option for the pecl/pickle install command -# -# Arguments: -# $1: the option name -# $2: the option value -addConfigureOption() { - if test $USE_PICKLE -eq 0; then - printf -- '%s\n' "$2" >>"$CONFIGURE_FILE" - else - printf -- '--%s=%s\n' "$1" "$2" >>"$CONFIGURE_FILE" - fi -} - -# Actually installs a PECL package -# -# Arguments: -# $1: the package to be installed -# $2: the package version to be installed (optional) -# $3: the value of the CPPFLAGS variable (optional) -# $4: the path of the local package to be installed (optional, downloaded from PECL if omitted/empty) -installPeclPackage() { - if ! test -f "$CONFIGURE_FILE"; then - printf '\n' >"$CONFIGURE_FILE" - fi - installPeclPackage_name="$(getPeclModuleName "$1")" - if test -z "${2:-}"; then - installPeclPackage_fullname="$installPeclPackage_name" - else - installPeclPackage_fullname="$installPeclPackage_name-$2" - fi - installPeclPackage_path="${4:-}" - if test -z "$installPeclPackage_path"; then - installPeclPackage_path="$installPeclPackage_fullname" - fi - if test $USE_PICKLE -eq 0; then - if test -n "${4:-}"; then - if test -f "$installPeclPackage_path/package2.xml"; then - installPeclPackage_path="$installPeclPackage_path/package2.xml" - else - installPeclPackage_path="$installPeclPackage_path/package.xml" - fi - fi - cat "$CONFIGURE_FILE" | MAKE="make -j$(getCompilationProcessorCount $1)" CPPFLAGS="${3:-}" pecl install "$installPeclPackage_path" - else - MAKEFLAGS="-j$(getCompilationProcessorCount $1)" CPPFLAGS="${3:-}" /tmp/pickle install --tmp-dir=/tmp/pickle.tmp --no-interaction --version-override='' --with-configure-options "$CONFIGURE_FILE" -- "$installPeclPackage_path" - fi -} - -# Check if a string is in a list of space-separated string -# -# Arguments: -# $1: the string to be checked -# $2: the string list -# -# Return: -# 0 (true): if the string is in the list -# 1 (false): if the string is not in the list -stringInList() { - for stringInList_listItem in $2; do - if test "$1" = "$stringInList_listItem"; then - return 0 - fi - done - return 1 -} - -# Check if at least one item in a list is in another list -# -# Arguments: -# $1: the space-separated list of items to be searched -# $2: the space-separated list of reference items -# -# Return: -# 0 (true): at least one of the items in $1 is in $2 -# 1 (false): otherwise -anyStringInList() { - for anyStringInList_item in $1; do - if stringInList "$anyStringInList_item" "$2"; then - return 0 - fi - done - return 1 -} - -# Remove a word from a space-separated list -# -# Arguments: -# $1: the word to be removed -# $2: the string list -# -# Output: -# The list without the word -removeStringFromList() { - removeStringFromList_result='' - for removeStringFromList_listItem in $2; do - if test "$1" != "$removeStringFromList_listItem"; then - if test -z "$removeStringFromList_result"; then - removeStringFromList_result="$removeStringFromList_listItem" - else - removeStringFromList_result="$removeStringFromList_result $removeStringFromList_listItem" - fi - fi - done - printf '%s' "$removeStringFromList_result" -} - -# Invoke apt-get update -invokeAptGetUpdate() { - if test -n "${IPE_APTGETUPDATE_ALREADY:-}"; then - apt-get update -q - return - fi - IPE_APTGETUPDATE_ALREADY=y - if grep -q 'VERSION="8 (jessie)"' /etc/os-release; then - invokeAptGetUpdate_fixdistro=jessie - elif grep -q 'VERSION="9 (stretch)"' /etc/os-release; then - invokeAptGetUpdate_fixdistro=stretch - elif grep -q 'VERSION="10 (buster)"' /etc/os-release; then - invokeAptGetUpdate_fixdistro=buster - else - invokeAptGetUpdate - return - fi - # See https://www.debian.org/distrib/archive.en.html for a list of mirrors - if test -z "${IPE_DEB_ARCHIVE:-}"; then - IPE_DEB_ARCHIVE=http://archive.debian.org/debian-archive - fi - if test -z "${IPE_DEB_ARCHIVE_SECURITY:-}"; then - IPE_DEB_ARCHIVE_SECURITY=http://archive.debian.org/debian-archive/debian-security - fi - sed -ri "s;^(\s*deb\s+http://(httpredir|deb).debian.org/debian\s+$invokeAptGetUpdate_fixdistro-updates\b.*);#\1;" /etc/apt/sources.list - sed -ri "s;^(\s*deb\s+)http://(httpredir|deb).debian.org;\1$IPE_DEB_ARCHIVE;" /etc/apt/sources.list - sed -ri "s;^(\s*deb\s+)http://security.debian.org/debian-security;\1$IPE_DEB_ARCHIVE_SECURITY;" /etc/apt/sources.list - sed -ri "s;^(\s*deb\s+)http://security.debian.org;\1$IPE_DEB_ARCHIVE_SECURITY;" /etc/apt/sources.list - if test "$invokeAptGetUpdate_fixdistro" = stretch && test -f /etc/apt/sources.list.d/buster.list; then - sed -ri "s;^(\s*deb\s+http://(httpredir|deb).debian.org/debian\s+buster-updates\b.*);#\1;" /etc/apt/sources.list.d/buster.list - sed -ri "s;^(\s*deb\s+)http://(httpredir|deb).debian.org;\1$IPE_DEB_ARCHIVE;" /etc/apt/sources.list.d/buster.list - sed -ri "s;^(\s*deb\s+)http://security.debian.org/debian-security;\1$IPE_DEB_ARCHIVE_SECURITY;" /etc/apt/sources.list.d/buster.list - sed -ri "s;^(\s*deb\s+)http://security.debian.org;\1$IPE_DEB_ARCHIVE_SECURITY;" /etc/apt/sources.list.d/buster.list - fi - invokeAptGetUpdate_tmp="$(mktemp)" - apt-get update -q 2>"$invokeAptGetUpdate_tmp" - if test -s "$invokeAptGetUpdate_tmp"; then - cat "$invokeAptGetUpdate_tmp" >&2 - if grep -qE ' KEYEXPIRED [0-9A-Z]' "$invokeAptGetUpdate_tmp" || grep -qE ' EXPKEYSIG [0-9A-Z]' "$invokeAptGetUpdate_tmp"; then - echo '############' >&2 - echo '# WARNING! #' >&2 - echo '############' >&2 - echo 'apt packages will be installed without checking authenticity!' >&2 - printf 'APT::Get::AllowUnauthenticated "true";\n' >>/etc/apt/apt.conf.d/99unauthenticated - fi - fi - rm "$invokeAptGetUpdate_tmp" -} - -# Fix the Let's Encrypt CA certificates on old distros -fixLetsEncrypt() { - printf '### FIXING LETS ENCRYPT CA CERTIFICATES ###\n' - case "$DISTRO_VERSION" in - alpine@3.7 | alpine@3.8) - printf -- '- old Alpine Linux detected: we should fix the certificates\n' - ;; - debian@8 | debian@9) - printf -- '- old Debian detected: we should fix the certificates\n' - if ! grep -q 'mozilla/ISRG_Root_X1.crt' /etc/ca-certificates.conf && grep -q 'mozilla/DST_Root_CA_X3.crt' /etc/ca-certificates.conf; then - printf -- '- old ca-certificates package detected\n' - fixCACerts_mustUpdate=1 - if test -d /var/lib/apt/lists; then - for fixCACerts_item in $(ls -1 /var/lib/apt/lists); do - case "$fixCACerts_item" in - partial | lock) ;; - *) - fixCACerts_mustUpdate=0 - break - ;; - esac - done - fi - if test $fixCACerts_mustUpdate -eq 1; then - printf -- '- refreshing the APT package list\n' - invokeAptGetUpdate - fi - printf -- '- installing newer ca-certificates package\n' - apt-get install -qqy --no-install-recommends ca-certificates - fi - ;; - *) - printf -- '- patch not required in this distro version\n' - return - ;; - esac - if grep -Eq '^mozilla/ISRG_Root_X1\.crt$' /etc/ca-certificates.conf && grep -Eq '^mozilla/DST_Root_CA_X3\.crt$' /etc/ca-certificates.conf; then - printf -- '- disabling the DST_Root_CA_X3 certificate\n' - sed -i '/^mozilla\/DST_Root_CA_X3/s/^/!/' /etc/ca-certificates.conf - printf -- '- refreshing the certificates\n' - update-ca-certificates -f - else - printf -- '- DST_Root_CA_X3 certificate not found or already disabled\n' - fi -} - -# Cleanup everything at the end of the execution -cleanup() { - if test "${IPE_UNINSTALL_CARGO:-}" = y; then - if test -f "$HOME/.cargo/env"; then - . "$HOME/.cargo/env" - fi - if command -v rustup >/dev/null; then - rustup self uninstall -y - fi - fi - if test -n "$UNNEEDED_PACKAGE_LINKS"; then - printf '### REMOVING UNNEEDED PACKAGE LINKS ###\n' - for cleanup_link in $UNNEEDED_PACKAGE_LINKS; do - if test -L "$cleanup_link"; then - rm -f "$cleanup_link" - fi - done - fi - 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' - apt-get remove --purge -y $PACKAGES_VOLATILE - fi - if test -n "$PACKAGES_PREVIOUS"; then - printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n' - apt-get install -qqy --no-install-recommends --no-upgrade $PACKAGES_PREVIOUS - fi - ;; - esac - docker-php-source delete - rm -rf /tmp/src - rm -rf /tmp/pickle - rm -rf /tmp/pickle.tmp - rm -rf "$CONFIGURE_FILE" - case "${IPE_KEEP_SYSPKG_CACHE:-}" in - 1 | y* | Y*) ;; - *) - case "$DISTRO" in - alpine) - rm -rf /var/cache/apk/* - ;; - debian) - rm -rf /var/lib/apt/lists/* - ;; - esac - rm -rf /tmp/pear - ;; - esac -} - -DEBIAN_FRONTEND=noninteractive -export DEBIAN_FRONTEND -resetIFS -mkdir -p /tmp/src -mkdir -p /tmp/pickle.tmp -IPE_ERRFLAG_FILE="$(mktemp -p /tmp/src)" -CONFIGURE_FILE=/tmp/configure-options -IPE_APK_FLAGS='' -case "${IPE_INSECURE:-}" in - 1 | y* | Y*) - IPE_CURL_FLAGS='-k' - ;; - *) - IPE_CURL_FLAGS='' - ;; -esac -setDistro -case "$DISTRO_VERSION" in - debian@8) - fixMaxOpenFiles || true - ;; -esac -setPHPVersionVariables -setPHPPreinstalledModules -case "$PHP_MAJMIN_VERSION" in - 505 | 506 | 700 | 701 | 702 | 703 | 704 | 800 | 801 | 802 | 803 | 804 | 805) ;; - *) - printf "### ERROR: Unsupported PHP version: %s.%s ###\n" $((PHP_MAJMIN_VERSION / 100)) $((PHP_MAJMIN_VERSION % 100)) - ;; -esac -UNNEEDED_PACKAGE_LINKS='' -processCommandArguments "$@" - -if test -z "$PHP_MODULES_TO_INSTALL"; then - exit 0 -fi - -if stringInList @fix_letsencrypt "$PHP_MODULES_TO_INSTALL"; then - # This must be the very first thing we do - fixLetsEncrypt -fi - -sortModulesToInstall - -docker-php-source extract -BUNDLED_MODULES="$(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | xargs -n1 dirname | xargs -n1 basename | xargs)" -configureInstaller - -buildRequiredPackageLists $PHP_MODULES_TO_INSTALL -if test -n "$PACKAGES_PERSISTENT_PRE"; then - markPreinstalledPackagesAsUsed -fi -if test -n "$PACKAGES_PERSISTENT_NEW$PACKAGES_VOLATILE"; then - installRequiredPackages -fi -if test "$PHP_MODULES_TO_INSTALL" != '@composer'; then - setTargetTriplet -fi -if test $USE_PICKLE -gt 1; then - buildPickle -fi - -compileLibs - -for PHP_MODULE_TO_INSTALL in $PHP_MODULES_TO_INSTALL; do - case "$PHP_MODULE_TO_INSTALL" in - @fix_letsencrypt) - # Already done: it must be the first thing we do - ;; - @composer) - installComposer - ;; - *) - if stringInList "$PHP_MODULE_TO_INSTALL" "$BUNDLED_MODULES" && ! stringInList "$PHP_MODULE_TO_INSTALL" "$FORCED_REMOTE_MODULES"; then - installBundledModule "$PHP_MODULE_TO_INSTALL" - else - installRemoteModule "$PHP_MODULE_TO_INSTALL" - fi - ;; - esac -done -cleanup