From 7cadfa1f37f78a9cf64ef995c805a48499df40cf Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Mon, 22 Jan 2024 13:45:28 +0100 Subject: [PATCH] btrfs: link against libbtrfsutil libblockdev has historically used btrfs-progs CLI utilities in the meanwhile libbtrfsutil has been developed and used by snapper. Not parsing CLI output and using the library functions should provide a more stable way to gather information from btrfs. --- .packit.yaml | 1 + configure.ac | 4 ++++ dist/libblockdev.spec.in | 2 +- misc/install-test-dependencies.yml | 2 ++ src/plugins/Makefile.am | 4 ++-- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.packit.yaml b/.packit.yaml index e47472382..f841c21ff 100644 --- a/.packit.yaml +++ b/.packit.yaml @@ -62,6 +62,7 @@ srpm_build_deps: - autoconf - autoconf-archive - automake + - btrfs-progs-devel - cryptsetup-devel - device-mapper-devel - e2fsprogs-devel diff --git a/configure.ac b/configure.ac index 02b26e3e3..bdf47be71 100644 --- a/configure.ac +++ b/configure.ac @@ -229,6 +229,10 @@ AS_IF([test "x$with_fs" != "xno" -o "x$with_crypto" != "xno" -o "x$with_swap" != [Define as neutral value if libblkid doesn't provide the definition])])] []) +AS_IF([test "x$with_btrfs" != "xno"], + [LIBBLOCKDEV_PKG_CHECK_MODULES([LIBBTRFSUTIL], [libbtrfsutil >= 5.1])], + []) + AS_IF([test "x$with_btrfs" != "xno" -o "x$with_mdraid" != "xno" -o "x$with_tools" != "xno"], [LIBBLOCKDEV_PKG_CHECK_MODULES([BYTESIZE], [bytesize >= 0.1])], []) diff --git a/dist/libblockdev.spec.in b/dist/libblockdev.spec.in index 768aa0c0a..c5f8522ea 100644 --- a/dist/libblockdev.spec.in +++ b/dist/libblockdev.spec.in @@ -164,7 +164,7 @@ with the libblockdev-utils library. %if %{with_btrfs} %package btrfs -BuildRequires: libbytesize-devel +BuildRequires: libbytesize-devel btrfs-progs-devel Summary: The BTRFS plugin for the libblockdev library Requires: %{name}-utils%{?_isa} = %{version}-%{release} Requires: btrfs-progs diff --git a/misc/install-test-dependencies.yml b/misc/install-test-dependencies.yml index 14a04e4ff..9dfcb9d0a 100644 --- a/misc/install-test-dependencies.yml +++ b/misc/install-test-dependencies.yml @@ -33,6 +33,7 @@ - name: Install build dependencies not covered by dnf builddep (Fedora) package: name={{item}} state=present with_items: + - btrfs-progs-devel - libfdisk-devel - keyutils-libs-devel - libnvme-devel @@ -162,6 +163,7 @@ - name: Install build dependencies not covered by apt build-dep (Debian/Ubuntu) package: name={{item}} state=present with_items: + - libbtrfsutil-dev - libfdisk-dev - libkeyutils-dev - libext2fs-dev diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index 0195e9e1f..39cc86c32 100644 --- a/src/plugins/Makefile.am +++ b/src/plugins/Makefile.am @@ -60,8 +60,8 @@ endif if WITH_BTRFS -libbd_btrfs_la_CFLAGS = $(GLIB_CFLAGS) $(GIO_CFLAGS) $(BYTESIZE_CFLAGS) -Wall -Wextra -Werror -libbd_btrfs_la_LIBADD = ${builddir}/../utils/libbd_utils.la $(GLIB_LIBS) $(GIO_LIBS) $(BYTESIZE_LIBS) +libbd_btrfs_la_CFLAGS = $(GLIB_CFLAGS) $(GIO_CFLAGS) $(BYTESIZE_CFLAGS) $(LIBBTRFSUTIL_CFLAGS) -Wall -Wextra -Werror +libbd_btrfs_la_LIBADD = ${builddir}/../utils/libbd_utils.la $(GLIB_LIBS) $(GIO_LIBS) $(BYTESIZE_LIBS) $(LIBBTRFSUTIL_LIBS) libbd_btrfs_la_LDFLAGS = -L${srcdir}/../utils/ -version-info 3:0:0 -Wl,--no-undefined -export-symbols-regex '^bd_.*' libbd_btrfs_la_CPPFLAGS = -I${builddir}/../../include/ libbd_btrfs_la_SOURCES = btrfs.c btrfs.h check_deps.c check_deps.h