From e84b0bd6385cbf69f27f78df0503af1cf039a784 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sat, 27 Sep 2025 16:34:27 -0400 Subject: [PATCH 1/2] Delete packaging/ directory Nobody uses this directory to centralize all packaging stuff anyway. Signed-off-by: Neal Gompa --- packaging/README | 32 ----- packaging/bcachefs-tools.spec | 75 ----------- packaging/userspace-rcu.spec | 238 ---------------------------------- 3 files changed, 345 deletions(-) delete mode 100644 packaging/README delete mode 100644 packaging/bcachefs-tools.spec delete mode 100644 packaging/userspace-rcu.spec diff --git a/packaging/README b/packaging/README deleted file mode 100644 index 704c60d6..00000000 --- a/packaging/README +++ /dev/null @@ -1,32 +0,0 @@ -==== liburcu requirement ==== - -https://liburcu.org/ is needed for this software to work, but older RHEL/CentOS and other -distros might not have a reliable install. You might have to do the following... - -1. Make & install the latest liburcu tarball from their site. -2. In the Makefile for bcachefs-tools... - a. Remove liburcu from PKGCONFIG_LIBS - b. Add -lurcu to LDLIBS -3. Add LD_LIBRARY_PATH=/usr/local/lib to /etc/environment -4. Remove "BuildRequires: userspace-rcu-devel" and "Requires: userspace-rcu" from the - spec file here. - -==== RHEL-CentOS 7 ==== - -You need to use https://www.softwarecollections.org/ to install a newer GCC. - -As root: yum install devtoolset-8-gcc - -Before building: scl enable devtoolset-8 bash - -===== RHEL-CentOS (any) ==== - -1. As root, "yum install rpmdevtools help2man" -2. Make a non-root user to build RPMs with. -3. "su - (non-root user)" and use "rpmdev-setuptree" to create an RPM build structure. -4. Copy the SPEC file from this directory to the "~/rpmbuild/SPECS/" folder. -6. Move the parent directory here to bcachefs-tools-(VERSION), and "cd" to its parent. -7. "tar cjf bcachefs-tools-(VERSION).tar.bz2 (directory of bcachefs-tools-(VERSION))" -8. "rpmbuild -bs ~/rpmbuild/SPECS/bcachefs-tools.spec" -9. "rpmbuild -bb ~/rpmbuild/SPECS/bcachefs-tools.spec" -10. The RPMs will be in "~/rpmbuild/RPMS" and "~/rpmbuild/SRPMS". diff --git a/packaging/bcachefs-tools.spec b/packaging/bcachefs-tools.spec deleted file mode 100644 index 97a83e27..00000000 --- a/packaging/bcachefs-tools.spec +++ /dev/null @@ -1,75 +0,0 @@ -Name: bcachefs-tools -# define with i.e. --define '_version 1.0' -Version: %{_version} -Release: 1%{?dist} -Summary: Userspace tools for bcachefs - -License: GPLv2 -URL: https://github.com/koverstreet/bcachefs-tools - -BuildRequires: gcc -BuildRequires: make -BuildRequires: cargo -BuildRequires: clang-devel -BuildRequires: keyutils-libs-devel -BuildRequires: libaio-devel -BuildRequires: libattr-devel -BuildRequires: libblkid-devel -BuildRequires: libsodium-devel -BuildRequires: libuuid-devel -BuildRequires: libzstd-devel -BuildRequires: lz4-devel -BuildRequires: systemd-devel -BuildRequires: systemd-rpm-macros -BuildRequires: udev -BuildRequires: userspace-rcu-devel -BuildRequires: zlib-devel - -%description -The bcachefs tool, which has a number of subcommands for formatting and managing bcachefs filesystems. Run bcachefs --help for full list of commands. - -%prep -%setup -q - -%build -%make_build V=0 --no-print-directory - -%install -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT%{_sbindir} -mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8 -%make_install PREFIX=%{_exec_prefix} ROOT_SBINDIR=%{_sbindir} - -# These may be debian-specific, and for unlocking encrypted root fs -rm -f %{buildroot}/%{_datadir}/initramfs-tools/hooks/bcachefs -rm -f %{buildroot}/%{_datadir}/initramfs-tools/scripts/local-premount/bcachefs -# The library is not needed by userspace -rm -f %{buildroot}/usr/lib/libbcachefs.so - -%files -%{_sbindir}/bcachefs -%{_sbindir}/mount.bcachefs -%{_sbindir}/fsck.bcachefs -%{_sbindir}/mkfs.bcachefs -%{_sbindir}/mount.fuse.bcachefs -%{_sbindir}/fsck.fuse.bcachefs -%{_sbindir}/mkfs.fuse.bcachefs -%{_mandir}/man8/bcachefs.8.gz -%{_udevrulesdir}/64-bcachefs.rules -%{_unitdir}/bcachefsck* -%{_unitdir}/system-bcachefsck.slice -%{_libexecdir}/bcachefsck* - -%changelog -* Tue Nov 15 2022 Eric Sandeen - 2022.11.15-1 -- NOTE: This binary RPM has been built directly from the bcachefs-tools - git tree with "make rpm" from the git hash indicated in the package version. -- Update spec file to allow in-tree rpm builds -- Remove maually added Requires: and unneeded build-requires - -* Tue Jan 21 2020 Michael Adams - 2020.01.21-1 -- Updated RPM package definition to reflect that changes in codebase have occurred. - -* Tue Jan 07 2020 Michael Adams - 2020.01.07-1 -- Initial RPM package definition -- Makefile needs further work to accommodate RPM macros. diff --git a/packaging/userspace-rcu.spec b/packaging/userspace-rcu.spec deleted file mode 100644 index 40516cc2..00000000 --- a/packaging/userspace-rcu.spec +++ /dev/null @@ -1,238 +0,0 @@ -# rpmbuild with QA_RPATHS=$[0x0001] - -Name: userspace-rcu -Version: 0.11.1 -Release: 2%{?dist} -Summary: liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. - -License: LGPLv2.1 -URL: https://liburcu.org/ -Source0: https://lttng.org/files/urcu/%{name}-%{version}.tar.bz2 -Source1: https://lttng.org/files/urcu/%{name}-%{version}.tar.bz2.asc - -# "devel" files are installed with this package, also. -Provides: userspace-rcu-devel - -# Recommend using https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/ for this - -BuildRequires: bzip2 -BuildRequires: gcc -BuildRequires: make -BuildRequires: m4 - -%description -liburcu provides efficient data structures based on RCU and lock-free algorithms. Those structures include hash tables, queues, stacks, and doubly-linked lists. - -%prep -%setup -q - -%configure - -%build -make - -%install -rm -rf $RPM_BUILD_ROOT -%make_install - -%files -%{_datadir}/doc/userspace-rcu/cds-api.md -%{_datadir}/doc/userspace-rcu/examples/hlist/cds_hlist_add_head_rcu.c -%{_datadir}/doc/userspace-rcu/examples/hlist/cds_hlist_del_rcu.c -%{_datadir}/doc/userspace-rcu/examples/hlist/cds_hlist_for_each_entry_rcu.c -%{_datadir}/doc/userspace-rcu/examples/hlist/cds_hlist_for_each_rcu.c -%{_datadir}/doc/userspace-rcu/examples/hlist/Makefile -%{_datadir}/doc/userspace-rcu/examples/hlist/Makefile.cds_hlist_add_head_rcu -%{_datadir}/doc/userspace-rcu/examples/hlist/Makefile.cds_hlist_del_rcu -%{_datadir}/doc/userspace-rcu/examples/hlist/Makefile.cds_hlist_for_each_entry_rcu -%{_datadir}/doc/userspace-rcu/examples/hlist/Makefile.cds_hlist_for_each_rcu -%{_datadir}/doc/userspace-rcu/examples/lfstack/cds_lfs_pop_all_blocking.c -%{_datadir}/doc/userspace-rcu/examples/lfstack/cds_lfs_pop_blocking.c -%{_datadir}/doc/userspace-rcu/examples/lfstack/cds_lfs_push.c -%{_datadir}/doc/userspace-rcu/examples/lfstack/Makefile -%{_datadir}/doc/userspace-rcu/examples/lfstack/Makefile.cds_lfs_pop_all_blocking -%{_datadir}/doc/userspace-rcu/examples/lfstack/Makefile.cds_lfs_pop_blocking -%{_datadir}/doc/userspace-rcu/examples/lfstack/Makefile.cds_lfs_push -%{_datadir}/doc/userspace-rcu/examples/list/cds_list_add_rcu.c -%{_datadir}/doc/userspace-rcu/examples/list/cds_list_add_tail_rcu.c -%{_datadir}/doc/userspace-rcu/examples/list/cds_list_del_rcu.c -%{_datadir}/doc/userspace-rcu/examples/list/cds_list_for_each_entry_rcu.c -%{_datadir}/doc/userspace-rcu/examples/list/cds_list_for_each_rcu.c -%{_datadir}/doc/userspace-rcu/examples/list/cds_list_replace_rcu.c -%{_datadir}/doc/userspace-rcu/examples/list/Makefile -%{_datadir}/doc/userspace-rcu/examples/list/Makefile.cds_list_add_rcu -%{_datadir}/doc/userspace-rcu/examples/list/Makefile.cds_list_add_tail_rcu -%{_datadir}/doc/userspace-rcu/examples/list/Makefile.cds_list_del_rcu -%{_datadir}/doc/userspace-rcu/examples/list/Makefile.cds_list_for_each_entry_rcu -%{_datadir}/doc/userspace-rcu/examples/list/Makefile.cds_list_for_each_rcu -%{_datadir}/doc/userspace-rcu/examples/list/Makefile.cds_list_replace_rcu -%{_datadir}/doc/userspace-rcu/examples/Makefile -%{_datadir}/doc/userspace-rcu/examples/Makefile.examples.template -%{_datadir}/doc/userspace-rcu/examples/rculfhash/cds_lfht_add_replace.c -%{_datadir}/doc/userspace-rcu/examples/rculfhash/cds_lfht_add_unique.c -%{_datadir}/doc/userspace-rcu/examples/rculfhash/cds_lfht_add.c -%{_datadir}/doc/userspace-rcu/examples/rculfhash/cds_lfht_del.c -%{_datadir}/doc/userspace-rcu/examples/rculfhash/cds_lfht_destroy.c -%{_datadir}/doc/userspace-rcu/examples/rculfhash/cds_lfht_for_each_entry_duplicate.c -%{_datadir}/doc/userspace-rcu/examples/rculfhash/cds_lfht_lookup.c -%{_datadir}/doc/userspace-rcu/examples/rculfhash/jhash.h -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile.cds_lfht_add -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile.cds_lfht_add_replace -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile.cds_lfht_add_unique -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile.cds_lfht_del -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile.cds_lfht_destroy -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile.cds_lfht_for_each_entry_duplicate -%{_datadir}/doc/userspace-rcu/examples/rculfhash/Makefile.cds_lfht_lookup -%{_datadir}/doc/userspace-rcu/examples/rculfqueue/cds_lfq_dequeue.c -%{_datadir}/doc/userspace-rcu/examples/rculfqueue/cds_lfq_enqueue.c -%{_datadir}/doc/userspace-rcu/examples/rculfqueue/Makefile -%{_datadir}/doc/userspace-rcu/examples/rculfqueue/Makefile.cds_lfq_dequeue -%{_datadir}/doc/userspace-rcu/examples/rculfqueue/Makefile.cds_lfq_enqueue -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/bp.c -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/Makefile -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/Makefile.bp -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/Makefile.mb -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/Makefile.membarrier -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/Makefile.qsbr -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/Makefile.signal -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/mb.c -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/membarrier.c -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/qsbr.c -%{_datadir}/doc/userspace-rcu/examples/urcu-flavors/signal.c -%{_datadir}/doc/userspace-rcu/examples/wfcqueue/cds_wfcq_dequeue.c -%{_datadir}/doc/userspace-rcu/examples/wfcqueue/cds_wfcq_enqueue.c -%{_datadir}/doc/userspace-rcu/examples/wfcqueue/cds_wfcq_splice.c -%{_datadir}/doc/userspace-rcu/examples/wfcqueue/Makefile -%{_datadir}/doc/userspace-rcu/examples/wfcqueue/Makefile.cds_wfcq_dequeue -%{_datadir}/doc/userspace-rcu/examples/wfcqueue/Makefile.cds_wfcq_enqueue -%{_datadir}/doc/userspace-rcu/examples/wfcqueue/Makefile.cds_wfcq_splice -%{_datadir}/doc/userspace-rcu/examples/wfstack/cds_wfs_pop_all_blocking.c -%{_datadir}/doc/userspace-rcu/examples/wfstack/cds_wfs_pop.c -%{_datadir}/doc/userspace-rcu/examples/wfstack/cds_wfs_push.c -%{_datadir}/doc/userspace-rcu/examples/wfstack/Makefile -%{_datadir}/doc/userspace-rcu/examples/wfstack/Makefile.cds_wfs_pop -%{_datadir}/doc/userspace-rcu/examples/wfstack/Makefile.cds_wfs_pop_all_blocking -%{_datadir}/doc/userspace-rcu/examples/wfstack/Makefile.cds_wfs_push -%{_datadir}/doc/userspace-rcu/LICENSE -%{_datadir}/doc/userspace-rcu/rcu-api.md -%{_datadir}/doc/userspace-rcu/README.md -%{_datadir}/doc/userspace-rcu/solaris-build.md -%{_datadir}/doc/userspace-rcu/uatomic-api.md -%{_includedir}/urcu-bp.h -%{_includedir}/urcu-call-rcu.h -%{_includedir}/urcu-defer.h -%{_includedir}/urcu-flavor.h -%{_includedir}/urcu-pointer.h -%{_includedir}/urcu-qsbr.h -%{_includedir}/urcu.h -%{_includedir}/urcu/arch.h -%{_includedir}/urcu/arch/generic.h -%{_includedir}/urcu/call-rcu.h -%{_includedir}/urcu/cds.h -%{_includedir}/urcu/compiler.h -%{_includedir}/urcu/config.h -%{_includedir}/urcu/debug.h -%{_includedir}/urcu/defer.h -%{_includedir}/urcu/flavor.h -%{_includedir}/urcu/futex.h -%{_includedir}/urcu/hlist.h -%{_includedir}/urcu/lfstack.h -%{_includedir}/urcu/list.h -%{_includedir}/urcu/map/clear.h -%{_includedir}/urcu/map/urcu-bp.h -%{_includedir}/urcu/map/urcu-mb.h -%{_includedir}/urcu/map/urcu-memb.h -%{_includedir}/urcu/map/urcu-qsbr.h -%{_includedir}/urcu/map/urcu-signal.h -%{_includedir}/urcu/map/urcu.h -%{_includedir}/urcu/pointer.h -%{_includedir}/urcu/rcuhlist.h -%{_includedir}/urcu/rculfhash.h -%{_includedir}/urcu/rculfqueue.h -%{_includedir}/urcu/rculfstack.h -%{_includedir}/urcu/rculist.h -%{_includedir}/urcu/ref.h -%{_includedir}/urcu/static/lfstack.h -%{_includedir}/urcu/static/pointer.h -%{_includedir}/urcu/static/rculfqueue.h -%{_includedir}/urcu/static/rculfstack.h -%{_includedir}/urcu/static/urcu-bp.h -%{_includedir}/urcu/static/urcu-common.h -%{_includedir}/urcu/static/urcu-mb.h -%{_includedir}/urcu/static/urcu-memb.h -%{_includedir}/urcu/static/urcu-qsbr.h -%{_includedir}/urcu/static/urcu-signal.h -%{_includedir}/urcu/static/urcu.h -%{_includedir}/urcu/static/wfcqueue.h -%{_includedir}/urcu/static/wfqueue.h -%{_includedir}/urcu/static/wfstack.h -%{_includedir}/urcu/syscall-compat.h -%{_includedir}/urcu/system.h -%{_includedir}/urcu/tls-compat.h -%{_includedir}/urcu/uatomic_arch.h -%{_includedir}/urcu/uatomic.h -%{_includedir}/urcu/uatomic/generic.h -%{_includedir}/urcu/urcu_ref.h -%{_includedir}/urcu/urcu-bp.h -%{_includedir}/urcu/urcu-futex.h -%{_includedir}/urcu/urcu-mb.h -%{_includedir}/urcu/urcu-memb.h -%{_includedir}/urcu/urcu-qsbr.h -%{_includedir}/urcu/urcu-signal.h -%{_includedir}/urcu/urcu.h -%{_includedir}/urcu/wfcqueue.h -%{_includedir}/urcu/wfqueue.h -%{_includedir}/urcu/wfstack.h -%{_libdir}/liburcu-bp.a -%{_libdir}/liburcu-bp.la -%{_libdir}/liburcu-bp.so -%{_libdir}/liburcu-bp.so.6 -%{_libdir}/liburcu-bp.so.6.1.0 -%{_libdir}/liburcu-cds.a -%{_libdir}/liburcu-cds.la -%{_libdir}/liburcu-cds.so -%{_libdir}/liburcu-cds.so.6 -%{_libdir}/liburcu-cds.so.6.1.0 -%{_libdir}/liburcu-common.a -%{_libdir}/liburcu-common.la -%{_libdir}/liburcu-common.so -%{_libdir}/liburcu-common.so.6 -%{_libdir}/liburcu-common.so.6.1.0 -%{_libdir}/liburcu-mb.a -%{_libdir}/liburcu-mb.la -%{_libdir}/liburcu-mb.so -%{_libdir}/liburcu-mb.so.6 -%{_libdir}/liburcu-mb.so.6.1.0 -%{_libdir}/liburcu-memb.a -%{_libdir}/liburcu-memb.la -%{_libdir}/liburcu-memb.so -%{_libdir}/liburcu-memb.so.6 -%{_libdir}/liburcu-memb.so.6.1.0 -%{_libdir}/liburcu-qsbr.a -%{_libdir}/liburcu-qsbr.la -%{_libdir}/liburcu-qsbr.so -%{_libdir}/liburcu-qsbr.so.6 -%{_libdir}/liburcu-qsbr.so.6.1.0 -%{_libdir}/liburcu-signal.a -%{_libdir}/liburcu-signal.la -%{_libdir}/liburcu-signal.so -%{_libdir}/liburcu-signal.so.6 -%{_libdir}/liburcu-signal.so.6.1.0 -%{_libdir}/liburcu.a -%{_libdir}/liburcu.la -%{_libdir}/liburcu.so -%{_libdir}/liburcu.so.6 -%{_libdir}/liburcu.so.6.1.0 -%{_libdir}/pkgconfig/liburcu-bp.pc -%{_libdir}/pkgconfig/liburcu-cds.pc -%{_libdir}/pkgconfig/liburcu-mb.pc -%{_libdir}/pkgconfig/liburcu-qsbr.pc -%{_libdir}/pkgconfig/liburcu-signal.pc -%{_libdir}/pkgconfig/liburcu.pc - -%changelog -* Mon Feb 24 2020 Michael Adams - 0.11-2 -- Try to fix RPM package install warning -* Tue Jan 07 2020 Michael Adams - 0.11-1 -- Initial RPM package From 76012d701b71350f2491463ec223e247a87faad0 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sat, 27 Sep 2025 16:48:25 -0400 Subject: [PATCH 2/2] New RPM packaging derived from the Fedora package This works as a new reference package and can be built from the Makefile with "make rpm". It will work for virtually all RPM distributions. Signed-off-by: Neal Gompa --- Makefile | 2 +- bcachefs-tools.spec | 178 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 bcachefs-tools.spec diff --git a/Makefile b/Makefile index 9e41dcd4..3a770390 100644 --- a/Makefile +++ b/Makefile @@ -210,7 +210,7 @@ deb: all .PHONY: rpm rpm: clean - rpmbuild --build-in-place -bb --define "_version $(subst -,_,$(VERSION))" packaging/bcachefs-tools.spec + rpmbuild --build-in-place -bb --define "_version $(subst -,_,$(VERSION))" bcachefs-tools.spec bcachefs-principles-of-operation.pdf: doc/bcachefs-principles-of-operation.tex pdflatex doc/bcachefs-principles-of-operation.tex diff --git a/bcachefs-tools.spec b/bcachefs-tools.spec new file mode 100644 index 00000000..b5289da7 --- /dev/null +++ b/bcachefs-tools.spec @@ -0,0 +1,178 @@ +%global kmodname bcachefs + +# Ensure that the build script shell is bash +%global _buildshell /bin/bash + +%global dkmsname dkms-%{kmodname} + +# SUSE Linux does not define the dist tag, so we must define it manually +%if "%{_vendor}" == "suse" +%global dist .suse%{?suse_version} +%endif + +# Disable LTO for now until more testing can be done. +%global _lto_cflags %{nil} + +%global make_opts VERSION="%{version}" BCACHEFS_FUSE=1 BUILD_VERBOSE=1 PREFIX=%{_prefix} ROOT_SBINDIR=%{_sbindir} + +Name: bcachefs-tools +# define with i.e. --define '_version 1.0' +Version: %{_version} +Release: 0%{?dist} +Summary: Userspace tools for bcachefs + +# --- rust --- +# Apache-2.0 +# Apache-2.0 OR MIT +# Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT +# MIT +# MIT OR Apache-2.0 +# MPL-2.0 +# Unlicense OR MIT +# --- misc --- +# GPL-2.0-only +# GPL-2.0-or-later +# LGPL-2.1-only +# BSD-3-Clause +License: GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-only AND BSD-3-Clause AND (Apache-2.0 AND (Apache-2.0 OR MIT) AND (Apache-2.0 with LLVM-exception OR Apache-2.0 OR MIT) AND MIT AND MPL-2.0 AND (Unlicense OR MIT)) +URL: https://bcachefs.org/ +Source: https://evilpiepirate.org/%{name}/%{name}-vendored-%{version}.tar.zst + +BuildRequires: findutils +BuildRequires: gcc +BuildRequires: jq +BuildRequires: make +BuildRequires: tar +BuildRequires: zstd + +BuildRequires: cargo + +%if 0%{?suse_version} +BuildRequires: rust +%else +BuildRequires: rustc +%endif + +BuildRequires: libaio-devel +BuildRequires: libattr-devel +BuildRequires: pkgconfig(blkid) +BuildRequires: pkgconfig(fuse3) >= 3.7 +BuildRequires: pkgconfig(libkeyutils) +BuildRequires: pkgconfig(liblz4) +BuildRequires: pkgconfig(libsodium) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(liburcu) +BuildRequires: pkgconfig(libzstd) +BuildRequires: pkgconfig(udev) +BuildRequires: pkgconfig(uuid) +BuildRequires: pkgconfig(zlib) + +BuildRequires: clang-devel +BuildRequires: llvm-devel +BuildRequires: pkgconfig + +BuildRequires: systemd-rpm-macros + +# Rust parts FTBFS on 32-bit arches +ExcludeArch: %{ix86} %{arm32} + +%description +The bcachefs-tools package provides all the userspace programs needed to create, +check, modify and correct any inconsistencies in the bcachefs filesystem. + +%files +%license COPYING +%doc doc/bcachefs-principles-of-operation.tex +%doc doc/bcachefs.5.rst.tmpl +%{_sbindir}/bcachefs +%{_sbindir}/mount.bcachefs +%{_sbindir}/fsck.bcachefs +%{_sbindir}/mkfs.bcachefs +%{_mandir}/man8/bcachefs.8* +%{_udevrulesdir}/64-bcachefs.rules + +# ---------------------------------------------------------------------------- + +%package -n fuse-bcachefs +Summary: FUSE implementation of bcachefs +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n fuse-bcachefs +This package is an experimental implementation of bcachefs leveraging FUSE to +mount, create, check, modify and correct any inconsistencies in the bcachefs filesystem. + +%files -n fuse-bcachefs +%license COPYING +%{_sbindir}/mount.fuse.bcachefs +%{_sbindir}/fsck.fuse.bcachefs +%{_sbindir}/mkfs.fuse.bcachefs + +# ---------------------------------------------------------------------------- + +%package -n %{dkmsname} +Summary: Bcachefs kernel module managed by DKMS +Requires: diffutils +Requires: dkms >= 3.2.1 +Requires: gcc +Requires: make +Requires: perl +Requires: python3 + +Requires: %{name} = %{version}-%{release} + +# For Fedora/RHEL systems +%if 0%{?fedora} || 0%{?rhel} +Supplements: (bcachefs-tools and kernel-core) +%endif +# For SUSE systems +%if 0%{?suse_version} +Supplements: (bcachefs-tools and kernel-default) +%endif + +BuildArch: noarch + +%description -n %{dkmsname} +This package is an implementation of bcachefs built using DKMS to offer the kernel +module to mount, create, check, modify and correct any inconsistencies in the bcachefs +filesystem. + +%preun -n %{dkmsname} +if [ "$(dkms status -m %{kmodname} -v %{version})" ]; then + dkms remove -m %{kmodname} -v %{version} --all --rpm_safe_upgrade +fi + +%post -n %{dkmsname} +if [ "$1" -ge "1" ]; then + if [ -f /usr/lib/dkms/common.postinst ]; then + /usr/lib/dkms/common.postinst %{kmodname} %{version} + exit $? + fi +fi + +%files -n %{dkmsname} +%license COPYING +%{_usrsrc}/%{kmodname}-%{version}/ + +# ---------------------------------------------------------------------------- + + +%prep +%autosetup + + +%build +%set_build_flags +%make_build %{make_opts} + + +%install +%set_build_flags +%make_install %{make_opts} + +# Purge unneeded debian stuff +rm -rfv %{buildroot}/%{_datadir}/initramfs-tools + + +%changelog +* Sat Sep 27 2025 Neal Gompa +- Initial package based on Fedora package