
This removes pkgsx86_64Darwin from the top-level attributes when generating attrpaths for evaluation on Linux. Needed for attrpaths generation to succeed without silently catching eval errors. Variants are still available during actual Eval for references from other packages, just not during attrpath generation. To remove it from Eval as well, issues around pkgsLLVM will have to be fixed first.
94 lines
2.9 KiB
Nix
94 lines
2.9 KiB
Nix
#!/usr/bin/env nix-shell
|
|
# When using as a callable script, passing `--argstr path some/path` overrides $PWD.
|
|
#!nix-shell -p nix -i "nix-env -qaP --no-name --out-path --arg checkMeta true -f pkgs/top-level/release-outpaths.nix"
|
|
|
|
# Vendored from:
|
|
# https://raw.githubusercontent.com/NixOS/ofborg/74f38efa7ef6f0e8e71ec3bfc675ae4fb57d7491/ofborg/src/outpaths.nix
|
|
{
|
|
checkMeta,
|
|
includeBroken ? true, # set this to false to exclude meta.broken packages from the output
|
|
path ? ./../..,
|
|
|
|
# used by pkgs/top-level/release-attrnames-superset.nix
|
|
attrNamesOnly ? false,
|
|
|
|
# Set this to `null` to build for builtins.currentSystem only
|
|
systems ? builtins.fromJSON (builtins.readFile ../../ci/supportedSystems.json),
|
|
}:
|
|
let
|
|
lib = import (path + "/lib");
|
|
hydraJobs =
|
|
import (path + "/pkgs/top-level/release.nix")
|
|
# Compromise: accuracy vs. resources needed for evaluation.
|
|
{
|
|
inherit attrNamesOnly;
|
|
supportedSystems = if systems == null then [ builtins.currentSystem ] else systems;
|
|
nixpkgsArgs = {
|
|
config = {
|
|
allowAliases = false;
|
|
allowBroken = includeBroken;
|
|
allowUnfree = true;
|
|
allowInsecurePredicate = x: true;
|
|
allowVariants = !attrNamesOnly;
|
|
checkMeta = checkMeta;
|
|
|
|
handleEvalIssue =
|
|
reason: errormsg:
|
|
let
|
|
fatalErrors = [
|
|
"unknown-meta"
|
|
"broken-outputs"
|
|
];
|
|
in
|
|
if builtins.elem reason fatalErrors then
|
|
abort errormsg
|
|
# hydra does not build unfree packages, so tons of them are broken yet not marked meta.broken.
|
|
else if
|
|
!includeBroken
|
|
&& builtins.elem reason [
|
|
"broken"
|
|
"unfree"
|
|
]
|
|
then
|
|
throw "broken"
|
|
else if builtins.elem reason [ "unsupported" ] then
|
|
throw "unsupported"
|
|
else
|
|
true;
|
|
|
|
inHydra = true;
|
|
};
|
|
|
|
__allowFileset = false;
|
|
};
|
|
};
|
|
recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };
|
|
|
|
# hydraJobs leaves recurseForDerivations as empty attrmaps;
|
|
# that would break nix-env and we also need to recurse everywhere.
|
|
tweak = lib.mapAttrs (
|
|
name: val:
|
|
if name == "recurseForDerivations" then
|
|
true
|
|
else if lib.isAttrs val && val.type or null != "derivation" then
|
|
recurseIntoAttrs (tweak val)
|
|
else
|
|
val
|
|
);
|
|
|
|
# Some of these contain explicit references to platform(s) we want to avoid;
|
|
# some even (transitively) depend on ~/.nixpkgs/config.nix (!)
|
|
blacklist = [
|
|
"tarball"
|
|
"metrics"
|
|
"manual"
|
|
"darwin-tested"
|
|
"unstable"
|
|
"stdenvBootstrapTools"
|
|
"moduleSystem"
|
|
"lib-tests" # these just confuse the output
|
|
];
|
|
|
|
in
|
|
tweak (builtins.removeAttrs hydraJobs blacklist)
|