nixpkgs/pkgs/top-level
Silvan Mosberger 86f4de6ee9
release-lib: Don't use tryEval for packagePlatforms
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.
2020-11-26 15:32:08 +01:00
..
agda-packages.nix agda-packages: add fla library at v0.1 2020-10-15 10:54:22 -06:00
aliases.nix Merge pull request #102271 from symphorien/check-systemd 2020-11-26 02:56:13 +01:00
all-packages.nix Merge pull request #103037 from lightdiscord/package-update/protonmail-bridge 2020-11-26 15:05:23 +01:00
beam-packages.nix elixir_1_11: init at 1.11.0 2020-10-07 10:30:35 +02:00
config.nix
coq-packages.nix coq_8_12: 8.12.0 → 8.12.1 2020-11-15 12:03:15 +01:00
darwin-packages.nix darwin/apple-sdk: use darwin stubs 2020-11-12 00:23:09 +09:00
default.nix top-level: ignore unexpected args 2020-10-01 11:21:32 -07:00
dhall-packages.nix Change idiom for overriding Dhall package version 2020-11-11 11:16:04 +01:00
dotnet-packages.nix dafny: use pinned z3 in the full closure 2020-10-24 22:24:40 +02:00
emacs-packages.nix
emscripten-packages.nix
haskell-packages.nix haskell.compiler.integer-simple: Exclude ghc8102Binary* 2020-11-04 09:55:56 +01:00
haxe-packages.nix
impure.nix Revert "top-level: fix nix-shell eval w/nixUnstable" 2020-10-01 11:21:06 -07:00
java-packages.nix javaPackages: add upgraded packages 2020-10-22 10:11:36 +09:00
lua-packages.nix
make-tarball.nix Don't set $NIX_DB_DIR 2020-08-24 18:50:20 +02:00
metrics.nix Don't set $NIX_DB_DIR 2020-08-24 18:50:20 +02:00
ocaml-packages.nix ocaml-ng.ocamlPackages_4_12.ocaml: init at 4.12.0-α1 2020-11-25 07:55:44 +01:00
packages-config.nix
perl-packages.nix Merge pull request #104974 from zakame/contrib/perl-Command-Runner 2020-11-26 12:44:19 +01:00
php-packages.nix php: Drop usage of isPhp73 and isPhp74 2020-10-11 20:10:58 +02:00
pure-packages.nix
python-packages.nix Merge pull request #104528 from urbas/feature/coapthon3 2020-11-26 13:32:24 +01:00
release-alternatives.nix
release-cross.nix release*: Support nixpkgsArgs for all release-*.nix files 2020-09-11 18:22:01 +02:00
release-lib.nix release-lib: Don't use tryEval for packagePlatforms 2020-11-26 15:32:08 +01:00
release-python.nix release*: Support nixpkgsArgs for all release-*.nix files 2020-09-11 18:22:01 +02:00
release-small.nix utillinux: rename to util-linux 2020-11-24 12:42:06 -05:00
release.nix Revert "Revert "Revert "cachix: drop the build from the release jobset""" 2020-11-21 18:05:37 +01:00
ruby-packages.nix
splice.nix
stage.nix Distinguish pkgsStatic from pkgsMusl via stdenv.targetPlatform 2020-08-27 18:36:34 -04:00
static.nix tree-sitter: make shared/static libraries configurable 2020-11-09 18:41:20 +00:00
unix-tools.nix utillinux: rename to util-linux 2020-11-24 12:42:06 -05:00
wine-packages.nix