From 5b2489caf266b3d8aadb206d85dc4c60fa028a2a Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Mon, 10 Nov 2025 12:50:16 -0800 Subject: [PATCH] Bump SONAME of libzfs and libzpool The ABI of libzfs and libzpool have breaking changes since the last major release. Bump the SONAME for the upcoming 2.4 release branch to libzfs7 and libzpool7. Reviewed-by: Rob Norris Signed-off-by: Brian Behlendorf Closes #17911 --- config/deb.am | 8 ++-- contrib/debian/Makefile.am | 8 ++-- contrib/debian/clean | 4 +- contrib/debian/control | 26 +++++------ ...nzfs-libzfs6.docs => openzfs-libzfs7.docs} | 0 ....install.in => openzfs-libzfs7.install.in} | 0 ...-libzpool6.docs => openzfs-libzpool7.docs} | 0 ...nstall.in => openzfs-libzpool7.install.in} | 0 lib/libzfs/Makefile.am | 2 +- lib/libzpool/Makefile.am | 2 +- rpm/generic/zfs.spec.in | 44 ++++++++++--------- 11 files changed, 48 insertions(+), 46 deletions(-) rename contrib/debian/{openzfs-libzfs6.docs => openzfs-libzfs7.docs} (100%) rename contrib/debian/{openzfs-libzfs6.install.in => openzfs-libzfs7.install.in} (100%) rename contrib/debian/{openzfs-libzpool6.docs => openzfs-libzpool7.docs} (100%) rename contrib/debian/{openzfs-libzpool6.install.in => openzfs-libzpool7.install.in} (100%) diff --git a/config/deb.am b/config/deb.am index 9e58e1905..3e9a93797 100644 --- a/config/deb.am +++ b/config/deb.am @@ -58,9 +58,9 @@ deb-utils: deb-local rpm-utils-initramfs pkg1=$${name}-$${version}.$${arch}.rpm; \ pkg2=libnvpair3-$${version}.$${arch}.rpm; \ pkg3=libuutil3-$${version}.$${arch}.rpm; \ - pkg4=libzfs6-$${version}.$${arch}.rpm; \ - pkg5=libzpool6-$${version}.$${arch}.rpm; \ - pkg6=libzfs6-devel-$${version}.$${arch}.rpm; \ + pkg4=libzfs7-$${version}.$${arch}.rpm; \ + pkg5=libzpool7-$${version}.$${arch}.rpm; \ + pkg6=libzfs7-devel-$${version}.$${arch}.rpm; \ pkg7=$${name}-test-$${version}.$${arch}.rpm; \ pkg8=$${name}-dracut-$${version}.noarch.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`; \ echo "#!$(SHELL)" > $${path_prepend}/dh_shlibdeps; \ echo "`which dh_shlibdeps` -- \ - -xlibuutil3linux -xlibnvpair3linux -xlibzfs6linux -xlibzpool6linux" \ + -xlibuutil3linux -xlibnvpair3linux -xlibzfs7linux -xlibzpool7linux" \ >> $${path_prepend}/dh_shlibdeps; \ ## These -x arguments are passed to dpkg-shlibdeps, which exclude the ## Debianized packages from the auto-generated dependencies of the new debs, diff --git a/contrib/debian/Makefile.am b/contrib/debian/Makefile.am index 99d512312..3c2198560 100644 --- a/contrib/debian/Makefile.am +++ b/contrib/debian/Makefile.am @@ -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-libuutil3.docs dist_noinst_DATA += %D%/openzfs-libuutil3.install.in -dist_noinst_DATA += %D%/openzfs-libzfs6.docs -dist_noinst_DATA += %D%/openzfs-libzfs6.install.in +dist_noinst_DATA += %D%/openzfs-libzfs7.docs +dist_noinst_DATA += %D%/openzfs-libzfs7.install.in dist_noinst_DATA += %D%/openzfs-libzfsbootenv1.docs dist_noinst_DATA += %D%/openzfs-libzfsbootenv1.install.in dist_noinst_DATA += %D%/openzfs-libzfs-dev.docs dist_noinst_DATA += %D%/openzfs-libzfs-dev.install.in -dist_noinst_DATA += %D%/openzfs-libzpool6.docs -dist_noinst_DATA += %D%/openzfs-libzpool6.install.in +dist_noinst_DATA += %D%/openzfs-libzpool7.docs +dist_noinst_DATA += %D%/openzfs-libzpool7.install.in dist_noinst_DATA += %D%/openzfs-python3-pyzfs.install dist_noinst_DATA += %D%/openzfs-zfs-dkms.config dist_noinst_DATA += %D%/openzfs-zfs-dkms.dkms diff --git a/contrib/debian/clean b/contrib/debian/clean index 4f52d01b8..caabcd30c 100644 --- a/contrib/debian/clean +++ b/contrib/debian/clean @@ -6,6 +6,6 @@ contrib/pyzfs/libzfs_core/bindings/__pycache__/ contrib/pyzfs/pyzfs.egg-info/ debian/openzfs-libnvpair3.install debian/openzfs-libuutil3.install -debian/openzfs-libzfs6.install +debian/openzfs-libzfs7.install debian/openzfs-libzfs-dev.install -debian/openzfs-libzpool6.install +debian/openzfs-libzpool7.install diff --git a/contrib/debian/control b/contrib/debian/control index c5358dedc..a886c2e86 100644 --- a/contrib/debian/control +++ b/contrib/debian/control @@ -79,9 +79,9 @@ Architecture: linux-any Depends: libssl-dev | libssl1.0-dev, openzfs-libnvpair3 (= ${binary:Version}), openzfs-libuutil3 (= ${binary:Version}), - openzfs-libzfs6 (= ${binary:Version}), + openzfs-libzfs7 (= ${binary:Version}), openzfs-libzfsbootenv1 (= ${binary:Version}), - openzfs-libzpool6 (= ${binary:Version}), + openzfs-libzpool7 (= ${binary:Version}), ${misc:Depends} Replaces: libzfslinux-dev Conflicts: libzfslinux-dev @@ -91,18 +91,18 @@ Description: OpenZFS filesystem development files for Linux libraries of OpenZFS filesystem. . This package includes the development files of libnvpair3, libuutil3, - libzpool6 and libzfs6. + libzpool7 and libzfs7. -Package: openzfs-libzfs6 +Package: openzfs-libzfs7 Section: contrib/libs Architecture: linux-any Depends: ${misc:Depends}, ${shlibs:Depends} # The libcurl4 is loaded through dlopen("libcurl.so.4"). # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=988521 Recommends: libcurl4 -Breaks: libzfs2, libzfs4, libzfs4linux, libzfs6linux, openzfs-libzfs4 -Replaces: libzfs2, libzfs4, libzfs4linux, libzfs6linux, openzfs-libzfs4 -Conflicts: libzfs6linux +Breaks: libzfs2, libzfs4, libzfs4linux, libzfs6linux, libzfs7linux, openzfs-libzfs4, openzfs-libzfs6 +Replaces: libzfs2, libzfs4, libzfs4linux, libzfs6linux, libzfs7linux, openzfs-libzfs4, openzfs-libzfs6 +Conflicts: libzfs7linux Description: OpenZFS filesystem library for Linux - general support OpenZFS is a storage platform that encompasses the functionality of traditional filesystems and volume managers. It supports data checksums, @@ -124,13 +124,13 @@ Description: OpenZFS filesystem library for Linux - label info support . The zfsbootenv library provides support for modifying ZFS label information. -Package: openzfs-libzpool6 +Package: openzfs-libzpool7 Section: contrib/libs Architecture: linux-any Depends: ${misc:Depends}, ${shlibs:Depends} -Breaks: libzpool2, libzpool5, libzpool6linux -Replaces: libzpool2, libzpool5, libzpool6linux -Conflicts: libzpool6linux +Breaks: libzpool2, libzpool5, libzpool6linux, libzpool7linux +Replaces: libzpool2, libzpool5, libzpool6linux, libzpool7linux +Conflicts: libzpool7linux Description: OpenZFS pool library for Linux OpenZFS is a storage platform that encompasses the functionality of traditional filesystems and volume managers. It supports data checksums, @@ -247,8 +247,8 @@ Architecture: linux-any Pre-Depends: ${misc:Pre-Depends} Depends: openzfs-libnvpair3 (= ${binary:Version}), openzfs-libuutil3 (= ${binary:Version}), - openzfs-libzfs6 (= ${binary:Version}), - openzfs-libzpool6 (= ${binary:Version}), + openzfs-libzfs7 (= ${binary:Version}), + openzfs-libzpool7 (= ${binary:Version}), python3, ${misc:Depends}, ${shlibs:Depends} diff --git a/contrib/debian/openzfs-libzfs6.docs b/contrib/debian/openzfs-libzfs7.docs similarity index 100% rename from contrib/debian/openzfs-libzfs6.docs rename to contrib/debian/openzfs-libzfs7.docs diff --git a/contrib/debian/openzfs-libzfs6.install.in b/contrib/debian/openzfs-libzfs7.install.in similarity index 100% rename from contrib/debian/openzfs-libzfs6.install.in rename to contrib/debian/openzfs-libzfs7.install.in diff --git a/contrib/debian/openzfs-libzpool6.docs b/contrib/debian/openzfs-libzpool7.docs similarity index 100% rename from contrib/debian/openzfs-libzpool6.docs rename to contrib/debian/openzfs-libzpool7.docs diff --git a/contrib/debian/openzfs-libzpool6.install.in b/contrib/debian/openzfs-libzpool7.install.in similarity index 100% rename from contrib/debian/openzfs-libzpool6.install.in rename to contrib/debian/openzfs-libzpool7.install.in diff --git a/lib/libzfs/Makefile.am b/lib/libzfs/Makefile.am index 5f8963dcc..e2cbca47b 100644 --- a/lib/libzfs/Makefile.am +++ b/lib/libzfs/Makefile.am @@ -70,7 +70,7 @@ if BUILD_FREEBSD libzfs_la_LIBADD += -lutil -lgeom endif -libzfs_la_LDFLAGS += -version-info 6:0:0 +libzfs_la_LDFLAGS += -version-info 7:0:0 pkgconfig_DATA += %D%/libzfs.pc diff --git a/lib/libzpool/Makefile.am b/lib/libzpool/Makefile.am index aeacc595b..4658e025e 100644 --- a/lib/libzpool/Makefile.am +++ b/lib/libzpool/Makefile.am @@ -212,7 +212,7 @@ if BUILD_FREEBSD libzpool_la_LIBADD += -lgeom endif -libzpool_la_LDFLAGS += -version-info 6:0:0 +libzpool_la_LDFLAGS += -version-info 7:0:0 if TARGET_CPU_POWERPC module/zfs/libzpool_la-vdev_raidz_math_powerpc_altivec.$(OBJEXT) : CFLAGS += -maltivec diff --git a/rpm/generic/zfs.spec.in b/rpm/generic/zfs.spec.in index 8986e29eb..9ae479aeb 100644 --- a/rpm/generic/zfs.spec.in +++ b/rpm/generic/zfs.spec.in @@ -111,10 +111,10 @@ License: @ZFS_META_LICENSE@ URL: https://github.com/openzfs/zfs Source0: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -Requires: libzpool6%{?_isa} = %{version}-%{release} +Requires: libzpool7%{?_isa} = %{version}-%{release} Requires: libnvpair3%{?_isa} = %{version}-%{release} Requires: libuutil3%{?_isa} = %{version}-%{release} -Requires: libzfs6%{?_isa} = %{version}-%{release} +Requires: libzfs7%{?_isa} = %{version}-%{release} Requires: %{name}-kmod = %{version} Provides: %{name}-kmod-common = %{version}-%{release} Obsoletes: spl <= %{version} @@ -162,22 +162,23 @@ Requires: sysstat %description This package contains the core ZFS command line utilities. -%package -n libzpool6 +%package -n libzpool7 Summary: Native ZFS pool library for Linux Group: System Environment/Kernel Obsoletes: libzpool2 <= %{version} Obsoletes: libzpool4 <= %{version} Obsoletes: libzpool5 <= %{version} +Obsoletes: libzpool6 <= %{version} -%description -n libzpool6 +%description -n libzpool7 This package contains the zpool library, which provides support for managing zpools %if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libzpool6 +%ldconfig_scriptlets -n libzpool7 %else -%post -n libzpool6 -p /sbin/ldconfig -%postun -n libzpool6 -p /sbin/ldconfig +%post -n libzpool7 -p /sbin/ldconfig +%postun -n libzpool7 -p /sbin/ldconfig %endif %package -n libnvpair3 @@ -224,31 +225,32 @@ This library provides a variety of compatibility functions for OpenZFS: # The library version is encoded in the package name. When updating the # version information it is important to add an obsoletes line below for # the previous version of the package. -%package -n libzfs6 +%package -n libzfs7 Summary: Native ZFS filesystem library for Linux Group: System Environment/Kernel Obsoletes: libzfs2 <= %{version} Obsoletes: libzfs4 <= %{version} Obsoletes: libzfs5 <= %{version} +Obsoletes: libzfs6 <= %{version} -%description -n libzfs6 +%description -n libzfs7 This package provides support for managing ZFS filesystems %if %{defined ldconfig_scriptlets} -%ldconfig_scriptlets -n libzfs6 +%ldconfig_scriptlets -n libzfs7 %else -%post -n libzfs6 -p /sbin/ldconfig -%postun -n libzfs6 -p /sbin/ldconfig +%post -n libzfs7 -p /sbin/ldconfig +%postun -n libzfs7 -p /sbin/ldconfig %endif -%package -n libzfs6-devel +%package -n libzfs7-devel Summary: Development headers Group: System Environment/Kernel -Requires: libzfs6%{?_isa} = %{version}-%{release} -Requires: libzpool6%{?_isa} = %{version}-%{release} +Requires: libzfs7%{?_isa} = %{version}-%{release} +Requires: libzpool7%{?_isa} = %{version}-%{release} Requires: libnvpair3%{?_isa} = %{version}-%{release} Requires: libuutil3%{?_isa} = %{version}-%{release} -Provides: libzpool6-devel = %{version}-%{release} +Provides: libzpool7-devel = %{version}-%{release} Provides: libnvpair3-devel = %{version}-%{release} Provides: libuutil3-devel = %{version}-%{release} Obsoletes: zfs-devel <= %{version} @@ -256,7 +258,7 @@ Obsoletes: libzfs2-devel <= %{version} Obsoletes: libzfs4-devel <= %{version} Obsoletes: libzfs5-devel <= %{version} -%description -n libzfs6-devel +%description -n libzfs7-devel This package contains the header files needed for building additional applications against the ZFS libraries. @@ -305,7 +307,7 @@ Summary: Python %{python_version} wrapper for libzfs_core Group: Development/Languages/Python License: Apache-2.0 BuildArch: noarch -Requires: libzfs6 = %{version}-%{release} +Requires: libzfs7 = %{version}-%{release} Requires: libnvpair3 = %{version}-%{release} Requires: libffi Requires: python%{__python_pkg_version} @@ -548,7 +550,7 @@ systemctl --system daemon-reload >/dev/null || true %config(noreplace) %{_bashcompletiondir}/zfs %config(noreplace) %{_bashcompletiondir}/zpool -%files -n libzpool6 +%files -n libzpool7 %{_libdir}/libzpool.so.* %files -n libnvpair3 @@ -557,10 +559,10 @@ systemctl --system daemon-reload >/dev/null || true %files -n libuutil3 %{_libdir}/libuutil.so.* -%files -n libzfs6 +%files -n libzfs7 %{_libdir}/libzfs*.so.* -%files -n libzfs6-devel +%files -n libzfs7-devel %{_pkgconfigdir}/libzfs.pc %{_pkgconfigdir}/libzfsbootenv.pc %{_pkgconfigdir}/libzfs_core.pc