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.> 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. Regards, Joseph -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 930 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20161120/c61e4bd8/attachment.bin>
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? | > 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. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Dirk, 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/> | > 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? Regards, Joseph -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 930 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20161121/edc08748/attachment.bin>