From 14b267b6d37f31c114ea1a3dfbca528834874c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=A0=E6=9F=B3=E7=87=95?= Date: Mon, 22 Jun 2020 11:14:47 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=BF=AB=E9=80=9F=E6=89=93=E5=8C=85=E7=9A=84?= =?UTF-8?q?=E5=AE=8F=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=86=85=E6=A0=B8ko?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E9=94=AE=E5=BC=8F=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generic-rpm-config.spec | 19 +++++++++- kmodtool.py | 83 +++++++++++++++++++++++++++++++++++++++++ macros.kmp | 20 ++++++++++ 3 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 kmodtool.py create mode 100644 macros.kmp diff --git a/generic-rpm-config.spec b/generic-rpm-config.spec index 5fa576a..c2af508 100644 --- a/generic-rpm-config.spec +++ b/generic-rpm-config.spec @@ -12,11 +12,13 @@ Source2: rpmrc Source3: macros Source4: config.guess Source5: config.sub +Source6: kmodtool.py Source10: macros.perl Source11: macros.python Source12: macros.go Source13: macros.forge +Source14: macros.kmp Source20: openEuler-hardened-cc1 Source21: openEuler-hardened-ld @@ -37,7 +39,6 @@ Provides: perl-srpm-macros Provides: rust-srpm-macros Provides: go-srpm-macros Provides: kernel-rpm-macros -Obsoletes: kernel-rpm-macros Obsoletes: python-rpm-macros Obsoletes: python2-rpm-macros Obsoletes: python3-rpm-macros @@ -76,6 +77,12 @@ Provides: system-rpm-config = %{version}-%{release} %description 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 %setup -c -T 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} brp-* install -p -m 644 -t %{buildroot}%{rpmvdir} openEuler-* +install -p -m 755 -t %{buildroot}%{rpmvdir} kmodtool.py 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} @@ -103,7 +111,14 @@ mkdir -p %{buildroot}%{_fileattrsdir} %{_rpmconfigdir}/macros.d/ %{_rpmconfigdir}/macros.d/* +%files -n kernel-rpm-macros +%{rpmvdir}/kmodtool.py +%{_rpmconfigdir}/macros.d/macros.kmp + %changelog +* Wed June 19 2020 zhangliuyan - 30-11 +- add kmodtool.py macros.kmp + * Wed May 6 2020 openEuler Buildteam - 30-10 - Type:enhancement - ID:NA diff --git a/kmodtool.py b/kmodtool.py new file mode 100644 index 0000000..724f481 --- /dev/null +++ b/kmodtool.py @@ -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() + diff --git a/macros.kmp b/macros.kmp new file mode 100644 index 0000000..98e2f97 --- /dev/null +++ b/macros.kmp @@ -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} \ +)} -- Gitee From 702946c8ee4981cc9040cd9b13f43d85fa0e86f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=A0=E6=9F=B3=E7=87=95?= Date: Mon, 22 Jun 2020 11:16:46 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- macros.kmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros.kmp b/macros.kmp index 98e2f97..6349c27 100644 --- a/macros.kmp +++ b/macros.kmp @@ -16,5 +16,5 @@ kernel_module_package_release 1 %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} \ + python3 %{kmodtool} rpmtemplate_kmp %{-n*}%{!-n:%name} %{kverrel} %{-f*}%{!-f:%filelist} \ )} -- Gitee From 18eb732463a32d5c276d0150a6a54b282c3c50f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=A0=E6=9F=B3=E7=87=95?= Date: Mon, 22 Jun 2020 11:27:41 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=BF=AB=E9=80=9F=E6=89=93=E5=8C=85=E7=9A=84?= =?UTF-8?q?=E5=AE=8F=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=86=85=E6=A0=B8ko?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E9=94=AE=E5=BC=8F=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- macros.kmp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/macros.kmp b/macros.kmp index 6349c27..be66e64 100644 --- a/macros.kmp +++ b/macros.kmp @@ -16,5 +16,6 @@ kernel_module_package_release 1 %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} \ + python3 %{kmodtool} rpmtemplate_kmp %{-n*}%{!-n:%name} %{kverrel} %{-f*}%{!-f:%filelist} \ )} + -- Gitee