Update lfs-uefi patch
[linux_from_scratch_hints.git] / autotools-multiversion.txt
blobe0dca1ee2b0762e9c6f6975ffe9c2630ec7393cb
1 AUTHOR: Tushar Teredesai <tushar AT linuxfromscratch DOT org>
3 DATE: 2006-02-14
5 LICENSE: BSD
7 SYNOPSIS: Installing multiple autotool versions in parallel.
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.
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
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.
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
52 PREREQUISITES:
53 None.
55 HINT:
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.
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
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
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
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
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
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
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
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
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
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
127 * Installation of libtool-1.5.20:
128     ./configure --prefix=/usr
129     make
130     make install
132 * Using a specific version of autotools:
133 By default, autoconf-2.59 and automake-1.9 are used.
135 To use a particular version of autoconf, export the envar WANT_AUTOCONF.
136 Alternately, run the version specific executable.
138 To use a particular version of automake, export the evnar WANT_AUTOMAKE.
139 Alternately, run the version specific executable.
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.
148 ACKNOWLEDGEMENTS:
149   * Gentoo and Fedora maintainers.
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.