From 3e9f76774ab03c0aa06267dcfa1c7d7f6c984cf2 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sat, 20 May 2017 19:44:20 +0300 Subject: [PATCH] nixpkgs release: Fix Darwin-only jobs Currently the logic of generating nixpkgs Hydra jobs is to walk through the pkgs evaluated for system = "x86_64-linux", collect any derivations and their meta.platforms values. However, that doesn't work for packages whose meta.platforms doesn't include x86_64-linux, as just evaluating their meta attribute raises an error so they get skipped completely. As a less-intrusive fix (i.e. anything than rewriting the current package enumeration logic), allow passing `config.allowUnsupportedSystem = true` to permit evaluating packages regardless of their platform and use that in the package listing phase. Fixes #25200 --- pkgs/stdenv/generic/check-meta.nix | 4 +++- pkgs/top-level/release-lib.nix | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index 8b2cf01f169..8544d932f81 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -40,6 +40,8 @@ let allowBroken = config.allowBroken or false || builtins.getEnv "NIXPKGS_ALLOW_BROKEN" == "1"; + allowUnsupportedSystem = config.allowUnsupportedSystem or false; + isUnfree = licenses: lib.lists.any (l: !l.free or true || l == "unfree" || l == "unfree-redistributable") licenses; @@ -177,7 +179,7 @@ let { valid = false; reason = "blacklisted"; errormsg = "has a blacklisted license (‘${showLicense attrs.meta.license}’)"; } else if !allowBroken && attrs.meta.broken or false then { valid = false; reason = "broken"; errormsg = "is marked as broken"; } - else if !allowBroken && attrs.meta.platforms or null != null && !lib.lists.elem system attrs.meta.platforms then + else if !allowUnsupportedSystem && !allowBroken && attrs.meta.platforms or null != null && !lib.lists.elem system attrs.meta.platforms then { valid = false; reason = "broken"; errormsg = "is not supported on ‘${system}’"; } else if !(hasAllowedInsecure attrs) then { valid = false; reason = "insecure"; errormsg = "is marked as insecure"; } diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix index ddc449ae59c..c852ace7d7c 100644 --- a/pkgs/top-level/release-lib.nix +++ b/pkgs/top-level/release-lib.nix @@ -13,7 +13,7 @@ rec { allPackages = args: packageSet (args // nixpkgsArgs); - pkgs = pkgsFor "x86_64-linux"; + pkgs = packageSet (lib.recursiveUpdate { system = "x86_64-linux"; config.allowUnsupportedSystem = true; } nixpkgsArgs); inherit lib;