Gentoo Archives: gentoo-dev

From: George Shapovalov <george@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] improved Ada support in portage (split gnat ebuilds)
Date: Wed, 03 May 2006 09:12:44
Message-Id: 200605031108.32220.george@gentoo.org
1 Hi everybody.
2
3 I would like to announce the availability of new (split) gnat ebuilds on x86,
4 amd64 and soon possibly on ppc. The technical announcement (of a "new way",
5 eclass and virtuals) has been done earlier (for those interested, see bug
6 #111340), so this is really just an unmasking announcement.
7
8 A short description:
9 The compilers were split, to reflect the upstream packaging (now we have
10 gnat-gcc, as prepared by FSF (part of gcc)) and gnat-gpl, *the Ada2005*
11 version by AdaCore. The compilers make use of the gnatbuild.eclass - heavily
12 based on a toolchain.eclass, correctly support multilib and SLOT's (based on
13 gcc backend versions). So, now you can install them in parallel and
14 mix-and-match in your work in a usual Gentoo style.. Switching is done via
15 eselect gnat module.
16 Oh, and all known problems that plagued "old-style" gnat have been resolved
17 too :).
18
19 Just a word of caution:
20 The new style and old style gnat compilers do not play nice together, so you
21 need to unmerge old gnat completely before trying new ones. (But then for
22 exactly this reason I put the blockers both ways to force this. Most
23 of the time combining gnat and gnat-gcc just does not work at all (breaks
24 both of them..)).
25
26
27 Now, the libs..
28
29 Yes, there are libs and, in fact, there may be more. However these new SLOTted
30 and split compilers pose a challenge, as the libs are usually only good for
31 the compiler that they were compiled with.
32
33 After throwing the ideas back and forth (in that tracker bug, above) we
34 settled on a preliminary lib installation framework for Ada:
35
36 1. Each lib gets built (the binary/objects part only of course) for every
37 installed compiler and gets distributed at appropriate places (so that
38 docs/specs/etc are installed only once and generated libs/.ali's once per
39 installed gnat profile).
40
41 2. eselect gnat module is expanded to activate the appropriate profile for
42 every lib, matching the activated gnat.
43
44 3. eselect gnat show/list will show you active libraries (in addition to
45 active gnat), so that you can see what libs are missing support for a
46 particular gnat profile and rebuild them as you see fit.
47
48 I whipped up an initial implementation, basically just reworking gnat.eclass
49 and eselect module, so actually no special "features", as far as portage is
50 concerned, even had to be introduced.
51
52 For those interested, the eclass is available here:
53 https://bugs.gentoo.org/attachment.cgi?id=85982
54 As it is backwards compatible it can even go in, but since eclasses are not
55 versioned (except by manually strapping some number on them that,
56 effectively, introduces a new eclass, and there is no need for that here) I
57 am waiting for some test reports or going over it somewhat more, before I
58 will consider committing the new gnat.eclass.
59
60 To enjoy the new libs framework you will need to unmask
61 app-admin/eselect-gnat-0.7 and (so far the only translated lib)
62 dev-ada/booch_components-20051222 (both p-masked at present).
63
64 This approach seems to work fine and it even turned out to be rather
65 straightforward to implement. However any feedback/ideas are definitely
66 wellcome!
67
68 George
69 --
70 gentoo-dev@g.o mailing list