Merge pull request #324831 from drupol/php/bump/july-2024

php84: init at 8.4.0alpha1
This commit is contained in:
Pol Dellaiera
2024-08-11 19:01:03 +02:00
committed by GitHub
8 changed files with 213 additions and 34 deletions
+1
View File
@@ -763,6 +763,7 @@ in {
php81 = handleTest ./php { php = pkgs.php81; };
php82 = handleTest ./php { php = pkgs.php82; };
php83 = handleTest ./php { php = pkgs.php83; };
php84 = handleTest ./php { php = pkgs.php84; };
phylactery = handleTest ./web-apps/phylactery.nix {};
pict-rs = handleTest ./pict-rs.nix {};
pinnwand = handleTest ./pinnwand.nix {};
+61
View File
@@ -0,0 +1,61 @@
{ callPackage, fetchurl, ... }@_args:
let
base = callPackage ./generic.nix (
_args
// {
version = "8.4.0alpha4";
phpSrc = fetchurl {
url = "https://downloads.php.net/~saki/php-8.4.0alpha4.tar.xz";
hash = "sha256-v411aNKrbteDZnkfpai8SqUgWFQbqZJbzPF5mdCr2Og=";
};
}
);
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
sysvsem
sqlite3
tokenizer
xmlreader
xmlwriter
zip
zlib
]
)
@@ -1,6 +1,7 @@
{
buildPecl,
lib,
fetchpatch,
pcre2,
fetchFromGitHub,
}:
@@ -19,6 +20,22 @@ buildPecl {
sha256 = "sha256-UDKLLCCnYJj/lCD8ZkkDf2WYZMoIbcP75+0/IXo4vdQ=";
};
patches = [
# Fix broken test (apc_entry_002) with PHP 8.4 alpha1
# See https://github.com/krakjoe/apcu/issues/510
(fetchpatch {
url = "https://github.com/krakjoe/apcu/commit/9dad016db50cc46321afec592ea9b49520c1cf13.patch";
hash = "sha256-8CPUNhEGCVVSXWYridN1+4N4JzCfXZbmUIsPYs/9jfk=";
})
# Fix ZTS detection in tests with PHP 8.4
# https://github.com/krakjoe/apcu/pull/511
(fetchpatch {
url = "https://github.com/krakjoe/apcu/commit/15766e615264620427c2db37061ca9614d3b7319.patch";
hash = "sha256-gbSkx47Uo9E28CfJJj4+3ydcw8cXW9NNN/3FuYYTVPY=";
})
];
buildInputs = [ pcre2 ];
doCheck = true;
checkTarget = "test";
@@ -0,0 +1,60 @@
{
buildPecl,
fetchFromGitHub,
fetchpatch,
lib,
libkrb5,
openssl,
pam,
pcre2,
pkg-config,
uwimap,
}:
let
version = "1.0.2";
in
buildPecl {
inherit version;
pname = "imap";
src = fetchFromGitHub {
owner = "php";
repo = "pecl-mail-imap";
rev = version;
hash = "sha256-QVeimxm3rfWMvMpSgadhMKd24yPdDGVuhXIOs8668do=";
};
patches = [
# Fix compilation with PHP 8.4.
(fetchpatch {
url = "https://github.com/php/pecl-mail-imap/commit/4fc9970a29c205ec328f36edc8c119c158129324.patch";
hash = "sha256-MxEaEe4YVeP7W5gDSNJb0thwAhxDj/yRr3qvjlJjRL4=";
})
];
nativeBuildInputs = [ pkg-config ];
buildInputs = [
uwimap
openssl
pam
pcre2
libkrb5
];
configureFlags = [
"--with-imap=${uwimap}"
"--with-imap-ssl"
"--with-kerberos"
];
doCheck = true;
meta = with lib; {
description = "PHP extension for checking the spelling of a word";
homepage = "https://pecl.php.net/package/imap";
license = licenses.php301;
maintainers = teams.php.members;
};
}
@@ -0,0 +1,32 @@
{
aspell,
buildPecl,
fetchFromGitHub,
lib,
}:
let
version = "1.0.1";
in
buildPecl {
inherit version;
pname = "pspell";
src = fetchFromGitHub {
owner = "php";
repo = "pecl-text-pspell";
rev = version;
hash = "sha256-IVBuEVsUKah8W+oVpIPT9Iln6MFox0e5/5Y14/Kgcg4=";
};
configureFlags = [ "--with-pspell=${aspell}" ];
doCheck = true;
meta = with lib; {
description = "PHP extension for checking the spelling of a word";
homepage = "https://pecl.php.net/package/pspell";
license = licenses.php301;
maintainers = teams.php.members;
};
}
@@ -13,6 +13,7 @@ assert lib.assertMsg (!php.ztsSupport) "blackfire only supports non zts versions
let
phpMajor = lib.versions.majorMinor php.version;
inherit (stdenv.hostPlatform) system;
version = "1.92.21";
@@ -63,20 +64,21 @@ let
let
isLinux = builtins.match ".+-linux" system != null;
in
assert !isLinux -> (phpMajor != null);
fetchurl {
url = "https://packages.blackfire.io/binaries/blackfire-php/${version}/blackfire-php-${if isLinux then "linux" else "darwin"}_${hashes.${system}.system}-php-${builtins.replaceStrings [ "." ] [ "" ] phpMajor}.so";
hash = hashes.${system}.hash.${phpMajor};
};
in
assert lib.assertMsg (hashes ? ${system}.hash.${phpMajor}) "blackfire does not support PHP version ${phpMajor} on ${system}.";
stdenv.mkDerivation (finalAttrs: {
pname = "php-blackfire";
extensionName = "blackfire";
inherit version;
src = makeSource {
system = stdenv.hostPlatform.system;
inherit phpMajor;
inherit system phpMajor;
};
nativeBuildInputs = lib.optionals stdenv.isLinux [
@@ -114,39 +116,22 @@ stdenv.mkDerivation (finalAttrs: {
# All sources for updating by the update script.
updateables =
let
createName = path:
builtins.replaceStrings [ "." ] [ "_" ] (lib.concatStringsSep "_" path);
createName = { phpMajor, system }:
"php${builtins.replaceStrings [ "." ] [ "" ] phpMajor}_${system}";
createSourceParams = path:
let
# The path will be either [«system» sha256], or [«system» sha256 «phpMajor» «zts»],
# Lets skip the sha256.
rest = builtins.tail (builtins.tail path);
in
{
system =
builtins.head path;
phpMajor =
if builtins.length rest == 0
then null
else builtins.head rest;
};
createUpdateable = path: _value:
createUpdateable = sourceParams:
lib.nameValuePair
(createName path)
(createName sourceParams)
(finalAttrs.finalPackage.overrideAttrs (attrs: {
src = makeSource (createSourceParams path);
src = makeSource sourceParams;
}));
# Filter out all attributes other than hashes.
hashesOnly = lib.filterAttrsRecursive (name: _value: name != "system") hashes;
in
builtins.listToAttrs
# Collect all leaf attributes (containing hashes).
(lib.collect
(attrs: attrs ? name)
(lib.mapAttrsRecursive createUpdateable hashesOnly));
lib.concatMapAttrs (
system:
{ hash, ... }:
lib.mapAttrs' (phpMajor: _hash: createUpdateable { inherit phpMajor system; }) hash
) hashes;
};
meta = {
+10
View File
@@ -16841,6 +16841,16 @@ with pkgs;
phpExtensions = php.extensions;
phpPackages = php.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;
pcre2 = pcre2.override {
withJitSealloc = false; # See https://bugs.php.net/bug.php?id=78927 and https://bugs.php.net/bug.php?id=78630
};
};
php84Extensions = recurseIntoAttrs php84.extensions;
php84Packages = recurseIntoAttrs php84.packages;
# Import PHP83 interpreter, extensions and packages
php83 = callPackage ../development/interpreters/php/8.3.nix {
stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv;
+16 -3
View File
@@ -6,7 +6,6 @@
, phpPackage
, autoconf
, pkg-config
, aspell
, bzip2
, curl
, cyrus_sasl
@@ -266,6 +265,9 @@ in {
imagick = callPackage ../development/php-packages/imagick { };
# Shadowed by built-in version on PHP < 8.3.
imap = callPackage ../development/php-packages/imap { };
inotify = callPackage ../development/php-packages/inotify { };
ioncube-loader = callPackage ../development/php-packages/ioncube-loader { };
@@ -324,6 +326,8 @@ in {
protobuf = callPackage ../development/php-packages/protobuf { };
pspell = callPackage ../development/php-packages/pspell { };
rdkafka = callPackage ../development/php-packages/rdkafka { };
redis = callPackage ../development/php-packages/redis { };
@@ -405,6 +409,14 @@ in {
hash = "sha256-sodGODHb4l04P0srn3L8l3K+DjZzCsCNbamfkmIyF+k=";
excludes = [ "NEWS" ];
})
] ++ lib.optionals (lib.versions.majorMinor php.version == "8.4") [
# Fix compatibility with libxml2 ≥ 2.13.2
# https://github.com/php/php-src/issues/15331
(fetchpatch {
url = "https://github.com/php/php-src/commit/8d7365b6f009ba43e305d6459013ac4fbed7c606.diff?full_index=1";
hash = "sha256-ct0Ml9kjjcRLryjxMsUQQsDXiDExjpnCnWKf+mYgTsQ=";
excludes = [ "NEWS" ];
})
];
}
{
@@ -452,6 +464,8 @@ in {
name = "imap";
buildInputs = [ uwimap openssl pam pcre2 libkrb5 ];
configureFlags = [ "--with-imap=${uwimap}" "--with-imap-ssl" "--with-kerberos" ];
# Using version from PECL on new PHP versions.
enable = lib.versionOlder php.version "8.3";
}
{
name = "intl";
@@ -584,7 +598,6 @@ in {
doCheck = false;
}
{ name = "posix"; doCheck = false; }
{ name = "pspell"; configureFlags = [ "--with-pspell=${aspell}" ]; }
{
name = "readline";
buildInputs = [
@@ -777,7 +790,7 @@ in {
namedExtensions = builtins.map
(drv: {
name = drv.name;
value = mkExtension drv;
value = mkExtension (builtins.removeAttrs drv [ "enable" ]);
})
(builtins.filter (i: i.enable or true) extensionData);