bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU make 3.81rc1 released -- please test.


From: James Coleman
Subject: Re: GNU make 3.81rc1 released -- please test.
Date: Mon, 20 Feb 2006 17:17:33 +0000
User-agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)

Hi Paul,

 Build & install on solaris 2.9 (sparc) using gcc (3.4.5) looks fine. make 
check all good.
 Parallel builds for making make as well as building our stuff.

 I see one thing that might be an issue. Not critical I think.
 But it's a change in behaviour anyway and I'd like to run it by you.

 The issue is with echoing a # to file from a Makefile. We use $(shell echo 
"\#...
 This gives us a # in the file with make 3.80.
 With make 3.81 we get a \# in the file.
 We then include that file as a makefile so the \# breaks things.
 I think that is a bug/feature that was fixed.
 Can see some things in ChangeLog that might be it but I cannot see exactly 
what it was.

 It is easy to fix my particular occurence of this but it has the potential to 
break
 various Makefiles. So maybe it is a change that could cause trouble?
 How long has the old behaviour been in make I wonder?
 Would it be worth a mention in NEWS with a "WARNING: Backward-incompatibility" 
maybe?
 Is it the same issue as the backslash-newline?
 It is certainly a very similar issue I think.

 Thanks Paul,

James.


Here are the exact lines we have in the Makefile:

$(shell echo "\#STACKS=\"$(STACKS)\" OBSERVERS=\"$(OBSERVERS)\" BUILD=\"$(BUILD)\"" >$(COMPONENTS_DETAIL_FILE).new)

# We include these files to trigger Make to pick their changes up immediately
include $(COMPONENTS_DETAIL_FILE).new


With make 3.80: (we get a # in file)

cat rps_components.build.new
#STACKS="gb iups" OBSERVERS="report_stats_observer gb_user_context storage gb_pdp_context stats iups_user_context" BUILD="debug"

With GNU Make 3.81rc1: (we get a \# in file)

cat rps_components.build.new
\#STACKS="gb iups" OBSERVERS="report_stats_observer gb_user_context storage gb_pdp_context stats iups_user_context" BUILD="debug"


We get an error like this with make 3.81rc1: (because of \# at start of line)
rps_components.build.new:1: *** missing separator.  Stop.

If we change to echo "#... then make 3.81rc1 is happy, but with make 3.80 we 
get error like this:
Makefile:363: *** unterminated call to function `shell': missing `)'.  Stop.


Easy for us to fix for either version.
Of course we don't need that line to be a comment so we can fix our Makefile
to work with both 3.80 and 3.81 as follows:
$(shell echo "$(PROG)STACKS=\"$(STACKS)\" $(PROG)OBSERVERS=\"$(OBSERVERS)\" $(PROG)BUILD=\"$(BUILD)\"" >$(COMPONENTS_DETAIL_FILE).new)

Anyone wishing to have a line beginning with a # has a difficulty.
Not sure would it be easy to fix and be compatible with both make 3.80 and 
3.81rc1?






reply via email to

[Prev in Thread] Current Thread [Next in Thread]