Strict requirements on EL major/minor

This is needed for repositories to host kmod RPMs for each minor version
in a major-centric repository.
This commit is contained in:
Greg Cymbalski
2026-08-31 17:23:19 -07:00
parent f6f8a75491
commit e712c1b3bd
+18 -12
View File
@@ -3,6 +3,23 @@
%define kmod_git_hash @@GITHASH@@
%define kmod_git_describe @@GITDESCRIBE@@
%define pkg_date %(date +%%Y%%m%%d)
%define _os_version_id %(. /etc/os-release 2>/dev/null; echo "${VERSION_ID:-0.0}")
%define os_major %(echo %{_os_version_id} | cut -d. -f1)
%define os_minor %(echo %{_os_version_id} | grep -q '\\.' && echo %{_os_version_id} | cut -d. -f2 || echo "")
%global pointrel_pkgs redhat-release rocky-release almalinux-release oraclelinux-release cloudlinux-release virtuozzo-release
%global majoronly_pkgs centos-stream-release
# --- Build the Boolean requires expression at spec-parse time ---
%global relreq %(
clauses=""
for p in %{pointrel_pkgs}; do
clauses="${clauses}${p} = %{os_major}.%{os_minor} or "
done
for p in %{majoronly_pkgs}; do
clauses="${clauses}${p} = %{os_major}"
done
echo "(${clauses%})"
)
# take kernel version or default to uname -r
%{!?kversion: %global kversion %(uname -r)}
@@ -27,6 +44,7 @@ Release: %{_release}%{?dist}
License: GPLv2
Group: System/Kernel
URL: http://scoutfs.org/
Requires: %{relreq}
%if 0%{?el7}
BuildRequires: %{kernel_module_package_buildreqs}
@@ -53,22 +71,10 @@ Source: %{kmod_name}-kmod-%{kmod_version}.tar
%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}