All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 0/4] Add support for treating compiler warnings as errors
@ 2018-01-26 15:31 Daniel Schwierzeck
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 1/4] README: add doc for how to supply user specific compiler flags to Kbuild Daniel Schwierzeck
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Daniel Schwierzeck @ 2018-01-26 15:31 UTC (permalink / raw)
  To: u-boot

To enforce a zero-warnings policy (e.g. in CI builds), all compiler
warnings have to be treated as errors.

Extend Kbuild and buildman with according options to achieve this.
Enable these new options in all Travis CI builds. All builds with
compiler warnings will now fail. Only DTC warnings are still being
ignored.

Example build which failed due to a compiler warning:
https://travis-ci.org/danielschwierzeck/u-boot/jobs/333349371#L936

The patch which fixes the warning above:
https://patchwork.ozlabs.org/patch/866009/

Changes in v2:
- new patch
- replace 'W=err' with 'KCFLAGS=-Werror'

Daniel Schwierzeck (4):
  README: add doc for how to supply user specific compiler flags to
    Kbuild
  buildman: add option -E for treating compiler warnings as errors
  travis.yml: fix 'set +e' in build script
  travis.yml: run buildman with option -E

 .travis.yml                     | 5 ++---
 README                          | 5 +++++
 tools/buildman/builder.py       | 5 ++++-
 tools/buildman/builderthread.py | 2 ++
 tools/buildman/cmdline.py       | 2 ++
 tools/buildman/control.py       | 3 ++-
 6 files changed, 17 insertions(+), 5 deletions(-)

-- 
2.16.1

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 1/4] README: add doc for how to supply user specific compiler flags to Kbuild
  2018-01-26 15:31 [U-Boot] [PATCH v2 0/4] Add support for treating compiler warnings as errors Daniel Schwierzeck
@ 2018-01-26 15:31 ` Daniel Schwierzeck
  2018-02-05 21:47   ` [U-Boot] [U-Boot, v2, " Tom Rini
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 2/4] buildman: add option -E for treating compiler warnings as errors Daniel Schwierzeck
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Daniel Schwierzeck @ 2018-01-26 15:31 UTC (permalink / raw)
  To: u-boot

Probably not all users are aware of this possibility, thus add a
pointer to the README. Also add a useful example.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

---

Changes in v2:
- new patch

 README | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/README b/README
index b53ea7dfe3..b055ae7ef2 100644
--- a/README
+++ b/README
@@ -3719,6 +3719,11 @@ this behavior and build U-Boot to some external directory:
 Note that the command line "O=" setting overrides the KBUILD_OUTPUT environment
 variable.
 
+User specific CPPFLAGS, AFLAGS and CFLAGS can be passed to the compiler by
+setting the according environment variables KCPPFLAGS, KAFLAGS and KCFLAGS.
+For example to treat all compiler warnings as errors:
+
+	make KCFLAGS=-Werror
 
 Please be aware that the Makefiles assume you are using GNU make, so
 for instance on NetBSD you might need to use "gmake" instead of
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 2/4] buildman: add option -E for treating compiler warnings as errors
  2018-01-26 15:31 [U-Boot] [PATCH v2 0/4] Add support for treating compiler warnings as errors Daniel Schwierzeck
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 1/4] README: add doc for how to supply user specific compiler flags to Kbuild Daniel Schwierzeck
@ 2018-01-26 15:31 ` Daniel Schwierzeck
  2018-02-05 21:47   ` [U-Boot] [U-Boot, v2, " Tom Rini
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 3/4] travis.yml: fix 'set +e' in build script Daniel Schwierzeck
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 4/4] travis.yml: run buildman with option -E Daniel Schwierzeck
  3 siblings, 1 reply; 10+ messages in thread
From: Daniel Schwierzeck @ 2018-01-26 15:31 UTC (permalink / raw)
  To: u-boot

Add a new option '-E' for treating all compiler warnings as errors.
Eventually this will pass 'KCFLAGS=-Werror' to Kbuild.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

---

Changes in v2:
- replace 'W=err' with 'KCFLAGS=-Werror'

 tools/buildman/builder.py       | 5 ++++-
 tools/buildman/builderthread.py | 2 ++
 tools/buildman/cmdline.py       | 2 ++
 tools/buildman/control.py       | 3 ++-
 4 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index acb0810457..4e72b7d60d 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -212,7 +212,8 @@ class Builder:
                  gnu_make='make', checkout=True, show_unknown=True, step=1,
                  no_subdirs=False, full_path=False, verbose_build=False,
                  incremental=False, per_board_out_dir=False,
-                 config_only=False, squash_config_y=False):
+                 config_only=False, squash_config_y=False,
+                 warnings_as_errors=False):
         """Create a new Builder object
 
         Args:
@@ -237,6 +238,7 @@ class Builder:
                 board rather than a thread-specific directory
             config_only: Only configure each build, don't build it
             squash_config_y: Convert CONFIG options with the value 'y' to '1'
+            warnings_as_errors: Treat all compiler warnings as errors
         """
         self.toolchains = toolchains
         self.base_dir = base_dir
@@ -270,6 +272,7 @@ class Builder:
         if not self.squash_config_y:
             self.config_filenames += EXTRA_CONFIG_FILENAMES
 
+        self.warnings_as_errors = warnings_as_errors
         self.col = terminal.Color()
 
         self._re_function = re.compile('(.*): In function.*')
diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py
index 9e8ca80c5b..9ac101a5a4 100644
--- a/tools/buildman/builderthread.py
+++ b/tools/buildman/builderthread.py
@@ -216,6 +216,8 @@ class BuilderThread(threading.Thread):
                     args.append('-s')
                 if self.builder.num_jobs is not None:
                     args.extend(['-j', str(self.builder.num_jobs)])
+                if self.builder.warnings_as_errors:
+                    args.append('KCFLAGS=-Werror')
                 config_args = ['%s_defconfig' % brd.target]
                 config_out = ''
                 args.extend(self.builder.toolchains.GetMakeArguments(brd))
diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py
index 74247f0aff..6949d6bf2c 100644
--- a/tools/buildman/cmdline.py
+++ b/tools/buildman/cmdline.py
@@ -32,6 +32,8 @@ def ParseArgs():
           help="Don't build, just configure each commit")
     parser.add_option('-e', '--show_errors', action='store_true',
           default=False, help='Show errors and warnings')
+    parser.add_option('-E', '--warnings-as-errors', action='store_true',
+          default=False, help='Treat all compiler warnings as errors')
     parser.add_option('-f', '--force-build', dest='force_build',
           action='store_true', default=False,
           help='Force build of boards even if already built')
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index 73b1a14fb6..3cac9f7cf6 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -263,7 +263,8 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
             incremental=options.incremental,
             per_board_out_dir=options.per_board_out_dir,
             config_only=options.config_only,
-            squash_config_y=not options.preserve_config_y)
+            squash_config_y=not options.preserve_config_y,
+            warnings_as_errors=options.warnings_as_errors)
     builder.force_config_on_failure = not options.quick
     if make_func:
         builder.do_make = make_func
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 3/4] travis.yml: fix 'set +e' in build script
  2018-01-26 15:31 [U-Boot] [PATCH v2 0/4] Add support for treating compiler warnings as errors Daniel Schwierzeck
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 1/4] README: add doc for how to supply user specific compiler flags to Kbuild Daniel Schwierzeck
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 2/4] buildman: add option -E for treating compiler warnings as errors Daniel Schwierzeck
@ 2018-01-26 15:31 ` Daniel Schwierzeck
  2018-01-26 15:58   ` Tom Rini
  2018-02-05 21:48   ` [U-Boot] [U-Boot, v2, " Tom Rini
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 4/4] travis.yml: run buildman with option -E Daniel Schwierzeck
  3 siblings, 2 replies; 10+ messages in thread
From: Daniel Schwierzeck @ 2018-01-26 15:31 UTC (permalink / raw)
  To: u-boot

The build script should not manipulate shell flags (especially '-e').
A non-zero exit value can also be catched with 'cmd || ret=$?'.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
---

Changes in v2: None

 .travis.yml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 2a98c4bb11..1e55e1b7f1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -101,9 +101,8 @@ script:
  #
  # Exit code 129 means warnings only.
  - if [[ "${BUILDMAN}" != "" ]]; then
-     set +e;
-     tools/buildman/buildman -P ${BUILDMAN};
-     ret=$?;
+     ret=0;
+     tools/buildman/buildman -P ${BUILDMAN} || ret=$?;
      if [[ $ret -ne 0 && $ret -ne 129 ]]; then
        tools/buildman/buildman -sdeP ${BUILDMAN};
        exit $ret;
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 4/4] travis.yml: run buildman with option -E
  2018-01-26 15:31 [U-Boot] [PATCH v2 0/4] Add support for treating compiler warnings as errors Daniel Schwierzeck
                   ` (2 preceding siblings ...)
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 3/4] travis.yml: fix 'set +e' in build script Daniel Schwierzeck
@ 2018-01-26 15:31 ` Daniel Schwierzeck
  2018-02-05 21:48   ` [U-Boot] [U-Boot, v2, " Tom Rini
  3 siblings, 1 reply; 10+ messages in thread
From: Daniel Schwierzeck @ 2018-01-26 15:31 UTC (permalink / raw)
  To: u-boot

This forces all compiler warnings to be treated as errors.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

---

Changes in v2: None

 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 1e55e1b7f1..59d1dd99e8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -102,7 +102,7 @@ script:
  # Exit code 129 means warnings only.
  - if [[ "${BUILDMAN}" != "" ]]; then
      ret=0;
-     tools/buildman/buildman -P ${BUILDMAN} || ret=$?;
+     tools/buildman/buildman -P -E ${BUILDMAN} || ret=$?;
      if [[ $ret -ne 0 && $ret -ne 129 ]]; then
        tools/buildman/buildman -sdeP ${BUILDMAN};
        exit $ret;
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 3/4] travis.yml: fix 'set +e' in build script
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 3/4] travis.yml: fix 'set +e' in build script Daniel Schwierzeck
@ 2018-01-26 15:58   ` Tom Rini
  2018-02-05 21:48   ` [U-Boot] [U-Boot, v2, " Tom Rini
  1 sibling, 0 replies; 10+ messages in thread
From: Tom Rini @ 2018-01-26 15:58 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 26, 2018 at 04:31:06PM +0100, Daniel Schwierzeck wrote:

> The build script should not manipulate shell flags (especially '-e').
> A non-zero exit value can also be catched with 'cmd || ret=$?'.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180126/f79f4873/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [U-Boot, v2, 1/4] README: add doc for how to supply user specific compiler flags to Kbuild
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 1/4] README: add doc for how to supply user specific compiler flags to Kbuild Daniel Schwierzeck
@ 2018-02-05 21:47   ` Tom Rini
  0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2018-02-05 21:47 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 26, 2018 at 04:31:04PM +0100, Daniel Schwierzeck wrote:

> Probably not all users are aware of this possibility, thus add a
> pointer to the README. Also add a useful example.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180205/01f952b0/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [U-Boot, v2, 2/4] buildman: add option -E for treating compiler warnings as errors
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 2/4] buildman: add option -E for treating compiler warnings as errors Daniel Schwierzeck
@ 2018-02-05 21:47   ` Tom Rini
  0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2018-02-05 21:47 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 26, 2018 at 04:31:05PM +0100, Daniel Schwierzeck wrote:

> Add a new option '-E' for treating all compiler warnings as errors.
> Eventually this will pass 'KCFLAGS=-Werror' to Kbuild.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180205/405f2da5/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [U-Boot, v2, 3/4] travis.yml: fix 'set +e' in build script
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 3/4] travis.yml: fix 'set +e' in build script Daniel Schwierzeck
  2018-01-26 15:58   ` Tom Rini
@ 2018-02-05 21:48   ` Tom Rini
  1 sibling, 0 replies; 10+ messages in thread
From: Tom Rini @ 2018-02-05 21:48 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 26, 2018 at 04:31:06PM +0100, Daniel Schwierzeck wrote:

> The build script should not manipulate shell flags (especially '-e').
> A non-zero exit value can also be catched with 'cmd || ret=$?'.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180205/8cc99f42/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [U-Boot, v2, 4/4] travis.yml: run buildman with option -E
  2018-01-26 15:31 ` [U-Boot] [PATCH v2 4/4] travis.yml: run buildman with option -E Daniel Schwierzeck
@ 2018-02-05 21:48   ` Tom Rini
  0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2018-02-05 21:48 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 26, 2018 at 04:31:07PM +0100, Daniel Schwierzeck wrote:

> This forces all compiler warnings to be treated as errors.
> 
> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180205/d259f4c4/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-02-05 21:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-26 15:31 [U-Boot] [PATCH v2 0/4] Add support for treating compiler warnings as errors Daniel Schwierzeck
2018-01-26 15:31 ` [U-Boot] [PATCH v2 1/4] README: add doc for how to supply user specific compiler flags to Kbuild Daniel Schwierzeck
2018-02-05 21:47   ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-01-26 15:31 ` [U-Boot] [PATCH v2 2/4] buildman: add option -E for treating compiler warnings as errors Daniel Schwierzeck
2018-02-05 21:47   ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-01-26 15:31 ` [U-Boot] [PATCH v2 3/4] travis.yml: fix 'set +e' in build script Daniel Schwierzeck
2018-01-26 15:58   ` Tom Rini
2018-02-05 21:48   ` [U-Boot] [U-Boot, v2, " Tom Rini
2018-01-26 15:31 ` [U-Boot] [PATCH v2 4/4] travis.yml: run buildman with option -E Daniel Schwierzeck
2018-02-05 21:48   ` [U-Boot] [U-Boot, v2, " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.