Bump SONAME of libzfs and libzpool

The ABI of libzfs and libzpool have breaking changes since last
SONAME bump in commit fe6babc:

* libzfs: `zpool_print_unsup_feat` removed (used by zpool cmd).
* libzpool: multiple `ddt_*` symbols removed (used by zdb cmd).

Bump them to avoid ABI breakage.

See: https://github.com/openzfs/zfs/pull/11817
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Shengqi Chen <harry-chen@outlook.com>
Closes #16609
This commit is contained in:
Shengqi Chen 2024-10-05 20:29:37 +08:00 committed by Brian Behlendorf
parent c59d5495fe
commit e8f0aa143e
12 changed files with 50 additions and 47 deletions

View File

@ -58,9 +58,9 @@ deb-utils: deb-local rpm-utils-initramfs
pkg1=$${name}-$${version}.$${arch}.rpm; \ pkg1=$${name}-$${version}.$${arch}.rpm; \
pkg2=libnvpair3-$${version}.$${arch}.rpm; \ pkg2=libnvpair3-$${version}.$${arch}.rpm; \
pkg3=libuutil3-$${version}.$${arch}.rpm; \ pkg3=libuutil3-$${version}.$${arch}.rpm; \
pkg4=libzfs5-$${version}.$${arch}.rpm; \ pkg4=libzfs6-$${version}.$${arch}.rpm; \
pkg5=libzpool5-$${version}.$${arch}.rpm; \ pkg5=libzpool6-$${version}.$${arch}.rpm; \
pkg6=libzfs5-devel-$${version}.$${arch}.rpm; \ pkg6=libzfs6-devel-$${version}.$${arch}.rpm; \
pkg7=$${name}-test-$${version}.$${arch}.rpm; \ pkg7=$${name}-test-$${version}.$${arch}.rpm; \
pkg8=$${name}-dracut-$${version}.noarch.rpm; \ pkg8=$${name}-dracut-$${version}.noarch.rpm; \
pkg9=$${name}-initramfs-$${version}.$${arch}.rpm; \ pkg9=$${name}-initramfs-$${version}.$${arch}.rpm; \
@ -72,7 +72,7 @@ deb-utils: deb-local rpm-utils-initramfs
path_prepend=`mktemp -d /tmp/intercept.XXXXXX`; \ path_prepend=`mktemp -d /tmp/intercept.XXXXXX`; \
echo "#!$(SHELL)" > $${path_prepend}/dh_shlibdeps; \ echo "#!$(SHELL)" > $${path_prepend}/dh_shlibdeps; \
echo "`which dh_shlibdeps` -- \ echo "`which dh_shlibdeps` -- \
-xlibuutil3linux -xlibnvpair3linux -xlibzfs5linux -xlibzpool5linux" \ -xlibuutil3linux -xlibnvpair3linux -xlibzfs6linux -xlibzpool6linux" \
>> $${path_prepend}/dh_shlibdeps; \ >> $${path_prepend}/dh_shlibdeps; \
## These -x arguments are passed to dpkg-shlibdeps, which exclude the ## These -x arguments are passed to dpkg-shlibdeps, which exclude the
## Debianized packages from the auto-generated dependencies of the new debs, ## Debianized packages from the auto-generated dependencies of the new debs,

View File

@ -12,14 +12,14 @@ dist_noinst_DATA += %D%/openzfs-libpam-zfs.postinst
dist_noinst_DATA += %D%/openzfs-libpam-zfs.prerm dist_noinst_DATA += %D%/openzfs-libpam-zfs.prerm
dist_noinst_DATA += %D%/openzfs-libuutil3.docs dist_noinst_DATA += %D%/openzfs-libuutil3.docs
dist_noinst_DATA += %D%/openzfs-libuutil3.install.in dist_noinst_DATA += %D%/openzfs-libuutil3.install.in
dist_noinst_DATA += %D%/openzfs-libzfs4.docs dist_noinst_DATA += %D%/openzfs-libzfs6.docs
dist_noinst_DATA += %D%/openzfs-libzfs4.install.in dist_noinst_DATA += %D%/openzfs-libzfs6.install.in
dist_noinst_DATA += %D%/openzfs-libzfsbootenv1.docs dist_noinst_DATA += %D%/openzfs-libzfsbootenv1.docs
dist_noinst_DATA += %D%/openzfs-libzfsbootenv1.install.in dist_noinst_DATA += %D%/openzfs-libzfsbootenv1.install.in
dist_noinst_DATA += %D%/openzfs-libzfs-dev.docs dist_noinst_DATA += %D%/openzfs-libzfs-dev.docs
dist_noinst_DATA += %D%/openzfs-libzfs-dev.install.in dist_noinst_DATA += %D%/openzfs-libzfs-dev.install.in
dist_noinst_DATA += %D%/openzfs-libzpool5.docs dist_noinst_DATA += %D%/openzfs-libzpool6.docs
dist_noinst_DATA += %D%/openzfs-libzpool5.install.in dist_noinst_DATA += %D%/openzfs-libzpool6.install.in
dist_noinst_DATA += %D%/openzfs-python3-pyzfs.install dist_noinst_DATA += %D%/openzfs-python3-pyzfs.install
dist_noinst_DATA += %D%/openzfs-zfs-dkms.config dist_noinst_DATA += %D%/openzfs-zfs-dkms.config
dist_noinst_DATA += %D%/openzfs-zfs-dkms.dkms dist_noinst_DATA += %D%/openzfs-zfs-dkms.dkms

View File

@ -6,6 +6,6 @@ contrib/pyzfs/libzfs_core/bindings/__pycache__/
contrib/pyzfs/pyzfs.egg-info/ contrib/pyzfs/pyzfs.egg-info/
debian/openzfs-libnvpair3.install debian/openzfs-libnvpair3.install
debian/openzfs-libuutil3.install debian/openzfs-libuutil3.install
debian/openzfs-libzfs4.install debian/openzfs-libzfs6.install
debian/openzfs-libzfs-dev.install debian/openzfs-libzfs-dev.install
debian/openzfs-libzpool5.install debian/openzfs-libzpool6.install

View File

@ -78,9 +78,9 @@ Architecture: linux-any
Depends: libssl-dev | libssl1.0-dev, Depends: libssl-dev | libssl1.0-dev,
openzfs-libnvpair3 (= ${binary:Version}), openzfs-libnvpair3 (= ${binary:Version}),
openzfs-libuutil3 (= ${binary:Version}), openzfs-libuutil3 (= ${binary:Version}),
openzfs-libzfs4 (= ${binary:Version}), openzfs-libzfs6 (= ${binary:Version}),
openzfs-libzfsbootenv1 (= ${binary:Version}), openzfs-libzfsbootenv1 (= ${binary:Version}),
openzfs-libzpool5 (= ${binary:Version}), openzfs-libzpool6 (= ${binary:Version}),
${misc:Depends} ${misc:Depends}
Replaces: libzfslinux-dev Replaces: libzfslinux-dev
Conflicts: libzfslinux-dev Conflicts: libzfslinux-dev
@ -90,18 +90,18 @@ Description: OpenZFS filesystem development files for Linux
libraries of OpenZFS filesystem. libraries of OpenZFS filesystem.
. .
This package includes the development files of libnvpair3, libuutil3, This package includes the development files of libnvpair3, libuutil3,
libzpool5 and libzfs4. libzpool6 and libzfs6.
Package: openzfs-libzfs4 Package: openzfs-libzfs6
Section: contrib/libs Section: contrib/libs
Architecture: linux-any Architecture: linux-any
Depends: ${misc:Depends}, ${shlibs:Depends} Depends: ${misc:Depends}, ${shlibs:Depends}
# The libcurl4 is loaded through dlopen("libcurl.so.4"). # The libcurl4 is loaded through dlopen("libcurl.so.4").
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=988521 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=988521
Recommends: libcurl4 Recommends: libcurl4
Breaks: libzfs2, libzfs4 Breaks: libzfs2, libzfs4, libzfs4linux, libzfs6linux
Replaces: libzfs2, libzfs4, libzfs4linux Replaces: libzfs2, libzfs4, libzfs4linux, libzfs6linux
Conflicts: libzfs4linux Conflicts: libzfs6linux
Description: OpenZFS filesystem library for Linux - general support Description: OpenZFS filesystem library for Linux - general support
OpenZFS is a storage platform that encompasses the functionality of OpenZFS is a storage platform that encompasses the functionality of
traditional filesystems and volume managers. It supports data checksums, traditional filesystems and volume managers. It supports data checksums,
@ -123,13 +123,13 @@ Description: OpenZFS filesystem library for Linux - label info support
. .
The zfsbootenv library provides support for modifying ZFS label information. The zfsbootenv library provides support for modifying ZFS label information.
Package: openzfs-libzpool5 Package: openzfs-libzpool6
Section: contrib/libs Section: contrib/libs
Architecture: linux-any Architecture: linux-any
Depends: ${misc:Depends}, ${shlibs:Depends} Depends: ${misc:Depends}, ${shlibs:Depends}
Breaks: libzpool2, libzpool5 Breaks: libzpool2, libzpool5, libzpool5linux, libzpool6linux
Replaces: libzpool2, libzpool5, libzpool5linux Replaces: libzpool2, libzpool5, libzpool5linux, libzpool6linux
Conflicts: libzpool5linux Conflicts: libzpool6linux
Description: OpenZFS pool library for Linux Description: OpenZFS pool library for Linux
OpenZFS is a storage platform that encompasses the functionality of OpenZFS is a storage platform that encompasses the functionality of
traditional filesystems and volume managers. It supports data checksums, traditional filesystems and volume managers. It supports data checksums,
@ -246,8 +246,8 @@ Architecture: linux-any
Pre-Depends: ${misc:Pre-Depends} Pre-Depends: ${misc:Pre-Depends}
Depends: openzfs-libnvpair3 (= ${binary:Version}), Depends: openzfs-libnvpair3 (= ${binary:Version}),
openzfs-libuutil3 (= ${binary:Version}), openzfs-libuutil3 (= ${binary:Version}),
openzfs-libzfs4 (= ${binary:Version}), openzfs-libzfs6 (= ${binary:Version}),
openzfs-libzpool5 (= ${binary:Version}), openzfs-libzpool6 (= ${binary:Version}),
python3, python3,
${misc:Depends}, ${misc:Depends},
${shlibs:Depends} ${shlibs:Depends}

View File

@ -70,7 +70,7 @@ if BUILD_FREEBSD
libzfs_la_LIBADD += -lutil -lgeom libzfs_la_LIBADD += -lutil -lgeom
endif endif
libzfs_la_LDFLAGS += -version-info 5:0:1 libzfs_la_LDFLAGS += -version-info 6:0:0
pkgconfig_DATA += %D%/libzfs.pc pkgconfig_DATA += %D%/libzfs.pc

View File

@ -1,4 +1,4 @@
<abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libzfs.so.4'> <abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libzfs.so.6'>
<elf-needed> <elf-needed>
<dependency name='libzfs_core.so.3'/> <dependency name='libzfs_core.so.3'/>
<dependency name='libnvpair.so.3'/> <dependency name='libnvpair.so.3'/>

View File

@ -212,7 +212,7 @@ if BUILD_FREEBSD
libzpool_la_LIBADD += -lgeom libzpool_la_LIBADD += -lgeom
endif endif
libzpool_la_LDFLAGS += -version-info 5:0:0 libzpool_la_LDFLAGS += -version-info 6:0:0
if TARGET_CPU_POWERPC if TARGET_CPU_POWERPC
module/zfs/libzpool_la-vdev_raidz_math_powerpc_altivec.$(OBJEXT) : CFLAGS += -maltivec module/zfs/libzpool_la-vdev_raidz_math_powerpc_altivec.$(OBJEXT) : CFLAGS += -maltivec

View File

@ -99,10 +99,10 @@ License: @ZFS_META_LICENSE@
URL: https://github.com/openzfs/zfs URL: https://github.com/openzfs/zfs
Source0: %{name}-%{version}.tar.gz Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: libzpool5%{?_isa} = %{version}-%{release} Requires: libzpool6%{?_isa} = %{version}-%{release}
Requires: libnvpair3%{?_isa} = %{version}-%{release} Requires: libnvpair3%{?_isa} = %{version}-%{release}
Requires: libuutil3%{?_isa} = %{version}-%{release} Requires: libuutil3%{?_isa} = %{version}-%{release}
Requires: libzfs5%{?_isa} = %{version}-%{release} Requires: libzfs6%{?_isa} = %{version}-%{release}
Requires: %{name}-kmod = %{version} Requires: %{name}-kmod = %{version}
Provides: %{name}-kmod-common = %{version}-%{release} Provides: %{name}-kmod-common = %{version}-%{release}
Obsoletes: spl <= %{version} Obsoletes: spl <= %{version}
@ -150,21 +150,22 @@ Requires: sysstat
%description %description
This package contains the core ZFS command line utilities. This package contains the core ZFS command line utilities.
%package -n libzpool5 %package -n libzpool6
Summary: Native ZFS pool library for Linux Summary: Native ZFS pool library for Linux
Group: System Environment/Kernel Group: System Environment/Kernel
Obsoletes: libzpool2 <= %{version} Obsoletes: libzpool2 <= %{version}
Obsoletes: libzpool4 <= %{version} Obsoletes: libzpool4 <= %{version}
Obsoletes: libzpool5 <= %{version}
%description -n libzpool5 %description -n libzpool6
This package contains the zpool library, which provides support This package contains the zpool library, which provides support
for managing zpools for managing zpools
%if %{defined ldconfig_scriptlets} %if %{defined ldconfig_scriptlets}
%ldconfig_scriptlets -n libzpool5 %ldconfig_scriptlets -n libzpool6
%else %else
%post -n libzpool5 -p /sbin/ldconfig %post -n libzpool6 -p /sbin/ldconfig
%postun -n libzpool5 -p /sbin/ldconfig %postun -n libzpool6 -p /sbin/ldconfig
%endif %endif
%package -n libnvpair3 %package -n libnvpair3
@ -211,37 +212,39 @@ This library provides a variety of compatibility functions for OpenZFS:
# The library version is encoded in the package name. When updating the # The library version is encoded in the package name. When updating the
# version information it is important to add an obsoletes line below for # version information it is important to add an obsoletes line below for
# the previous version of the package. # the previous version of the package.
%package -n libzfs5 %package -n libzfs6
Summary: Native ZFS filesystem library for Linux Summary: Native ZFS filesystem library for Linux
Group: System Environment/Kernel Group: System Environment/Kernel
Obsoletes: libzfs2 <= %{version} Obsoletes: libzfs2 <= %{version}
Obsoletes: libzfs4 <= %{version} Obsoletes: libzfs4 <= %{version}
Obsoletes: libzfs5 <= %{version}
%description -n libzfs5 %description -n libzfs6
This package provides support for managing ZFS filesystems This package provides support for managing ZFS filesystems
%if %{defined ldconfig_scriptlets} %if %{defined ldconfig_scriptlets}
%ldconfig_scriptlets -n libzfs5 %ldconfig_scriptlets -n libzfs6
%else %else
%post -n libzfs5 -p /sbin/ldconfig %post -n libzfs6 -p /sbin/ldconfig
%postun -n libzfs5 -p /sbin/ldconfig %postun -n libzfs6 -p /sbin/ldconfig
%endif %endif
%package -n libzfs5-devel %package -n libzfs6-devel
Summary: Development headers Summary: Development headers
Group: System Environment/Kernel Group: System Environment/Kernel
Requires: libzfs5%{?_isa} = %{version}-%{release} Requires: libzfs6%{?_isa} = %{version}-%{release}
Requires: libzpool5%{?_isa} = %{version}-%{release} Requires: libzpool6%{?_isa} = %{version}-%{release}
Requires: libnvpair3%{?_isa} = %{version}-%{release} Requires: libnvpair3%{?_isa} = %{version}-%{release}
Requires: libuutil3%{?_isa} = %{version}-%{release} Requires: libuutil3%{?_isa} = %{version}-%{release}
Provides: libzpool5-devel = %{version}-%{release} Provides: libzpool6-devel = %{version}-%{release}
Provides: libnvpair3-devel = %{version}-%{release} Provides: libnvpair3-devel = %{version}-%{release}
Provides: libuutil3-devel = %{version}-%{release} Provides: libuutil3-devel = %{version}-%{release}
Obsoletes: zfs-devel <= %{version} Obsoletes: zfs-devel <= %{version}
Obsoletes: libzfs2-devel <= %{version} Obsoletes: libzfs2-devel <= %{version}
Obsoletes: libzfs4-devel <= %{version} Obsoletes: libzfs4-devel <= %{version}
Obsoletes: libzfs5-devel <= %{version}
%description -n libzfs5-devel %description -n libzfs6-devel
This package contains the header files needed for building additional This package contains the header files needed for building additional
applications against the ZFS libraries. applications against the ZFS libraries.
@ -290,7 +293,7 @@ Summary: Python %{python_version} wrapper for libzfs_core
Group: Development/Languages/Python Group: Development/Languages/Python
License: Apache-2.0 License: Apache-2.0
BuildArch: noarch BuildArch: noarch
Requires: libzfs5 = %{version}-%{release} Requires: libzfs6 = %{version}-%{release}
Requires: libnvpair3 = %{version}-%{release} Requires: libnvpair3 = %{version}-%{release}
Requires: libffi Requires: libffi
Requires: python%{__python_pkg_version} Requires: python%{__python_pkg_version}
@ -534,7 +537,7 @@ systemctl --system daemon-reload >/dev/null || true
%config(noreplace) %{_bashcompletiondir}/zfs %config(noreplace) %{_bashcompletiondir}/zfs
%config(noreplace) %{_bashcompletiondir}/zpool %config(noreplace) %{_bashcompletiondir}/zpool
%files -n libzpool5 %files -n libzpool6
%{_libdir}/libzpool.so.* %{_libdir}/libzpool.so.*
%files -n libnvpair3 %files -n libnvpair3
@ -543,10 +546,10 @@ systemctl --system daemon-reload >/dev/null || true
%files -n libuutil3 %files -n libuutil3
%{_libdir}/libuutil.so.* %{_libdir}/libuutil.so.*
%files -n libzfs5 %files -n libzfs6
%{_libdir}/libzfs*.so.* %{_libdir}/libzfs*.so.*
%files -n libzfs5-devel %files -n libzfs6-devel
%{_pkgconfigdir}/libzfs.pc %{_pkgconfigdir}/libzfs.pc
%{_pkgconfigdir}/libzfsbootenv.pc %{_pkgconfigdir}/libzfsbootenv.pc
%{_pkgconfigdir}/libzfs_core.pc %{_pkgconfigdir}/libzfs_core.pc