Development of Ada ports in Pkgsrc has started, and is going pretty well.
While Pkgsrc claims it has been ported to many systems including all five
that are supported by DragonLace, effectively it is only used by NetBSD and
DragonFlyBSD. So far, there are packages for GNAT AUX, XML/Ada 4.1, GPRbuild
(which is a custom version only for use with GNAT AUX), GNATPython, and Ada
Web Server (AWS). The packages for GTKAda and GNAT Programming Studio 5 are
the next in line. The packages have not been incorporated in the Pkgsrc
repository yet, but they are available in the DragonLace git repository.
While building AWS, it was discovered that non-blocking sockets were not
supported for at least the 64-bit versions of DragonFly BSD, NetBSD, and
OpenBSD. FreeBSD64 seemed not to mind. In the end, the fix was to create a
BSD-specific version of the thin-sockets binding and recompile GNAT. None
of the published binaries have this fix, but the pkgsrc versions will build
correctly.
Notes:
- The 32-bit NetBSD pkgsrc package isn't building. It is likely a problem
with the NetBSD installation, so this will be retested with a new
installation of NetBSD 5.1
- The DragonFly BSDs have a weird exception handling bug that is very hard
to reproduce in a small test case, but it has been seen in the 32-bit
version while build GPRbuild and AWS. GPRbuild was altered to
avoid "normal" exceptions to work around the issue, but this is a band-aid.
AWS is also showing symptoms during exceptions for file-not-found file open
procedures, but not in small test cases. The symptom is trying to recall
variables from an empty stack
- The 10 NetBSD failures are due to the lack of MD Unwind Support for the
platform. This will be added to handle null dereference pointers and enable
stack checking.
- The FreeBSD and DragonFly BSD MD Unwind Support may not be correct for all
platforms and will be reviewed. It was thought this is the source of the
error mentioned above but disabling it althogether did not solve the issue.
Update: The code has been reviewed and updated for the 64-bit versions.
|