Buildresult: linus/sh-randconfig/sh4-gcc4.6 built on Feb 4 2018, 08:58
kisskb
Revisions
|
Branches
|
Compilers
|
Configs
|
Build Results
|
Build Failures
|
Status:
Failed
Date/Time:
Feb 4 2018, 08:58
Duration:
0:00:04.493942
Builder:
ka4
Revision:
pinctrl: remove include file from <linux/device.h> (
23c35f48f5fbe33f68904138b23fee64df7d2f0f)
Target:
linus/sh-randconfig/sh4-gcc4.6
Branch:
linus
Compiler:
sh4-gcc4.6
(sh4-linux-gcc (GCC) 4.6.3)
Config:
randconfig
(
download
)
Log:
Download original
Possible errors
make[1]: *** [prepare-compiler-check] Error 1 make: *** [sub-make] Error 2
No warnings found in log.
Full Log
# git rev-parse -q --verify 23c35f48f5fbe33f68904138b23fee64df7d2f0f^{commit} 23c35f48f5fbe33f68904138b23fee64df7d2f0f already have revision, skipping fetch # git checkout -q -f -B kisskb 23c35f48f5fbe33f68904138b23fee64df7d2f0f # git clean -qxdf # git log -1 commit 23c35f48f5fbe33f68904138b23fee64df7d2f0f Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Fri Feb 2 16:44:14 2018 -0800 pinctrl: remove include file from <linux/device.h> When pulling the recent pinctrl merge, I was surprised by how a pinctrl-only pull request ended up rebuilding basically the whole kernel. The reason for that ended up being that <linux/device.h> included <linux/pinctrl/devinfo.h>, so any change to that file ended up causing pretty much every driver out there to be rebuilt. The reason for that was because 'struct device' has this in it: #ifdef CONFIG_PINCTRL struct dev_pin_info *pins; #endif but we already avoid header includes for these kinds of things in that header file, preferring to just use a forward-declaration of the structure instead. Exactly to avoid this kind of header dependency. Since some drivers seem to expect that <linux/pinctrl/devinfo.h> header to come in automatically, move the include to <linux/pinctrl/pinctrl.h> instead. It might be better to just make the includes more targeted, but I'm not going to review every driver. It would definitely be good to have a tool for finding and minimizing header dependencies automatically - or at least help with them. Right now we almost certainly end up having way too many of these things, and it's hard to test every single configuration. FWIW, you can get a sense of the "hotness" of a header file with something like this after doing a full build: find . -name '.*.o.cmd' -print0 | xargs -0 tail --lines=+2 | grep -v 'wildcard ' | tr ' \\' '\n' | sort | uniq -c | sort -n | less -S which isn't exact (there are other things in those '*.o.cmd' than just the dependencies, and the "--lines=+2" only removes the header), but might a useful approximation. With this patch, <linux/pinctrl/devinfo.h> drops to "only" having 833 users in the current x86-64 allmodconfig. In contrast, <linux/device.h> has 14857 build files including it directly or indirectly. Of course, the headers that absolutely _everybody_ includes (things like <linux/types.h> etc) get a score of 23000+. Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> # < /opt/cross/kisskb/gcc-4.6.3-nolibc/sh4-linux/bin/sh4-linux-gcc --version # < git log --format=%s --max-count=1 23c35f48f5fbe33f68904138b23fee64df7d2f0f # < make -j 120 ARCH=sh O=/home/kisskb/slave/build/linus_sh-randconfig_sh4 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/sh4-linux/bin/sh4-linux- randconfig KCONFIG_SEED=0x47DB47A9 # Added to kconfig CONFIG_STANDALONE=y # yes \n | make -j 120 ARCH=sh O=/home/kisskb/slave/build/linus_sh-randconfig_sh4 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/sh4-linux/bin/sh4-linux- oldconfig yes: standard output: Broken pipe yes: write error # make -j 120 ARCH=sh O=/home/kisskb/slave/build/linus_sh-randconfig_sh4 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/sh4-linux/bin/sh4-linux- make[1]: Entering directory '/home/kisskb/slave/build/linus_sh-randconfig_sh4' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler /home/kisskb/slave/src/Makefile:1095: recipe for target 'prepare-compiler-check' failed make[1]: *** [prepare-compiler-check] Error 1 make[1]: *** Waiting for unfinished jobs.... UPD include/config/kernel.release make[1]: *** wait: No child processes. Stop. Makefile:146: recipe for target 'sub-make' failed make: *** [sub-make] Error 2 Command 'make -j 120 ARCH=sh O=/home/kisskb/slave/build/linus_sh-randconfig_sh4 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/sh4-linux/bin/sh4-linux- ' returned non-zero exit status 2 # rm -rf /home/kisskb/slave/build/linus_sh-randconfig_sh4 # Build took: 0:00:04.493942
© Michael Ellerman 2006-2018.