util: Use MAINTAINERS.yaml for valid tags in git hook
authorMatthew Poremba <matthew.poremba@amd.com>
Sat, 7 Nov 2020 21:36:54 +0000 (15:36 -0600)
committerJason Lowe-Power <power.jg@gmail.com>
Fri, 20 Nov 2020 16:32:02 +0000 (16:32 +0000)
There is a mismatch between the tags in MAINTAINERS.yaml and the
valid_tags in the git hook. This means if a user consults the
MAINTAINERS.yaml file to find the appropriate tag, there is a chance of
the commit being rejected due to this mismatch. Now that the maintainers
file is in yaml format, use the util/maint library to parse the valid
tag options. Additional meta tags are added (WIP, RFC) and tags that
were previously valid but not in the MAINTAINERS.yaml file.

Change-Id: I3de8f0b6f8507aa1afd2118bc4373ac0610cce40
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/37220
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
util/git-commit-msg.py
util/maint/__init__.py [new file with mode: 0644]

index 9cba896ae25fa439064f7fb33aa40c07470fd313..2bddf12839c8e52499a4cdad80d2fdd9e413da2d 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2019 Inria
 # All rights reserved
@@ -32,6 +32,7 @@
 import os
 import re
 import sys
+from maint.lib import maintainers
 
 from style.repo import GitRepo
 
@@ -57,8 +58,8 @@ def _printErrorQuit(error_message):
 
     print("""
 The first line of a commit must contain one or more gem5 tags separated by
-commas (see MAINTAINERS for the possible tags), followed by a colon and a
-commit title. There must be no leading nor trailing whitespaces.
+commas (see MAINTAINERS.yaml for the possible tags), followed by a colon and
+commit title. There must be no leading nor trailing whitespaces.
 
 This header line must then be followed by an empty line. A detailed message,
 although highly recommended, is not mandatory and can follow that empty line.
@@ -85,17 +86,12 @@ def _validateTags(commit_header):
     """
 
     # List of valid tags
-    # @todo this is error prone, and should be extracted automatically from
-    #       a file
-
-    valid_tags = ["arch", "arch-arm", "arch-gcn3",
-        "arch-mips", "arch-power", "arch-riscv", "arch-sparc", "arch-x86",
-        "base", "configs", "cpu", "cpu-kvm", "cpu-minor", "cpu-o3",
-        "cpu-simple", "dev", "dev-arm", "dev-hsa", "dev-virtio", "ext",
-        "fastmodel", "gpu-compute", "learning-gem5", "mem", "mem-cache",
-        "mem-garnet", "mem-ruby", "misc", "python", "scons", "sim", "sim-se",
-        "sim-power", "stats", "system", "system-arm", "systemc", "tests",
-        "util", "RFC", "WIP"]
+    maintainer_dict = maintainers.Maintainers.from_file()
+    valid_tags = [tag for tag, _ in maintainer_dict]
+
+    # Remove non-tag 'pmc' and add special tags not in MAINTAINERS.yaml
+    valid_tags.remove('pmc')
+    valid_tags.extend(['RFC', 'WIP'])
 
     tags = ''.join(commit_header.split(':')[0].split()).split(',')
     if (any(tag not in valid_tags for tag in tags)):
diff --git a/util/maint/__init__.py b/util/maint/__init__.py
new file mode 100644 (file)
index 0000000..e5a0d9b
--- /dev/null
@@ -0,0 +1 @@
+#!/usr/bin/env python3