[Gpg4win-devel] build problems with installer

Marcus Brinkmann marcus.brinkmann at ruhr-uni-bochum.de
Mon Dec 10 16:17:27 CET 2007


At Mon, 10 Dec 2007 15:30:44 +0100,
Jan-Oliver Wagner wrote:
> I am starting to think we need a bullet proof description
> what to do when updating an exusting build environment.
> It must go to the web page as it is too compliated to search in the
> email archive.
> Well, "bullet proof" does probably not exist as a IT solution, but currently
> every single update needed more than a single try. Usually many tries
> until I got it.

Bullet proof is if you start from an empty directory, download the
source tree with svn, then the packages with download.sh, and then run
autogen.sh and autogen.sh --build-w32 --enable-maintainer-mode,
followed by make.

If you want to work from an existing build tree, you are expected to
know what you do.  We can not automate all steps in upgrading, because
there are too many possibilities for failure.  I want to stress that
compared with your average software package out there, we are already
amazingly efficient and robust in upgrading individual packages.  The
main gripe I have is that moving the downloaded packages from one
checkout to another is inconvenient, so you might end up
redownloading, which is somewhat slow and wasteful.  However, there is
a configure option to pick any directory as your packages directory,
which can compensate for that.

> I did (more or lesss, there we several problems such as that
> I missed some files to delete in the first try and then did several
> autogens until I found out to touch configure.ac which then
> needed another make to have configure.in created etc.):
> 
> $ svn up
> $ cd packages
> $ sh download.sh
> (search for and removed any old package)

Note that configure will bail out with an error if you miss some.

> $ cd ..
> $ make clean

The moment you update some packages, you break your tree.  So you
might just as well do a make distclean before downloading.

If you use make clean or make clean-PACKAGE, you rely on
--enable-maintainer-mode to track dependencies and changes in the
build system for you.  Usually, this should work fine.  I'd still do
the make clean before touching the packages (but in any case before
rerunning configure, which activates the packages list for the build).

Note that versioninfo.txt is built by appending every built package to
a file.  I should change that some day, as this means it is bogus if
you do incremental updates with make clean-PACKAGE.  For you this
means that make clean is a minimum requirement before building a new
installer.  (And this means you can just as well start with a fresh
checkout, as the bunch of the time is in recompiling everything).

> $ ./autogen.sh --build-w32 --enable-maintainer-mode
> $  nice make
> (strangeness, then:)

Apparently, the source package of gpg4win itself was missing.  This is
built by the target stamps/stamp-dist-self in src, which depends on
versioninfo.txt, etc.  I have no idea why this chain of dependencies
didn't work for you.  It is a bit convoluted but does not look buggy
from inspection.

> $ touch configure.ac

Doesn't make much sense if you follow it up with an invocation of
autogen.

> $ ./autogen.sh --build-w32 --enable-maintainer-mode
> $ nice make

Frankly, I don't understand why you even bother with working from a
"used" checkout.  Once you do a make clean, you can just as well start
with a completely fresh SVN checkout.  If downloading the packages
seems a problem, you can use the --with-packages=DIR option to
configure, or we can try to find another solution to avoid
redownloading.

Thanks,
Marcus




More information about the Gpg4win-devel mailing list