initial commit

This commit is contained in:
halfcyan
2026-01-01 22:07:23 -07:00
parent 2cd82f9cfd
commit e120623e07
9 changed files with 319 additions and 0 deletions
@@ -0,0 +1,94 @@
%global buildforkernels akmod
%global debug_package %{nil}
%global modulename zfs
Name: akmod-openzfs
Summary: Kernel module (kmod) for OpenZFS filesystem
Version: 2.4.0
Release: 1%?dist
License: CDDL-1.0
URL: https://github.com/openzfs/zfs
Source0: https://github.com/openzfs/zfs/releases/download/zfs-%{version}/zfs-%{version}.tar.gz
BuildRequires: gcc
BuildRequires: make
BuildRequires: kmodtool
BuildRequires: systemd-rpm-macros
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: libtirpc-devel
BuildRequires: libblkid-devel
BuildRequires: libuuid-devel
BuildRequires: openssl-devel
BuildRequires: zlib-ng-compat-devel
BuildRequires: libaio-devel
BuildRequires: libattr-devel
BuildRequires: libffi-devel
BuildRequires: elfutils-libelf-devel
Requires: akmods
Requires: kernel-devel
Requires: openzfs = %{?epoch:%{epoch}:}%{version}-%{release}
Conflicts: %{modulename}-dkms
Conflicts: dkms-zfs
Provides: akmod-%{modulename} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: akmod-openzfs = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: %{modulename}-kmod-common = %{?epoch:%{epoch}:}%{version}-%{release}
Packager: Willow Reed <willow@willowidk.dev>
%{expand:%(kmodtool --target %{_target_cpu} --repo terra.fyralabs.com --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) }
%description
This package contains the OpenZFS kernel modules built using akmods.
%prep
%{?kmodtool_check}
kmodtool --target %{_target_cpu} --repo terra.fyralabs.com --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null
%setup -q -c
(cd zfs-%{version}
)
for kernel_version in %{?kernel_versions} ; do
cp -a zfs-%{version} _kmod_build_${kernel_version%%___*}
done
%build
for kernel_version in %{?kernel_versions} ; do
cd _kmod_build_${kernel_version%%___*}
./autogen.sh
./configure \
--with-config=kernel \
--with-linux=${kernel_version##*___} \
--with-linux-obj=${kernel_version##*___}
make %{?_smp_mflags} -C ${kernel_version##*___} M=${PWD}/module modules
cd ..
done
%install
for kernel_version in %{?kernel_versions}; do
mkdir -p %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/avl/zavl.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/nvpair/znvpair.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/unicode/zunicode.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/zcommon/zcommon.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/zstd/zzstd.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/icp/icp.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/spl/spl.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
install -D -m 755 _kmod_build_${kernel_version%%___*}/module/zfs/zfs.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
chmod a+x %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/*.ko
done
%{?akmod_install}
%changelog
* Thu Jan 01 2026 Willow Reed <willow@willowidk.dev> - 2.4.0-1
- Initial package
+5
View File
@@ -0,0 +1,5 @@
project "pkg" {
rpm {
spec = "akmod-openzfs.spec"
}
}
+2
View File
@@ -0,0 +1,2 @@
let ver = gh("openzfs/zfs").strip_prefix("zfs-");
rpm.version(ver);
+5
View File
@@ -0,0 +1,5 @@
project "pkg" {
rpm {
spec = "dkms-openzfs.spec"
}
}
@@ -0,0 +1,90 @@
%global debug_package %{nil}
%global __brp_mangle_shebangs %{nil}
%define module openzfs
Name: %{module}-dkms
Version: 2.4.0
Release: 1%?dist
Summary: ZFS DKMS Kernel Modules
URL: https://github.com/openzfs/zfs
Source0: https://github.com/openzfs/zfs/releases/download/zfs-%{version}/zfs-%{version}.tar.gz
License: CDDL-1.0
BuildArch: noarch
Requires: dkms >= 2.2.0.3
Requires: gcc, make, perl, diffutils, kernel-devel, kernel-modules
Requires: openzfs = %{?epoch:%{epoch}:}%{version}
Provides: %{module}-kmod = %{version}
Conflicts: akmod-openzfs
Packager: Willow Reed <willow@willowidk.dev>
%description
This package contains the dkms ZFS kernel modules.
%prep
%autosetup -n zfs-%{version}
%build
scripts/dkms.mkconf -n %{module} -v %{version} -f dkms.conf
%install
if [ "$RPM_BUILD_ROOT" != "/" ]; then
rm -rf $RPM_BUILD_ROOT
fi
mkdir -p $RPM_BUILD_ROOT/usr/src/
cp -rf ${RPM_BUILD_DIR}/%{module}-%{version} $RPM_BUILD_ROOT/usr/src/
%files
%defattr(-,root,root)
/usr/src/%{module}-%{version}
%pre
# Remove any existing zfs dkms modules
dkms_root=/var/lib/dkms
if [ -d ${dkms_root}/%{module} ]; then
cd ${dkms_root}/%{module}
for x in [[:digit:]]*; do
[ -d "$x" ] || continue
otherver="$x"
if [ "$otherver" != %{version} ]; then
if [ `dkms status -m %{module} -v "$otherver" | grep -c %{module}` -gt 0 ]; then
echo "Removing old %{module} dkms modules version $otherver from all kernels."
dkms remove -m %{module} -v "$otherver" --all ||:
fi
fi
done
fi
# Remove previous version when upgrading/installing
if [ `dkms status -m %{module} -v %{version} | grep -c %{module}` -gt 0 ]; then
echo "Removing %{module} dkms modules version %{version} from all kernels."
dkms remove -m %{module} -v %{version} --all ||:
fi
%post
echo "Adding %{module} dkms modules version %{version} to dkms."
dkms add -m %{module} -v %{version} --rpm_safe_upgrade ||:
echo "Installing %{module} dkms modules version %{version} for the current kernel."
dkms install --force -m %{module} -v %{version} ||:
%preun
# Do nothing if upgrade
if [ "$1" = "1" -o "$1" = "upgrade" ] ; then
exit 0
fi
# Remove modules on uninstall
if [ "$1" = "0" -o "$1" = "remove" -o "$1" = "purge" ] ; then
if [ `dkms status -m %{module} -v %{version} | grep -c %{module}` -gt 0 ]; then
echo "Removing %{module} dkms modules version %{version} from all kernels."
dkms remove -m %{module} -v %{version} --all --rpm_safe_upgrade ||:
fi
fi
%changelog
* Thu Jan 01 2026 Willow Reed <willow@willowidk.dev> - 2.4.0-1
- Initial package
+2
View File
@@ -0,0 +1,2 @@
let ver = gh("openzfs/zfs").strip_prefix("zfs-");
rpm.version(ver);
+5
View File
@@ -0,0 +1,5 @@
project "pkg" {
rpm {
spec = "openzfs.spec"
}
}
+115
View File
@@ -0,0 +1,115 @@
%global debug_package %{nil}
%global __brp_mangle_shebangs %{nil}
Name: openzfs
Version: 2.4.0
Release: 1%?dist
Summary: OpenZFS filesystem userspace utilities
License: CDDL-1.0
URL: https://openzfs.org
Source0: https://github.com/openzfs/zfs/releases/download/zfs-%{version}/zfs-%{version}.tar.gz
BuildRequires: gcc
BuildRequires: make
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: libuuid-devel
BuildRequires: libblkid-devel
BuildRequires: openssl-devel
BuildRequires: libtirpc-devel
BuildRequires: libattr-devel
BuildRequires: libaio-devel
BuildRequires: libffi-devel
BuildRequires: zlib-ng-compat-devel
BuildRequires: systemd-devel
BuildRequires: systemd-rpm-macros
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-cffi
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Recommends: akmod-openzfs
# we assume openzfs as the name for consistency, but if someone wants to install just zfs, this shows that this package provides zfs.
Provides: zfs = %{version}-%{release}
Packager: Willow Reed <willow@willowidk.dev>
%description
OpenZFS userspace tools
%package libs
Summary: OpenZFS libraries
%description libs
Libraries for OpenZFS filesystem utilities.
%package devel
Summary: OpenZFS development headers
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description devel
Development headers for OpenZFS libraries.
%prep
%autosetup -n zfs-%{version}
%build
./autogen.sh
%configure \
--with-config=user \
--with-systemdunitdir=%{_unitdir} \
--with-systemdpresetdir=%{_presetdir} \
--with-systemdgeneratordir=%{_systemdgeneratordir} \
--with-mounthelperdir=%{_sbindir} \
--with-pamdir=%{_libdir}/security \
--with-pamconfdir=%{_sysconfdir}/security \
--with-udevdir=%{_udevrulesdir} \
--with-pkgconfigdir=%{_libdir}/pkgconfig \
--enable-systemd \
--enable-pyzfs \
--disable-static
%make_build
%install
%make_install
find %{buildroot} -name '*.la' -delete
%files
???
%files libs
???
%files devel
???
%post
%systemd_post zfs-import-cache.service
%systemd_post zfs-import-scan.service
%systemd_post zfs-mount.service
%systemd_post zfs-share.service
%systemd_post zfs-zed.service
%systemd_post zfs.target
%preun
%systemd_preun zfs-import-cache.service
%systemd_preun zfs-import-scan.service
%systemd_preun zfs-mount.service
%systemd_preun zfs-share.service
%systemd_preun zfs-zed.service
%systemd_preun zfs.target
%postun
%systemd_postun_with_restart zfs-import-cache.service
%systemd_postun_with_restart zfs-import-scan.service
%systemd_postun_with_restart zfs-mount.service
%systemd_postun_with_restart zfs-share.service
%systemd_postun_with_restart zfs-zed.service
%changelog
* Thu Jan 01 2026 Willow Reed <willow@willowidk.dev> - 2.4.0-1
- Initial package
@@ -0,0 +1 @@
rpm.version(gh("openzfs/zfs").strip_prefix("zfs-"));