From 0bb51825b00974d7e44632f1ae980bfadd9ad9e9 Mon Sep 17 00:00:00 2001 From: Eirik Stanghelle Morland Date: Sat, 27 Sep 2025 21:04:08 +0200 Subject: [PATCH 01/14] 8.5.0RC1 --- .github/workflows/buildx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index 590e2d8..9567120 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -55,7 +55,7 @@ jobs: run: | USE_VERSION=$PHP_VERSION if [ "$PHP_VERSION" == "8.5" ]; then - USE_VERSION="8.5.0alpha2" + USE_VERSION="8.5.0RC1" fi echo "name=$USE_VERSION" >> "$GITHUB_OUTPUT" - name: Build and push Docker image From a61251515ef75eaed5d7ab1f9118b6c549a27418 Mon Sep 17 00:00:00 2001 From: Eirik Stanghelle Morland Date: Sat, 27 Sep 2025 21:04:43 +0200 Subject: [PATCH 02/14] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 16c1a6e..58a47fb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,7 @@ jobs: if: matrix.php-version == '8.5' run: docker build -t php-base --build-arg PHP_VERSION=$PHP_VERSION . env: - PHP_VERSION: '8.5.0alpha2' + PHP_VERSION: '8.5.0RC1' - name: Output modules run: docker run php-base php -m From 5eadddd12a2362e8d6278c02b2a574713f4db6d5 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 21:38:48 +0200 Subject: [PATCH 03/14] Igbin from src --- php-install.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/php-install.sh b/php-install.sh index 2b1e1c5..bb03812 100644 --- a/php-install.sh +++ b/php-install.sh @@ -56,7 +56,20 @@ case $PHP_VERSION in ;; esac -yes | pecl install apcu igbinary rdkafka yaml decimal uuid msgpack mailparse +case $PHP_VERSION in + 8.5*) + git clone --depth=1 https://github.com/igbinary/igbinary.git /usr/src/igbinary; \ + cd /usr/src/igbinary; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=igbinary.so" > /usr/local/etc/php/conf.d/igbinary.ini; \ + rm -rf /usr/src/igbinary + ;; + *) + yes | pecl install igbinary + ;; +esac + +yes | pecl install apcu rdkafka yaml decimal uuid msgpack mailparse case $PHP_VERSION in 8.5*) From c2934fab5df9023ce964126ed77750f463a43a73 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 21:40:50 +0200 Subject: [PATCH 04/14] same with redis --- php-install.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/php-install.sh b/php-install.sh index bb03812..b38d83f 100644 --- a/php-install.sh +++ b/php-install.sh @@ -109,6 +109,13 @@ case $PHP_VERSION in esac case $PHP_VERSION in + 8.5*) + git clone --depth=1 https://github.com/phpredis/phpredis.git /usr/src/phpredis; \ + cd /usr/src/phpredis; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini; \ + rm -rf /usr/src/phpredis + ;; 8.*) mkdir -p /usr/src/php/ext/redis && curl -fsSL https://pecl.php.net/get/redis | tar xvz -C "/usr/src/php/ext/redis" --strip 1 && docker-php-ext-install redis ;; From 10c164dbfef3349ca94f854fa259f7c026767f23 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 21:44:48 +0200 Subject: [PATCH 05/14] and mailparse --- php-install.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/php-install.sh b/php-install.sh index b38d83f..cedad04 100644 --- a/php-install.sh +++ b/php-install.sh @@ -69,7 +69,22 @@ case $PHP_VERSION in ;; esac -yes | pecl install apcu rdkafka yaml decimal uuid msgpack mailparse +case $PHP_VERSION in + 8.5*) + git clone --depth=1 https://github.com/php/pecl-mail-mailparse.git /usr/src/mailparse; \ + cd /usr/src/mailparse; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=mailparse.so" > /usr/local/etc/php/conf.d/mailparse.ini; \ + # mailparse needs mbstring loaded first: + echo "extension=mbstring" > /usr/local/etc/php/conf.d/00-mbstring.ini; \ + rm -rf /usr/src/mailparse; \ + ;; + *) + yes | pecl install mailparse + ;; +esac + +yes | pecl install apcu rdkafka yaml decimal uuid msgpack case $PHP_VERSION in 8.5*) From f9f566d0dfec6655457fb695cd2a9009f89dfad4 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 21:49:47 +0200 Subject: [PATCH 06/14] Avoid deleting cwd --- php-install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/php-install.sh b/php-install.sh index cedad04..5bbcd79 100644 --- a/php-install.sh +++ b/php-install.sh @@ -62,6 +62,7 @@ case $PHP_VERSION in cd /usr/src/igbinary; \ phpize && ./configure && make -j"$(nproc)" && make install; \ echo "extension=igbinary.so" > /usr/local/etc/php/conf.d/igbinary.ini; \ + cd -; \ rm -rf /usr/src/igbinary ;; *) @@ -77,6 +78,7 @@ case $PHP_VERSION in echo "extension=mailparse.so" > /usr/local/etc/php/conf.d/mailparse.ini; \ # mailparse needs mbstring loaded first: echo "extension=mbstring" > /usr/local/etc/php/conf.d/00-mbstring.ini; \ + cd -; \ rm -rf /usr/src/mailparse; \ ;; *) From f31392e43b077be30401364fd9aff3b09e43e7a4 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 21:57:06 +0200 Subject: [PATCH 07/14] imagick --- php-install.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/php-install.sh b/php-install.sh index 5bbcd79..331ab81 100644 --- a/php-install.sh +++ b/php-install.sh @@ -192,7 +192,20 @@ case $PHP_VERSION in ;; esac -yes | pecl install imagick +case $PHP_VERSION in + 8.5*) + git clone --depth=1 https://github.com/Imagick/imagick.git /usr/src/imagick; \ + cd /usr/src/imagick; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini; \ + cd -; \ + rm -rf /usr/src/imagick + ;; + *) + yes | pecl install imagick + ;; +esac + docker-php-ext-enable imagick case $PHP_VERSION in From 64e195b169ec961749eb4d2720e398bb6ed076ca Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 22:02:49 +0200 Subject: [PATCH 08/14] More idempotent --- php-install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/php-install.sh b/php-install.sh index 331ab81..acad6f1 100644 --- a/php-install.sh +++ b/php-install.sh @@ -52,7 +52,8 @@ case $PHP_VERSION in yes | pecl install ds-1.4.0 ;; *) - yes | pecl install ds + # If we really need it. + php -m | grep -q '^ds$' || yes | pecl install ds ;; esac From 6fc9f37b7430a300192c7b43fef40c6630d8c98c Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 22:05:12 +0200 Subject: [PATCH 09/14] Avoid deleting cwd --- php-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/php-install.sh b/php-install.sh index acad6f1..6abcf42 100644 --- a/php-install.sh +++ b/php-install.sh @@ -132,6 +132,7 @@ case $PHP_VERSION in cd /usr/src/phpredis; \ phpize && ./configure && make -j"$(nproc)" && make install; \ echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini; \ + cd -; \ rm -rf /usr/src/phpredis ;; 8.*) From dafe9a29f69171986f9f291b8ee0590b20fc012a Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 22:20:00 +0200 Subject: [PATCH 10/14] opcache built in --- php-install.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/php-install.sh b/php-install.sh index 6abcf42..ee2604a 100644 --- a/php-install.sh +++ b/php-install.sh @@ -221,7 +221,16 @@ case $PHP_VERSION in ;; esac -docker-php-ext-install gmp ldap xsl mysqli calendar gd pdo_mysql pdo_pgsql zip opcache bcmath soap exif bz2 pcntl +case $PHP_VERSION in + 8.5*) + echo "Skipping opcache for PHP $PHP_VERSION" + ;; + *) + docker-php-ext-install opcache + ;; +esac + +docker-php-ext-install gmp ldap xsl mysqli calendar gd pdo_mysql pdo_pgsql zip bcmath soap exif bz2 pcntl docker-php-ext-enable rdkafka apcu mkdir ~/.ssh/ From 4b7030358fc18e4bd4c650b55b41b1742fb1fdd7 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 22:27:54 +0200 Subject: [PATCH 11/14] More idempotent --- php-install.sh | 62 +++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/php-install.sh b/php-install.sh index ee2604a..d21e458 100644 --- a/php-install.sh +++ b/php-install.sh @@ -59,12 +59,13 @@ esac case $PHP_VERSION in 8.5*) - git clone --depth=1 https://github.com/igbinary/igbinary.git /usr/src/igbinary; \ - cd /usr/src/igbinary; \ - phpize && ./configure && make -j"$(nproc)" && make install; \ - echo "extension=igbinary.so" > /usr/local/etc/php/conf.d/igbinary.ini; \ - cd -; \ - rm -rf /usr/src/igbinary + php -m | grep -q '^igbinary$' || \ + (git clone --depth=1 https://github.com/igbinary/igbinary.git /usr/src/igbinary; \ + cd /usr/src/igbinary; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=igbinary.so" > /usr/local/etc/php/conf.d/igbinary.ini; \ + cd -; \ + rm -rf /usr/src/igbinary) ;; *) yes | pecl install igbinary @@ -73,14 +74,16 @@ esac case $PHP_VERSION in 8.5*) - git clone --depth=1 https://github.com/php/pecl-mail-mailparse.git /usr/src/mailparse; \ - cd /usr/src/mailparse; \ - phpize && ./configure && make -j"$(nproc)" && make install; \ - echo "extension=mailparse.so" > /usr/local/etc/php/conf.d/mailparse.ini; \ - # mailparse needs mbstring loaded first: - echo "extension=mbstring" > /usr/local/etc/php/conf.d/00-mbstring.ini; \ - cd -; \ - rm -rf /usr/src/mailparse; \ + # Yknow if we really need it. + php -m | grep -q '^mailparse$' || \ + (git clone --depth=1 https://github.com/php/pecl-mail-mailparse.git /usr/src/mailparse; \ + cd /usr/src/mailparse; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=mailparse.so" > /usr/local/etc/php/conf.d/mailparse.ini; \ + # mailparse needs mbstring loaded first: + echo "extension=mbstring" > /usr/local/etc/php/conf.d/00-mbstring.ini; \ + cd -; \ + rm -rf /usr/src/mailparse) ;; *) yes | pecl install mailparse @@ -128,12 +131,13 @@ esac case $PHP_VERSION in 8.5*) - git clone --depth=1 https://github.com/phpredis/phpredis.git /usr/src/phpredis; \ - cd /usr/src/phpredis; \ - phpize && ./configure && make -j"$(nproc)" && make install; \ - echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini; \ - cd -; \ - rm -rf /usr/src/phpredis + php -m | grep -q '^redis$' || \ + (git clone --depth=1 https://github.com/phpredis/phpredis.git /usr/src/phpredis; \ + cd /usr/src/phpredis; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini; \ + cd -; \ + rm -rf /usr/src/phpredis) ;; 8.*) mkdir -p /usr/src/php/ext/redis && curl -fsSL https://pecl.php.net/get/redis | tar xvz -C "/usr/src/php/ext/redis" --strip 1 && docker-php-ext-install redis @@ -196,13 +200,14 @@ esac case $PHP_VERSION in 8.5*) - git clone --depth=1 https://github.com/Imagick/imagick.git /usr/src/imagick; \ - cd /usr/src/imagick; \ - phpize && ./configure && make -j"$(nproc)" && make install; \ - echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini; \ - cd -; \ - rm -rf /usr/src/imagick - ;; + php -m | grep -q '^imagick$' || \ + git clone --depth=1 https://github.com/Imagick/imagick.git /usr/src/imagick; \ + cd /usr/src/imagick; \ + phpize && ./configure && make -j"$(nproc)" && make install; \ + echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini; \ + cd -; \ + rm -rf /usr/src/imagick + ;; *) yes | pecl install imagick ;; @@ -213,7 +218,8 @@ docker-php-ext-enable imagick case $PHP_VERSION in 8.4*|8.5*) apk add --no-cache krb5-dev - yes | pecl install imap + # If we really need it. + php -m | grep -q '^imap$' || yes | pecl install imap docker-php-ext-enable imap ;; *) From 3a74f0a8c773612f51f8b5c7ed8e945dd559b6f8 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 22:28:50 +0200 Subject: [PATCH 12/14] More idempotent --- php-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/php-install.sh b/php-install.sh index d21e458..e2c64fe 100644 --- a/php-install.sh +++ b/php-install.sh @@ -148,8 +148,8 @@ case $PHP_VERSION in ;; esac -docker-php-ext-configure intl -docker-php-ext-configure gettext +php -m | grep -q '^intl$' || docker-php-ext-configure intl +php -m | grep -q '^gettext$' || docker-php-ext-configure gettext docker-php-ext-install intl gettext sockets docker-php-ext-enable ds yaml decimal uuid mailparse msgpack From ebd9ce4f5394a9ca6331efdc4a34da5adefb2966 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 22:36:04 +0200 Subject: [PATCH 13/14] Fixes --- php-install.sh | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/php-install.sh b/php-install.sh index e2c64fe..fc97778 100644 --- a/php-install.sh +++ b/php-install.sh @@ -80,8 +80,6 @@ case $PHP_VERSION in cd /usr/src/mailparse; \ phpize && ./configure && make -j"$(nproc)" && make install; \ echo "extension=mailparse.so" > /usr/local/etc/php/conf.d/mailparse.ini; \ - # mailparse needs mbstring loaded first: - echo "extension=mbstring" > /usr/local/etc/php/conf.d/00-mbstring.ini; \ cd -; \ rm -rf /usr/src/mailparse) ;; @@ -201,12 +199,12 @@ esac case $PHP_VERSION in 8.5*) php -m | grep -q '^imagick$' || \ - git clone --depth=1 https://github.com/Imagick/imagick.git /usr/src/imagick; \ + (git clone --depth=1 https://github.com/Imagick/imagick.git /usr/src/imagick; \ cd /usr/src/imagick; \ phpize && ./configure && make -j"$(nproc)" && make install; \ echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini; \ cd -; \ - rm -rf /usr/src/imagick + rm -rf /usr/src/imagick) ;; *) yes | pecl install imagick @@ -250,22 +248,22 @@ git clone https://github.com/violinist-dev/drupal-contrib-sa /root/drupal-contri machine=`uname -m 2>/dev/null || /usr/bin/uname -m` case ${machine} in - arm|armv7*) - machine="arm" - ;; - aarch64*|armv8*) - machine="arm64" - ;; - i386) - machine="386" - ;; - x86_64) - machine="amd64" - ;; - *) - output " [ ] You architecture (${machine}) is not currently supported" "error" - exit 1 - ;; + arm|armv7*) + machine="arm" + ;; + aarch64*|armv8*) + machine="arm64" + ;; + i386) + machine="386" + ;; + x86_64) + machine="amd64" + ;; + *) + output " [ ] You architecture (${machine}) is not currently supported" "error" + exit 1 + ;; esac wget https://github.com/symfony/cli/releases/download/v4.16.3/symfony_linux_${machine}.gz -O /tmp/symfony.gz From 6b4879f023d1e4f7d8b98688c734ba8b988f3748 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sat, 27 Sep 2025 22:38:18 +0200 Subject: [PATCH 14/14] More idempotent --- php-install.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/php-install.sh b/php-install.sh index fc97778..d618c28 100644 --- a/php-install.sh +++ b/php-install.sh @@ -148,7 +148,9 @@ esac php -m | grep -q '^intl$' || docker-php-ext-configure intl php -m | grep -q '^gettext$' || docker-php-ext-configure gettext -docker-php-ext-install intl gettext sockets +php -m | grep -q '^intl$' || docker-php-ext-install intl +php -m | grep -q '^gettext$' || docker-php-ext-install gettext +php -m | grep -q '^sockets$' || docker-php-ext-install sockets docker-php-ext-enable ds yaml decimal uuid mailparse msgpack case $PHP_VERSION in