bug-automake
[Top][All Lists]
Advanced

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

make dist improvements


From: Behdad Esfahbod
Subject: make dist improvements
Date: Thu, 18 Sep 2008 19:22:54 -0400
User-agent: Thunderbird 2.0.0.14 (X11/20080501)

Hi again,

We're finally getting that cairo snapshot out, so here's some rambling about
"make dist" improvements:


- Sticky bits:

We've had problems before that cairo tarballs have included files with sticky
bits set.  So we added a rule ourselves to clean up of any sticky bits.  But
since I see automake already does some sanity:

find cairo-1.7.6 -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
          ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
          ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
          ! -type d ! -perm -444 -exec /bin/sh
/home/behdad/src/git/fd.o/cairo/build/install-sh -c -m a+r {} {} \; \
        || chmod -R a+r cairo-1.7.6

thought maybe it's a good idea to do that too.

Also may be a good idea to instruct tar to not record uid of the user making
the tarball?


- 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.

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)
        mkdir -p releases
        ...

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.  I can add a rule:

$(tar_file): dist

But then dist and distcheck will be run in parallel which is not good.  One
suggestion here is to make automake generate rules for things like
"$distdir.tar.gz: dist-gzip", but that's a separate thing.

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.


Cheers,

behdad




reply via email to

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