about summary refs log tree commit diff
path: root/pkgs/development/interpreters/php
diff options
context:
space:
mode:
authortalyz <kim.lindberger@gmail.com>2020-04-24 18:11:40 +0200
committertalyz <kim.lindberger@gmail.com>2020-04-26 16:43:29 +0200
commitd61040716e4e7266f36e523f8ba5fa11f387548e (patch)
treefb022a5267d063a4b3d0b53833b94c272f56bf56 /pkgs/development/interpreters/php
parent72636bc2f6321e5e25414904685ba9fbabbbfb56 (diff)
downloadnixlib-d61040716e4e7266f36e523f8ba5fa11f387548e.tar
nixlib-d61040716e4e7266f36e523f8ba5fa11f387548e.tar.gz
nixlib-d61040716e4e7266f36e523f8ba5fa11f387548e.tar.bz2
nixlib-d61040716e4e7266f36e523f8ba5fa11f387548e.tar.lz
nixlib-d61040716e4e7266f36e523f8ba5fa11f387548e.tar.xz
nixlib-d61040716e4e7266f36e523f8ba5fa11f387548e.tar.zst
nixlib-d61040716e4e7266f36e523f8ba5fa11f387548e.zip
php.buildEnv: Automatically include extension dependencies
Some extensions depend on other extensions. Previously, these had to
be added manually to the list of included extensions, or we got a
cryptic error message pointing to strings-with-deps.nix, which wasn't
very helpful. This makes sure all required extensions are included in
the set from which textClosureList chooses its snippets.
Diffstat (limited to 'pkgs/development/interpreters/php')
-rw-r--r--pkgs/development/interpreters/php/default.nix15
1 files changed, 14 insertions, 1 deletions
diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix
index 33071b06d956..2eda206ef2e4 100644
--- a/pkgs/development/interpreters/php/default.nix
+++ b/pkgs/development/interpreters/php/default.nix
@@ -71,6 +71,19 @@ let
 
               getExtName = ext: lib.removePrefix "php-" (builtins.parseDrvName ext.name).name;
 
+              # Recursively get a list of all internal dependencies
+              # for a list of extensions.
+              getDepsRecursively = extensions:
+                let
+                  deps = lib.concatMap
+                           (ext: ext.internalDeps or [])
+                           extensions;
+                in
+                  if ! (deps == []) then
+                    deps ++ (getDepsRecursively deps)
+                  else
+                    deps;
+
               # Generate extension load configuration snippets from the
               # extension parameter. This is an attrset suitable for use
               # with textClosureList, which is used to put the strings in
@@ -89,7 +102,7 @@ let
                         deps = lib.optionals (ext ? internalDeps)
                           (map getExtName ext.internalDeps);
                       })
-                    enabledExtensions);
+                    (enabledExtensions ++ (getDepsRecursively enabledExtensions)));
 
               extNames = map getExtName enabledExtensions;
               extraInit = writeText "custom-php.ini" ''