[PATCH] src/Makefile: re-add major version number to soname

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

 



Commit c0b43df28a982747e081343f23289357ab4615db ("src/Makefile: use
VERSION variable consistently") changed the library soname from
liburing.so.2 to liburing.so.

The idea of soname is that executables linked against liburing.so.2
continue to work with liburing.so.2.1, liburing.so.2.2, etc because the
soname matches. They must not work against liburing.so.1 or
liburing.so.3 though since those major versions are incompatible.

Dropping the major version makes the soname unversioned and executables
will link against future liburing releases that are not compatible.

Fix the soname compatibility problem by re-adding the major version
number. Compute it from the VERSION value instead of hardcoding it in
the Makefile.

liburing 2.1:
  $ readelf -a src/liburing.so.2.1 | grep SON
   0x000000000000000e (SONAME)             Library soname: [liburing.so.2]

commit c0b43df28a98:
  $ readelf -a src/liburing.so.2.2 | grep SON
   0x000000000000000e (SONAME)             Library soname: [liburing.so]

With this fix:
  $ readelf -a src/liburing.so.2.2 | grep SON
   0x000000000000000e (SONAME)             Library soname: [liburing.so.2]

Fixes: c0b43df28a982747e081343f23289357ab4615db ("src/Makefile: use VERSION variable consistently")
Reported-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
Cc: Bikal Lem <gbikal+git@xxxxxxxxx>
Signed-off-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx>
---
 Makefile.common | 1 +
 src/Makefile    | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Makefile.common b/Makefile.common
index e7c9412..27fc233 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -2,4 +2,5 @@ TOP := $(dir $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
 NAME=liburing
 SPECFILE=$(TOP)/$(NAME).spec
 VERSION=$(shell awk '/Version:/ { print $$2 }' $(SPECFILE))
+VERSION_MAJOR=$(shell echo $(VERSION) | cut -d. -f1)
 TAG = $(NAME)-$(VERSION)
diff --git a/src/Makefile b/src/Makefile
index 0e04986..12cf49f 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -16,8 +16,8 @@ LINK_FLAGS=
 LINK_FLAGS+=$(LDFLAGS)
 ENABLE_SHARED ?= 1
 
-soname=liburing.so
-libname=$(soname).$(VERSION)
+soname=liburing.so.$(VERSION_MAJOR)
+libname=liburing.so.$(VERSION)
 all_targets += liburing.a
 
 ifeq ($(ENABLE_SHARED),1)
-- 
2.35.1




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux