From 7beb43c9807159463ad6dd2a29517d4cee1e7478 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 18 Mar 2020 09:42:44 -0600 Subject: [PATCH] buildman: Allow ignoring warnings in the return code Sometimes we don't want buildman to return failure if it seems warnings. Add a -W option to support this. If buildman detects warnings (and no errors) it will return an exit code of 0 (success). Note that the definition of 'warnings' includes the migration warnings produced by U-Boot, such as: ===================== WARNING ====================== This board does not use CONFIG_DM_MMC. Please update ... ==================================================== Signed-off-by: Simon Glass Reviewed-by: Tom Rini --- tools/buildman/README | 20 ++++++++++++++++++-- tools/buildman/cmdline.py | 2 ++ tools/buildman/control.py | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/tools/buildman/README b/tools/buildman/README index abbbbea9f2..116a0ee545 100644 --- a/tools/buildman/README +++ b/tools/buildman/README @@ -1070,16 +1070,32 @@ This will write the full build into /tmp/build including object files. Other options ============= -Buildman has various other command line options. Try --help to see them. +Buildman has various other command-line options. Try --help to see them. To find out what architecture or toolchain prefix buildman will use for a build, see the -a and -A options. +To request that compiler warnings be promoted to errors, use -E. This passes the +-Werror flag to the compiler. Note that the build can still produce warnings +with -E, e.g. the migration warnings: + + ===================== WARNING ====================== + This board does not use CONFIG_DM_MMC. Please update + ... + ==================================================== + When doing builds, Buildman's return code will reflect the overall result: 0 (success) No errors or warnings found 128 Errors found - 129 Warnings found + 129 Warnings found (only if no -W) + +You can use -W to tell Buildman to return 0 (success) instead of 129 when +warnings are found. Note that it can be useful to combine -E and -W. This means +that all compiler warnings will produce failures (code 128) and all other +warnings will produce success (since 129 is changed to 0). + +If there are both warnings and errors, errors win, so buildman returns 128. How to change from MAKEALL diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py index 74b410010d..f387aeb1cf 100644 --- a/tools/buildman/cmdline.py +++ b/tools/buildman/cmdline.py @@ -108,6 +108,8 @@ def ParseArgs(): default=False, help='Run make with V=1, logging all output') parser.add_option('-w', '--work-in-output', action='store_true', default=False, help='Use the output directory as the work directory') + parser.add_option('-W', '--ignore-warnings', action='store_true', + default=False, help='Return success even if there are warnings') parser.add_option('-x', '--exclude', dest='exclude', type='string', action='append', help='Specify a list of boards to exclude, separated by comma') diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 5d80400f7a..ded4360250 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -386,6 +386,6 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, options.keep_outputs, options.verbose) if fail: return 128 - elif warned: + elif warned and not options.ignore_warnings: return 129 return 0 -- 2.25.1