[Rd] shared libraries: missing soname

Dirk Eddelbuettel
Tue, 22 Nov 2016 03:42:04 -0000

On 21 November 2016 at 23:24, Joseph Mingrone wrote:
| Dirk Eddelbuettel <edd at debian.org> writes:
| > On 20 November 2016 at 21:49, Joseph Mingrone wrote:
| > | Hello Dirk,
| > |
| > | Dirk Eddelbuettel <edd at debian.org> writes:
| > |
| > | > On 20 November 2016 at 19:28, Joseph Mingrone wrote:
| > | > | Hello,
| > | > |
| > | > | R's shared libraries are linked without setting the soname.
This is causing problems for some consumers.
| > | > |
| > | > |         Error: /usr/local/lib/R/library/tseries/libs/tseries.so
is linked to
| > | > |         /usr/local/lib/R/lib/libRblas.so which does not have a
SONAME.  math/R needs
| > | > |         to be fixed.
| > | > |
| > | > | What's the correct way to add the necessary linker flags?  I
believe it should be something like this.
| > | > |
| > | > |        cc -shared -Wl,-soname,...
| > |
| > | > I think that may be true "in theory" (for libraries
loaded by ldd(8) via
| > | > `/etc/ld.conf`) but not "in practice" for R which loads
these shared
| > | > libraries itself (via dlopen(3) etc).
| > |
| > | R may use dlopen() but other customers may not.
|
| > Yes, well, but are there other customers?
|
| Yes.  Here is one example. https://rkward.kde.org/

Really?  We had that eg in Debian too for a decade plus and it works just
fine _as is_ and finds its libraries. Without requiring a change.

It (AFAIK) just embeds R "as is" (as does my much smaller RInside).

  edd at bud:~$ ldd /usr/bin/rkward | grep R      # no R libs known to ldd
  edd at bud:~$ ldd /usr/bin/rkward | wc -l       # lots other shared libraries
  40
  edd at bud:~$

| > | > For what it is worth, I have been providing the Debian packages
"as is" for
| > | > now 15+ years and nobody has complained.
| > |
| > | > What system are you on to get that complaint?
| > |
| > | This is on FreeBSD.  Our apt-get, pkg, will not register shared library
dependencies if the shared library does not have a soname.  If the library
| > | gets changed and is no longer compatible with the previous version, and
there is no soname to check, pkg will not know that all its dependencies
| > | need to be reinstalled.
|
| > Hmpf. No mechanism for fallback / default soname?  In that case you (or
| > whoever acts as FreeBSD maintainer) may have to supply one.
|
| Using a fallback or default soname would defeat the purpose, which is to
detect
| when the library's interface has changed, so that the proper action can be
| taken.  I could provide a local patch for R's autotools, but as a package
| maintainer yourself, I expect you also prefer when upstream get's it
right.
|
| Are there any constructive reasons not to include a proper soname?

I fear you are complaining to the wrong person. I am not a committer; just a
happy user, packager, and contributor. But as my first email tried to state:
nobody here seems to see a problem yet.

Best of luck,  Dirk

--
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org