From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from lists.gentoo.org ([140.105.134.102] helo=robin.gentoo.org)
	by nuthatch.gentoo.org with esmtp (Exim 4.54)
	id 1FbDPX-0004QB-PB
	for garchives@archives.gentoo.org; Wed, 03 May 2006 09:12:44 +0000
Received: from robin.gentoo.org (localhost [127.0.0.1])
	by robin.gentoo.org (8.13.6/8.13.6) with SMTP id k439BZjS008822;
	Wed, 3 May 2006 09:11:35 GMT
Received: from mbox.unige.ch (mbox.unige.ch [129.194.9.209])
	by robin.gentoo.org (8.13.6/8.13.6) with ESMTP id k4398fD5000699
	for <gentoo-dev@lists.gentoo.org>; Wed, 3 May 2006 09:08:41 GMT
Received: from conversion-daemon.mbox.unige.ch by mbox.unige.ch
 (Sun Java System Messaging Server 6.2-3.03 (built Jun 27 2005))
 id <0IYO00F01ME8EG00@mbox.unige.ch> (original mail from george@gentoo.org)
 for gentoo-dev@lists.gentoo.org; Wed, 03 May 2006 11:08:40 +0200 (CEST)
Received: from pcc23679 ([129.194.54.121])
 by mbox.unige.ch (Sun Java System Messaging Server 6.2-3.03 (built Jun 27
 2005)) with ESMTPS id <0IYO005L7MQ8OMF0@mbox.unige.ch> for
 gentoo-dev@lists.gentoo.org; Wed, 03 May 2006 11:08:33 +0200 (CEST)
Date: Wed, 03 May 2006 11:08:30 +0200
From: George Shapovalov <george@gentoo.org>
X-Face: 4Rd)1/:bMGRby_[I4NY3u,g|=7e?V_VX?tkj,_ct-U4B#_-EEu_/wyvCWFsvDa<D/:8bHX
	y)m@s7@Ow=\_f^T>}LP_Rk2%phL7r5%sxXze`X/A_:8tz&|"*2^="\ZFo3&+'UGNhVu#]g
	[<<~4glvaJa'ZEXW_#@LWa,OhxVN"r|/1P:`IL8=rciHKGxevczUO{X!r%,a
Subject: [gentoo-dev] improved Ada support in portage (split gnat ebuilds)
To: gentoo-dev@lists.gentoo.org
Message-id: <200605031108.32220.george@gentoo.org>
Organization: Gentoo Linux
Precedence: bulk
List-Post: <mailto:gentoo-dev@lists.gentoo.org>
List-Help: <mailto:gentoo-dev+help@gentoo.org>
List-Unsubscribe: <mailto:gentoo-dev+unsubscribe@gentoo.org>
List-Subscribe: <mailto:gentoo-dev+subscribe@gentoo.org>
List-Id: Gentoo Linux mail <gentoo-dev.gentoo.org>
X-BeenThere: gentoo-dev@gentoo.org
Reply-to: gentoo-dev@lists.gentoo.org
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
Content-disposition: inline
X-Comment: This message was scanned against viruses by mbox.unige.ch.
User-Agent: KMail/1.9.1
X-Archives-Salt: 3753d0d3-2215-4ebf-87c4-c1ed6dca79a4
X-Archives-Hash: 71b10d2021f407463429055f5fb54d22

Hi everybody.

I would like to announce the availability of new (split) gnat ebuilds on x86, 
amd64 and soon possibly on ppc. The technical announcement (of a "new way", 
eclass and virtuals) has been done earlier (for those interested, see bug 
#111340), so this is really just an unmasking announcement.

A short description:
The compilers were split, to reflect the upstream packaging (now we have 
gnat-gcc, as prepared by FSF (part of gcc)) and gnat-gpl, *the Ada2005* 
version by AdaCore. The compilers make use of the gnatbuild.eclass - heavily 
based on a toolchain.eclass, correctly support multilib and SLOT's (based on 
gcc backend versions). So, now you can install them in parallel and 
mix-and-match in your work in a usual Gentoo style.. Switching is done via 
eselect gnat module.
Oh, and all known problems that plagued "old-style" gnat have been resolved 
too :).

Just a word of caution:
The new style and old style gnat compilers do not play nice together, so you 
need to unmerge old gnat completely before trying new ones. (But then for 
exactly this reason I put the blockers both ways to force this. Most 
of the time combining gnat and gnat-gcc just does not work at all (breaks 
both of them..)).


Now, the libs..

Yes, there are libs and, in fact, there may be more. However these new SLOTted 
and split compilers pose a challenge, as the libs are usually only good for 
the compiler that they were compiled with.

After throwing the ideas back and forth (in that tracker bug, above) we 
settled on a preliminary lib installation framework for Ada:

1. Each lib gets built (the binary/objects part only of course) for every 
installed compiler and gets distributed at appropriate places (so that 
docs/specs/etc are installed only once and generated libs/.ali's once per 
installed gnat profile).

2. eselect gnat module is expanded to activate the appropriate profile for 
every lib, matching the activated gnat.

3. eselect gnat show/list will show you active libraries (in addition to 
active gnat), so that you can see what libs are missing support for a 
particular gnat profile and rebuild them as you see fit.

I whipped up an initial implementation, basically just reworking gnat.eclass 
and eselect module, so actually no special "features", as far as portage is 
concerned, even had to be introduced.

For those interested, the eclass is available here:
https://bugs.gentoo.org/attachment.cgi?id=85982
As it is backwards compatible it can even go in, but since eclasses are not 
versioned (except by manually strapping some number on them that, 
effectively, introduces a new eclass, and there is no need for that here) I 
am waiting for some test reports or going over it somewhat more, before I 
will consider committing the new gnat.eclass.

To enjoy the new libs framework you will need to unmask 
app-admin/eselect-gnat-0.7 and (so far the only translated lib) 
dev-ada/booch_components-20051222 (both p-masked at present).

This approach seems to work fine and it even turned out to be rather 
straightforward to implement. However any feedback/ideas are definitely 
wellcome!

George
-- 
gentoo-dev@gentoo.org mailing list