summary refs log tree commit diff
diff options
context:
space:
mode:
authortalyz <kim.lindberger@gmail.com>2020-05-02 23:13:53 +0200
committertalyz <kim.lindberger@gmail.com>2020-05-09 23:38:21 +0200
commit9f09253e521bbddabd6a7faf5803fffceba7b03c (patch)
tree2a21efb2ad301b148f8c4a0f435be00b5c4bdb2c
parentd373d80b1207d52621961b16aa4a3438e4f98167 (diff)
downloadnixpkgs-9f09253e521bbddabd6a7faf5803fffceba7b03c.tar
nixpkgs-9f09253e521bbddabd6a7faf5803fffceba7b03c.tar.gz
nixpkgs-9f09253e521bbddabd6a7faf5803fffceba7b03c.tar.bz2
nixpkgs-9f09253e521bbddabd6a7faf5803fffceba7b03c.tar.lz
nixpkgs-9f09253e521bbddabd6a7faf5803fffceba7b03c.tar.xz
nixpkgs-9f09253e521bbddabd6a7faf5803fffceba7b03c.tar.zst
nixpkgs-9f09253e521bbddabd6a7faf5803fffceba7b03c.zip
php.buildPecl: Allow PECLs to depend on other PECLs
Some PECLs depend on other PECLs and, like internal PHP extension
dependencies, need to be loaded in the correct order. This makes this
possible by adding the argument "peclDeps" to buildPecl, which adds
the extension to buildInputs and is treated the same way as
internalDeps when the extension config is generated.
-rw-r--r--pkgs/build-support/build-pecl.nix4
-rw-r--r--pkgs/development/interpreters/php/default.nix8
2 files changed, 7 insertions, 5 deletions
diff --git a/pkgs/build-support/build-pecl.nix b/pkgs/build-support/build-pecl.nix
index f43205f24c5..d75d3cf943a 100644
--- a/pkgs/build-support/build-pecl.nix
+++ b/pkgs/build-support/build-pecl.nix
@@ -3,6 +3,7 @@
 { pname
 , version
 , internalDeps ? []
+, peclDeps ? []
 , buildInputs ? []
 , nativeBuildInputs ? []
 , postPhpize ? ""
@@ -16,11 +17,12 @@
 
 stdenv.mkDerivation (args // {
   name = "php-${pname}-${version}";
+  extensionName = pname;
 
   inherit src;
 
   nativeBuildInputs = [ autoreconfHook re2c ] ++ nativeBuildInputs;
-  buildInputs = [ php ] ++ buildInputs;
+  buildInputs = [ php ] ++ peclDeps ++ buildInputs;
 
   makeFlags = [ "EXTENSION_DIR=$(out)/lib/php/extensions" ] ++ makeFlags;
 
diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix
index ac0ab2196af..8ccb0e54641 100644
--- a/pkgs/development/interpreters/php/default.nix
+++ b/pkgs/development/interpreters/php/default.nix
@@ -67,7 +67,7 @@ let
               getDepsRecursively = extensions:
                 let
                   deps = lib.concatMap
-                           (ext: ext.internalDeps or [])
+                           (ext: (ext.internalDeps or []) ++ (ext.peclDeps or []))
                            extensions;
                 in
                   if ! (deps == []) then
@@ -86,12 +86,12 @@ let
                   (map (ext:
                     let
                       extName = getExtName ext;
+                      phpDeps = (ext.internalDeps or []) ++ (ext.peclDeps or []);
                       type = "${lib.optionalString (ext.zendExtension or false) "zend_"}extension";
                     in
                       lib.nameValuePair extName {
                         text = "${type}=${ext}/lib/php/extensions/${extName}.so";
-                        deps = lib.optionals (ext ? internalDeps)
-                          (map getExtName ext.internalDeps);
+                        deps = map getExtName phpDeps;
                       })
                     (enabledExtensions ++ (getDepsRecursively enabledExtensions)));
 
@@ -112,7 +112,7 @@ let
                   phpIni = "${phpWithExtensions}/lib/php.ini";
                   unwrapped = php;
                   tests = nixosTests.php;
-                  inherit (php-packages) packages extensions;
+                  inherit (php-packages) packages extensions buildPecl;
                   meta = php.meta // {
                     outputsToInstall = [ "out" ];
                   };