Re: kbuild: prevent make from deleting _shipped files

From: Peter Foley
Date: Sun Jul 31 2011 - 13:11:06 EST


On Sun, 31 Jul 2011, Arnaud Lacombe wrote:

> Hi,
>
> On Sun, Jul 31, 2011 at 12:21 PM, Arnaud Lacombe <lacombar@xxxxxxxxx> wrote:
> > Hi,
> >
> > On Sun, Jul 31, 2011 at 11:37 AM, Peter Foley <pefoley2@xxxxxxxxxxx> wrote:
> >> commit 7373f4f (kbuild: add implicit rules for parser generation)
> >> created a implicit rule chain (%.c: %.c_shipped: %.y). This causes make to delete the _shipped files
> >> because it considers them intermediate files. Mark the _shipped files PRECIOUS
> >> to prevent make from deleting them.
> >>
> >> Signed-off-by: Peter Foley <pefoley2@xxxxxxxxxxx>
> > What make are you using, and what command triggers the issue ?
> >
> > Those rules should only be visible on parser regeneration (ie.
> > REGENERATE_PARSERS defined). make 3.82 does not seem to trigger the
> > issue:
> >
> > % make -v
> > GNU Make 3.82
> >
> > % make REGENERATE_PARSERS=y defconfig
> >  HOSTCC  scripts/basic/fixdep
> >  HOSTCC  scripts/kconfig/conf.o
> >  SHIPPED scripts/kconfig/zconf.tab.c
> >  SHIPPED scripts/kconfig/zconf.lex.c
> >  SHIPPED scripts/kconfig/zconf.hash.c
> >  HOSTCC  scripts/kconfig/zconf.tab.o
> >  HOSTLD  scripts/kconfig/conf
> > *** Default configuration is based on 'x86_64_defconfig'
> > [...]
> >
> > The shipped file are still there:
> >
> > % ls scripts/kconfig/*_shipped
> > scripts/kconfig/zconf.hash.c_shipped
> > scripts/kconfig/zconf.lex.c_shipped
> > scripts/kconfig/zconf.tab.c_shipped
> >
> a bare make-3.81 from ftp.gnu.org built on a Fedora 14 behave the same.
>
> I definitively needs enlightenment on this one :)
>
> Thanks,
>  - Arnaud

The problem only appears when the parsers are actually rebuilt.
rm scripts/kconfig/*_shipped
make REGENERATE_PARSERS=1 defconfig

HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
YACC scripts/kconfig/zconf.tab.c_shipped
SHIPPED scripts/kconfig/zconf.tab.c
LEX scripts/kconfig/zconf.lex.c_shipped
SHIPPED scripts/kconfig/zconf.lex.c
GPERF scripts/kconfig/zconf.hash.c_shipped
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
scripts/kconfig/zconf.tab.c: In function 'header_print_comment':
scripts/kconfig/confdata.c:551:10: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result [-Wunused-result]
scripts/kconfig/zconf.tab.c: In function 'kconfig_print_comment':
scripts/kconfig/confdata.c:467:10: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result [-Wunused-result]
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'x86_64_defconfig'
#
# configuration written to .config
#
rm scripts/kconfig/zconf.hash.c_shipped scripts/kconfig/zconf.tab.c_shipped scripts/kconfig/zconf.lex.c_shipped

Thanks,

Peter