On 2012-02-24 19:19 +0100, Stefano Lattarini wrote:
> On 02/24/2012 06:53 PM, Nick Bowler wrote:
> > On 2012-02-24 18:37 +0100, Stefano Lattarini wrote:
> > [...]
> >> On 02/24/2012 08:09 AM, Nick Bowler wrote:
> >>> Automake should at least add user write permissions to all files in
> >>> distdir prior to running dist-hook (and hence prior to generating the
> >>> distribution tarball).
> >>
> >> I disagree; in case the user wants to change the permission of the
> >> distributed
> >> files from the ones that they have in the builddir/srcdir, he can do so in
> >> the
> >> dist-hook already, with full control (I've just added a tiny test to verify
> >> this behaviour, see attached patch). So we don't need to change the
> >> automake
> >> behaviour in this respect (but a documentation improvement might be nice,
> >> in
> >> case someone feels like writing it).
> >
> > In that case, the manual should include a note that you should not
> > expect "make dist" to work properly with a read-only source tree.
>
> But it's the package that expects its distributed files to be writable
> that is assuming too much; if such package wants its expectation to
> safely hold, it should add something like this in its 'dist-hook':
>
> find $(distdir) -exec chmod u+w '{}' ';'
So I've done this now, but note that this is actually harder than you
make it out to be. If the package adds prerequisites to the dist-hook
target (I find it is generally good practice for -hook and -local
targets to use prerequisites with commands instead of putting commands
directly in those targets) to the dist-hook target, one would want the
permissions to be fixed *before* executing the prerequisite targets.
But this cannot be done by simply adding things directly to the
dist-hook target.
> > Distcheck should also refrain from testing this.
>
> Nope; distcheck testing that the distributed package builds correctly with
> a read-only source tree is a feature, not a bug, since the GCS require this.
I'm not talking about building the package, which absolutely should work
from a read-only source tree. I'm talking about creating a distribution
tarball, with "make dist": something only package maintainers (that's
me!) will generally do.
As it stands, "make dist" currently does not work properly from a
read-only source tree. The tarball generated by my minimal example (an
empty Makefile.am!) is clearly broken, and I would not want to be caught
distributing such a thing.
Cheers,
--
Nick Bowler, Elliptic Technologies (http://www.elliptictech.com/)