AUTHOR: Tushar Teredesai DATE: 2006-02-14 LICENSE: BSD SYNOPSIS: Installing multiple autotool versions in parallel. DESCRIPTION: GNU's autotools comprises of three packages: * autoconf: * automake: * libtool: Details on how to use these packages can be found at their homepage. Also refer to the autotools hint. There are some misconceptions in the LFS community regarding autotools. Before going into the installation details, we will first tackle these misconceptions. * Misconception: Autotools are a "core" part of a system. Counter argument: These tools are useless for most of the LFSers. They are only useful for folks who are maintaining an autotools based package. Someone compiling a package from source only needs autotools if they have a patch that requires the package to be re-autoconfed. Currently there is a grand total of 4 packages in BLFS and 0 packages in LFS that need autotools. And perhaps, that requirement can be removed if a patch is generated that patches the final files instead of the .in or .am files. * Misconception: I only need the latest version of the tools. Counter argument: The various versions of autotools are not compatible with each other. That is why all the distributions install multiple versions of these packages in parallel. The various autotool versions are more like glib-1.x and glib-2.x series. If a package needs glib-1.x branch, you cannot just expect it to work with glib-2.x branch. The distributions install the following versions of packages: - autoconf: 2.13 2.59 - automake: 1.4-p6 1.5 1.6.3 1.7.9 1.8.5 1.9.6 - libtool: 1.5.20 This hint details a way to install these multiple versions in parallel and allow you to choose which version to use. The general way to only install versions that you need, when you need it. ATTACHMENTS: * http://www.linuxfromscratch.org/hints/downloads/attachments/autotools-multiversion/autoconf-wrapper * http://www.linuxfromscratch.org/hints/downloads/attachments/autotools-multiversion/automake-wrapper (Note: The following patches are optional but recommended) * http://www.linuxfromscratch.org/patches/downloads/autoconf/autoconf-2.13-race.patch * http://www.linuxfromscratch.org/patches/downloads/autoconf/autoconf-2.13-fedora_macro_fixes-1.patch * http://www.linuxfromscratch.org/patches/downloads/automake/automake-1.4-p6-fedora_fixes.patch * http://www.linuxfromscratch.org/patches/downloads/automake/automake-1.5-fedora_fixes.patch PREREQUISITES: None. HINT: The multiple versions will be installed by making use of the --program-suffix argument to the configure script. Then a wrapper script is installed that will use the appropriate version based on the value of an envar. If no variable is declared, the latest version is used. * Installation of autoconf-2.13: patch -Np1 -i ../autoconf-2.13-race.patch patch -Np1 -i ../autoconf-2.13-fedora_macro_fixes-1.patch ./configure --prefix=/usr --program-suffix=-2.13 make acdatadir=/usr/share/autoconf-2.13 make acdatadir=/usr/share/autoconf-2.13 install * Installation of autoconf-2.59: ./configure --prefix=/usr --program-suffix=-2.59 make pkgdatadir=/usr/share/autoconf-2.59 make pkgdatadir=/usr/share/autoconf-2.59 install * Installation of automake-1.4-p6: patch -Np1 -i ../automake-1.4-p6-fedora_fixes.patch ./configure --prefix=/usr --program-suffix=-1.4 make make install rm -v -f /usr/bin/*-1.4-1.4 * Installation of automake-1.5: patch -Np1 -i ../automake-1.5-fedora_fixes.patch ./configure --prefix=/usr --program-suffix=-1.5 make make install rm -v -f /usr/bin/*-1.5-1.5 * Installation of automake-1.6.3: ./configure --prefix=/usr --program-suffix=-1.6 make make install rm -v -f /usr/bin/*-1.6-1.6 * Installation of automake=1.7.9: ./configure --prefix=/usr --program-suffix=-1.7 make make install rm -v -f /usr/bin/*-1.7-1.7 * Installation of automake-1.8.5: ./configure --prefix=/usr --program-suffix=-1.8 make make install rm -v -f /usr/bin/*-1.8-1.8 * Installation of automake-1.9.6: ./configure --prefix=/usr --program-suffix=-1.9 make make install rm -v -f /usr/bin/*-1.9-1.9 * Installation of autoconf-wrapper: install -v autoconf-wrapper /usr/bin ln -v -sf autoconf-wrapper /usr/bin/autoconf ln -v -sf autoconf-wrapper /usr/bin/autoheader ln -v -sf autoconf-wrapper /usr/bin/autom4te ln -v -sf autoconf-wrapper /usr/bin/autoreconf ln -v -sf autoconf-wrapper /usr/bin/autoscan ln -v -sf autoconf-wrapper /usr/bin/autoupdate ln -v -sf autoconf-wrapper /usr/bin/ifnames * Installation of automake-wrapper: install -v automake-wrapper /usr/bin ln -v -sf automake-wrapper /usr/bin/aclocal ln -v -sf automake-wrapper /usr/bin/automake * Installation of libtool-1.5.20: ./configure --prefix=/usr make make install * Using a specific version of autotools: By default, autoconf-2.59 and automake-1.9 are used. To use a particular version of autoconf, export the envar WANT_AUTOCONF. Alternately, run the version specific executable. To use a particular version of automake, export the evnar WANT_AUTOMAKE. Alternately, run the version specific executable. To identify which version you would need to regenerate the files, use the following: * For autoconf, check the file configure. It will have the version of autoconf that was used to generate the package. * For automake, check the file Makefile.in. It will have the version of automake that was used to generate the package. ACKNOWLEDGEMENTS: * Gentoo and Fedora maintainers. CHANGELOG: [2005-12-09] * Initial Version of the hint. [2006-02-14] * Smrutee: Happy Valentine's Day. * Corrected patch download location. Thanks to Geoff Johnson.