Build tools standard redux
- From: Malcolm Tredinnick <malcolm commsecure com au>
- To: desktop-devel-list gnome org
- Subject: Build tools standard redux
- Date: Sun, 16 Feb 2003 13:01:36 +1100
The thread from a week ago that Dan Mills started about build tools
seems to have petered out without any clear resolution (in GNOME? How
surprising .. not). It cannot be left like that, since we are already in
trouble and need to work out a solution.
In this mail I have tried to summarise what different people's comments
were and also the current state of the tree for building things. It's a
bit long, because I am trying to pull everything together. I do not
really know what to do with this information -- it's not really ready
for a GEP, since there is no clear consensus (and the GEP process seems
to have tragically stalled in any case). It may ultimately need to be
decided by the release team, since it's part of the "keep CVS buildable
so that people can run it always" mission statement. However, before
that can happen, we need to be slightly less all over the shop.
Since I rarely have an original thought (apparently), I have tried to
just list known, indisputable facts in this mail -- reporting what
others have said, etc -- without injecting too much of my own opinions.
Also, I have just stuck to the topic of Dan's original post here: the
automake, autoconf and libtool packages. We can have the gettext
argument some other time.
Currently, building GNOME 2.2 from CVS requires the following:
- automake 1.4 and automake 1.6
- autoconf 2.57 (? -- needs to be strictly later than 2.53, but
not sure which intermediate version is sufficient. Prior to
31 Jan 2003, autoconf 2.53 was sufficient.)
- libtool 1.4.2
[For reference, the requirements for GNOME 2.0.2 from CVS were the same,
except that autoconf 2.53 was sufficient.]
The latest version of all these tools, for reference, are:
- automake 1.7.2 (released 5 Dec 2002)
- autoconf 2.57 (released 3 Dec 2002)
- libtool 1.4.3 (released 23 Oct 2002)
A back of the envelope survey (and mixed metaphor) shows that it is not
uncommon to have automake 1.6.x (Apr - Jul 2002), autoconf 2.53 (Mar
2002) and libtool 1.4.2 (Sep 2001) installed from recent releases of
dsitributions. GNOME requires automake-1.4 to be at least the '-p6'
version (Jul 2002) to allow parallel installs with automake 1.6 to work.
To summarise the previous thread (you'll have to search the archives
yourself if you want proof. No URLs here. I just grabbed the items out
of my desktop-devel mailbox) ...
- Dan Mills pointed out the need for a consistent set of build
of tools that was known and conformed to. He was not a fan of
allowing multiple toolset versions even if they could be
parallel installed. He felt it was not unreasonable to fix the
versions, since they were only really fixed for six months or
so, over the course of one release.
- Rodney Dawes tried to get things rolling by suggesting we
standardise on automake 1.6, autconf 2.53 and libtool 1.4.3.
- Colin Walters wanted anything but automake 1.4 and suggested
using automake 1.7 if we were going to change (on the grounds
that he could see no reason not go to the most recent
version).
- Havoc Pennington claimed that once we had something like
gnome-hello building with automake 1.7, everything would be
fairly easy to move across (basically, there are issues with
the doc building stuff). [Editor's note: this claim was not
met with the cries of disbelief I expected, so it may even be
true. An earlier thread on this topic a few months ago was not
so charitable.]
- James Henstridge wanted to use automake 1.7.2. He said he
wanted to able to use the latest tools in his modules and
specifically objected to using autoconf 2.53, since it was 11
months old and there were newer versions around and older
automakes for the same reason.
- Jonathan Blandford put in a request to know if there were any
bugs in the tools we were using that _required_ us to upgrade
(as opposed to just future-proofing the process). A few
problems with automake 1.4 were pointed out. Nothing for
autoconf or libtool were mentioned.
- Jonathan also noted that keeping the requirements to a minimum
(i.e. low version numbers) was preferable, since that
increased the chances that people already had the required
tools installed on their system. James felt this was not such
a requirement, since people used build scripts anyway and
installed local copies of the tools. Dan was not convinced by
this latter argument, since he felt it was using the existence
of the problem to perpetuate the continuance of the problem
(although he did not use such big words to say it).
- Michael Meeks did not like any tool that required the build
process to work with a write-protected source directory, since
that made for trouble with things like glib-genmarshall,
gtk-doc and the ORBit2 pre-processor. [Ed. note: automake 1.6
and later run 'make distcheck' with srcdir being write
protected.]
Although the above opinions were the only concrete ones expressed in the
thread Dan kicked off, they are obviously not the only ones out there. A
lot of people have opinions, but many of them will just be agreements
with one or more of the above and posting "me too" to the list is not
standard practice. Also, this topic is revisited every six to eight
months on the mailing lists, so much of it has been rehashed previously
(with, again, no really satisfying conclusions).
Some obstacles still exist to settling on a common toolchain:
(1) The autoconf and libtool releases are not parallel
installable. That is, you need to pick _a_ version of these and
use it. On the other hand, it is possible to have multiple
automake versions installed, but you then need to run through
binary names checking to see which of automake-1.7, automake-1.6
and automake-1.4 is available.
(2) Some packages will need to branch for previous GNOME
releases (e.g. 2.2) so that changes on the trunk do not
adversely affect previous releases. Somewhere between the 2.0.0
and 2.0.2 release of GNOME, we added a hard dependency on
automake-1.6 for building from CVS because some modules had not
branched.
(3) As noted above, there is not clear consensus. it appears to
come down to one of two cases:
(a) Keep using tools that are distributed by vendors to
ease the pain on people building from CVS.
(b) Fix on recent version of each tool and then do one
big pass through the tree fixing up every single module
in the platform release so that it works with the
required tools. This is similar to the work done by
Havoc when allowing automake-1.4 and automake-1.6 to be
used in parallel, except that it's a bigger job.
Personal opinion time...
We MUST come up with a decision here. It would be a terrible mistake to
have the proposed action being "*shrug*". It is not an option to say
"too hard"; there are a number of not intolerable resolutions available
and the hard part is selecting one and sticking to it.
In view of point (1), above, and the fact that module maintainers can
currently choose whatever tools they like, the situation is currently
untenable. it will not be long before a maintainer who wants recent
tools and a maintainer who wants to maintain compatibility with older
tools become so far apart that building both packages on one
installation is impossible. Presently, even the most well-intentioned
maintainer can be left wondering what to do here, since there are no
guidelines, let alone requirements.
I am not in a position to drive the discussion much more than I have
done here because I do not maintain any significant modules.
I was prompted to write this because I did a complete rebuild for the
first time in a while and needed to update my toolchain. I consider
myself to be very comfortable with auto*, but I consider it an
unnecessary annoyance to have to debug problems of this nature. So
people for whom these tools are a bit frightening (and that is not a
small crowd) are going to be really put out.
Malcolm
--
Borrow from a pessimist - they don't expect it back.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]