Successfully identified regression in *linux* in CI configuration 
tcwg_kernel/gnu-master-arm-mainline-allmodconfig.  So far, this commit has 
regressed CI configurations:
 - tcwg_kernel/gnu-master-arm-mainline-allmodconfig

Culprit:
<cut>
commit 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
Author: Linus Torvalds <torva...@linux-foundation.org>
Date:   Sun Sep 5 11:24:05 2021 -0700

    Enable '-Werror' by default for all kernel builds
    
    ... but make it a config option so that broken environments can disable
    it when required.
    
    We really should always have a clean build, and will disable specific
    over-eager warnings as required, if we can't fix them.  But while I
    fairly religiously enforce that in my own tree, it doesn't get enforced
    by various build robots that don't necessarily report warnings.
    
    So this just makes '-Werror' a default compiler flag, but allows people
    to disable it for their configuration if they have some particular
    issues.
    
    Occasionally, new compiler versions end up enabling new warnings, and it
    can take a while before we have them fixed (or the warnings disabled if
    that is what it takes), so the config option allows for that situation.
    
    Hopefully this will mean that I get fewer pull requests that have new
    warnings that were not noticed by various automation we have in place.
    
    Knock wood.
    
    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
</cut>

Results regressed to (for first_bad == 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_abe stage1:
-5
# build_abe qemu:
-2
# linux_n_obj:
21769
# First few build errors in logs:

from (for last_good == fd47ff55c9c31101fcc06d20cb381da3d4089bd5)
# reset_artifacts:
-10
# build_abe binutils:
-9
# build_abe stage1:
-5
# build_abe qemu:
-2
# linux_n_obj:
29880
# linux build successful:
all

Artifacts of last_good build: 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/build-fd47ff55c9c31101fcc06d20cb381da3d4089bd5/
Artifacts of first_bad build: 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/build-3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151/
Build top page/logs: 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/

Configuration details:


Reproduce builds:
<cut>
mkdir investigate-linux-3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
cd investigate-linux-3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151

git clone https://git.linaro.org/toolchain/jenkins-scripts

mkdir -p artifacts/manifests
curl -o artifacts/manifests/build-baseline.sh 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/manifests/build-baseline.sh
 --fail
curl -o artifacts/manifests/build-parameters.sh 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/manifests/build-parameters.sh
 --fail
curl -o artifacts/test.sh 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/test.sh
 --fail
chmod +x artifacts/test.sh

# Reproduce the baseline build (build all pre-requisites)
./jenkins-scripts/tcwg_kernel-build.sh @@ artifacts/manifests/build-baseline.sh

# Save baseline build state (which is then restored in artifacts/test.sh)
mkdir -p ./bisect
rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ 
--exclude /linux/ ./ ./bisect/baseline/

cd linux

# Reproduce first_bad build
git checkout --detach 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
../artifacts/test.sh

# Reproduce last_good build
git checkout --detach fd47ff55c9c31101fcc06d20cb381da3d4089bd5
../artifacts/test.sh

cd ..
</cut>

History of pending regressions and results: 
https://git.linaro.org/toolchain/ci/base-artifacts.git/log/?h=linaro-local/ci/tcwg_kernel/gnu-master-arm-mainline-allmodconfig

Artifacts: 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/
Build log: 
https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/consoleText

Full commit (up to 1000 lines):
<cut>
commit 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
Author: Linus Torvalds <torva...@linux-foundation.org>
Date:   Sun Sep 5 11:24:05 2021 -0700

    Enable '-Werror' by default for all kernel builds
    
    ... but make it a config option so that broken environments can disable
    it when required.
    
    We really should always have a clean build, and will disable specific
    over-eager warnings as required, if we can't fix them.  But while I
    fairly religiously enforce that in my own tree, it doesn't get enforced
    by various build robots that don't necessarily report warnings.
    
    So this just makes '-Werror' a default compiler flag, but allows people
    to disable it for their configuration if they have some particular
    issues.
    
    Occasionally, new compiler versions end up enabling new warnings, and it
    can take a while before we have them fixed (or the warnings disabled if
    that is what it takes), so the config option allows for that situation.
    
    Hopefully this will mean that I get fewer pull requests that have new
    warnings that were not noticed by various automation we have in place.
    
    Knock wood.
    
    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
---
 Makefile     |  3 +++
 init/Kconfig | 14 ++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/Makefile b/Makefile
index 6bc1c5b17a62..d45fc2edf186 100644
--- a/Makefile
+++ b/Makefile
@@ -785,6 +785,9 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG)      := 
-fstack-protector-strong
 
 KBUILD_CFLAGS += $(stackp-flags-y)
 
+KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror
+KBUILD_CFLAGS += $(KBUILD_CFLAGS-y)
+
 ifdef CONFIG_CC_IS_CLANG
 KBUILD_CPPFLAGS += -Qunused-arguments
 # The kernel builds with '-std=gnu89' so use of GNU extensions is acceptable.
diff --git a/init/Kconfig b/init/Kconfig
index e708180e9a59..8cb97f141b70 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -137,6 +137,20 @@ config COMPILE_TEST
          here. If you are a user/distributor, say N here to exclude useless
          drivers to be distributed.
 
+config WERROR
+       bool "Compile the kernel with warnings as errors"
+       default y
+       help
+         A kernel build should not cause any compiler warnings, and this
+         enables the '-Werror' flag to enforce that rule by default.
+
+         However, if you have a new (or very old) compiler with odd and
+         unusual warnings, or you have some architecture with problems,
+         you may need to disable this config option in order to
+         successfully build the kernel.
+
+         If in doubt, say Y.
+
 config UAPI_HEADER_TEST
        bool "Compile test UAPI headers"
        depends on HEADERS_INSTALL && CC_CAN_LINK
</cut>
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to