This use of tryEval causes hydra to fully ignore evaluation failures of
packages that occur while trying to evaluate the hydra platforms it should be
built on. This includes failures that occur during evaluation of:
- The `.type` attribute value
- The `.meta.hydraPlatforms` or `.meta.platforms` attribute value
- The `.version` attribute, since this can determine whether
`.meta.position` is set
- For non-derivations, `.recurseForDerivations` or `.recurseForRelease`
Here's a minimal `release.nix` file, showcasing how a `.version` failure
is ignored:
let
packages = pkgs: {
success = pkgs.stdenv.mkDerivation {
name = "success";
};
ignoredFailure = pkgs.stdenv.mkDerivation {
pname = "ignored-failure";
version = throw "version error";
};
caughtFailure = pkgs.stdenv.mkDerivation {
name = "caught-failure";
src = throw "src error";
};
};
releaseLib = import <nixpkgs/pkgs/top-level/release-lib.nix> {
packageSet = args: packages (import <nixpkgs> args);
supportedSystems = [ "x86_64-linux" ];
};
in
releaseLib.mapTestOn (releaseLib.packagePlatforms releaseLib.pkgs)
Evaluating this with `hydra-eval-jobs` before this change yields:
$ hydra-eval-jobs release.nix -I nixpkgs=/path/to/nixpkgs
warning: `--gc-roots-dir' not specified
error: "error: --- ThrownError --- hydra-eval-jobs\nsrc error"
{
"caughtFailure.x86_64-linux": {
"error": "error: --- ThrownError --- hydra-eval-jobs\nsrc error"
},
"success.x86_64-linux": {
"description": "",
"drvPath": "/nix/store/q1sw933xd9bxfx6rcp0kqksbprj1wmwj-success.drv",
"homepage": "",
"isChannel": false,
"license": "",
"maintainers": "",
"maxSilent": 7200,
"nixName": "success",
"outputs": {
"out": "/nix/store/7awrz6hss4jjxvgbwi4wlyikncmslb7a-success"
},
"schedulingPriority": 100,
"system": "x86_64-linux",
"timeout": 36000
}
}
Where you can see that there is no job for the `ignoredFailure`
derivation. Compare this to after this change:
$ hydra-eval-jobs release.nix -I nixpkgs=/path/to/nixpkgs
warning: `--gc-roots-dir' not specified
error: "error: --- ThrownError --- hydra-eval-jobs\nsrc error"
error: "error: --- ThrownError --- hydra-eval-jobs\nversion error"
{
"caughtFailure.x86_64-linux": {
"error": "error: --- ThrownError --- hydra-eval-jobs\nsrc error"
},
"ignoredFailure": {
"error": "error: --- ThrownError --- hydra-eval-jobs\nversion error"
},
"success.x86_64-linux": {
"description": "",
"drvPath": "/nix/store/q1sw933xd9bxfx6rcp0kqksbprj1wmwj-success.drv",
"homepage": "",
"isChannel": false,
"license": "",
"maintainers": "",
"maxSilent": 7200,
"nixName": "success",
"outputs": {
"out": "/nix/store/7awrz6hss4jjxvgbwi4wlyikncmslb7a-success"
},
"schedulingPriority": 100,
"system": "x86_64-linux",
"timeout": 36000
}
}
Notice how `ignoredFailure` is now part of the result.
Moved k3sVersion to be a variable.
Converted buildFlagsArray to an array
Moved vendorSha256 closer to src
Moved doCheck between build and install related bits (like where the
phase happens)
Replaced stdenv.lib with lib