Zack Weinberg wrote:
> Literally as I type this I am
> watching gettext 0.22 run its ridiculous number of configure scripts a
> second time from inside `make`.

I'm glad that you didn't write "its ridiculously large configure scripts" :-)

Jokes aside, it's highly unusual that 'configure' runs twice, when you
haven't made modifications. I routinely build packages from ftp.gnu.org
tarballs on 20 different platforms, but always on the local file system.
You can run into such problems:
  - if you take a tarball of a git repository that contains the generated
    'configure' file, or
  - if you are on some networked file system (for example, a file system
    with bidirectional rsync).

> > Does "make dist" need to touch configure to ensure that it is newer
> > than its dependencies before rolling the tarball?
> 
> It ought to, but I don't think that will be more than a marginal
> improvement, and touching the top-level configure won't be enough,
> you'd need to do a full topological sort on the dependency graph
> leading into every configure + every Makefile.in + every other
> generated-but-shipped file and make sure that each tier of generated
> files is newer than its inputs.

That might be overkill. For simple packages with 1 configure script,
the following is sufficient in my experience:

  # Bring the time stamps into an order that will not require autoconf, 
automake, etc. to run again.
  sleep 1; touch aclocal.m4
  sleep 1; touch configure
  sleep 1; touch config.h.in
  sleep 1; touch `find . -name Makefile.in -type f`

Bruno




Reply via email to