MILESTONE and BUILD_NUMBER with new build system

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Mon Oct 29 12:11:38 PDT 2012


On 2012-09-25 03:47, David Holmes wrote:
> Just on one point, the system should automatically determine if you 
> need to re-run configure. It notices if you need to re-run autogen, so 
> I would expect it also notices when configure needs to be re-run. That 
> said I haven't tried it.

Actually, it's not really trivial to determine when you need to re-run 
configure. But the basic rule is "you don't".

Things that might trigger the need to re-run configure:
* Your local environment has changed. Maybe you upgraded Java and 
removed the old JDK, etc. Impossible to test for.
* A recent change you pulled has modified the make files, such that your 
current spec.gmk is incorrect. This has happened quite a lot during 
build-infra development, but is unlikely to happen very often after we 
reach a steady state. This is hard to detect. Maybe not impossible, but 
definitely hard. If this happens seldom enough, it might be that the 
easiest to send a wide-enough mail  about the need  to rerun configure 
after pulling and updating  to a certain build.
* ... and I think that's about it.

That being said, you had an interesting idea with the autogen check. At 
this time, now when I re-read your mail, we have in place a system for 
checking the timestamp of the generated configure script. It would 
certainly be possible to store this timestamp in spec.gmk, and have the 
Makefile compare this timestamp to that of the generaged script each 
time you run make. Then you can catch a situation where the configure 
script is newer than the spec.gmk file, and stop running make, forcing 
the user to re-run configure. (Or re-running it automatically, the 
configure arguments are stored so you just need to run "sh configure 
`cat build/<CONF>/configure-arguments`)

This will probably make sure noone runs with an outdated configuration. 
However, if there are many small changes to configure that does not 
actually require a re-configuration, it will also cause a lot of 
unnecessary work. (But then again, if you do it automatically, maybe 
that's an OK compromise). Or have a target "make reconfigure" that helps 
you re-run configure with the same arguments, then it's not that hard to 
do but you still got some manual control.

/Magnus



More information about the build-infra-dev mailing list