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.
This commit is contained in:
parent
72636bc2f6
commit
d61040716e
1 changed files with 14 additions and 1 deletions
|
@ -71,6 +71,19 @@ let
|
||||||
|
|
||||||
getExtName = ext: lib.removePrefix "php-" (builtins.parseDrvName ext.name).name;
|
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
|
# Generate extension load configuration snippets from the
|
||||||
# extension parameter. This is an attrset suitable for use
|
# extension parameter. This is an attrset suitable for use
|
||||||
# with textClosureList, which is used to put the strings in
|
# with textClosureList, which is used to put the strings in
|
||||||
|
@ -89,7 +102,7 @@ let
|
||||||
deps = lib.optionals (ext ? internalDeps)
|
deps = lib.optionals (ext ? internalDeps)
|
||||||
(map getExtName ext.internalDeps);
|
(map getExtName ext.internalDeps);
|
||||||
})
|
})
|
||||||
enabledExtensions);
|
(enabledExtensions ++ (getDepsRecursively enabledExtensions)));
|
||||||
|
|
||||||
extNames = map getExtName enabledExtensions;
|
extNames = map getExtName enabledExtensions;
|
||||||
extraInit = writeText "custom-php.ini" ''
|
extraInit = writeText "custom-php.ini" ''
|
||||||
|
|
Loading…
Reference in a new issue