Unverified Commit 92bd7432 authored by Morgan Jones's avatar Morgan Jones
Browse files

ci/eval: use correct maintainer and team positions

We need to pass through the maintainers and teams positions from the
original meta so pings work correctly, since check-meta clobbers the
original attribute positions in them.

Tested with `maintainers/scripts/get-maintainer-pings-between.sh` on a
handful of major packages maintained by both individuals and teams.
parent d807892d
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.
+12 −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,12 +593,20 @@ 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 [ ];