mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 14:54:29 +01:00
5cfdab8950
This will allow tests.pkg-config.defaultPkgConfigPackages to run on
hydra without breaking the tarball job.
Regarding the use of null, I'll quote 473ac96
which does lib.hydraJob.
By allowing null, we allow code to avoid filterAttrs, improving
laziness in real world use cases.
Specifically, this strategy prevents infinite recursion errors,
performance issues and possibly other errors that are unrelated to
the user's code.
25 lines
878 B
Nix
25 lines
878 B
Nix
# Evaluate `release.nix' like Hydra would. Too bad nix-instantiate
|
||
# can't to do this.
|
||
|
||
with import ../../lib;
|
||
|
||
let
|
||
trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
|
||
|
||
rel = removeAttrs (import ../../pkgs/top-level/release.nix { }) [ "tarball" "unstable" "xbursttools" ];
|
||
|
||
# Add the ‘recurseForDerivations’ attribute to ensure that
|
||
# nix-instantiate recurses into nested attribute sets.
|
||
recurse = path: attrs:
|
||
if (builtins.tryEval attrs).success then
|
||
if isDerivation attrs
|
||
then
|
||
if (builtins.tryEval attrs.drvPath).success
|
||
then { inherit (attrs) name drvPath; }
|
||
else { failed = true; }
|
||
else if attrs == null then {}
|
||
else { recurseForDerivations = true; } //
|
||
mapAttrs (n: v: let path' = path ++ [n]; in trace path' (recurse path' v)) attrs
|
||
else { };
|
||
|
||
in recurse [] rel
|