[Asterisk-Dev] Asterisk make clean and make looping?? (Possiblesolution)

Soner Tari list at kulustur.org
Sun Nov 20 20:49:45 MST 2005


It's been another 12 days, but this issue still exists in newly released 1.2 
and in CVS-HEAD afaics (I've just checked out and tried to compile). Saul's 
workaround works for me, but it's not on CVS. Has anybody submitted a bug 
report to issue tracker for this yet?

----- Original Message ----- 
From: "Saul Diaz" <saul at cripiland.com>
To: "Asterisk Developers Mailing List" <asterisk-dev at lists.digium.com>
Sent: Wednesday, November 09, 2005 2:35 AM
Subject: Re: [Asterisk-Dev] Asterisk make clean and make looping?? 
(Possiblesolution)


> David Taylor wrote:
>
> I remove FORCE in version.h.tmp and works like a champ ;)
>
> that's not the solution.. just  a simple work around
>
> regards
> Saul
>
>> Reviving this from a few days ago ...
>>
>> I think you'll be needing to look at this one Kevin because it does
>> appear that "the logic in the Makefile is faulty" and you were the man 
>> who submitted the offending changes to CVS :-)
>>
>> Kevin P. Fleming wrote the following on Thu Nov 3rd:
>>
>>> Robert Webb wrote:
>>>
>>> > If I manually run the make_version_h script as shown in the
>>> Makefile, I > get an output. Not sure if it might have something the do 
>>> with the $@ > variable when the .tmp gets made.
>>>
>>> Then something is wrong with 'cmp' on your system, or the logic in the 
>>> Makefile is faulty. Please try to execute the steps from the Makefile 
>>> one at a time and see what happens; what should be happening is that the 
>>> temp file gets created and then removed, without overwriting version.h 
>>> if the contents are going to be the same.
>>
>>
>> I've experienced the same problem since moving recently to the Beta 
>> releases.
>>
>> The problem occurs when using sources checked out of the CVS tree where
>> a specific CVS-Tag is specified.  In this case the Makefile variable
>> ASTERISKVERSION incorporates the current date and time.  So, each time
>> 'build_tools/make_version_h' is run the version number (ASTERISKVERSION)
>> changes.  The 'cmp -s' correctly determines that the files are not the
>> same and 'include/asterisk/version.h' of course gets updated.
>>
>> Now, adding the date and time to the CVS tag info just doesn't make sense 
>> to me, so I've been editing the line:
>>
>> ASTERISKVERSION=$(shell echo "CVS-`sed 's/^T//g' CVS/Tag`-`date 
>> +"%D-%T"`")
>>  to read
>> ASTERISKVERSION=$(shell echo "CVS-`sed 's/^T//g' CVS/Tag`")
>>
>> This works for me and it might be part of the answer, but it doesn't 
>> explain
>> the looping behavior.  I think you'll find that this has a couple of 
>> things
>> contributing to the problem.  Firstly, the targets 'depend' and '.depend' 
>> both depend on 'version.h'.  And a number of things depend on these.
>> AND, if '.depend' exists then it gets included in the Makefile, so this 
>> has
>> me wondering whether (a) we should expect to always be out-of-sync-by-one 
>> on the version of '.depend' or (b) this is perhaps the cause of our 
>> little loop.
>>
>> If my analysis is correct, the problem appears to have been introduced in
>> version 1.164 (CVS comment = "major Makefile and build process 
>> improvements").
>> It also appears to exist in the current CVS HEAD version 1.223.  And 
>> Kevin,
>> I believe this was your work :-)  So, I'm hoping you know what was really 
>> intended so it can be fixed in line with that intention.
>>
>> BTW.  A little something worthy of note for those trying to come to terms
>> with the magic that happens in Makefiles, $(shell) actually gets 
>> evaluated
>> (almost) every time it is used.  For instance, try the following short 
>> Makefile:
>>
>> ASTERISKVERSION=$(shell echo "`date +"%D-%T"`")
>>
>> all: a b
>>    @echo All ${ASTERISKVERSION}
>>    @sleep 3
>>    @echo All ${ASTERISKVERSION}
>>
>> a:
>>    @echo AAA ${ASTERISKVERSION}
>>    @sleep 2
>>
>> b:
>>    @echo BBB ${ASTERISKVERSION}
>>    @sleep 2
>>
>>
>> That will yield something similar to the following (using GNU make 
>> version 3.80):
>>
>> AAA 11/09/05-11:12:46
>> BBB 11/09/05-11:12:48
>> All 11/09/05-11:12:50
>> All 11/09/05-11:12:50
>>
>>
>> Kevin.  I suspect that you (and others) probably haven't fallen over this 
>> one because your environment differs from those who have experienced 
>> this.  I suspect this is because you are using the CVS HEAD for which the 
>> Makefile
>> probably works as expected.
>>
>> Hoping my comments have helped to move this one along.
>> David.
>>
>>
>> _______________________________________________
>> Asterisk-Dev mailing list
>> Asterisk-Dev at lists.digium.com
>> http://lists.digium.com/mailman/listinfo/asterisk-dev
>> To UNSUBSCRIBE or update options visit:
>>   http://lists.digium.com/mailman/listinfo/asterisk-dev
>
>
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
>   http://lists.digium.com/mailman/listinfo/asterisk-dev 




More information about the asterisk-dev mailing list