summary refs log tree commit diff
path: root/pkgs/development/interpreters/php
diff options
context:
space:
mode:
authorPol Dellaiera <pol.dellaiera@protonmail.com>2023-11-08 22:57:01 +0100
committerGitHub <noreply@github.com>2023-11-08 22:57:01 +0100
commitc038b79502f379b1fe988520fc0d5f01c5799156 (patch)
tree9cd17bea9e87b83a2046167afd50da4cb164bb69 /pkgs/development/interpreters/php
parentdbc3aaedc04c90748688a825eef6b70ac9a23b19 (diff)
downloadnixpkgs-c038b79502f379b1fe988520fc0d5f01c5799156.tar
nixpkgs-c038b79502f379b1fe988520fc0d5f01c5799156.tar.gz
nixpkgs-c038b79502f379b1fe988520fc0d5f01c5799156.tar.bz2
nixpkgs-c038b79502f379b1fe988520fc0d5f01c5799156.tar.lz
nixpkgs-c038b79502f379b1fe988520fc0d5f01c5799156.tar.xz
nixpkgs-c038b79502f379b1fe988520fc0d5f01c5799156.tar.zst
nixpkgs-c038b79502f379b1fe988520fc0d5f01c5799156.zip
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.
Diffstat (limited to 'pkgs/development/interpreters/php')
-rw-r--r--pkgs/development/interpreters/php/generic.nix23
-rw-r--r--pkgs/development/interpreters/php/install-pear-nozlib-phar.nix8
2 files changed, 26 insertions, 5 deletions
diff --git a/pkgs/development/interpreters/php/generic.nix b/pkgs/development/interpreters/php/generic.nix
index 38ac5008142..ba5ce5537bb 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 00000000000..d359a7ed82a
--- /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=";
+}