diff mbox

kbuild: prevent make from deleting _shipped files

Message ID alpine.LNX.2.00.1107311134490.30666@linux (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Foley July 31, 2011, 3:37 p.m. UTC
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@verizon.net>
---

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Arnaud Lacombe July 31, 2011, 4:58 p.m. UTC | #1
Hi,

On Sun, Jul 31, 2011 at 12:21 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
> Hi,
>
> On Sun, Jul 31, 2011 at 11:37 AM, Peter Foley <pefoley2@verizon.net> 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@verizon.net>
> 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
>
>> ---
>>
>> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
>> index aeea84a..5d986d9 100644
>> --- a/scripts/Makefile.lib
>> +++ b/scripts/Makefile.lib
>> @@ -167,6 +167,7 @@ ifdef REGENERATE_PARSERS
>>  quiet_cmd_gperf = GPERF $@
>>       cmd_gperf = gperf -t --output-file $@ -a -C -E -g -k 1,3,$$ -p -t $<
>>
>> +.PRECIOUS: $(src)/%.hash.c_shipped
>>  $(src)/%.hash.c_shipped: $(src)/%.gperf
>>        $(call cmd,gperf)
>>
>> @@ -177,6 +178,7 @@ LEX_PREFIX = $(if $(LEX_PREFIX_${baseprereq}),$(LEX_PREFIX_${baseprereq}),yy)
>>  quiet_cmd_flex = LEX     $@
>>       cmd_flex = flex -o$@ -L -P $(LEX_PREFIX) $<
>>
>> +.PRECIOUS: $(src)/%.lex.c_shipped
>>  $(src)/%.lex.c_shipped: $(src)/%.l
>>        $(call cmd,flex)
>>
>> @@ -187,12 +189,14 @@ YACC_PREFIX = $(if $(YACC_PREFIX_${baseprereq}),$(YACC_PREFIX_${baseprereq}),yy)
>>  quiet_cmd_bison = YACC    $@
>>       cmd_bison = bison -o$@ -t -l -p $(YACC_PREFIX) $<
>>
>> +.PRECIOUS: $(src)/%.tab.c_shipped
>>  $(src)/%.tab.c_shipped: $(src)/%.y
>>        $(call cmd,bison)
>>
>>  quiet_cmd_bison_h = YACC    $@
>>       cmd_bison_h = bison -o/dev/null --defines=$@ -t -l -p $(YACC_PREFIX) $<
>>
>> +.PRECIOUS: $(src)/%.tab.h_shipped
>>  $(src)/%.tab.h_shipped: $(src)/%.y
>>        $(call cmd,bison_h)
>>
>>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Peter Foley July 31, 2011, 5:08 p.m. UTC | #2
On Sun, 31 Jul 2011, Arnaud Lacombe wrote:

> Hi,
> 
> On Sun, Jul 31, 2011 at 12:21 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
> > Hi,
> >
> > On Sun, Jul 31, 2011 at 11:37 AM, Peter Foley <pefoley2@verizon.net> 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@verizon.net>
> > 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
Arnaud Lacombe July 31, 2011, 5:22 p.m. UTC | #3
Hi,

On Sun, Jul 31, 2011 at 1:08 PM, Peter Foley <pefoley2@verizon.net> wrote:
> On Sun, 31 Jul 2011, Arnaud Lacombe wrote:
>
>> Hi,
>>
>> On Sun, Jul 31, 2011 at 12:21 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
>> > Hi,
>> >
>> > On Sun, Jul 31, 2011 at 11:37 AM, Peter Foley <pefoley2@verizon.net> 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@verizon.net>
>> > 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
>
What version of make are you using ?

I still can not reproduce with either make-3.81 or make-3.82:

% touch scripts/kconfig/*.[ylg]*
% make-3.81 REGENERATE_PARSERS=y defconfig
  YACC    scripts/kconfig/zconf.tab.c_shipped
  SHIPPED scripts/kconfig/zconf.tab.c
  GPERF scripts/kconfig/zconf.hash.c_shipped
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
*** Default configuration is based on 'x86_64_defconfig'
#
# configuration written to .config
#

% touch scripts/kconfig/*.[ylg]*
% make REGENERATE_PARSERS=y defconfig
  YACC    scripts/kconfig/zconf.tab.c_shipped
  SHIPPED scripts/kconfig/zconf.tab.c
  GPERF scripts/kconfig/zconf.hash.c_shipped
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
*** Default configuration is based on 'x86_64_defconfig'
#
# configuration written to .config
#

Thanks,
 - Arnaud

> Thanks,
>
> Peter
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnaud Lacombe July 31, 2011, 5:25 p.m. UTC | #4
Hi,

On Sun, Jul 31, 2011 at 1:08 PM, Peter Foley <pefoley2@verizon.net> wrote:
> On Sun, 31 Jul 2011, Arnaud Lacombe wrote:
>
>> Hi,
>>
>> On Sun, Jul 31, 2011 at 12:21 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
>> > Hi,
>> >
>> > On Sun, Jul 31, 2011 at 11:37 AM, Peter Foley <pefoley2@verizon.net> 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@verizon.net>
>> > 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
^^^^^

This is why. You do not (or at least no longer) need to remove the
*_shipped files before regenerating them.

 - Arnaud

> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Peter Foley July 31, 2011, 5:37 p.m. UTC | #5
On Sun, 31 Jul 2011, Arnaud Lacombe wrote:

> Hi,
> 
> On Sun, Jul 31, 2011 at 1:08 PM, Peter Foley <pefoley2@verizon.net> wrote:
> > On Sun, 31 Jul 2011, Arnaud Lacombe wrote:
> >
> >> Hi,
> >>
> >> On Sun, Jul 31, 2011 at 12:21 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
> >> > Hi,
> >> >
> >> > On Sun, Jul 31, 2011 at 11:37 AM, Peter Foley <pefoley2@verizon.net> 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@verizon.net>
> >> > 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
> ^^^^^
> 
> This is why. You do not (or at least no longer) need to remove the
> *_shipped files before regenerating them.
> 
>  - Arnaud

Ok, I deleted the _shipped files as a easy way to force regeneration but 
touching the source files works just as well.
Please disregard this patch.


Thanks,

Peter
Arnaud Lacombe July 31, 2011, 6:37 p.m. UTC | #6
Hi,

On Sun, Jul 31, 2011 at 1:37 PM, Peter Foley <pefoley2@verizon.net> wrote:
> On Sun, 31 Jul 2011, Arnaud Lacombe wrote:
>
>> Hi,
>>
>> On Sun, Jul 31, 2011 at 1:08 PM, Peter Foley <pefoley2@verizon.net> wrote:
>> > On Sun, 31 Jul 2011, Arnaud Lacombe wrote:
>> >
>> >> Hi,
>> >>
>> >> On Sun, Jul 31, 2011 at 12:21 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
>> >> > Hi,
>> >> >
>> >> > On Sun, Jul 31, 2011 at 11:37 AM, Peter Foley <pefoley2@verizon.net> 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@verizon.net>
>> >> > 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
>> ^^^^^
>>
>> This is why. You do not (or at least no longer) need to remove the
>> *_shipped files before regenerating them.
>>
>>  - Arnaud
>
> Ok, I deleted the _shipped files as a easy way to force regeneration but
> touching the source files works just as well.
> Please disregard this patch.
>
I think it is still valuable, especially when _shipped files are
created, we want make to keep them. Could you update the changelog to
mention in which case this is happening and re-send ?

Thanks,
 - Arnaud
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnaud Lacombe July 31, 2011, 7:03 p.m. UTC | #7
Hi,

On Sun, Jul 31, 2011 at 2:45 PM, Peter Foley <pefoley2@verizon.net> wrote:
> commit 7373f4f (kbuild: add implicit rules for parser generation)
> created a implicit rule chain (%.c: %.c_shipped: %.y).
> Make considers the _shipped files to be intermediate files which
> causes them to be deleted if they didn't exist before make was run.
> Mark the _shipped files PRECIOUS to prevent make from deleting them.
>
> Signed-off-by: Peter Foley <pefoley2@verizon.net>

Acked-by: Arnaud Lacombe <lacombar@gmail.com>

 - Arnaud

> ---
>
> V2: update changelog to specify files are only deleted when they did not
> already exist
>
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index aeea84a..5d986d9 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -167,6 +167,7 @@ ifdef REGENERATE_PARSERS
>  quiet_cmd_gperf = GPERF $@
>       cmd_gperf = gperf -t --output-file $@ -a -C -E -g -k 1,3,$$ -p -t $<
>
> +.PRECIOUS: $(src)/%.hash.c_shipped
>  $(src)/%.hash.c_shipped: $(src)/%.gperf
>        $(call cmd,gperf)
>
> @@ -177,6 +178,7 @@ LEX_PREFIX = $(if $(LEX_PREFIX_${baseprereq}),$(LEX_PREFIX_${baseprereq}),yy)
>  quiet_cmd_flex = LEX     $@
>       cmd_flex = flex -o$@ -L -P $(LEX_PREFIX) $<
>
> +.PRECIOUS: $(src)/%.lex.c_shipped
>  $(src)/%.lex.c_shipped: $(src)/%.l
>        $(call cmd,flex)
>
> @@ -187,12 +189,14 @@ YACC_PREFIX = $(if $(YACC_PREFIX_${baseprereq}),$(YACC_PREFIX_${baseprereq}),yy)
>  quiet_cmd_bison = YACC    $@
>       cmd_bison = bison -o$@ -t -l -p $(YACC_PREFIX) $<
>
> +.PRECIOUS: $(src)/%.tab.c_shipped
>  $(src)/%.tab.c_shipped: $(src)/%.y
>        $(call cmd,bison)
>
>  quiet_cmd_bison_h = YACC    $@
>       cmd_bison_h = bison -o/dev/null --defines=$@ -t -l -p $(YACC_PREFIX) $<
>
> +.PRECIOUS: $(src)/%.tab.h_shipped
>  $(src)/%.tab.h_shipped: $(src)/%.y
>        $(call cmd,bison_h)
>
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnaud Lacombe Aug. 30, 2011, 12:27 a.m. UTC | #8
Hi,

On Sun, Jul 31, 2011 at 3:03 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
> Hi,
>
> On Sun, Jul 31, 2011 at 2:45 PM, Peter Foley <pefoley2@verizon.net> wrote:
>> commit 7373f4f (kbuild: add implicit rules for parser generation)
>> created a implicit rule chain (%.c: %.c_shipped: %.y).
>> Make considers the _shipped files to be intermediate files which
>> causes them to be deleted if they didn't exist before make was run.
>> Mark the _shipped files PRECIOUS to prevent make from deleting them.
>>
>> Signed-off-by: Peter Foley <pefoley2@verizon.net>
>
> Acked-by: Arnaud Lacombe <lacombar@gmail.com>
>
ping, Michal ?

 - Arnaud

>  - Arnaud
>
>> ---
>>
>> V2: update changelog to specify files are only deleted when they did not
>> already exist
>>
>> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
>> index aeea84a..5d986d9 100644
>> --- a/scripts/Makefile.lib
>> +++ b/scripts/Makefile.lib
>> @@ -167,6 +167,7 @@ ifdef REGENERATE_PARSERS
>>  quiet_cmd_gperf = GPERF $@
>>       cmd_gperf = gperf -t --output-file $@ -a -C -E -g -k 1,3,$$ -p -t $<
>>
>> +.PRECIOUS: $(src)/%.hash.c_shipped
>>  $(src)/%.hash.c_shipped: $(src)/%.gperf
>>        $(call cmd,gperf)
>>
>> @@ -177,6 +178,7 @@ LEX_PREFIX = $(if $(LEX_PREFIX_${baseprereq}),$(LEX_PREFIX_${baseprereq}),yy)
>>  quiet_cmd_flex = LEX     $@
>>       cmd_flex = flex -o$@ -L -P $(LEX_PREFIX) $<
>>
>> +.PRECIOUS: $(src)/%.lex.c_shipped
>>  $(src)/%.lex.c_shipped: $(src)/%.l
>>        $(call cmd,flex)
>>
>> @@ -187,12 +189,14 @@ YACC_PREFIX = $(if $(YACC_PREFIX_${baseprereq}),$(YACC_PREFIX_${baseprereq}),yy)
>>  quiet_cmd_bison = YACC    $@
>>       cmd_bison = bison -o$@ -t -l -p $(YACC_PREFIX) $<
>>
>> +.PRECIOUS: $(src)/%.tab.c_shipped
>>  $(src)/%.tab.c_shipped: $(src)/%.y
>>        $(call cmd,bison)
>>
>>  quiet_cmd_bison_h = YACC    $@
>>       cmd_bison_h = bison -o/dev/null --defines=$@ -t -l -p $(YACC_PREFIX) $<
>>
>> +.PRECIOUS: $(src)/%.tab.h_shipped
>>  $(src)/%.tab.h_shipped: $(src)/%.y
>>        $(call cmd,bison_h)
>>
>>
>>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michal Marek Aug. 31, 2011, 2:36 p.m. UTC | #9
On 31.7.2011 21:03, Arnaud Lacombe wrote:
> Hi,
> 
> On Sun, Jul 31, 2011 at 2:45 PM, Peter Foley <pefoley2@verizon.net> wrote:
>> commit 7373f4f (kbuild: add implicit rules for parser generation)
>> created a implicit rule chain (%.c: %.c_shipped: %.y).
>> Make considers the _shipped files to be intermediate files which
>> causes them to be deleted if they didn't exist before make was run.
>> Mark the _shipped files PRECIOUS to prevent make from deleting them.
>>
>> Signed-off-by: Peter Foley <pefoley2@verizon.net>
> 
> Acked-by: Arnaud Lacombe <lacombar@gmail.com>

Applied to kbuild-2.6.git#kbuild.

Thanks,
Michal
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index aeea84a..5d986d9 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -167,6 +167,7 @@  ifdef REGENERATE_PARSERS
 quiet_cmd_gperf = GPERF $@
       cmd_gperf = gperf -t --output-file $@ -a -C -E -g -k 1,3,$$ -p -t $<
 
+.PRECIOUS: $(src)/%.hash.c_shipped
 $(src)/%.hash.c_shipped: $(src)/%.gperf
 	$(call cmd,gperf)
 
@@ -177,6 +178,7 @@  LEX_PREFIX = $(if $(LEX_PREFIX_${baseprereq}),$(LEX_PREFIX_${baseprereq}),yy)
 quiet_cmd_flex = LEX     $@
       cmd_flex = flex -o$@ -L -P $(LEX_PREFIX) $<
 
+.PRECIOUS: $(src)/%.lex.c_shipped
 $(src)/%.lex.c_shipped: $(src)/%.l
 	$(call cmd,flex)
 
@@ -187,12 +189,14 @@  YACC_PREFIX = $(if $(YACC_PREFIX_${baseprereq}),$(YACC_PREFIX_${baseprereq}),yy)
 quiet_cmd_bison = YACC    $@
       cmd_bison = bison -o$@ -t -l -p $(YACC_PREFIX) $<
 
+.PRECIOUS: $(src)/%.tab.c_shipped
 $(src)/%.tab.c_shipped: $(src)/%.y
 	$(call cmd,bison)
 
 quiet_cmd_bison_h = YACC    $@
       cmd_bison_h = bison -o/dev/null --defines=$@ -t -l -p $(YACC_PREFIX) $<
 
+.PRECIOUS: $(src)/%.tab.h_shipped
 $(src)/%.tab.h_shipped: $(src)/%.y
 	$(call cmd,bison_h)