| 1 |
AUTHOR: Tushar Teredesai <tushar AT linuxfromscratch DOT org> |
|---|
| 2 |
|
|---|
| 3 |
DATE: 2006-02-14 |
|---|
| 4 |
|
|---|
| 5 |
LICENSE: BSD |
|---|
| 6 |
|
|---|
| 7 |
SYNOPSIS: Installing multiple autotool versions in parallel. |
|---|
| 8 |
|
|---|
| 9 |
DESCRIPTION: |
|---|
| 10 |
GNU's autotools comprises of three packages: |
|---|
| 11 |
* autoconf: <http://www.gnu.org/gnu/autoconf/> |
|---|
| 12 |
* automake: <http://www.gnu.org/gnu/automake/> |
|---|
| 13 |
* libtool: <http://www.gnu.org/gnu/libtool/> |
|---|
| 14 |
Details on how to use these packages can be found at their homepage. Also |
|---|
| 15 |
refer to the autotools hint. |
|---|
| 16 |
|
|---|
| 17 |
There are some misconceptions in the LFS community regarding autotools. Before |
|---|
| 18 |
going into the installation details, we will first tackle these |
|---|
| 19 |
misconceptions. |
|---|
| 20 |
* Misconception: Autotools are a "core" part of a system. |
|---|
| 21 |
Counter argument: These tools are useless for most of the LFSers. They are |
|---|
| 22 |
only useful for folks who are maintaining an autotools based package. |
|---|
| 23 |
Someone compiling a package from source only needs autotools if they have a |
|---|
| 24 |
patch that requires the package to be re-autoconfed. Currently there is a |
|---|
| 25 |
grand total of 4 packages in BLFS and 0 packages in LFS that need autotools. |
|---|
| 26 |
And perhaps, that requirement can be removed if a patch is generated that |
|---|
| 27 |
patches the final files instead of the .in or .am files. |
|---|
| 28 |
* Misconception: I only need the latest version of the tools. |
|---|
| 29 |
Counter argument: The various versions of autotools are not compatible with |
|---|
| 30 |
each other. That is why all the distributions install multiple versions of |
|---|
| 31 |
these packages in parallel. The various autotool versions are more like |
|---|
| 32 |
glib-1.x and glib-2.x series. If a package needs glib-1.x branch, you cannot |
|---|
| 33 |
just expect it to work with glib-2.x branch. The distributions install the |
|---|
| 34 |
following versions of packages: |
|---|
| 35 |
- autoconf: 2.13 2.59 |
|---|
| 36 |
- automake: 1.4-p6 1.5 1.6.3 1.7.9 1.8.5 1.9.6 |
|---|
| 37 |
- libtool: 1.5.20 |
|---|
| 38 |
|
|---|
| 39 |
This hint details a way to install these multiple versions in parallel and |
|---|
| 40 |
allow you to choose which version to use. The general way to only install |
|---|
| 41 |
versions that you need, when you need it. |
|---|
| 42 |
|
|---|
| 43 |
ATTACHMENTS: |
|---|
| 44 |
* http://www.linuxfromscratch.org/hints/downloads/attachments/autotools-multiversion/autoconf-wrapper |
|---|
| 45 |
* http://www.linuxfromscratch.org/hints/downloads/attachments/autotools-multiversion/automake-wrapper |
|---|
| 46 |
(Note: The following patches are optional but recommended) |
|---|
| 47 |
* http://www.linuxfromscratch.org/patches/downloads/autoconf/autoconf-2.13-race.patch |
|---|
| 48 |
* http://www.linuxfromscratch.org/patches/downloads/autoconf/autoconf-2.13-fedora_macro_fixes-1.patch |
|---|
| 49 |
* http://www.linuxfromscratch.org/patches/downloads/automake/automake-1.4-p6-fedora_fixes.patch |
|---|
| 50 |
* http://www.linuxfromscratch.org/patches/downloads/automake/automake-1.5-fedora_fixes.patch |
|---|
| 51 |
|
|---|
| 52 |
PREREQUISITES: |
|---|
| 53 |
None. |
|---|
| 54 |
|
|---|
| 55 |
HINT: |
|---|
| 56 |
|
|---|
| 57 |
The multiple versions will be installed by making use of the --program-suffix |
|---|
| 58 |
argument to the configure script. Then a wrapper script is installed that will |
|---|
| 59 |
use the appropriate version based on the value of an envar. If no variable is |
|---|
| 60 |
declared, the latest version is used. |
|---|
| 61 |
|
|---|
| 62 |
* Installation of autoconf-2.13: |
|---|
| 63 |
patch -Np1 -i ../autoconf-2.13-race.patch |
|---|
| 64 |
patch -Np1 -i ../autoconf-2.13-fedora_macro_fixes-1.patch |
|---|
| 65 |
./configure --prefix=/usr --program-suffix=-2.13 |
|---|
| 66 |
make acdatadir=/usr/share/autoconf-2.13 |
|---|
| 67 |
make acdatadir=/usr/share/autoconf-2.13 install |
|---|
| 68 |
|
|---|
| 69 |
* Installation of autoconf-2.59: |
|---|
| 70 |
./configure --prefix=/usr --program-suffix=-2.59 |
|---|
| 71 |
make pkgdatadir=/usr/share/autoconf-2.59 |
|---|
| 72 |
make pkgdatadir=/usr/share/autoconf-2.59 install |
|---|
| 73 |
|
|---|
| 74 |
* Installation of automake-1.4-p6: |
|---|
| 75 |
patch -Np1 -i ../automake-1.4-p6-fedora_fixes.patch |
|---|
| 76 |
./configure --prefix=/usr --program-suffix=-1.4 |
|---|
| 77 |
make |
|---|
| 78 |
make install |
|---|
| 79 |
rm -v -f /usr/bin/*-1.4-1.4 |
|---|
| 80 |
|
|---|
| 81 |
* Installation of automake-1.5: |
|---|
| 82 |
patch -Np1 -i ../automake-1.5-fedora_fixes.patch |
|---|
| 83 |
./configure --prefix=/usr --program-suffix=-1.5 |
|---|
| 84 |
make |
|---|
| 85 |
make install |
|---|
| 86 |
rm -v -f /usr/bin/*-1.5-1.5 |
|---|
| 87 |
|
|---|
| 88 |
* Installation of automake-1.6.3: |
|---|
| 89 |
./configure --prefix=/usr --program-suffix=-1.6 |
|---|
| 90 |
make |
|---|
| 91 |
make install |
|---|
| 92 |
rm -v -f /usr/bin/*-1.6-1.6 |
|---|
| 93 |
|
|---|
| 94 |
* Installation of automake=1.7.9: |
|---|
| 95 |
./configure --prefix=/usr --program-suffix=-1.7 |
|---|
| 96 |
make |
|---|
| 97 |
make install |
|---|
| 98 |
rm -v -f /usr/bin/*-1.7-1.7 |
|---|
| 99 |
|
|---|
| 100 |
* Installation of automake-1.8.5: |
|---|
| 101 |
./configure --prefix=/usr --program-suffix=-1.8 |
|---|
| 102 |
make |
|---|
| 103 |
make install |
|---|
| 104 |
rm -v -f /usr/bin/*-1.8-1.8 |
|---|
| 105 |
|
|---|
| 106 |
* Installation of automake-1.9.6: |
|---|
| 107 |
./configure --prefix=/usr --program-suffix=-1.9 |
|---|
| 108 |
make |
|---|
| 109 |
make install |
|---|
| 110 |
rm -v -f /usr/bin/*-1.9-1.9 |
|---|
| 111 |
|
|---|
| 112 |
* Installation of autoconf-wrapper: |
|---|
| 113 |
install -v autoconf-wrapper /usr/bin |
|---|
| 114 |
ln -v -sf autoconf-wrapper /usr/bin/autoconf |
|---|
| 115 |
ln -v -sf autoconf-wrapper /usr/bin/autoheader |
|---|
| 116 |
ln -v -sf autoconf-wrapper /usr/bin/autom4te |
|---|
| 117 |
ln -v -sf autoconf-wrapper /usr/bin/autoreconf |
|---|
| 118 |
ln -v -sf autoconf-wrapper /usr/bin/autoscan |
|---|
| 119 |
ln -v -sf autoconf-wrapper /usr/bin/autoupdate |
|---|
| 120 |
ln -v -sf autoconf-wrapper /usr/bin/ifnames |
|---|
| 121 |
|
|---|
| 122 |
* Installation of automake-wrapper: |
|---|
| 123 |
install -v automake-wrapper /usr/bin |
|---|
| 124 |
ln -v -sf automake-wrapper /usr/bin/aclocal |
|---|
| 125 |
ln -v -sf automake-wrapper /usr/bin/automake |
|---|
| 126 |
|
|---|
| 127 |
* Installation of libtool-1.5.20: |
|---|
| 128 |
./configure --prefix=/usr |
|---|
| 129 |
make |
|---|
| 130 |
make install |
|---|
| 131 |
|
|---|
| 132 |
* Using a specific version of autotools: |
|---|
| 133 |
By default, autoconf-2.59 and automake-1.9 are used. |
|---|
| 134 |
|
|---|
| 135 |
To use a particular version of autoconf, export the envar WANT_AUTOCONF. |
|---|
| 136 |
Alternately, run the version specific executable. |
|---|
| 137 |
|
|---|
| 138 |
To use a particular version of automake, export the evnar WANT_AUTOMAKE. |
|---|
| 139 |
Alternately, run the version specific executable. |
|---|
| 140 |
|
|---|
| 141 |
To identify which version you would need to regenerate the files, use the |
|---|
| 142 |
following: |
|---|
| 143 |
* For autoconf, check the file configure. It will have the version of autoconf |
|---|
| 144 |
that was used to generate the package. |
|---|
| 145 |
* For automake, check the file Makefile.in. It will have the version of |
|---|
| 146 |
automake that was used to generate the package. |
|---|
| 147 |
|
|---|
| 148 |
ACKNOWLEDGEMENTS: |
|---|
| 149 |
* Gentoo and Fedora maintainers. |
|---|
| 150 |
|
|---|
| 151 |
CHANGELOG: |
|---|
| 152 |
[2005-12-09] |
|---|
| 153 |
* Initial Version of the hint. |
|---|
| 154 |
[2006-02-14] |
|---|
| 155 |
* Smrutee: Happy Valentine's Day. |
|---|
| 156 |
* Corrected patch download location. Thanks to Geoff Johnson. |
|---|