Commit 098c6b0b authored by Adam Joseph's avatar Adam Joseph Committed by Alyssa Ross
Browse files

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: default avatarsternenseemann <sternenseemann@systemli.org>
parent 0b90e548
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -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
+3 −4
Original line number Diff line number Diff line
@@ -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;