mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-06-05 21:03:40 +00:00
overridePythonAttrs: support extension-style newArgs
Allow overridePythonAttrs to take `finalAttrs: args: { }`.
This commit is contained in:
@@ -24,10 +24,24 @@ let
|
||||
let
|
||||
result = f origArgs;
|
||||
overrideWith =
|
||||
# Preserve the plain arguments whenever possible,
|
||||
# as `overrideStdenvCompat` works more reliably with `args.stdenv`
|
||||
# than `result.__stdenvPythonCompat`.
|
||||
# TODO(@ShamrockLee): After `overrideStdenvCompat` is fully deprecated,
|
||||
# simplify as
|
||||
# ```nix
|
||||
# newArgs: lib.extends (lib.toExtension newArgs) origArgs
|
||||
# ```
|
||||
if lib.isFunction origArgs then
|
||||
newArgs: lib.extends (_: lib.toFunction newArgs) origArgs
|
||||
newArgs: lib.extends (lib.toExtension newArgs) origArgs
|
||||
else
|
||||
newArgs: origArgs // lib.toFunction newArgs origArgs;
|
||||
newArgs:
|
||||
if !(lib.isFunction newArgs) then
|
||||
origArgs // newArgs
|
||||
else if !(lib.isFunction (newArgs origArgs)) then
|
||||
origArgs // newArgs origArgs
|
||||
else
|
||||
finalAttrs: origArgs // newArgs finalAttrs origArgs;
|
||||
in
|
||||
if lib.isAttrs result then
|
||||
result
|
||||
|
||||
@@ -434,6 +434,14 @@ let
|
||||
p.overridePythonAttrs (previousAttrs: {
|
||||
overridePythonAttrsFlag = previousAttrs.overridePythonAttrsFlag or 0 + 1;
|
||||
});
|
||||
applyOverridePythonAttrsFP =
|
||||
p:
|
||||
p.overridePythonAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
overridePythonAttrsFlag = previousAttrs.overridePythonAttrsFlag or 0 + 1;
|
||||
overridePythonAttrsFlagP1 = finalAttrs.overridePythonAttrsFlag + 1;
|
||||
}
|
||||
);
|
||||
overrideAttrsFooBar =
|
||||
drv:
|
||||
drv.overrideAttrs (
|
||||
@@ -469,6 +477,18 @@ let
|
||||
expr = (package-stub.overridePythonAttrs { overridePythonAttrsFlag = 0; }).overridePythonAttrsFlag;
|
||||
expected = 0;
|
||||
};
|
||||
overridePythonAttrs-finalAttrs = {
|
||||
expr = {
|
||||
inherit (applyOverridePythonAttrsFP package-stub)
|
||||
overridePythonAttrsFlag
|
||||
overridePythonAttrsFlagP1
|
||||
;
|
||||
};
|
||||
expected = {
|
||||
overridePythonAttrsFlag = 1;
|
||||
overridePythonAttrsFlagP1 = 2;
|
||||
};
|
||||
};
|
||||
overrideAttrs-overridePythonAttrs-test-overrideAttrs = {
|
||||
expr = {
|
||||
inherit (applyOverridePythonAttrs (overrideAttrsFooBar package-stub))
|
||||
|
||||
Reference in New Issue
Block a user