[Asterisk-Dev] Asterisk make clean and make looping?? (Possible
solution)
Saul Diaz
saul at cripiland.com
Tue Nov 8 17:35:27 MST 2005
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
More information about the asterisk-dev
mailing list