From owner-freebsd-ports@FreeBSD.ORG Sat Nov 7 23:31:06 2009 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C14C106566B for ; Sat, 7 Nov 2009 23:31:06 +0000 (UTC) (envelope-from freebsd-ports@coreland.ath.cx) Received: from birch.site5.com (birch.site5.com [174.132.116.226]) by mx1.freebsd.org (Postfix) with ESMTP id 54D9F8FC18 for ; Sat, 7 Nov 2009 23:31:06 +0000 (UTC) Received: from dsl78-143-202-207.in-addr.fast.co.uk ([78.143.202.207] helo=viper.internal.network) by birch.site5.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1N6sqq-0001KV-Dd; Sat, 07 Nov 2009 15:29:41 -0600 Received: by viper.internal.network (Postfix, from userid 11001) id F15354AC29; Sat, 7 Nov 2009 21:29:36 +0000 (GMT) Date: Sat, 7 Nov 2009 21:29:36 +0000 From: freebsd-ports@coreland.ath.cx To: ports@freebsd.org Message-ID: <20091107212936.GB85348@logik.internal.network> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="oLBj+sq0vYjzfsbl" Content-Disposition: inline X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - birch.site5.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - coreland.ath.cx X-Source: X-Source-Args: X-Source-Dir: Cc: eischen@vigrid.com, ludovic@ludovic-brenta.org Subject: Improving Ada support on FreeBSD and in the ports system X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Nov 2009 23:31:06 -0000 --oLBj+sq0vYjzfsbl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable [Apologies for the possible double-post, I mistyped the From: address] Hello. It's come to my attention that the FreeBSD ports system has very poor suppo= rt for Ada and Ada software in general. A quick search on Freshports for 'Ada' shows the following packages: devel/adabooch - No dependencies registered! devel/adacurses - lang/gnat devel/adasdl - lang/gnat net/adasockets - lang/gnat (broken) textproc/xmlada - lang/gnat-gcc41 (broken) textproc/xmlada-gps - lang/gnat (broken) x11-toolkits/gtkada - lang/gnat (broken) x11-toolkits/gtkada-devel - lang/gnat (broken) x11-toolkits/gtkada-gcc - lang/gnat-gcc41 (broken) x11-toolkits/gtkada-gps - lang/gnat (broken) I'm aware there are more packages than this in the ports sytem. The situati= on doesn't get any better the more you read... The problems any user of Ada on FreeBSD faces are: PROBLEM 1. Lack of packages (as shown above) Of the 10 packages listed, only three of those (maybe two) actually work. PROBLEM 2. No choice in the use of compiler The Ada world is essentially divided between the GCC version of GNAT that can produce executables not tainted by the GPL (GNAT-FSF) and the GPL version (GNAT-GPL) from AdaCore which can't. Debian, for example, only uses GNAT-FSF (but one can, of course, just download GNAT-GPL from AdaCore and use it without issue). PROBLEM 3. Compiler version chaos and lack of architecture support =20 We have: lang/gnat (GPL 2009 version, i386 only) lang/gnat-gcc41 (GCC 4.1, i386 only) lang/gnat-gcc42 (GCC 4.2, i386 only) lang/gnat-gcc43 (GCC 4.3, i386 only) lang/gnat-gcc44 (GCC 4.4, i386 and amd64) Apart from the fact that nobody using Ada knows which one of the above five ports they want, they'll also be forced into using at least one of them due to lack of architecture support and ports unconditionally depending on lang/gnat. Debian, for example, has a wide range of compiler architectures available for GNAT: http://packages.debian.org/unstable/devel/gnat Anybody that wants to install Ada packages from ports on AMD64 is stuck. Despite having an AMD64 compiler (gnat-gcc44) in ports, packages will demand lang/gnat and will then fail due to ONLY_FOR_ARCHS=3Di386. PROBLEM 4. Lack of a debugger We currently only have gdb 6.1.1 in the base system and I've never been able to get any of the other gdb ports to compile (version >=3D 6.8 of gdb have explicit Ada support). PROBLEM 5. Lack of a consistent policy for Ada packages Debian, for example, has this: http://people.debian.org/~lbrenta/debian-ada-policy.html I would like to (attempt to) solve all of the above problems and make FreeBSD a serious platform for Ada development. I will attempt to address the five points above with possible solutions to each. PROBLEM 1. Lack of packages This is something I will work on personally. I have quite a large number of packages I have developed myself to be submitted to ports but have been unable until now due to the problems described above. I am also willing to spend time porting the "big name" packages such as GtkAda and AWS to FreeBSD (porting Ada programs tends to be quite painless, usually). PROBLEM 2. No choice in the use of compiler PROBLEM 3. Compiler version chaos and lack of architecture support I believe there needs to be a mechanism to select an Ada compiler for use with packages. I'm not sure what the Ports system currently provides for this case. I do not want to force a particular compiler choice on the users of packages. Some packages (currently) require GNAT GPL to function (any program using ASIS[1] currently needs an extra support library[2] to work with GNAT FSF). The setting should probably be a port option that can be set in make.conf. I would be interested to hear ideas on this. I would like to see the number of GNAT ports brought down to two - one for GNAT-FSF and one for GNAT-GPL. This would require input from the maintainers of the older gnat-gcc ports and a coordinated effort to make sure the small selection of packages available work with both of the resulting ports (before adding new packages). =20 Lack of architecture support is a time-consuming issue. Both GCC and GNAT have support for a wide range of architectures but GNAT only has support for FreeBSD i386 (and now AMD64 in trunk). I have produced bootstrap binaries for GCC 4.4 on i386 and AMD64 on FreeBSD 7.2 (and will produce binaries for 8.0 when it arrives) but do not have access to any other architectures running FreeBSD. This is more or less an issue of manpower and patience. PROBLEM 4. Lack of a debugger This should not be a major problem to solve. Presumably the devel/cross-gdb port will be used with settings to compile a native debugger. I will submit PRs for the problems I've had (when the port could eventually be persuaded to compile, it seemed to believe it was not a native debugger and couldn't run executables). It might be worth updating the devel/gdb6 port or simply turning it into a slave port that compiles devel/cross-gdb with the correct settings for the current architecture. PROBLEM 5. Lack of a consistent policy for Ada I believe this'll occur naturally as a consequence of the above. I'm willing to document the policy myself. Comments, flames, welcome. Mark http://adacommons.org http://coreland.ath.cx irc://freenode.net/ada irc://freenode.net/adacommons [1] http://www.sigada.org/wg/asiswg/ [2] http://packages.debian.org/squeeze/libgnatvsn-dev --oLBj+sq0vYjzfsbl Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (FreeBSD) iQIcBAEBCgAGBQJK9ebAAAoJEPTzS0RVNS+GqeYP/3ceWonfQ7Z1P1h7LX726rME YphitzSUyVi/FXLS1fRf5iORt9hVrXrUIG46GzoI/+bDkemJ0ACYRAN6Fbj0BXrR AzLLsdq5smoOTCQXYBcjnFGjI0zIeRmOQrRYU+9Whos/vPRV3FrX0kzjd0l+p8+Y ISHAKeYU0vkpqz+7+x9wvO1XUcV5i9BBi/C/RkjVWTozUjikEQW7p2UvpiWs9FxC vvWmp8oSXqqtcWxkzuE8GpEvN/2klu10GhuigyvHVojdBTFX9QDR2pIGcVwB9nAS gG7QbQjR1DdsysxqArtRZg251peGqolL5LCD9AeC8AOIaocHkmec4QgUT0gx4k2e ooJZQyt1yEKzqE4br0XR6t8yy0kD57KN7i30aNdBnE9fFVx7DXVxWYP4On8kvgeC NhoenwvruyMTD7E1Lcs8ADDDcBlK5kcDfYaUMcu3aiacyKDt++s0bEpxAPV0hrNb gX97UYKq9rMAj5eQMz6sjfekoY68fnXnTSc+pDKI9sKbiHopj8ms5k0pUVCd97nt kk3H8eTD7yiwBhnht3Z5PFarD+xoC/+k1CMgqYOKHUPFGvsy5AZWUaeuXOTwoxk5 S6nx4X9iHAgwpsKU7wnCrXYl879Da33uAcuqCuqHiU/42Mrp1wukdufN3ILuV/ey x7pcGTlK1olcQru+KXK+ =e8w/ -----END PGP SIGNATURE----- --oLBj+sq0vYjzfsbl--