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] 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: