diff options
author | Andrew Childs <lorne@cons.org.nz> | 2022-06-17 14:42:04 +0900 |
---|---|---|
committer | Artturin <Artturin@artturin.com> | 2024-02-28 15:29:08 +0200 |
commit | 741377b30058c5742e5ae08b1d8a85bcc9aa6d55 (patch) | |
tree | f5f242220586547e4230d35f571c3df5be3219c0 /lib/tests/misc.nix | |
parent | 6780926802f953c2266e8a4215c7a4be86803dfa (diff) | |
download | nixlib-741377b30058c5742e5ae08b1d8a85bcc9aa6d55.tar nixlib-741377b30058c5742e5ae08b1d8a85bcc9aa6d55.tar.gz nixlib-741377b30058c5742e5ae08b1d8a85bcc9aa6d55.tar.bz2 nixlib-741377b30058c5742e5ae08b1d8a85bcc9aa6d55.tar.lz nixlib-741377b30058c5742e5ae08b1d8a85bcc9aa6d55.tar.xz nixlib-741377b30058c5742e5ae08b1d8a85bcc9aa6d55.tar.zst nixlib-741377b30058c5742e5ae08b1d8a85bcc9aa6d55.zip |
lib/customization: propagate function arguments in callPackagesWith
makeOverridable is very careful to ensure the arguments to the overridden function are the same as the input function. As a result, the arguments of hello.override are exactly the same as the original arguments of the hello function that produced the derivation. However, callPackagesWith calls makeOverridable with a lambda that does not propagate the arguments. The override function for a package instantiated with callPackagesWith will not have the original arguments. For example: nix-repl> lib.functionArgs hello.override { callPackage = false; fetchurl = false; hello = false; lib = false; nixos = false; stdenv = false; testers = false; } nix-repl> lib.functionArgs openssl.override { } By copying the arguments onto the inner lambda before passing it to makeOverridable, we can make callPackage and callPackages behave the same. nix-repl> lib.functionArgs openssl.override { buildPackages = false; coreutils = false; cryptodev = false; enableSSL2 = true; enableSSL3 = true; fetchurl = false; lib = false; perl = false; removeReferencesTo = false; static = true; stdenv = false; withCryptodev = true; withPerl = true; }
Diffstat (limited to 'lib/tests/misc.nix')
-rw-r--r-- | lib/tests/misc.nix | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 193e68a96933..041122feadae 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -55,6 +55,24 @@ runTests { expected = { a = false; b = false; c = true; }; }; + testCallPackageWithOverridePreservesArguments = + let + f = { a ? 0, b }: {}; + f' = callPackageWith { a = 1; b = 2; } f {}; + in { + expr = functionArgs f'.override; + expected = functionArgs f; + }; + + testCallPackagesWithOverridePreservesArguments = + let + f = { a ? 0, b }: { nested = {}; }; + f' = callPackagesWith { a = 1; b = 2; } f {}; + in { + expr = functionArgs f'.nested.override; + expected = functionArgs f; + }; + # TRIVIAL testId = { |