Unverified Commit a7eef26e authored by Winter's avatar Winter Committed by GitHub
Browse files

check-meta: wrap maintainers attribute to include team members (#402991)

parents 221cd6de 92bd7432
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -53,9 +53,7 @@ let
    // {
      # TODO: Refactor this so we can ping entire teams instead of the individual members.
      # Note that this will require keeping track of GH team IDs in "maintainers/teams.nix".
      maintainers =
        meta.maintainers or [ ]
        ++ lib.flatten (map (team: team.members or [ ]) (meta.teams or [ ]));
      maintainers = meta.maintainers or [ ];
    }
  ) attrsWithPackages;

@@ -64,7 +62,8 @@ let
    (lib.lists.unique (
      builtins.map (pos: lib.strings.removePrefix (toString ../..) pos.file) (
        builtins.filter (x: x != null) [
          (builtins.unsafeGetAttrPos "maintainers" (drv.meta or { }))
          ((drv.meta or { }).maintainersPosition or null)
          ((drv.meta or { }).teamsPosition or null)
          (builtins.unsafeGetAttrPos "src" drv)
          # broken because name is always set by stdenv:
          #    # A hack to make `nix-env -qa` and `nix search` ignore broken packages.
+17 −0
Original line number Diff line number Diff line
@@ -411,6 +411,10 @@ let
      isFcitxEngine = bool;
      isIbusEngine = bool;
      isGutenprint = bool;

      # Used for the original location of the maintainer and team attributes to assist with pings.
      maintainersPosition = any;
      teamsPosition = any;
    };

  checkMetaAttr =
@@ -589,11 +593,24 @@ let
        )
      ] ++ optional (hasOutput "man") "man";
    }
    // {
      # CI scripts look at these to determine pings.
      maintainersPosition = builtins.unsafeGetAttrPos "maintainers" (attrs.meta or { });
      teamsPosition = builtins.unsafeGetAttrPos "teams" (attrs.meta or { });
    }
    // attrs.meta or { }
    # Fill `meta.position` to identify the source location of the package.
    // optionalAttrs (pos != null) {
      position = pos.file + ":" + toString pos.line;
    }
    // {
      # Maintainers should be inclusive of teams.
      # Note that there may be external consumers of this API (repology, for instance) -
      # if you add a new maintainer or team attribute please ensure that this expectation is still met.
      maintainers =
        attrs.meta.maintainers or [ ]
        ++ concatMap (team: team.members or [ ]) attrs.meta.teams or [ ];
    }
    // {
      # Expose the result of the checks for everyone to see.
      unfree = hasUnfreeLicense attrs;