From c038b79502f379b1fe988520fc0d5f01c5799156 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Wed, 8 Nov 2023 22:57:01 +0100 Subject: [PATCH] php: add `phpSrc` attribute (#254556) This will allow building PHP from source, without using `.overrideAttrs()`. When the new attribute `phpSrc` is not set, the default behavior (with `fetchurl`) is used. --- pkgs/development/interpreters/php/generic.nix | 23 +++++++++++++++---- .../php/install-pear-nozlib-phar.nix | 8 +++++++ 2 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 pkgs/development/interpreters/php/install-pear-nozlib-phar.nix diff --git a/pkgs/development/interpreters/php/generic.nix b/pkgs/development/interpreters/php/generic.nix index 38ac50081423a0..ba5ce5537bbbc9 100644 --- a/pkgs/development/interpreters/php/generic.nix +++ b/pkgs/development/interpreters/php/generic.nix @@ -33,10 +33,12 @@ let , jq , version - , hash + , phpSrc ? null + , hash ? null , extraPatches ? [ ] , packageOverrides ? (final: prev: { }) , phpAttrsOverrides ? (attrs: { }) + , pearInstallPhar ? (callPackage ./install-pear-nozlib-phar.nix { }) # Sapi flags , cgiSupport ? true @@ -192,6 +194,11 @@ let mkWithExtensions = prevArgs: prevExtensionFunctions: extensions: mkBuildEnv prevArgs prevExtensionFunctions { inherit extensions; }; + + defaultPhpSrc = fetchurl { + url = "https://www.php.net/distributions/php-${version}.tar.bz2"; + inherit hash; + }; in stdenv.mkDerivation ( let @@ -278,6 +285,15 @@ let substituteInPlace configure --replace "-lstdc++" "-lc++" ''; + # When compiling PHP sources from Github, this file is missing and we + # need to install it ourselves. + # On the other hand, a distribution includes this file by default. + preInstall = '' + if [[ ! -f ./pear/install-pear-nozlib.phar ]]; then + cp ${pearInstallPhar} ./pear/install-pear-nozlib.phar + fi + ''; + postInstall = '' test -d $out/etc || mkdir $out/etc cp php.ini-production $out/etc/php.ini @@ -291,10 +307,7 @@ let $dev/share/man/man1/ ''; - src = fetchurl { - url = "https://www.php.net/distributions/php-${version}.tar.bz2"; - inherit hash; - }; + src = if phpSrc == null then defaultPhpSrc else phpSrc; patches = [ ./fix-paths-php7.patch ] ++ extraPatches; diff --git a/pkgs/development/interpreters/php/install-pear-nozlib-phar.nix b/pkgs/development/interpreters/php/install-pear-nozlib-phar.nix new file mode 100644 index 00000000000000..d359a7ed82aeb1 --- /dev/null +++ b/pkgs/development/interpreters/php/install-pear-nozlib-phar.nix @@ -0,0 +1,8 @@ +{ + fetchurl +}: + +fetchurl { + url = "https://pear.php.net/install-pear-nozlib.phar"; + hash = "sha256-UblKVcsm030tNSA6mdeab+h7ZhANNz7MkFf4Z1iigjs="; +}