Skip to content

Commit 51ba14b

Browse files
committed
llvmPackages: Make targetLlvmLibraries overridable
Pull #320261 introduced the possibility to consistently override dependencies within an llvm package set. This is useful for development and testing exotic configurations. Go one step further and enable overriding targetLlvmLibraries. This makes it possible to write an overlay such as: ```nix overlays = [ (self: super: { llvmPackages = super.llvmPackages.override (prev: { targetLlvmLibraries = super.targetPackages.llvmPackages.libraries // { compiler-rt = super.targetPackages.llvmPackages.libraries.compiler-rt.override { ... } }; }); }) ]; ``` ... where the overridden compiler-rt will be used in a pkgsLLVM build. As a straw man, I've done the minimally invasive thing to the code structure: `targetLlvmLibraries` is not an explicitly named parameter for llvmPackages; but it is available in `packageSetArgs` if passed. This makes it slightly less discoverable, but this seems like a reasonable tradeoff considered that modifying this would be a fairly advanced/esoteric thing to need to do. In some ways it would be better to have as an explicit parameter with a default, but the obvious thing won't work because the default needs to be a non-trivial expression. Potentially we could instead have it as a defaulted parameter with the value of 'null', and if it's null, then compute the current thing. Signed-off-by: Peter Waller <[email protected]>
1 parent 6011527 commit 51ba14b

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

pkgs/development/compilers/llvm/default.nix

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ let
6363
inherit (stdenvAdapters) overrideCC;
6464
buildLlvmTools = buildPackages."llvmPackages_${attrName}".tools;
6565
targetLlvmLibraries =
66-
targetPackages."llvmPackages_${attrName}".libraries or llvmPackages."${attrName}".libraries;
66+
# Allow overriding targetLlvmLibraries; this enables custom runtime builds.
67+
packageSetArgs.targetLlvmLibraries or targetPackages."llvmPackages_${attrName}".libraries
68+
or llvmPackages."${attrName}".libraries;
6769
targetLlvm = targetPackages."llvmPackages_${attrName}".llvm or llvmPackages."${attrName}".llvm;
6870
inherit
6971
officialRelease

0 commit comments

Comments
 (0)