From 14649eba12fd8164d10bb36d816ccde3cbb332c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Michon?= Date: Fri, 29 Aug 2025 11:29:33 +0200 Subject: [PATCH 1/6] fix(get_gmp): `m4` is a dependency --- support/get_gmp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/support/get_gmp b/support/get_gmp index 0ac2b6ed..77f48856 100755 --- a/support/get_gmp +++ b/support/get_gmp @@ -5,6 +5,8 @@ if [ -n "$DEBUG" ]; then set -x fi +which m4 2> /dev/null || (apt-get update && apt-get install --yes m4) + # The variable is assigned in `buildpack.conf` declare gmp_version basedir="$( cd -P "$( dirname "$0" )" && pwd )" From ba5bc52bc8719d4beb63deb29e1e759fb1aef566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Michon?= Date: Fri, 29 Aug 2025 11:34:36 +0200 Subject: [PATCH 2/6] fix(package_php): `pkg-config` is a dependency --- support/package_php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/support/package_php b/support/package_php index 8304402c..f1685853 100755 --- a/support/package_php +++ b/support/package_php @@ -6,6 +6,9 @@ if [ -n "$DEBUG" ]; then set -x fi +apt-get update +apt-get install --yes pkg-config libxml2-dev libssl-dev libsqlite3-dev + basedir="$( cd -P "$( dirname "$0" )" && pwd )" source "$basedir/../conf/buildpack.conf" source "$basedir/lib/utils" @@ -19,7 +22,6 @@ if [ -z "$1" ]; then fi php_version="$1" -php_series="$(echo $php_version | cut -d '.' -f1,2)" echo "-----> Packaging PHP $php_version" From 5b3657adb22874952e8799dec4f88e71d6a5adb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Michon?= Date: Mon, 1 Sep 2025 15:55:20 +0200 Subject: [PATCH 3/6] refactor(package_php): linter offenses --- support/package_php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/support/package_php b/support/package_php index f1685853..639d3782 100755 --- a/support/package_php +++ b/support/package_php @@ -1,9 +1,9 @@ -#/usr/bin/env bash +#!/usr/bin/env bash set -e if [ -n "$DEBUG" ]; then - set -x + set -x fi apt-get update @@ -26,7 +26,7 @@ php_version="$1" echo "-----> Packaging PHP $php_version" tempdir=$(mktmpdir php) -cd $tempdir +cd "$tempdir" echo "-----> Downloading dependency zlib ${zlib_version}" curl -LO "${PHP_BASE_URL}/zlib/zlib-${zlib_version}.tar.gz" @@ -63,13 +63,13 @@ export WEBP_CFLAGS="-I/app/vendor/libwebp/include" ENABLE_GD_CONFIGURE="--enable-gd --with-jpeg --with-freetype --with-webp" mkdir -p "/app/vendor/php/etc/conf.d" \ -&& pushd zlib-${zlib_version} >/dev/null && ./configure --prefix=/app/vendor/php/zlib && make && make install && popd > /dev/null \ -&& pushd php-${php_version} >/dev/null \ +&& pushd "zlib-${zlib_version}" >/dev/null && ./configure --prefix=/app/vendor/php/zlib && make && make install && popd > /dev/null \ +&& pushd "php-${php_version}" >/dev/null \ && ./configure --prefix=/app/vendor/php \ --with-config-file-path=/app/vendor/php/etc \ --with-config-file-scan-dir=/app/vendor/php/etc/conf.d \ --enable-intl \ -${ENABLE_GD_CONFIGURE} \ +"${ENABLE_GD_CONFIGURE}" \ --enable-exif \ --with-mysqli \ --with-pdo-mysql \ @@ -79,7 +79,7 @@ ${ENABLE_GD_CONFIGURE} \ --enable-shmop \ --with-zip \ ${WITH_CURL_CONFIGURE} \ -${libzip_flag} \ +"${libzip_flag}" \ --with-zlib=/app/vendor/php/zlib \ --with-bz2 \ --with-openssl \ @@ -95,11 +95,11 @@ ${libzip_flag} \ --with-readline \ --with-password-argon2 \ --disable-debug \ -&& echo ${php_version} | grep ^5.3 && sed -i '/^BUILD_/ s/\$(CC)/\$(CXX)/g' Makefile || true \ +&& echo "${php_version}" | grep ^5.3 && sed -i '/^BUILD_/ s/\$(CC)/\$(CXX)/g' Makefile || true \ && make -j 8 \ && make install \ && popd > /dev/null \ -&& eval $install_zend_optimizer +&& eval "$install_zend_optimizer" mkdir package pushd /app/vendor/php > /dev/null From 0bfbed15687722af390af1be250d2136028ef49d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Michon?= Date: Mon, 1 Sep 2025 16:01:25 +0200 Subject: [PATCH 4/6] fix(package_php): `tar` calls should not be verbose --- support/package_php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/support/package_php b/support/package_php index 639d3782..7429e89c 100755 --- a/support/package_php +++ b/support/package_php @@ -30,7 +30,7 @@ cd "$tempdir" echo "-----> Downloading dependency zlib ${zlib_version}" curl -LO "${PHP_BASE_URL}/zlib/zlib-${zlib_version}.tar.gz" -tar -xzvf "zlib-${zlib_version}.tar.gz" +tar -xzf "zlib-${zlib_version}.tar.gz" echo "-----> Downloading dependency libonig ${libonig_version}" libzip_flag="" @@ -41,7 +41,7 @@ export PKG_CONFIG_PATH="/app/vendor/libonig/lib/pkgconfig:$PKG_CONFIG_PATH" echo "-----> Downloading PHP $php_version" curl -LO "https://php.net/distributions/php-${php_version}.tar.gz" -tar -xzvf "php-${php_version}.tar.gz" +tar -xzf "php-${php_version}.tar.gz" install_zend_optimizer=":" install_zend_optimizer=$(cat < /dev/null -tar zcvf "${tempdir}/package/php-${php_version}.tgz" . +tar zcf "${tempdir}/package/php-${php_version}.tgz" . popd > /dev/null echo "-----> Moving package to Swift" From 9f331051c4d668acf8b467887d8cb4a5664d75fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Michon?= Date: Mon, 1 Sep 2025 16:08:59 +0200 Subject: [PATCH 5/6] refactor(package_php): do not use `&&` so that script fails on error --- support/package_php | 96 ++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/support/package_php b/support/package_php index 7429e89c..8e59356c 100755 --- a/support/package_php +++ b/support/package_php @@ -6,8 +6,8 @@ if [ -n "$DEBUG" ]; then set -x fi -apt-get update -apt-get install --yes pkg-config libxml2-dev libssl-dev libsqlite3-dev +apt-get update -qq +apt-get install -qq --yes pkg-config libxml2-dev libssl-dev libsqlite3-dev basedir="$( cd -P "$( dirname "$0" )" && pwd )" source "$basedir/../conf/buildpack.conf" @@ -33,7 +33,6 @@ curl -LO "${PHP_BASE_URL}/zlib/zlib-${zlib_version}.tar.gz" tar -xzf "zlib-${zlib_version}.tar.gz" echo "-----> Downloading dependency libonig ${libonig_version}" -libzip_flag="" mkdir /app/vendor/libonig -p curl -L -o - "${PHP_BASE_URL}/package/libonig-${libonig_version}.tgz" | tar -C /app/vendor/libonig -xvz export C_INCLUDE_PATH="$C_INCLUDE_PATH:/app/vendor/libonig/include" @@ -54,53 +53,60 @@ if [ -d '/app/.apt/usr' ] ; then WITH_CURL_CONFIGURE="--with-curl=/app/.apt/usr" fi -mkdir -p "/app/vendor/libwebp" \ - && curl "${PHP_BASE_URL}/package/libwebp-${webp_version}.tgz" | tar xz -C /app/vendor/libwebp +mkdir -p "/app/vendor/libwebp" +curl "${PHP_BASE_URL}/package/libwebp-${webp_version}.tgz" | tar xz -C /app/vendor/libwebp export WEBP_LIBS="-L/app/vendor/libwebp/lib -lwebp" export WEBP_CFLAGS="-I/app/vendor/libwebp/include" -ENABLE_GD_CONFIGURE="--enable-gd --with-jpeg --with-freetype --with-webp" - -mkdir -p "/app/vendor/php/etc/conf.d" \ -&& pushd "zlib-${zlib_version}" >/dev/null && ./configure --prefix=/app/vendor/php/zlib && make && make install && popd > /dev/null \ -&& pushd "php-${php_version}" >/dev/null \ -&& ./configure --prefix=/app/vendor/php \ ---with-config-file-path=/app/vendor/php/etc \ ---with-config-file-scan-dir=/app/vendor/php/etc/conf.d \ ---enable-intl \ -"${ENABLE_GD_CONFIGURE}" \ ---enable-exif \ ---with-mysqli \ ---with-pdo-mysql \ ---with-pdo-sqlite \ ---with-pdo-pgsql=/usr/bin/pg_config \ ---with-pgsql \ ---enable-shmop \ ---with-zip \ -${WITH_CURL_CONFIGURE} \ -"${libzip_flag}" \ ---with-zlib=/app/vendor/php/zlib \ ---with-bz2 \ ---with-openssl \ ---enable-soap \ ---enable-xmlreader \ ---with-curl=/usr \ ---with-xsl \ ---enable-fpm \ ---enable-mbstring \ ---enable-pcntl \ ---enable-sockets \ ---enable-bcmath \ ---with-readline \ ---with-password-argon2 \ ---disable-debug \ -&& echo "${php_version}" | grep ^5.3 && sed -i '/^BUILD_/ s/\$(CC)/\$(CXX)/g' Makefile || true \ -&& make -j 8 \ -&& make install \ -&& popd > /dev/null \ -&& eval "$install_zend_optimizer" +mkdir -p "/app/vendor/php/etc/conf.d" +echo "-----> Compile ZLib" +pushd "zlib-${zlib_version}" >/dev/null +./configure --prefix=/app/vendor/php/zlib +make +make install +popd > /dev/null + +echo "-----> Compile PHP" +pushd "php-${php_version}" >/dev/null +./configure --prefix=/app/vendor/php \ + --with-config-file-path=/app/vendor/php/etc \ + --with-config-file-scan-dir=/app/vendor/php/etc/conf.d \ + --enable-intl \ + --enable-gd --with-jpeg --with-freetype --with-webp \ + --enable-exif \ + --with-mysqli \ + --with-pdo-mysql \ + --with-pdo-sqlite \ + --with-pdo-pgsql=/usr/bin/pg_config \ + --with-pgsql \ + --enable-shmop \ + --with-zip \ + ${WITH_CURL_CONFIGURE} \ + --with-zlib=/app/vendor/php/zlib \ + --with-bz2 \ + --with-openssl \ + --enable-soap \ + --enable-xmlreader \ + --with-curl=/usr \ + --with-xsl \ + --enable-fpm \ + --enable-mbstring \ + --enable-pcntl \ + --enable-sockets \ + --enable-bcmath \ + --with-readline \ + --with-password-argon2 \ + --disable-debug +echo "${php_version}" | grep ^5.3 && sed -i '/^BUILD_/ s/\$(CC)/\$(CXX)/g' Makefile || true +make -j 8 +make install +popd > /dev/null + +eval "$install_zend_optimizer" + +echo "BINIOU: $(pwd)" mkdir package pushd /app/vendor/php > /dev/null tar zcf "${tempdir}/package/php-${php_version}.tgz" . From c542e43832ad15aa9373114624d92aaf72942f1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Michon?= Date: Mon, 1 Sep 2025 16:43:37 +0200 Subject: [PATCH 6/6] refactor(package_php): download WebP earlier --- support/package_php | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/support/package_php b/support/package_php index 8e59356c..c4cbf442 100755 --- a/support/package_php +++ b/support/package_php @@ -6,9 +6,6 @@ if [ -n "$DEBUG" ]; then set -x fi -apt-get update -qq -apt-get install -qq --yes pkg-config libxml2-dev libssl-dev libsqlite3-dev - basedir="$( cd -P "$( dirname "$0" )" && pwd )" source "$basedir/../conf/buildpack.conf" source "$basedir/lib/utils" @@ -38,6 +35,10 @@ curl -L -o - "${PHP_BASE_URL}/package/libonig-${libonig_version}.tgz" | tar -C / export C_INCLUDE_PATH="$C_INCLUDE_PATH:/app/vendor/libonig/include" export PKG_CONFIG_PATH="/app/vendor/libonig/lib/pkgconfig:$PKG_CONFIG_PATH" +echo "-----> Downloading dependency WebP library ${webp_version}" +mkdir -p "/app/vendor/libwebp" +curl "${PHP_BASE_URL}/package/libwebp-${webp_version}.tgz" | tar xz -C /app/vendor/libwebp + echo "-----> Downloading PHP $php_version" curl -LO "https://php.net/distributions/php-${php_version}.tar.gz" tar -xzf "php-${php_version}.tar.gz" @@ -48,27 +49,24 @@ install_zend_optimizer=$(cat < Compile ZLib" +echo "-----> Compile ZLib v${zlib_version}" pushd "zlib-${zlib_version}" >/dev/null ./configure --prefix=/app/vendor/php/zlib make make install popd > /dev/null -echo "-----> Compile PHP" +echo "-----> Compile PHP v${php_version}" pushd "php-${php_version}" >/dev/null ./configure --prefix=/app/vendor/php \ --with-config-file-path=/app/vendor/php/etc \ @@ -89,7 +87,6 @@ pushd "php-${php_version}" >/dev/null --with-openssl \ --enable-soap \ --enable-xmlreader \ - --with-curl=/usr \ --with-xsl \ --enable-fpm \ --enable-mbstring \ @@ -106,7 +103,6 @@ popd > /dev/null eval "$install_zend_optimizer" -echo "BINIOU: $(pwd)" mkdir package pushd /app/vendor/php > /dev/null tar zcf "${tempdir}/package/php-${php_version}.tgz" .