From 9f09253e521bbddabd6a7faf5803fffceba7b03c Mon Sep 17 00:00:00 2001 From: talyz Date: Sat, 2 May 2020 23:13:53 +0200 Subject: [PATCH] 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. --- pkgs/build-support/build-pecl.nix | 4 +++- pkgs/development/interpreters/php/default.nix | 8 ++++---- 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" ]; };