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
While I was able to find `deno` by searching for "executable" from it's
longDescription on search.nixos.org, I couldn't find it using `nix search`
`nix search` seems to only look at the short description so it's worth
including there too.