mirror of
https://github.com/versity/scoutfs.git
synced 2025-12-23 05:25:18 +00:00
Since kABI migrations across minor versions is a thing of the past going forward, we now: - Detect if we're on EL9 - If so, add a requirement on the various flavors of release package to that specific major.minor version This appropriately does not allow upgrades across minor versions.
123 lines
3.2 KiB
RPMSpec
123 lines
3.2 KiB
RPMSpec
%define kmod_name scoutfs
|
|
%define kmod_version @@VERSION@@
|
|
%define kmod_git_hash @@GITHASH@@
|
|
%define kmod_git_describe @@GITDESCRIBE@@
|
|
%define pkg_date %(date +%%Y%%m%%d)
|
|
|
|
# take kernel version or default to uname -r
|
|
%{!?kversion: %global kversion %(uname -r)}
|
|
%global kernel_version %{kversion}
|
|
|
|
%if 0%{?el7}
|
|
%global kernel_source() /usr/src/kernels/%{kernel_version}.$(arch)
|
|
%else
|
|
%global kernel_source() /usr/src/kernels/%{kernel_version}
|
|
%endif
|
|
|
|
%{!?_release: %global _release 0.%{pkg_date}git%{kmod_git_hash}}
|
|
|
|
%if 0%{?el7}
|
|
Name: %{kmod_name}
|
|
%else
|
|
Name: kmod-%{kmod_name}
|
|
%endif
|
|
Summary: %{kmod_name} kernel module
|
|
Version: %{kmod_version}
|
|
Release: %{_release}%{?dist}
|
|
License: GPLv2
|
|
Group: System/Kernel
|
|
URL: http://scoutfs.org/
|
|
|
|
%if 0%{?el7}
|
|
BuildRequires: %{kernel_module_package_buildreqs}
|
|
%else
|
|
BuildRequires: elfutils-libelf-devel
|
|
%endif
|
|
BuildRequires: kernel-devel-uname-r = %{kernel_version}
|
|
BuildRequires: git
|
|
BuildRequires: module-init-tools
|
|
|
|
ExclusiveArch: x86_64
|
|
|
|
Source: %{kmod_name}-kmod-%{kmod_version}.tar
|
|
|
|
%if 0%{?el7}
|
|
# Build only for standard kernel variant(s); for debug packages, append "debug"
|
|
# after "default" (separated by space)
|
|
%kernel_module_package default
|
|
%endif
|
|
|
|
%global install_mod_dir extra/%{kmod_name}
|
|
|
|
%if ! 0%{?el7}
|
|
%global flavors_to_build x86_64
|
|
%endif
|
|
|
|
# el9 sanity: make sure we lock to the minor release we built for and block upgrades
|
|
%{lua:
|
|
if string.match(rpm.expand("%{dist}"), "%.el9") then
|
|
rpm.define("el9 1")
|
|
end
|
|
}
|
|
|
|
%if 0%{?el9}
|
|
%define release_major_minor 9.%{lua: print(rpm.expand("%{dist}"):match("%.el9_(%d)"))}
|
|
Requires: system-release = %{release_major_minor}
|
|
%endif
|
|
|
|
%description
|
|
%{kmod_name} - kernel module
|
|
|
|
|
|
%prep
|
|
%setup -q -n %{kmod_name}-kmod-%{kmod_version}
|
|
|
|
set -- *
|
|
mkdir source
|
|
mv "$@" source/
|
|
mkdir obj
|
|
|
|
|
|
%build
|
|
echo "Building for kernel: %{kernel_version} flavors: '%{flavors_to_build}'"
|
|
for flavor in %flavors_to_build; do
|
|
rm -rf obj/$flavor
|
|
cp -r source obj/$flavor
|
|
make RPM_GITHASH=%{kmod_git_hash} SCOUTFS_GIT_DESCRIBE=%{kmod_git_describe} SK_KSRC=%{kernel_source $flavor} -C obj/$flavor module
|
|
done
|
|
|
|
%install
|
|
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT
|
|
export INSTALL_MOD_DIR=%{install_mod_dir}
|
|
mkdir -p %{install_mod_dir}
|
|
for flavor in %{flavors_to_build}; do
|
|
export KSRC=%{kernel_source $flavor}
|
|
export KVERSION=%{kversion}
|
|
install -d $INSTALL_MOD_PATH/lib/modules/$KVERSION/%{install_mod_dir}
|
|
cp $PWD/obj/$flavor/src/scoutfs.ko $INSTALL_MOD_PATH/lib/modules/$KVERSION/%{install_mod_dir}/
|
|
done
|
|
|
|
# mark modules executable so that strip-to-file can strip them
|
|
find %{buildroot} -type f -name \*.ko -exec %{__chmod} u+x \{\} \;
|
|
|
|
%if ! 0%{?el7}
|
|
%files
|
|
/lib/modules
|
|
|
|
%post
|
|
echo /lib/modules/%{kversion}/%{install_mod_dir}/scoutfs.ko | weak-modules --add-modules --no-initramfs
|
|
depmod -a
|
|
%endif
|
|
|
|
%clean
|
|
rm -rf %{buildroot}
|
|
|
|
%preun
|
|
# stash our modules for postun cleanup
|
|
SCOUTFS_RPM_NAME=$(rpm -q %{name} | grep "%{version}-%{release}")
|
|
rpm -ql $SCOUTFS_RPM_NAME | grep '\.ko$' > /var/run/%{name}-modules-%{version}-%{release} || true
|
|
|
|
%postun
|
|
cat /var/run/%{name}-modules-%{version}-%{release} | weak-modules --remove-modules --no-initramfs
|
|
rm /var/run/%{name}-modules-%{version}-%{release} || true
|