From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 2730B7803D8 for ; Fri, 10 Nov 2023 17:04:15 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=8xJddU5Ey7uIiYd5Gaie1A7FKSebMIbuOqdwtonhBGM=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1699635853; v=1; b=odamzwsjAuHUjqRjztaz2/WZwaJrtUp9DYA8zuyNx7kS5ZDMJ1dAIXkORaiPiQhbA2/g36no bQl+A4HAEIFvQCsNgDCmqiO2ABDZLtqNPj1iiSNYQJd9dl1lOgh6AOm68Da6DDqvPR+72u+d1LZ enRkyyT0O0R7fG+Tdx8eUF+A= X-Received: by 127.0.0.2 with SMTP id 29NOYY7687511xRYc9GQYFfz; Fri, 10 Nov 2023 09:04:13 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by mx.groups.io with SMTP id smtpd.web10.32852.1699635850058618181 for ; Fri, 10 Nov 2023 09:04:10 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10890"; a="8858165" X-IronPort-AV: E=Sophos;i="6.03,291,1694761200"; d="scan'208";a="8858165" X-Received: from orviesa001.jf.intel.com ([10.64.159.141]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2023 09:04:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.03,291,1694761200"; d="scan'208";a="11525425" X-Received: from mdkinney-mobl.amr.corp.intel.com ([10.212.164.220]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2023 09:04:08 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Rebecca Cran , Liming Gao , Bob Feng , Yuwei Chen , Leif Lindholm Subject: [edk2-devel] [edk2-stable202311][Patch v2 2/4] BaseTools/Scripts/GetMaintainer: Handle reviewer only case Date: Fri, 10 Nov 2023 09:04:01 -0800 Message-Id: <20231110170403.1068-3-michael.d.kinney@intel.com> In-Reply-To: <20231110170403.1068-1-michael.d.kinney@intel.com> References: <20231110170403.1068-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,michael.d.kinney@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: XD8TCulAVnXDH4IJx9Ov2YA0x7686176AA= Content-Transfer-Encoding: 8bit X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=odamzwsj; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4593 If a package only has reviewers and no maintainers, then also return the maintainers. In order to detect this case, get_maintainers() is updated to return maintainers, reviews, and lists separately instead of a single merged list. This also allows this module to be used by other scripts that need to distinguish between maintainers, reviewers, and lists. Cc: Rebecca Cran Cc: Liming Gao Cc: Bob Feng Cc: Yuwei Chen Cc: Leif Lindholm Signed-off-by: Michael D Kinney --- BaseTools/Scripts/GetMaintainer.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/BaseTools/Scripts/GetMaintainer.py b/BaseTools/Scripts/GetMaintainer.py index 2a3147c059b5..081460451e9b 100644 --- a/BaseTools/Scripts/GetMaintainer.py +++ b/BaseTools/Scripts/GetMaintainer.py @@ -76,6 +76,7 @@ def get_section_maintainers(path, section): """Returns a list with email addresses to any M: and R: entries matching the provided path in the provided section.""" maintainers = [] + reviewers = [] lists = [] nowarn_status = ['Supported', 'Maintained'] @@ -83,12 +84,18 @@ def get_section_maintainers(path, section): for status in section['status']: if status not in nowarn_status: print('WARNING: Maintained status for "%s" is \'%s\'!' % (path, status)) - for address in section['maintainer'], section['reviewer']: + for address in section['maintainer']: # Convert to list if necessary if isinstance(address, list): maintainers += address else: maintainers += [address] + for address in section['reviewer']: + # Convert to list if necessary + if isinstance(address, list): + reviewers += address + else: + reviewers += [address] for address in section['list']: # Convert to list if necessary if isinstance(address, list): @@ -96,17 +103,20 @@ def get_section_maintainers(path, section): else: lists += [address] - return maintainers, lists + return maintainers, reviewers, lists def get_maintainers(path, sections, level=0): """For 'path', iterates over all sections, returning maintainers for matching ones.""" maintainers = [] + reviewers = [] lists = [] for section in sections: - tmp_maint, tmp_lists = get_section_maintainers(path, section) + tmp_maint, tmp_review, tmp_lists = get_section_maintainers(path, section) if tmp_maint: maintainers += tmp_maint + if tmp_review: + reviewers += tmp_review if tmp_lists: lists += tmp_lists @@ -115,13 +125,15 @@ def get_maintainers(path, sections, level=0): # REPO.working_dir/ print('"%s": no maintainers found, looking for default' % path) if level == 0: - maintainers = get_maintainers('', sections, level=level + 1) + maintainers, tmp_review, tmp_lists = get_maintainers('', sections, level=level + 1) + reviewers += tmp_review + lists += tmp_lists else: print("No maintainers set for project.") if not maintainers: return None - return maintainers + lists + return maintainers, reviewers, lists def parse_maintainers_line(line): """Parse one line of Maintainers.txt, returning any match group and its key.""" @@ -186,9 +198,9 @@ if __name__ == '__main__': for file in FILES: print(file) - addresslist = get_maintainers(file, SECTIONS) - if addresslist: - ADDRESSES += addresslist + maintainers, reviewers, lists = get_maintainers(file, SECTIONS) + if maintainers or reviewers or lists: + ADDRESSES += (maintainers + reviewers + lists) for address in list(OrderedDict.fromkeys(ADDRESSES)): if '<' in address and '>' in address: -- 2.40.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111046): https://edk2.groups.io/g/devel/message/111046 Mute This Topic: https://groups.io/mt/102510794/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-