On Thu, 23 Mar 2006, David Berry wrote:
> There seems to be a bug in the way the "make dist" targets are working.
> For instance, if I do a complete new checkout of cupid, and then do
>
> % ./bootstrap
> % ./configure
> % make dist
>
> the resulting cupid-xxx.tar.gz file does not contain the ancillary files
> (install_sh, missing, etc) needed by the distributed configure script, so
> configuring the distribution fails. If I then (without doing a new cvs
> checkout or update or anything) do:
>
> % ./bootstrap
> % ./configure
> % make dist
>
> again, the resulting distributon tar file *does* include the ancillary
> files and the distribution can be configured succesfully.
>
> After the first bootstrap, Makefile.in contains:
>
> DIST_COMMON = $(am__configure_deps) $(dist_bin_SCRIPTS) \
> $(dist_noinst_SCRIPTS) $(dist_starnews_DATA) \
> $(srcdir)/../config.guess $(srcdir)/../config.sub \
> $(srcdir)/../depcomp $(srcdir)/../install-sh \
> $(srcdir)/../ltmain.sh $(srcdir)/../missing \
> $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
> $(srcdir)/component.xml.in $(srcdir)/cupid.ifd.in \
> $(srcdir)/make_doc.in $(srcdir)/make_h.in \
> $(srcdir)/make_history_help.in $(srcdir)/make_quickdes.in \
> $(stardocs_DATA) $(top_srcdir)/configure clumps.ifl \
> cupidhelp.ifl makeclumps.ifl
>
> This seems like it is trying to distribute the ancillary files from the
> parent directory (the current directory does not yet contain the ancillary
> files at this point, but the parent directory does).
>
> Then, the "make dist" step seems to be copying the ancillary files from
> ../missing (for instance) to $(distdir)/../missing. That is, the directory
> path "../" is not being stripped of the destination file name. So the
> ancillary files end up in the current ( i.e. $(srcdir) ) directory rather
> than the intended $(distdir) directory.
>
> So, the next time I run ./bootstrap, it finds the ancillary files in the
> current directory and creates a different Makefile.in containing
>
> DIST_COMMON = $(am__configure_deps) $(dist_bin_SCRIPTS) \
> $(dist_noinst_SCRIPTS) $(dist_starnews_DATA) \
> $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
> $(srcdir)/component.xml.in $(srcdir)/cupid.ifd.in \
> $(srcdir)/make_doc.in $(srcdir)/make_h.in \
> $(srcdir)/make_history_help.in $(srcdir)/make_quickdes.in \
> $(stardocs_DATA) $(top_srcdir)/configure clumps.ifl \
> config.guess config.sub cupidhelp.ifl depcomp install-sh \
> ltmain.sh makeclumps.ifl missing
>
> i.e. the ancillary files are now being picked up from the current
> directory rather than the parent directory. And so when you do the next
> "make dist" there is no "../" in the file path and so the files get copied
> correctly to $(distdir).
>
> Do any of you CVS/build system chaps know what should be done about this?
Hi David,
from a look at this I'd say the story runs slightly contrary to what
you're expecting and in fact the error here is that install-sh and friends
ever get into your distribution (and is probably a bug in automake's
logic).
What you're doing wrong is creating this distribution within the context
of a full tree (where I presume you've already done a "make world"). When
doing a "make dist" in that context, the assumption is that this is part
of a recursive dist and there should be only one install-sh etc., all of
which are located by relative positions.
So the way to do a single package "make dist" is to check it out by itself
and use that (this is what Steve does for the single package builds and
why his "make dist" tarballs are correct).
Norman may know better of course...
Cheers,
Peter.
|