Subject: Improvements to "dist" targets (was: Re: EXTRA_DIST, directories, tar --exclude-vcs)

From: Stefano Lattarini <[email-masked]>
Date: Tue, 01 Jan 2013 02:09:24 +0100

Severity: wishlist

Hi Karl.

I'm adding bug-automake in CC, so that this discussion will remain visible
and archived in a singe place, and we won't forget about the issue.

On 01/01/2013 01:38 AM, Karl Berry wrote:
> Stefano and all,
> 
> It would be nice to able to list directories in EXTRA_DIST. 
>
That is already possible:
<http://www.gnu.org/software/automake/manual/automake.html#The-dist-Hook>

> It is painful and unnecessary overhead to list every file in a contrib
> directory individually just to avoid including VC files.  (As explained at
> http://www.gnu.org/software/automake/manual/automake.html#Basics-of-Distribution.)
> 
> I don't propose any major surgery to make it work in every conceivable
> circumstance.  All that is really necessary is to provide a way to pass
> --exclude-vcs to tar.  It would only work with GNU tar, but that is ok.
>
Not if that would be done unconditionally (we don't want to require GNU tar);
but if you are proposing we should make it possible to pass extra arguments
to tar invocations, or to customize them in other ways, than I agree that
would be a nice feature to have.

OTOH, what about distribution "tarballs" in '.zip' format?  They don't
use tar at all ...  Time to deprecate them maybe?  Is anybody actually
using them?  And while at it, what about the even more obscure 'shar'
format?

> What worked for me is to override the definition of am__tar, like this in
> Makefile.am:
>   am__tar = tar --exclude-vcs --format=ustar -chf - "$$tardir"
> 
> Except I don't really want to put this into Makefile.am.  Happily, this
> also worked from the command line:
>   $ env am__tar='tar --exclude-vcs --format=ustar -chf - "$tardir"' make dist
> 
> For that matter, it would be nice if am__tar provided a way to pass
> arbitrary extra options.  Perhaps include something like
> $(AM_TAR_USER_OPTIONS) in the definition? 
> 
> Equivalently, provide a way to override the name "tar", as in
> $(AM_TAR_PROGRAM)?  That might be simplest of all.
>
Yes.  Maybe (just thinking aloud here) it could also help us to eventually
dispense with the horrible "tar-v7", "tar-ustar" and "tar-pax" options.
More stuff pushed at 'make dist' time rather than at configure time; and
less need to be "automagical", since 'dist' is a maintainer target ...

> Along those lines, it would be nice if Automake always used the -chf
> style above.  In some distributions' Makefiles I've seen "chf" (didn't
> look into why);
>
"Historical reasons" would be my first guess.

> that prevents adding options though, due to the vagaries
> of tar command line parsing which we all know.  I have the impression
> that every tar (except maybe really ancient ones, can't remember, but we
> don't care) supports the -style.
>
It would be nice to verify this claim on as much systems as possible
(ignoring museum pieces, of course).

> Sorry for the brain dump of all these possibilities, but wdyt?
> 
See above :-)

Thanks,
  Stefano