mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Re: [PATCH 1/2] kbuild: Require a 'make clean' if we detect gcc changed underneath us
@ 2017-12-22 21:58 Guenter Roeck
  2017-12-22 22:15 ` Doug Anderson
  0 siblings, 1 reply; 3+ messages in thread
From: Guenter Roeck @ 2017-12-22 21:58 UTC (permalink / raw)
  To: Douglas Anderson
  Cc: Masahiro Yamada, malat, dave.hansen, yang.s, Matthias Kaehlcke,
	Cao jin, Arnd Bergmann, Mark Charlebois, linux-kernel,
	Josh Poimboeuf, Ingo Molnar

On Thu, Dec 21, 2017 at 05:53:02PM -0800, Douglas Anderson wrote:
> Several people reported that the commit 3298b690b21c ("kbuild: Add a
> cache for generated variables") caused them problems when they updated
> gcc versions.  Specifically the reports all looked something similar
> to this:
> 
> > In file included from ./include/uapi/linux/uuid.h:21:0,
> >                  from ./include/linux/uuid.h:19,
> >                  from ./include/linux/mod_devicetable.h:12,
> >                  from scripts/mod/devicetable-offsets.c:2:
> > ./include/linux/string.h:8:20: fatal error: stdarg.h: No such file or
> >                  directory
> >  #include <stdarg.h>
> 
> Masahiro Yamada determined that the problem was with:
> 
>   NOSTDINC_FLAGS += -nostdinc -isystem $(call shell-cached,$(CC)
>   -print-file-name=include)
> 
> Specifically that the stale result of -print-file-name is stored in
> the cache file.  It was determined that a "make clean" fixed the
> problems in all cases.
> 
> In this particular case we could certainly try to clean just the cache
> when we detect a gcc update, but it seems like overall it's a bad idea
> to do an incremental build when gcc changes.  We should warn the user
> and tell them that they need a 'make clean'.
> 
> Fixes: 3298b690b21c ("kbuild: Add a cache for generated variables")
> Reported-by: Yang Shi <yang.s@alibaba-inc.com>
> Reported-by: Dave Hansen <dave.hansen@intel.com>
> Reported-by: Mathieu Malaterre <malat@debian.org>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>

Unfortunately, it doesn't work as-is. Trying to build for mips with two
different compilers, and trying to run "make clean" with the 2nd compiler
version, results in:

scripts/Kbuild.include:490: *** Detected new CC version (050400 vs 040803).
Please 'make clean'.  Stop.
Makefile:1297: recipe for target '_clean_.' failed
make: *** [_clean_.] Error 2
make: *** Waiting for unfinished jobs....
scripts/Kbuild.include:490: *** Detected new CC version (050400 vs 040803).
Please 'make clean'.  Stop.
Makefile:1297: recipe for target '_clean_arch/mips' failed
make: *** [_clean_arch/mips] Error 2
scripts/Kbuild.include:490: *** Detected new CC version (050400 vs 040803).
Please 'make clean'.  Stop.
Makefile:1297: recipe for target '_clean_arch/mips/boot/dts' failed
make: *** [_clean_arch/mips/boot/dts] Error 2
make: *** wait: No child processes.  Stop.

Guenter

^ permalink raw reply	[flat|nested] 3+ messages in thread
* [PATCH 0/2] kbuild: Fix corner caches with .cache.mk
@ 2017-12-22  1:53 Douglas Anderson
  2017-12-22  1:53 ` [PATCH 1/2] kbuild: Require a 'make clean' if we detect gcc changed underneath us Douglas Anderson
  0 siblings, 1 reply; 3+ messages in thread
From: Douglas Anderson @ 2017-12-22  1:53 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: malat, dave.hansen, yang.s, linux, Douglas Anderson,
	Matthias Kaehlcke, Cao jin, Arnd Bergmann, Marcin Nowakowski,
	Mark Charlebois, linux-kernel, Josh Poimboeuf, Ingo Molnar

This two-patches fixes two corner cases with .cache.mk that have been
reported recently.  Neither problem was catastrophic, but certainly
several people ran into the problem solved by the first patch (can't
build after gcc upgrade) and wasted time debugging, so it's really a
good idea to fix.

For both patches, please make sure to give them an extra thorough
review.  I _think_ I understand enough about $(MAKECMDGOALS), but I'd
never explored that feature of make before writing these patches so
the patches certainly need someone more experienced to give them a
careful look.

I've only got one more day of work before I'm on Christmas vacation
for 2 weeks, so if there are problems with these patches please give
me a bit of time to fix.  ...or, if someone is in a hurry, I wouldn't
object to someone else hijacking them and posting fixes.


Douglas Anderson (2):
  kbuild: Require a 'make clean' if we detect gcc changed underneath us
  kbuild: Don't mess with the .cache.mk when installing

 scripts/Kbuild.include | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

-- 
2.15.1.620.gb9897f4670-goog

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

end of thread, other threads:[~2017-12-22 22:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-22 21:58 [PATCH 1/2] kbuild: Require a 'make clean' if we detect gcc changed underneath us Guenter Roeck
2017-12-22 22:15 ` Doug Anderson
  -- strict thread matches above, loose matches on Subject: below --
2017-12-22  1:53 [PATCH 0/2] kbuild: Fix corner caches with .cache.mk Douglas Anderson
2017-12-22  1:53 ` [PATCH 1/2] kbuild: Require a 'make clean' if we detect gcc changed underneath us Douglas Anderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®