ATTENTION ALL DISTRIBUTIONS: this is for you. THE SONAME MAY CHANGE!
I am preparing a bzip2-1.0.7 release. You can see the release notes, which should be of interest:
-
Many historical patches from various distributions are integrated now.
-
We have a new fix for the just-published CVE-2019-12900, courtesy of Albert Astals Cid.
-
Bzip2 has moved to Meson for its preferred build system, courtesy of Dylan Baker. For special situations, a CMake build system is also provided, courtesy of Micah Snyder.
What's with the soname?
From bzip2-1.0.1 (from the year 2000), until bzip2-1.0.6 (from 2010),
release tarballs came with a special
Makefile-libbz2_so
to generate a shared library
instead of a static one.
This never used libtool or anything; it specified linker flags by hand. Various distributions either patched this special makefile, or replaced it by another one, or outright replaced the complete build system for a different one.
Some things to note:
-
This hand-written
Makefile-libbz2_so
used a link line like$(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6
. This means, make the DT_SONAME field inside the ELF file belibbz2.so.1.0
(note the two digits in1.0
), and make the filename of the shared library belibbz2.so.1.0.6
. -
Fedora patched the soname in a patch called "saneso" to just be
libbz2.so.1
. -
Stanislav Brabec, from openSUSE, replaced the hand-written makefiles with autotools, which meant using libtool. It has this interesting note:
Incompatible changes:
soname change. Libtool has no support for two parts soname suffix (e. g. libbz2.so.1.0). It must be a single number (e. g. libbz2.so.1). That is why soname must change. But I see not a big problem with it. Several distributions already use the new number instead of the non-standard number from Makefile-libbz2_so.
(In fact, if I do objdump -x /usr/lib64/*.so | grep SONAME
, I see
that most libraries have single-digit sonames.)
In my experience, both Fedora and openSUSE are very strict, and correct, about obscure things like library sonames.
With the switch to Meson, bzip2 no longer uses libtool. It will have
a single-digit soname — this is not in the meson.build
yet, but
expect it to be there within the next couple of days.
I don't know what distros which decided to preserve the 1.0
soname
will need to do; maybe they will need to patch meson.build
on their
own.
Fortunately, the API/ABI are still exactly the same. You can preserve the old soname which your distro was using and linking libbz2 will probably keep working as usual.
(This is a C-only release as usual. The Rust branch is still experimental.)