Skip to content

SONAMEs follow different scheme than upstream (e.g. so.13.5.2 vs so.18) #69

@jaimergp

Description

@jaimergp

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

libarchive, as packaged on conda-forge, follows a different SONAME scheme than the one suggested in upstream:

# INTERFACE_VERSION increments with every release
# libarchive 2.7 == interface version 9 = 2 + 7
# libarchive 2.8 == interface version 10 = 2 + 8
# libarchive 2.9 == interface version 11 = 2 + 9
# libarchive 3.0 == interface version 12
# libarchive 3.1 == interface version 13
math(EXPR INTERFACE_VERSION  "13 + ${_minor}")

# Set SOVERSION == Interface version
# ?? Should there be more here ??
SET(SOVERSION "${INTERFACE_VERSION}")

For 3.5.2, this means 13+5=18, so libarchive.so.18. However, the contents of the tarballs list libarchive.so.13.5.2 (?!) and, most importantly, it includes a symlink from libarchive.so.13 -> libarchive.so.13.5.2, which would make this version collide with a (correctly SONAMEd) libarchive 3.1.

Compare this to defaults:

conda-forge

libarchive-3.5.2-hb890918_2.tar.bz2
-rw-rw-r--  0 1001   1001  1818396 May 18 09:00 lib/libarchive.a
-rw-rw-r--  0 1001   1001      871 May 18 09:00 lib/pkgconfig/libarchive.pc
-rwxrwxr-x  0 1001   1001   921896 May 18 09:00 lib/libarchive.so.13.5.2
lrwxrwxrwx  0 1001   1001        0 May 18 09:00 lib/libarchive.so -> libarchive.so.13.5.2
lrwxrwxrwx  0 1001   1001        0 May 18 09:00 lib/libarchive.so.13 -> libarchive.so.13.5.2
libarchive-3.5.2-hccf745f_0.tar.bz2
lrwxrwxrwx  0 1001   1001        0 Aug 27  2021 lib/libarchive.so -> libarchive.so.13.5.2
-rw-rw-r--  0 1001   1001      871 Aug 27  2021 lib/pkgconfig/libarchive.pc
-rwxrwxr-x  0 1001   1001   916664 Aug 27  2021 lib/libarchive.so.13.5.2
lrwxrwxrwx  0 1001   1001        0 Aug 27  2021 lib/libarchive.so.13 -> libarchive.so.13.5.2
-rw-rw-r--  0 1001   1001  1808436 Aug 27  2021 lib/libarchive.a
libarchive-3.5.2-hccf745f_1.tar.bz2
lrwxrwxrwx  0 1001   1001        0 Sep 25  2021 lib/libarchive.so.13 -> libarchive.so.13.5.2
-rw-rw-r--  0 1001   1001  1808436 Sep 25  2021 lib/libarchive.a
lrwxrwxrwx  0 1001   1001        0 Sep 25  2021 lib/libarchive.so -> libarchive.so.13.5.2
-rw-rw-r--  0 1001   1001      871 Sep 25  2021 lib/pkgconfig/libarchive.pc
-rwxrwxr-x  0 1001   1001   916664 Sep 25  2021 lib/libarchive.so.13.5.2

defaults

libarchive-3.5.2-h5de8990_0.tar.bz2
-rw-rw-r--  0 0      0         930 Jun  3 13:21 lib/pkgconfig/libarchive.pc
lrwxrwxrwx  0 0      0           0 Jun  3 13:22 lib/libarchive.so -> libarchive.so.18
-rw-rw-r--  0 0      0     1813266 Jun  3 13:22 lib/libarchive.a
-rwxrwxr-x  0 0      0      912576 Jun  3 13:22 lib/libarchive.so.18

Looks like defaults relies on CMake while conda-forge uses autotools, which might explain the difference. I think the bug is that what should be an arithmetical addition (13 + 5) is being treated as a string concatenation (13 + "5.2").

Fixing this would involve rebuilding downstream packages I guess.

Installed packages

N/A

Environment info

N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions