[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GNAT 3.15p



Florian Weimer <fw@deneb.enyo.de> writes:

> Ludovic Brenta <ludovic.brenta@insalien.org> writes:
> 
> >> Your shared library support is probably incompatible with ACT's.  Do
> >> you really want to enable it by default?
> >
> > Well, yes, I would like to, especially since gnat 3.14p did, too.
> 
> Ah, let's keep the old mistakes. 8-)
> 
> > Could you shed some light on what makes "my" shared library support
> > incompatible with ACT's?
> 
> ACT's GNAT puts in an rpath, and links to a .so library, not a .so.1
> library.
> 
> I just tested it: no compatibility at all, in both directions.  If you
> want to distribute Ada programs, you have to link statically.

Right.

I don't see rpath as an issue; ACT adds it for the case when the
shared library is in a non-standard location such as
/usrlib/gcc-lib/i686-pc-linux-gnu/2.8.1/adalib (as the binary
distribution from GNAT defaults to).  If the shared library is in
/usr/lib, there is no need for it and programs linked with rpath will
still find the library.  Conversely, programs compiled on a Debian
system (without rpath) will work on other machines provided the
library is in LD_LIBRARY_PATH.

The real problem is the soname.  I'm willing to change the soname to
"libgnat-3.15p.so" (removing the .1) to become more compatible with
ACT's GNAT, but does that violate the Debian Policy?

> Furthermore, the FSF GNAT version (GNAT 5.00w) uses the same soname,
> but is probably not ABI compatible.

I think this is a real problem.  It is okay if gnat, gnat-3.2, and
gnat-3.3 use different ABI's, but they should use different sonames.
Currently, gnat-3.2 and gnat-3.3 link statically by default, and the
Debian packages do not have shared libraries, so the problem only
comes up if they start supporting shared libraries.

My proposal is to still support shared libraries with gnat, and keep
ACT's soname even if it is slightly nonstandard with respect to
Debian.  If and when gnat-3.2 and -3.3 support shared libraries, they
should do so with a proper soname such as "libgnat.so.3.3".  Florian,
as a GCC maintainer, would you be willing to try and persuade the GCC
steering committee to this?

If everyone agrees, here is what I'll do:

- change the soname from "libgnat-3.15p.so.1" to "libgnat-3.15p.so"
- change the package name from "libgnat-3.15p-1" to "libgnat-3.15p"
- rebuild the other packages to update their Depends line
- stick to this soname in the future

-- 
Ludovic Brenta.



Reply to: