mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 15:03:28 +00:00
check-meta(hasUnsupportedPlatform): use lib.meta.availableOn
`hasUnsupportedPlatform` was not updated with #37395, so it does not understand attrsets in `meta.[bad]platforms`. In particular, attrsets in `meta.badPlatforms` will "fail open" and be ignored. Let's use `lib.meta.availableOn` instead of duplicating its logic. Thanks to @alyssais for [noticing][1]. [1][https://github.com/NixOS/nixpkgs/pull/194148#discussion_r990817610] Co-authored-by: sternenseemann <sternenseemann@systemli.org>
This commit is contained in:
parent
0b90e548b5
commit
098c6b0bec
@ -98,9 +98,7 @@ rec {
|
||||
2. None of `meta.badPlatforms` pattern matches the given platform.
|
||||
*/
|
||||
availableOn = platform: pkg:
|
||||
if !(pkg?meta) then true else
|
||||
(!(pkg.meta ? platforms) ||
|
||||
lib.any (platformMatch platform) pkg.meta.platforms) &&
|
||||
((!pkg?meta.platforms) || lib.any (platformMatch platform) pkg.meta.platforms) &&
|
||||
lib.all (elem: !platformMatch platform elem) (pkg.meta.badPlatforms or []);
|
||||
|
||||
/* Get the corresponding attribute in lib.licenses
|
||||
|
@ -57,9 +57,8 @@ let
|
||||
|
||||
isMarkedBroken = attrs: attrs.meta.broken or false;
|
||||
|
||||
hasUnsupportedPlatform = attrs:
|
||||
(!lib.lists.elem hostPlatform.system (attrs.meta.platforms or lib.platforms.all) ||
|
||||
lib.lists.elem hostPlatform.system (attrs.meta.badPlatforms or []));
|
||||
hasUnsupportedPlatform =
|
||||
pkg: !(lib.meta.availableOn hostPlatform pkg);
|
||||
|
||||
isMarkedInsecure = attrs: (attrs.meta.knownVulnerabilities or []) != [];
|
||||
|
||||
@ -272,7 +271,7 @@ let
|
||||
sourceProvenance = listOf lib.types.attrs;
|
||||
maintainers = listOf (attrsOf anything); # TODO use the maintainer type from lib/tests/maintainer-module.nix
|
||||
priority = int;
|
||||
platforms = listOf str;
|
||||
platforms = listOf (either str (attrsOf anything)); # see lib.meta.platformMatch
|
||||
hydraPlatforms = listOf str;
|
||||
broken = bool;
|
||||
unfree = bool;
|
||||
|
Loading…
Reference in New Issue
Block a user