[Top][All Lists]

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

Re: make dist improvements

From: Ralf Wildenhues
Subject: Re: make dist improvements
Date: Mon, 22 Sep 2008 22:39:29 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

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.


reply via email to

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