定义内核模块快速打包的宏,用于内核ko的一键式打包
This commit is contained in:
parent
81bbb89f94
commit
14b267b6d3
@ -12,11 +12,13 @@ Source2: rpmrc
|
|||||||
Source3: macros
|
Source3: macros
|
||||||
Source4: config.guess
|
Source4: config.guess
|
||||||
Source5: config.sub
|
Source5: config.sub
|
||||||
|
Source6: kmodtool.py
|
||||||
|
|
||||||
Source10: macros.perl
|
Source10: macros.perl
|
||||||
Source11: macros.python
|
Source11: macros.python
|
||||||
Source12: macros.go
|
Source12: macros.go
|
||||||
Source13: macros.forge
|
Source13: macros.forge
|
||||||
|
Source14: macros.kmp
|
||||||
|
|
||||||
Source20: openEuler-hardened-cc1
|
Source20: openEuler-hardened-cc1
|
||||||
Source21: openEuler-hardened-ld
|
Source21: openEuler-hardened-ld
|
||||||
@ -37,7 +39,6 @@ Provides: perl-srpm-macros
|
|||||||
Provides: rust-srpm-macros
|
Provides: rust-srpm-macros
|
||||||
Provides: go-srpm-macros
|
Provides: go-srpm-macros
|
||||||
Provides: kernel-rpm-macros
|
Provides: kernel-rpm-macros
|
||||||
Obsoletes: kernel-rpm-macros
|
|
||||||
Obsoletes: python-rpm-macros
|
Obsoletes: python-rpm-macros
|
||||||
Obsoletes: python2-rpm-macros
|
Obsoletes: python2-rpm-macros
|
||||||
Obsoletes: python3-rpm-macros
|
Obsoletes: python3-rpm-macros
|
||||||
@ -76,6 +77,12 @@ Provides: system-rpm-config = %{version}-%{release}
|
|||||||
%description
|
%description
|
||||||
specific rpm configuration files for %{vendor}.
|
specific rpm configuration files for %{vendor}.
|
||||||
|
|
||||||
|
%package -n kernel-rpm-macros
|
||||||
|
Summary: Macros and scripts for building kernel module packages
|
||||||
|
|
||||||
|
%description -n kernel-rpm-macros
|
||||||
|
Macros and scripts for building kernel module packages.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -c -T
|
%setup -c -T
|
||||||
cp -p %{sources} .
|
cp -p %{sources} .
|
||||||
@ -86,9 +93,10 @@ install -p -m 644 -t %{buildroot}%{rpmvdir} macros rpmrc
|
|||||||
install -p -m 755 -t %{buildroot}%{rpmvdir} config.*
|
install -p -m 755 -t %{buildroot}%{rpmvdir} config.*
|
||||||
install -p -m 755 -t %{buildroot}%{rpmvdir} brp-*
|
install -p -m 755 -t %{buildroot}%{rpmvdir} brp-*
|
||||||
install -p -m 644 -t %{buildroot}%{rpmvdir} openEuler-*
|
install -p -m 644 -t %{buildroot}%{rpmvdir} openEuler-*
|
||||||
|
install -p -m 755 -t %{buildroot}%{rpmvdir} kmodtool.py
|
||||||
|
|
||||||
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
|
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
|
||||||
install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13}
|
install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14}
|
||||||
|
|
||||||
mkdir -p %{buildroot}%{_fileattrsdir}
|
mkdir -p %{buildroot}%{_fileattrsdir}
|
||||||
|
|
||||||
@ -103,7 +111,14 @@ mkdir -p %{buildroot}%{_fileattrsdir}
|
|||||||
%{_rpmconfigdir}/macros.d/
|
%{_rpmconfigdir}/macros.d/
|
||||||
%{_rpmconfigdir}/macros.d/*
|
%{_rpmconfigdir}/macros.d/*
|
||||||
|
|
||||||
|
%files -n kernel-rpm-macros
|
||||||
|
%{rpmvdir}/kmodtool.py
|
||||||
|
%{_rpmconfigdir}/macros.d/macros.kmp
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed June 19 2020 zhangliuyan <zhangliuyan@huawei.com> - 30-11
|
||||||
|
- add kmodtool.py macros.kmp
|
||||||
|
|
||||||
* Wed May 6 2020 openEuler Buildteam <buildteam@openeuler.org> - 30-10
|
* Wed May 6 2020 openEuler Buildteam <buildteam@openeuler.org> - 30-10
|
||||||
- Type:enhancement
|
- Type:enhancement
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
83
kmodtool.py
Normal file
83
kmodtool.py
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# -*- coding: UTF-8 -*-
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# kmodtool - Helper script for building kernel module RPMs
|
||||||
|
|
||||||
|
import os,subprocess,sys
|
||||||
|
|
||||||
|
def print_verrel ():
|
||||||
|
#verrel=subprocess.getoutput("(rpm -q --qf '%{VERSION}-%{RELEASE}' `rpm -q kernel-devel` | head -n 1)")
|
||||||
|
# if (len(verrel)== 0):
|
||||||
|
verrel=subprocess.getoutput("uname -r")
|
||||||
|
return verrel
|
||||||
|
|
||||||
|
def print_rpmtemplate():
|
||||||
|
kmod_name = sys.argv[2]
|
||||||
|
# verrel=subprocess.getoutput("(rpm -q --qf '%{VERSION}-%{RELEASE}' `rpm -q kernel-devel` | head -n 1)")
|
||||||
|
# if (len(verrel)== 0):
|
||||||
|
verrel=subprocess.getoutput("uname -r")
|
||||||
|
|
||||||
|
if not kmod_name:
|
||||||
|
print("Please provide the kmodule-name as first parameter.")
|
||||||
|
exit()
|
||||||
|
get_rpmtemplate(kmod_name,verrel)
|
||||||
|
|
||||||
|
|
||||||
|
def get_rpmtemplate(kmod_name,verrel):
|
||||||
|
print("%package -n kmod-" + kmod_name)
|
||||||
|
print("Summary: " + kmod_name + " " + "kernel module(s)")
|
||||||
|
print("Group: System Environment/Kernel")
|
||||||
|
if "%{version}":
|
||||||
|
print("Version: %{version}")
|
||||||
|
if "%{release}":
|
||||||
|
print("Release: %{release}")
|
||||||
|
print("Provides: kernel-modules =" + " " + verrel)
|
||||||
|
print("Provides: "+ kmod_name + "-kmod = %{?epoch:%{epoch}:}%{version}-%{release}")
|
||||||
|
print("Requires(post): /usr/sbin/depmod")
|
||||||
|
print("Requires(postun): /usr/sbin/depmod")
|
||||||
|
print("%description -n kmod-" + kmod_name)
|
||||||
|
print("This package provides the " + kmod_name + " kernel modules built for the Linux")
|
||||||
|
print("kernel "+ verrel + " for the %{_target_cpu} family of processors.")
|
||||||
|
print("%post -n kmod-" + kmod_name)
|
||||||
|
print("if [ -e /boot/System.map-" + verrel + "]; then")
|
||||||
|
print(" /sbin/depmod -aeF /boot/System.map-" + verrel +" " + verrel +"> /dev/null || :")
|
||||||
|
print("fi")
|
||||||
|
if (kmp !=""):
|
||||||
|
print("modules=( $(find /lib/modules/" + verrel + "/extra/" + kmod_name + ") )")
|
||||||
|
print("""if [ -x "/sbin/weak-modules" ]; then
|
||||||
|
printf '%s\\n' "${modules[@]}" | /sbin/weak-modules --add-modules
|
||||||
|
fi""")
|
||||||
|
print("%preun -n kmod-" + kmod_name)
|
||||||
|
print("rpm -ql kmod-" + kmod_name + "| grep '\.ko$' > /var/run/rpm-kmod-" + kmod_name +"-modules")
|
||||||
|
|
||||||
|
print("%postun -n kmod-" + kmod_name)
|
||||||
|
print("/sbin/depmod -aF /boot/System.map-" + verrel+" " + verrel + " &> /dev/null || :")
|
||||||
|
|
||||||
|
if (kmp !=""):
|
||||||
|
print("modules=( $(cat /var/run/rpm-kmod-" + kmod_name + "-modules) )")
|
||||||
|
print("#rm /var/run/rpm-kmod-" + kmod_name + "-modules")
|
||||||
|
print("""if [ -x "/sbin/weak-modules" ]; then
|
||||||
|
printf '%s\\n' "${modules[@]}" | /sbin/weak-modules --remove-modules
|
||||||
|
fi""")
|
||||||
|
|
||||||
|
print("%files -n kmod-" + kmod_name)
|
||||||
|
kmp_override_filelist= sys.argv[3]
|
||||||
|
if kmp_override_filelist == '%filelist':
|
||||||
|
print("%defattr(644,root,root,755)")
|
||||||
|
print("/lib/modules/" + verrel)
|
||||||
|
print("/lib/firmware/")
|
||||||
|
else:
|
||||||
|
with open(kmp_override_filelist) as f:
|
||||||
|
for line in f:
|
||||||
|
print(line, end = '')
|
||||||
|
|
||||||
|
#for i in range(len(sys.argv)):
|
||||||
|
if (sys.argv[1] == "verrel"):
|
||||||
|
print_verrel()
|
||||||
|
if (sys.argv[1] == "rpmtemplate_kmp"):
|
||||||
|
kmp=1
|
||||||
|
print_rpmtemplate()
|
||||||
|
else:
|
||||||
|
print("Error: Unknown option 'sys.argv[i]'.")
|
||||||
|
exit()
|
||||||
|
|
||||||
20
macros.kmp
Normal file
20
macros.kmp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Use these macros to differentiate between RH and other KMP implementation(s).
|
||||||
|
|
||||||
|
kernel_module_package_release 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#kernel_module_package [ -n name ] [ -v version ] [ -r release ]
|
||||||
|
# [ -f filelist]
|
||||||
|
#
|
||||||
|
|
||||||
|
%kernel_module_package_buildreqs %global kmodtool_generate_buildreqs 1 \
|
||||||
|
kernel-devel
|
||||||
|
|
||||||
|
%kernel_module_package(n:v:r:f:) %{expand:%( \
|
||||||
|
%define kmodtool /usr/lib/rpm/openEuler/kmodtool.py\
|
||||||
|
%define latest_kernel $(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel` | head -n 1) \
|
||||||
|
%{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \
|
||||||
|
%global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \
|
||||||
|
python3 %{kmodtool} rpmtemplate_kmp %{-n*}%{!-n:%name} %{kverrel} %{-f*}%{!-f:%filelist} \
|
||||||
|
)}
|
||||||
Loading…
x
Reference in New Issue
Block a user