Browse Source

utils/get-developers: implement a -v action for DEVELOPERS file validation

Commit "45aabcddc5 utils/get-developers: really make it callable from
elsewhere than the toplevel directory" had a unforeseen side-effect:
the fact that check-developers with no arguments used to validate the
syntax of the DEVELOPERS no longer works. Indeed, the
parse_developers() call was moved *after* the check that verifies if
at least one action is passed. Due to this, the check-DEVELOPERS
verification in Gitlab CI, which invokes get-developers without
argument to validate the DEVELOPERS file... no longer does anything
useful.

In order to fix this, we introduce an explicit action in
get-developers to request the validation of the DEVELOPERS file. The
implementation is trivial, as the validation is already done by
calling parse_developers(), but at least now we have an action that
does "nothing", except execute until the validation is done.

This is also much more explicit than "invoke get-developers without
arguments to just do validation".

The initial investigation of the issue was done by Ricardo Martincoski
<ricardo.martincoski@gmail.com> and reported at
https://patchwork.ozlabs.org/project/buildroot/patch/20220528014832.289907-1-ricardo.martincoski@gmail.com/,
but we have chosen to introduce a separate -v option rather than
making the validation part of the existing -c action, which serves a
different purpose.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Thomas Petazzoni 3 years ago
parent
commit
47f359a615
2 changed files with 13 additions and 2 deletions
  1. 3 2
      docs/manual/developers.txt
  2. 10 0
      utils/get-developers

+ 3 - 2
docs/manual/developers.txt

@@ -45,5 +45,6 @@ the +DEVELOPERS+ file for various tasks:
   list the ones that are not handled by any developer. The purpose of
   list the ones that are not handled by any developer. The purpose of
   this option is to help completing the +DEVELOPERS+ file.
   this option is to help completing the +DEVELOPERS+ file.
 
 
-- When using without any arguments, it validates the integrity of the
-  DEVELOPERS file and will note WARNINGS for items that don't match.
+- When using the +-v+ command line option, it validates the integrity
+  of the DEVELOPERS file and will note WARNINGS for items that don't
+  match.

+ 10 - 0
utils/get-developers

@@ -19,6 +19,8 @@ def parse_args():
                         const=True, help='list files not handled by any developer')
                         const=True, help='list files not handled by any developer')
     parser.add_argument('-e', dest='email', action='store_const',
     parser.add_argument('-e', dest='email', action='store_const',
                         const=True, help='only list affected developer email addresses')
                         const=True, help='only list affected developer email addresses')
+    parser.add_argument('-v', dest='validate', action='store_const',
+                        const=True, help='validate syntax of DEVELOPERS file')
     return parser.parse_args()
     return parser.parse_args()
 
 
 
 
@@ -35,6 +37,8 @@ def __main__():
         action += 1
         action += 1
     if args.check:
     if args.check:
         action += 1
         action += 1
+    if args.validate:
+        action += 1
     if len(args.patches) != 0:
     if len(args.patches) != 0:
         action += 1
         action += 1
     if action > 1:
     if action > 1:
@@ -48,6 +52,12 @@ def __main__():
     if devs is None:
     if devs is None:
         sys.exit(1)
         sys.exit(1)
 
 
+    # Validation is done by parse_developers() above and we error out
+    # if the validation didn't work, so if we reach here, it means
+    # validation passed, so we can simply bail out in success.
+    if args.validate:
+        return
+
     # Handle the check action
     # Handle the check action
     if args.check:
     if args.check:
         files = getdeveloperlib.check_developers(devs)
         files = getdeveloperlib.check_developers(devs)