about summary refs log tree commit diff
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2018-03-27 08:12:14 -0400
committerShea Levy <shea@shealevy.com>2018-03-27 08:12:45 -0400
commitb0482248fefbf3b6cdd9c92053cfb49778a3a3a8 (patch)
treed49f03e5d25b676eb425093a44b3d49f0884d310
parent4ba76fadeb1afc0f55c58781d6c626baf16c2c64 (diff)
downloadnixlib-b0482248fefbf3b6cdd9c92053cfb49778a3a3a8.tar
nixlib-b0482248fefbf3b6cdd9c92053cfb49778a3a3a8.tar.gz
nixlib-b0482248fefbf3b6cdd9c92053cfb49778a3a3a8.tar.bz2
nixlib-b0482248fefbf3b6cdd9c92053cfb49778a3a3a8.tar.lz
nixlib-b0482248fefbf3b6cdd9c92053cfb49778a3a3a8.tar.xz
nixlib-b0482248fefbf3b6cdd9c92053cfb49778a3a3a8.tar.zst
nixlib-b0482248fefbf3b6cdd9c92053cfb49778a3a3a8.zip
meta: Add badPlatforms attribute for platform blacklisting.
-rw-r--r--pkgs/stdenv/generic/check-meta.nix6
1 files changed, 4 insertions, 2 deletions
diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix
index 113b95f3ab00..2f4ff62f767e 100644
--- a/pkgs/stdenv/generic/check-meta.nix
+++ b/pkgs/stdenv/generic/check-meta.nix
@@ -165,6 +165,7 @@ let
     isFcitxEngine = bool;
     isIbusEngine = bool;
     isGutenprint = bool;
+    badPlatforms = platforms;
   };
 
   checkMetaAttr = k: v:
@@ -174,7 +175,8 @@ let
   checkMeta = meta: if shouldCheckMeta then lib.remove null (lib.mapAttrsToList checkMetaAttr meta) else [];
 
   checkPlatform = attrs:
-    lib.any (lib.meta.platformMatch hostPlatform) attrs.meta.platforms;
+    (!(attrs ? meta.platforms) || lib.any (lib.meta.platformMatch hostPlatform) attrs.meta.platforms) &&
+    (!(attrs ? meta.badPlatforms && lib.any (lib.meta.platformMatch hostPlatform) attrs.meta.badPlatforms));
 
   # Check if a derivation is valid, that is whether it passes checks for
   # e.g brokenness or license.
@@ -189,7 +191,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 !allowUnsupportedSystem && !allowBroken && attrs.meta.platforms or null != null && !(checkPlatform attrs) then
+    else if !allowUnsupportedSystem && !allowBroken && !(checkPlatform attrs) then
       { valid = false; reason = "broken"; errormsg = "is not supported on ‘${hostPlatform.config}’"; }
     else if !(hasAllowedInsecure attrs) then
       { valid = false; reason = "insecure"; errormsg = "is marked as insecure"; }