From 21efaec96ca07c940cbf3bc4bd7bd1872dccb1ff Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sat, 17 Jan 2026 18:53:55 +0100 Subject: [PATCH 01/10] php85: init at 8.5.2 --- nixos/tests/all-tests.nix | 4 ++ pkgs/development/interpreters/php/8.5.nix | 57 +++++++++++++++++++ pkgs/development/interpreters/php/generic.nix | 4 ++ pkgs/top-level/all-packages.nix | 10 ++++ pkgs/top-level/php-packages.nix | 50 +++++++++------- 5 files changed, 103 insertions(+), 22 deletions(-) create mode 100644 pkgs/development/interpreters/php/8.5.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 3c0547d4578c..2363273046d2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1240,6 +1240,10 @@ in inherit runTest; php = pkgs.php84; }; + php85 = import ./php/default.nix { + inherit runTest; + php = pkgs.php85; + }; phylactery = runTest ./web-apps/phylactery.nix; pict-rs = runTest ./pict-rs.nix; pihole-ftl = import ./pihole-ftl { inherit runTest; }; diff --git a/pkgs/development/interpreters/php/8.5.nix b/pkgs/development/interpreters/php/8.5.nix new file mode 100644 index 000000000000..bf44a1aad7b7 --- /dev/null +++ b/pkgs/development/interpreters/php/8.5.nix @@ -0,0 +1,57 @@ +{ callPackage, ... }@_args: + +let + base = callPackage ./generic.nix ( + _args + // { + version = "8.5.2"; + hash = "sha256-9+/ezMOoELGJIGkjBlNrmaO6hmENvQeVopbPd9P7OgY="; + } + ); +in +base.withExtensions ( + { all, ... }: + with all; + [ + bcmath + calendar + curl + ctype + dom + exif + fileinfo + filter + ftp + gd + gettext + gmp + iconv + intl + ldap + mbstring + mysqli + mysqlnd + openssl + pcntl + pdo + pdo_mysql + pdo_odbc + pdo_pgsql + pdo_sqlite + pgsql + posix + readline + session + simplexml + sockets + soap + sodium + sysvsem + sqlite3 + tokenizer + xmlreader + xmlwriter + zip + zlib + ] +) diff --git a/pkgs/development/interpreters/php/generic.nix b/pkgs/development/interpreters/php/generic.nix index 6eb8ec596680..08cfabb16f12 100644 --- a/pkgs/development/interpreters/php/generic.nix +++ b/pkgs/development/interpreters/php/generic.nix @@ -346,6 +346,10 @@ let substituteInPlace $dev/bin/phpize \ --replace-fail "$out/lib" "$dev/lib" + '' + + lib.optionalString (lib.versionAtLeast version "8.5") '' + # PHP 8.5+ has lexbor built into core; dom needs its headers. + cp -r ext/lexbor/lexbor $dev/include/php/ext/lexbor/ ''; src = if phpSrc == null then defaultPhpSrc else phpSrc; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 80b277b69884..f03b41f88701 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5476,6 +5476,16 @@ with pkgs; phpExtensions = recurseIntoAttrs php.extensions; phpPackages = recurseIntoAttrs php.packages; + # Import PHP85 interpreter, extensions and packages + php85 = callPackage ../development/interpreters/php/8.5.nix { + stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv; + pcre2 = pcre2.override { + withJitSealloc = false; # See https://bugs.php.net/bug.php?id=78927 and https://bugs.php.net/bug.php?id=78630 + }; + }; + php85Extensions = recurseIntoAttrs php85.extensions; + php85Packages = recurseIntoAttrs php85.packages; + # Import PHP84 interpreter, extensions and packages php84 = callPackage ../development/interpreters/php/8.4.nix { stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv; diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix index b11347318543..243e10648c9b 100644 --- a/pkgs/top-level/php-packages.nix +++ b/pkgs/top-level/php-packages.nix @@ -447,6 +447,10 @@ lib.makeScope pkgs.newScope ( configureFlags = [ "--enable-dom" ]; + # PHP 8.5+ has lexbor built into core; dom needs its headers. + env = lib.optionalAttrs (lib.versionAtLeast php.version "8.5") { + NIX_CFLAGS_COMPILE = "-I${php.unwrapped.dev}/include/php/ext/lexbor"; + }; } { name = "enchant"; @@ -573,28 +577,6 @@ lib.makeScope pkgs.newScope ( '') ]; } - { - name = "opcache"; - buildInputs = [ - pcre2 - ] - ++ lib.optional ( - !stdenv.hostPlatform.isDarwin && lib.meta.availableOn stdenv.hostPlatform valgrind - ) valgrind.dev; - configureFlags = lib.optional php.ztsSupport "--disable-opcache-jit"; - zendExtension = true; - postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' - # Tests are flaky on darwin - rm ext/opcache/tests/blacklist.phpt - rm ext/opcache/tests/bug66338.phpt - rm ext/opcache/tests/bug78106.phpt - rm ext/opcache/tests/issue0115.phpt - rm ext/opcache/tests/issue0149.phpt - rm ext/opcache/tests/revalidate_path_01.phpt - ''; - # Tests launch the builtin webserver. - __darwinAllowLocalNetworking = true; - } { name = "openssl"; buildInputs = [ openssl ]; @@ -829,6 +811,30 @@ lib.makeScope pkgs.newScope ( "--with-kerberos" ]; } + ] + ++ lib.optionals (lib.versionOlder php.version "8.5") [ + { + name = "opcache"; + buildInputs = [ + pcre2 + ] + ++ lib.optional ( + !stdenv.hostPlatform.isDarwin && lib.meta.availableOn stdenv.hostPlatform valgrind + ) valgrind.dev; + configureFlags = lib.optional php.ztsSupport "--disable-opcache-jit"; + zendExtension = true; + postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' + # Tests are flaky on darwin + rm ext/opcache/tests/blacklist.phpt + rm ext/opcache/tests/bug66338.phpt + rm ext/opcache/tests/bug78106.phpt + rm ext/opcache/tests/issue0115.phpt + rm ext/opcache/tests/issue0149.phpt + rm ext/opcache/tests/revalidate_path_01.phpt + ''; + # Tests launch the builtin webserver. + __darwinAllowLocalNetworking = true; + } ]; # Convert the list of attrs: From 1e7da2bf0839d9bf1a0d74e96636f01fa6cc25ea Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:12:35 +0100 Subject: [PATCH 02/10] phpExtensions.rrd: add php 8.5 compatibility patch --- pkgs/development/php-packages/rrd/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkgs/development/php-packages/rrd/default.nix b/pkgs/development/php-packages/rrd/default.nix index 6dcb6359e7bf..9c37fa225543 100644 --- a/pkgs/development/php-packages/rrd/default.nix +++ b/pkgs/development/php-packages/rrd/default.nix @@ -3,6 +3,7 @@ lib, pkg-config, rrdtool, + fetchpatch, }: buildPecl { @@ -19,6 +20,14 @@ buildPecl { pkg-config ]; + patches = [ + # PHP 8.5 compatibility patch + (fetchpatch { + url = "https://github.com/php/pecl-processing-rrd/pull/4/commits/dd4856dc89499a0141b1710e791f0e1096c7b244.patch"; + hash = "sha256-ES+cMhMBUubFB5TpTZzzKKfEK2cY737z7zCuNy4XF8Y="; + }) + ]; + # Fix GCC 14 build. # from incompatible pointer type [-Wincompatible-pointer-types env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types"; From 4fb8f08c41754a806acaf5369bc0cc07a9f6eae4 Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:19:30 +0100 Subject: [PATCH 03/10] php85Extensions.memcache: mark as broken --- pkgs/development/php-packages/memcache/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/php-packages/memcache/default.nix b/pkgs/development/php-packages/memcache/default.nix index 9cd31b635ee5..e3ff44172ef7 100644 --- a/pkgs/development/php-packages/memcache/default.nix +++ b/pkgs/development/php-packages/memcache/default.nix @@ -31,5 +31,6 @@ buildPecl rec { homepage = "https://github.com/websupport-sk/pecl-memcache"; maintainers = [ lib.maintainers.krzaczek ]; teams = [ lib.teams.php ]; + broken = lib.versionAtLeast php.version "8.5"; }; } From 9a46efb6ca6106d2c95cac556a2515e1689e9e7f Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:30:21 +0100 Subject: [PATCH 04/10] php85Extensions.ioncube-loader: mark as broken --- pkgs/development/php-packages/ioncube-loader/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/php-packages/ioncube-loader/default.nix b/pkgs/development/php-packages/ioncube-loader/default.nix index 07c941094c6e..b2cd73a9ed38 100644 --- a/pkgs/development/php-packages/ioncube-loader/default.nix +++ b/pkgs/development/php-packages/ioncube-loader/default.nix @@ -49,6 +49,7 @@ stdenv.mkDerivation { sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; license = lib.licenses.unfree; maintainers = with lib.maintainers; [ neverbehave ]; + broken = lib.versionAtLeast php.version "8.5"; platforms = [ "x86_64-linux" "aarch64-linux" From 87abcfbc67d3ea0ffff07b057bfd7bc765cb2ff0 Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sun, 18 Jan 2026 13:04:53 +0100 Subject: [PATCH 05/10] php85Extensions.swoole: mark as broken --- pkgs/development/php-packages/swoole/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/php-packages/swoole/default.nix b/pkgs/development/php-packages/swoole/default.nix index bb86442b4bc2..a1a902b31f43 100644 --- a/pkgs/development/php-packages/swoole/default.nix +++ b/pkgs/development/php-packages/swoole/default.nix @@ -33,5 +33,6 @@ buildPecl { homepage = "https://www.swoole.com"; license = lib.licenses.asl20; teams = [ lib.teams.php ]; + broken = lib.versionAtLeast php.version "8.5"; }; } From ce19bf8075809d0d0d959436d384e03f9627ca2d Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sun, 18 Jan 2026 13:05:08 +0100 Subject: [PATCH 06/10] php85Extensions.phalcon: mark as broken --- pkgs/development/php-packages/phalcon/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/php-packages/phalcon/default.nix b/pkgs/development/php-packages/phalcon/default.nix index 1f81088f7251..94d0050da2ac 100644 --- a/pkgs/development/php-packages/phalcon/default.nix +++ b/pkgs/development/php-packages/phalcon/default.nix @@ -38,5 +38,6 @@ buildPecl rec { homepage = "https://phalcon.io"; maintainers = [ lib.maintainers.krzaczek ]; teams = [ lib.teams.php ]; + broken = lib.versionAtLeast php.version "8.5"; }; } From cfa87f5b7ce4132546b70fb641231c0fa93a4ef7 Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sun, 18 Jan 2026 13:05:35 +0100 Subject: [PATCH 07/10] php85Extensions.pdo_sqlsrv: mark as broken --- pkgs/development/php-packages/pdo_sqlsrv/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/php-packages/pdo_sqlsrv/default.nix b/pkgs/development/php-packages/pdo_sqlsrv/default.nix index b691d99487cb..451942fe5604 100644 --- a/pkgs/development/php-packages/pdo_sqlsrv/default.nix +++ b/pkgs/development/php-packages/pdo_sqlsrv/default.nix @@ -22,5 +22,6 @@ buildPecl { license = lib.licenses.mit; homepage = "https://github.com/Microsoft/msphpsql"; teams = [ lib.teams.php ]; + broken = lib.versionAtLeast php.version "8.5"; }; } From f8eba64602d02e4a687cf70ba1fef145025db569 Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sun, 18 Jan 2026 13:05:55 +0100 Subject: [PATCH 08/10] php85Extensions.openswoole: mark as broken --- pkgs/development/php-packages/openswoole/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/php-packages/openswoole/default.nix b/pkgs/development/php-packages/openswoole/default.nix index f46c8b6a8f9f..2dec6017a672 100644 --- a/pkgs/development/php-packages/openswoole/default.nix +++ b/pkgs/development/php-packages/openswoole/default.nix @@ -35,6 +35,6 @@ buildPecl { You can use the sync or async, Coroutine API to write whole applications or create thousands of light weight Coroutines within one Linux process. ''; teams = [ lib.teams.php ]; - broken = lib.versionOlder php.version "8.2"; + broken = lib.versionOlder php.version "8.2" || lib.versionAtLeast php.version "8.5"; }; } From 29f933ed17585ff7746b81d0c45e4c5ffe4a63ae Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sun, 18 Jan 2026 13:07:00 +0100 Subject: [PATCH 09/10] php85Extensions.grpc: mark as broken --- pkgs/development/php-packages/grpc/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/php-packages/grpc/default.nix b/pkgs/development/php-packages/grpc/default.nix index 5a5d261633fb..c96c6090a097 100644 --- a/pkgs/development/php-packages/grpc/default.nix +++ b/pkgs/development/php-packages/grpc/default.nix @@ -3,6 +3,7 @@ pkg-config, lib, grpc, + php, }: buildPecl { @@ -26,5 +27,6 @@ buildPecl { homepage = "https://github.com/grpc/grpc/tree/master/src/php/ext/grpc"; license = lib.licenses.asl20; teams = [ lib.teams.php ]; + broken = lib.versionAtLeast php.version "8.5"; }; } From 1c614d75004b9eb1ecda6ddeb959c4f544403de5 Mon Sep 17 00:00:00 2001 From: Piotr Kwiecinski <2151333+piotrkwiecinski@users.noreply.github.com> Date: Sun, 18 Jan 2026 13:07:53 +0100 Subject: [PATCH 10/10] php85Extensions.igbinary: mark as broken --- pkgs/development/php-packages/igbinary/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/development/php-packages/igbinary/default.nix b/pkgs/development/php-packages/igbinary/default.nix index a4be541075bc..f93f16a06e03 100644 --- a/pkgs/development/php-packages/igbinary/default.nix +++ b/pkgs/development/php-packages/igbinary/default.nix @@ -1,5 +1,8 @@ -{ buildPecl, lib }: - +{ + buildPecl, + lib, + php, +}: buildPecl { pname = "igbinary"; version = "3.2.14"; @@ -17,5 +20,6 @@ buildPecl { homepage = "https://github.com/igbinary/igbinary/"; license = lib.licenses.bsd3; teams = [ lib.teams.php ]; + broken = lib.versionAtLeast php.version "8.5"; }; }