lib: Factor in tiny bit of meta.platform checking

I need it in stdenv and release-lib, so that seems motivation enough.
This commit is contained in:
John Ericson
2018-03-19 19:29:16 -04:00
parent eae19f3c28
commit e547bd0dc4
3 changed files with 26 additions and 15 deletions
+5 -11
View File
@@ -98,18 +98,12 @@ rec {
packagePlatforms = mapAttrs (name: value:
let res = builtins.tryEval (
if isDerivation value then
# TODO(@Ericson2314) deduplicate with `checkPlatform` in
# `pkgs/stdenv/generic/check-meta.nix`.
value.meta.hydraPlatforms or (let
raw = value.meta.platforms or [ "x86_64-linux" ];
toPattern = x: if builtins.isString x
then { system = x; }
else { parsed = x; };
uniform = map toPattern raw;
pred = hostPlatform:
lib.any (pat: lib.matchAttrs pat hostPlatform) uniform;
pred' = system: pred (lib.systems.elaborate { inherit system; });
in lib.filter pred' supportedSystems)
linuxDefaulted = value.meta.platforms or [ "x86_64-linux" ];
pred = system: lib.any
(lib.meta.platformMatch (lib.systems.elaborate { inherit system; }))
linuxDefaulted;
in lib.filter pred supportedSystems)
else if value.recurseForDerivations or false || value.recurseForRelease or false then
packagePlatforms value
else