Henrik Nordstrom wrote:
mån 2010-04-19 klockan 23:25 +0000 skrev Amos Jeffries:

-       $(AWK) -f $(srcdir)/mk-globals-c.awk < $(srcdir)/globals.h > $@ ||
$(RM) -f $@ && exit 1
+       $(AWK) -f $(srcdir)/mk-globals-c.awk < $(srcdir)/globals.h > $@ ||
$(RM) -f $@
Why?

I had bound the exit(1) to success of the rm command, not failure of the
awk. When we get time to sort out the shell nesting of automake it needs to
be added back in to ensure the make runs exit on awk failure.

Sure you had.

awk ok -> SUCCESS
awk fail -> rm
   rm fail -> FAILURE
   rm ok -> exit 1 == FAILURE

exit in this context is just to make the shell command return an error
so make stops. rm failing is in itself an error and no explicit exit
with an error is needed in that case. If you absolutely want exit to be
called in both cases then group rm & exit

        $(AWK) -f $(srcdir)/mk-globals-c.awk < $(srcdir)/globals.h > $@ || 
($(RM) -f $@ ;exit 1)

but I prefer your original

        $(AWK) -f $(srcdir)/mk-globals-c.awk < $(srcdir)/globals.h > $@ || $(RM) -f $@ 
&& exit 1

the effect of both is the same, and your original is both clearer and more 
efficient.

Regards
Henrik


Thanks for confirming my initial logic.

What hudson was showing was build always exiting at the first of these files. Even in the "awk ok -> SUCCESS" case. That needs to be figured out before "&& exit 1" can go back on.

Amos
--
Please be using
  Current Stable Squid 2.7.STABLE9 or 3.1.1

Reply via email to