Improving Ada support on FreeBSD and in the ports system
freebsd-ports at coreland.ath.cx
freebsd-ports at coreland.ath.cx
Sat Nov 7 23:31:06 UTC 2009
[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 support
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 situation
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
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=i386.
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 >=
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).
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20091107/41ce07fa/attachment.pgp
More information about the freebsd-ports
mailing list