lib: cleanup a little bit, add traceIf
This commit is contained in:
parent
9a75c1d7c8
commit
5990cce95f
|
@ -29,8 +29,8 @@ rec {
|
||||||
|
|
||||||
For another application, see build-support/vm, where this
|
For another application, see build-support/vm, where this
|
||||||
function is used to build arbitrary derivations inside a QEMU
|
function is used to build arbitrary derivations inside a QEMU
|
||||||
virtual machine. */
|
virtual machine.
|
||||||
|
*/
|
||||||
overrideDerivation = drv: f:
|
overrideDerivation = drv: f:
|
||||||
let
|
let
|
||||||
newDrv = derivation (drv.drvAttrs // (f drv));
|
newDrv = derivation (drv.drvAttrs // (f drv));
|
||||||
|
@ -56,18 +56,17 @@ rec {
|
||||||
makeOverridable = f: origArgs:
|
makeOverridable = f: origArgs:
|
||||||
let
|
let
|
||||||
ff = f origArgs;
|
ff = f origArgs;
|
||||||
|
overrideWith = newArgs: origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs);
|
||||||
in
|
in
|
||||||
if builtins.isAttrs ff then (ff //
|
if builtins.isAttrs ff then (ff //
|
||||||
{ override = newArgs:
|
{ override = newArgs: makeOverridable f (overrideWith newArgs);
|
||||||
makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs));
|
|
||||||
deepOverride = newArgs:
|
deepOverride = newArgs:
|
||||||
makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs);
|
makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs);
|
||||||
overrideDerivation = fdrv:
|
overrideDerivation = fdrv:
|
||||||
makeOverridable (args: overrideDerivation (f args) fdrv) origArgs;
|
makeOverridable (args: overrideDerivation (f args) fdrv) origArgs;
|
||||||
})
|
})
|
||||||
else if builtins.isFunction ff then
|
else if builtins.isFunction ff then
|
||||||
{ override = newArgs:
|
{ override = newArgs: makeOverridable f (overrideWith newArgs);
|
||||||
makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs));
|
|
||||||
__functor = self: ff;
|
__functor = self: ff;
|
||||||
deepOverride = throw "deepOverride not yet supported for functors";
|
deepOverride = throw "deepOverride not yet supported for functors";
|
||||||
overrideDerivation = throw "overrideDerivation not yet supported for functors";
|
overrideDerivation = throw "overrideDerivation not yet supported for functors";
|
||||||
|
@ -102,8 +101,10 @@ rec {
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
callPackageWith = autoArgs: fn: args:
|
callPackageWith = autoArgs: fn: args:
|
||||||
let f = if builtins.isFunction fn then fn else import fn; in
|
let
|
||||||
makeOverridable f ((builtins.intersectAttrs (builtins.functionArgs f) autoArgs) // args);
|
f = if builtins.isFunction fn then fn else import fn;
|
||||||
|
auto = builtins.intersectAttrs (builtins.functionArgs f) autoArgs;
|
||||||
|
in makeOverridable f (auto // args);
|
||||||
|
|
||||||
|
|
||||||
/* Add attributes to each output of a derivation without changing the derivation itself */
|
/* Add attributes to each output of a derivation without changing the derivation itself */
|
||||||
|
|
|
@ -13,10 +13,11 @@ rec {
|
||||||
|
|
||||||
addErrorContextToAttrs = lib.mapAttrs (a: v: lib.addErrorContext "while evaluating ${a}" v);
|
addErrorContextToAttrs = lib.mapAttrs (a: v: lib.addErrorContext "while evaluating ${a}" v);
|
||||||
|
|
||||||
|
traceIf = p: msg: x: if p then trace msg x else x;
|
||||||
|
|
||||||
traceVal = x: builtins.trace x x;
|
traceVal = x: trace x x;
|
||||||
traceXMLVal = x: builtins.trace (builtins.toXML x) x;
|
traceXMLVal = x: trace (builtins.toXML x) x;
|
||||||
traceXMLValMarked = str: x: builtins.trace (str + builtins.toXML x) x;
|
traceXMLValMarked = str: x: trace (str + builtins.toXML x) x;
|
||||||
|
|
||||||
# this can help debug your code as well - designed to not produce thousands of lines
|
# this can help debug your code as well - designed to not produce thousands of lines
|
||||||
traceShowVal = x : trace (showVal x) x;
|
traceShowVal = x : trace (showVal x) x;
|
||||||
|
@ -42,6 +43,7 @@ rec {
|
||||||
traceCall2 = n : f : a : b : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b));
|
traceCall2 = n : f : a : b : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b));
|
||||||
traceCall3 = n : f : a : b : c : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b) (t "arg 3" c));
|
traceCall3 = n : f : a : b : c : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b) (t "arg 3" c));
|
||||||
|
|
||||||
|
# FIXME: rename this?
|
||||||
traceValIfNot = c: x:
|
traceValIfNot = c: x:
|
||||||
if c x then true else trace (showVal x) false;
|
if c x then true else trace (showVal x) false;
|
||||||
|
|
||||||
|
@ -106,6 +108,6 @@ rec {
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
let r = strict expr;
|
let r = strict expr;
|
||||||
in builtins.trace "${str}\n result:\n${builtins.toXML r}" r
|
in trace "${str}\n result:\n${builtins.toXML r}" r
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue