Hi Behdad, thank you for you helpful feedback! Addressing parts of it:
* Behdad Esfahbod wrote on Fri, Sep 19, 2008 at 01:22:54AM CEST: > Also may be a good idea to instruct tar to not record uid of the user making > the tarball? Is there any way of doing that portably? Otherwise, the only choice I see is to factorize and do it for GNU tar only. > - Parallel make: > > A fellow maintainer had weird problems making a snapshot today, which I turned > out to be caused by him having MAKEFLAGS=-j2. Trying to fix that I found that > automake can be a bit more helpful. Agreed. This is a problem. > Anyway, what would be helpful is if dist-gzip et al (distcheck also?) did > locking as described at the end of automake manual section on Handling Tools > that Produce Many Outputs. That way the implied dist in distcheck and the > dist my release-upload target will require will not race and dist rules will > be run just once. I've tried to wrap my head around this, but I can't seem to get it. The issue here is different; the 'distdir' rule doesn't generate multiple outputs, at least not conceptually. The 'dist' rule does, but that bit is not your problem AFAICS. The issue is that all those dist-TYPE rules remove $(distdir) at the end. If you get more than one of those rules to run, you have a problem, with or without parallel make. Locking won't help either. With GNU make, the rules could enquire whether other dist-TYPE rules are yet to be run, and only remove $(distdir) at the end, but I don't see any way to do this in portably. > The scenario at hand is that we have some make targets to make releasing > easier. In particular: > > release-check: \ > release-verify-sane-changelogs \ > release-verify-sane-tests \ > release-verify-even-micro \ > release-verify-newer \ > release-remove-old \ > distcheck > > release-upload: release-check $(tar_file) $(sha1_file) $(gpg_file) Just let this rule depend on 'dist', rather than on '$(tar_file)'. > mkdir -p releases $(MKDIR_P) (when using Automake 1.10+), or $(mkdir_p) (otherwise). > The problem is that my release-upload rule relies on release-check (by way of > distcheck) create $(tar_file), which is my fault of course. Hmm. So you want locking between 'dist' and 'distcheck'. Same problem as above, IIUC. If somebody sees a way out, I'd be interested to hear it. Cheers, Ralf