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