diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 52637202b19c..970046e98a0a 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -359,6 +359,7 @@ in php = handleTest ./php {}; php74 = handleTest ./php { php = pkgs.php74; }; php80 = handleTest ./php { php = pkgs.php80; }; + php81 = handleTest ./php { php = pkgs.php81; }; pinnwand = handleTest ./pinnwand.nix {}; plasma5 = handleTest ./plasma5.nix {}; plasma5-systemd-start = handleTest ./plasma5-systemd-start.nix {}; diff --git a/pkgs/development/interpreters/php/8.1.nix b/pkgs/development/interpreters/php/8.1.nix new file mode 100644 index 000000000000..72d00639b622 --- /dev/null +++ b/pkgs/development/interpreters/php/8.1.nix @@ -0,0 +1,51 @@ +{ callPackage, lib, stdenv, ... }@_args: + +let + base = callPackage ./generic.nix (_args // { + version = "8.1.6"; + sha256 = "ezUzBLdAdVT3DT4QGiJqH8It7K5cTELtJwxOOJv6G2Y="; + }); + +in +base.withExtensions ({ all, ... }: with all; ([ + bcmath + calendar + curl + ctype + dom + exif + fileinfo + filter + ftp + gd + gettext + gmp + iconv + intl + ldap + mbstring + mysqli + mysqlnd + opcache + openssl + pcntl + pdo + pdo_mysql + pdo_odbc + pdo_pgsql + pdo_sqlite + pgsql + posix + readline + session + simplexml + sockets + soap + sodium + sqlite3 + tokenizer + xmlreader + xmlwriter + zip + zlib +] ++ lib.optionals (!stdenv.isDarwin) [ imap ])) diff --git a/pkgs/development/interpreters/php/fix-tokenizer-php81.patch b/pkgs/development/interpreters/php/fix-tokenizer-php81.patch new file mode 100644 index 000000000000..b43eeefa3c28 --- /dev/null +++ b/pkgs/development/interpreters/php/fix-tokenizer-php81.patch @@ -0,0 +1,12 @@ +diff --git a/ext/tokenizer/Makefile.frag b/ext/tokenizer/Makefile.frag +index 745cbfce91..07bace6022 100644 +--- a/ext/tokenizer/Makefile.frag ++++ b/ext/tokenizer/Makefile.frag +@@ -1,5 +1,5 @@ +-$(top_srcdir)/ext/tokenizer/tokenizer_data.c: $(top_srcdir)/Zend/zend_language_parser.y ++$(top_srcdir)/tokenizer_data.c: $(top_srcdir)/../../Zend/zend_language_parser.y + @if test ! -z "$(PHP)"; then \ + $(PHP) $(srcdir)/tokenizer_data_gen.php; \ + fi; +-$(builddir)/tokenizer.lo: $(top_srcdir)/Zend/zend_language_parser.c $(top_srcdir)/Zend/zend_language_scanner.c ++$(builddir)/tokenizer.lo: $(top_srcdir)/../../Zend/zend_language_parser.c $(top_srcdir)/../../Zend/zend_language_scanner.c diff --git a/pkgs/development/php-packages/apcu/default.nix b/pkgs/development/php-packages/apcu/default.nix index 0cfc7b4b44fd..150c761ae511 100644 --- a/pkgs/development/php-packages/apcu/default.nix +++ b/pkgs/development/php-packages/apcu/default.nix @@ -3,8 +3,8 @@ buildPecl { pname = "apcu"; - version = "5.1.20"; - sha256 = "sha256-uZ1A+v7Ab00TL87lPnUm3b/B0EHqbgThc4nfrSj5w5A="; + version = "5.1.21"; + sha256 = "sha256-EDNTBEhpbufK3shQUPbfUTX7EzAHLvKnRWk5Ks/s+8E="; buildInputs = [ pcre2 ]; doCheck = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c3578924fde3..76cc5f30e2e4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13544,6 +13544,13 @@ with pkgs; phpExtensions = php.extensions; phpPackages = php.packages; + # Import PHP81 interpreter, extensions and packages + php81 = callPackage ../development/interpreters/php/8.1.nix { + stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv; + }; + php81Extensions = recurseIntoAttrs php81.extensions; + php81Packages = recurseIntoAttrs php81.packages; + # Import PHP80 interpreter, extensions and packages php80 = callPackage ../development/interpreters/php/8.0.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 0aefbeee4e0a..bb30a46b8ca7 100644 --- a/pkgs/top-level/php-packages.nix +++ b/pkgs/top-level/php-packages.nix @@ -538,14 +538,21 @@ lib.makeScope pkgs.newScope (self: with self; { ++ lib.optionals (lib.versionOlder php.version "7.4") [ "--with-libxml-dir=${libxml2.dev}" ]; doCheck = false; } - { name = "sockets"; doCheck = false; } + { + name = "sockets"; + doCheck = false; + } { name = "sodium"; buildInputs = [ libsodium ]; } { name = "sqlite3"; buildInputs = [ sqlite ]; } { name = "sysvmsg"; } { name = "sysvsem"; } { name = "sysvshm"; } { name = "tidy"; configureFlags = [ "--with-tidy=${html-tidy}" ]; doCheck = false; } - { name = "tokenizer"; } + { + name = "tokenizer"; + patches = lib.optional (lib.versionAtLeast php.version "8.1") + ../development/interpreters/php/fix-tokenizer-php81.patch; + } { name = "wddx"; buildInputs = [ libxml2 ];