Radically improve autogen.sh - cannot build trunk.
Christian Stimming
stimming at tuhh.de
Sun Nov 6 08:54:36 EST 2005
Hi Neil,
sorry that it's you again who runs into all kinds of trouble with this change.
Then main discussion of that change happened on IRC occasionally during the
last weeks, so I assumed that after cleaning up this script good enough then
it should work for all circumstances. Sorry if that is not the case.
* As for ./autogen.sh calling ./configure: autogen and configure are two
orthogonal things; autogen is meant *only* for creating the helper stuff when
you got your code from CVS^H^H^H SVN, whereas configure is meant for each and
every built, regardless whether is came from SVN or from a tarball. Having
autogen.sh automatically calling configure IMHO mixes up these two steps that
aren't necessarily conditioned on each other. Therefore I strongly proposed
(on IRC) and propose to remove that automatic calling convention and instead
have each developer call this in two steps from now on. If configure has
--enable-maintainer-mode, then usually you don't have to call any of the two
yourself, especially with the more recent autotools which will regenerate all
Makefiles before starting the build, if any dependencies (i.e. configure.in)
have been changed.
The point is that autogen.sh has really zero command options, whereas
configure has plenty of them. Passing the configure options to autogen IMHO
messes up the understanding which options should be passed to where. Oh, and
BTW gnucash is pretty much the only project I know that kept to throw these
two steps into one. That's why I thought (after some IRC consensus, although
not without other opinions) that changing this would be okay to almost
everybody.
* As for undefined macros and potentially the wrong autotools versions: The
previous autogen.sh script totally blurred up the actual autotool versions
that will be called. Have you tried to find out which part of the
macros/autogen.sh is actually being used at gnucash and which is not, and
which automake/aclocal/whatever version will really be called? The new
autogen.sh will directly put you, the developer, at the decision line. The
script will call that aclocal/automake/whatever that's available under that
name, *unless* you define AUTOMAKE=automake-1.2.3 before calling that script.
Please look into the script. So if you need to use some non-default versions
of the autotools on darwin, simply define the appropriate env variables
before calling autogen.sh. Or set ACLOCAL_FLAGS accordingly, if some macros
cannot be found. That's not a problem of the autogen.sh script, it's a
problem either of the macros in configure.in or of figuring out the correct
ACLOCAL_FLAGS to be added to aclocal's search path.
* Now about that error message:
> gnucash-design.texinfo:9: @include `version.texi': No such
> file or directory.
I have no idea why this can only be avoided if --enable-maintainer-mode is
given at ./configure. Maybe in configure.in the maintainer-mode is switched
off by default, in order not to mess up someone who builds from a tarball?
Should it be switched on by default? The previous autogen.sh script obviously
added it to the configure cmdline by default, but that blurs up the default
settings even more. Why is that version.texi file not built automatically?
Maybe it should be added to BUILT_SOURCES in src/doc/design/Makefile.am? In
any case the --enable-maintainer-mode seems rather like a whacky workaround
to some real building rules problem somewhere else.
Regards
Christian
More information about the gnucash-devel
mailing list