Skip to content

Commit e5ae91a

Browse files
committed
build: fix library versioning
Building the library using the -release option with the package version as the library version results in a non binary compatible library, forcing users to recompile their application against newer versions of libzbc, even if no interface or ABI change is introduced. Fix this by using the -version-info option with a version number correctly using the current:release:age definition, calculated from the package major and minor version numbers. Signed-off-by: Damien Le Moal <[email protected]>
1 parent d87f1d9 commit e5ae91a

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

configure.ac

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,22 @@
77
AC_INIT([libzbc], [5.11.0],
88
99
[libzbc], [https://github.com/westerndigitalcorporation/libzbc])
10+
11+
# Package version details: <major>.<minor>.<release>
12+
PACKAGE_VERSION_MAJOR=$(echo $PACKAGE_VERSION | awk -F. '{print $1}')
13+
PACKAGE_VERSION_MINOR=$(echo $PACKAGE_VERSION | awk -F. '{print $2}')
14+
PACKAGE_VERSION_RELEASE=$(echo $PACKAGE_VERSION | awk -F. '{print $3}')
15+
16+
# libzbc library version
17+
LIBZBC_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE"
18+
LIBZBC_LT_MAJOR=$PACKAGE_VERSION_MAJOR
19+
LIBZBC_LT_MINOR=$PACKAGE_VERSION_MINOR
20+
LIBZBC_LT_RELEASE=0
21+
LIBZBC_VERSION_INFO=$(( LIBZBC_LT_MAJOR + LIBZBC_LT_MINOR )):$LIBZBC_LT_RELEASE:$LIBZBC_LT_MINOR
22+
23+
AC_SUBST([LIBZBC_VERSION])
24+
AC_SUBST([LIBZBC_VERSION_INFO])
25+
1026
AC_CONFIG_AUX_DIR([build-aux])
1127
AC_CONFIG_MACRO_DIR([m4])
1228
AC_CONFIG_HEADER([include/config.h])

lib/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ libzbc_la_SOURCES = $(CFILES) $(HFILES)
3838
libzbc_la_CFLAGS = $(AM_CFLAGS) -fPIC
3939
libzbc_la_LDFLAGS = \
4040
-Wl,--version-script,${srcdir}/exports \
41-
-release '$(PACKAGE_VERSION)'
41+
-version-info @LIBZBC_VERSION_INFO@

lib/libzbc.pc.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ includedir=@includedir@
1010

1111
Name: libzbc
1212
Description: A library for accessing and managing ZBC/ZAC devices
13-
Version: @PACKAGE_VERSION@
13+
Version: @LIBZBC_VERSION@
1414
Cflags: -I${includedir}
1515
Libs: -L${libdir} -lzbc
1616

libzbc.spec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
5555

5656
%files
5757
%{_libdir}/*.so
58+
%{_libdir}/*.so.*
5859
%{_bindir}/*
5960
%{_mandir}/man8/*
6061
%exclude %{_libdir}/pkgconfig

0 commit comments

Comments
 (0)