diff options
Diffstat (limited to 'backport-kmp-feature.patch')
-rw-r--r-- | backport-kmp-feature.patch | 485 |
1 files changed, 0 insertions, 485 deletions
diff --git a/backport-kmp-feature.patch b/backport-kmp-feature.patch deleted file mode 100644 index 6525efb..0000000 --- a/backport-kmp-feature.patch +++ /dev/null @@ -1,485 +0,0 @@ -From 3e65c85831be0b8f8e1cd43869b4991a76e14d9b Mon Sep 17 00:00:00 2001 -From: Yang Yanchao <yangyanchao6@huawei.com> -Date: Fri, 17 Mar 2023 01:09:09 +0000 -Subject: [PATCH] backport kmp feature - -Signed-off-by: Yang Yanchao <yangyanchao6@huawei.com> -Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org> ---- - kmodtool | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - kmodtool.py | 83 --------------- - macros.kmp | 85 ++++++++++++---- - 3 files changed, 350 insertions(+), 105 deletions(-) - create mode 100644 kmodtool - delete mode 100644 kmodtool.py - -diff --git a/kmodtool b/kmodtool -new file mode 100644 -index 0000000..427d1df ---- /dev/null -+++ b/kmodtool -@@ -0,0 +1,281 @@ -+#!/usr/bin/bash -+ -+# kmodtool - Helper script for building kernel module RPMs -+# Copyright (c) 2003-2006 Ville Skyttä <ville.skytta@iki.fi>, -+# Thorsten Leemhuis <fedora@leemhuis.info> -+# Jon Masters <jcm@redhat.com> -+# -+# Permission is hereby granted, free of charge, to any person obtaining -+# a copy of this software and associated documentation files (the -+# "Software"), to deal in the Software without restriction, including -+# without limitation the rights to use, copy, modify, merge, publish, -+# distribute, sublicense, and/or sell copies of the Software, and to -+# permit persons to whom the Software is furnished to do so, subject to -+# the following conditions: -+# -+# The above copyright notice and this permission notice shall be -+# included in all copies or substantial portions of the Software. -+# -+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+shopt -s extglob -+ -+myprog="kmodtool" -+myver="0.10.10_kmp2" -+knownvariants=@(BOOT|PAE|@(big|huge)mem|debug|enterprise|kdump|?(large)smp|uml|xen[0U]?(-PAE)|xen) -+kmod_name= -+kver= -+verrel= -+variant= -+kmp= -+ -+get_verrel () -+{ -+ verrel=${1:-$(uname -r)} -+ verrel=${verrel%%$knownvariants} -+} -+ -+print_verrel () -+{ -+ get_verrel $@ -+ echo "${verrel}" -+} -+ -+get_variant () -+{ -+ get_verrel $@ -+ variant=${1:-$(uname -r)} -+ variant=${variant##$verrel} -+ variant=${variant:-'""'} -+} -+ -+print_variant () -+{ -+ get_variant $@ -+ echo "${variant}" -+} -+ -+get_filelist() { -+ local IFS=$'\n' -+ filelist=($(cat)) -+ -+ if [ ${#filelist[@]} -gt 0 ]; -+ then -+ for ((n = 0; n < ${#filelist[@]}; n++)); -+ do -+ line="${filelist[n]}" -+ line=$(echo "$line" \ -+ | sed -e "s/%verrel/$verrel/g" \ -+ | sed -e "s/%variant/$variant/g" \ -+ | sed -e "s/%dashvariant/$dashvariant/g" \ -+ | sed -e "s/%dotvariant/$dotvariant/g" \ -+ | sed -e "s/\.%1/$dotvariant/g" \ -+ | sed -e "s/\-%1/$dotvariant/g" \ -+ | sed -e "s/%2/$verrel/g") -+ echo "$line" -+ done -+ else -+ echo "%defattr(644,root,root,755)" -+ echo "/lib/modules/${verrel}${dotvariant}" -+ fi -+} -+ -+get_rpmtemplate () -+{ -+ local variant="${1}" -+ local dashvariant="${variant:+-${variant}}" -+ case "$verrel" in -+ *.el*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;; -+ *.EL*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;; -+ *) kdep="kernel-%{_target_cpu} = ${verrel}${variant}" ;; -+ esac -+ -+ echo "%package -n kmod-${kmod_name}${dashvariant}" -+ -+ if [ -z "$kmp_provides_summary" ]; then -+ echo "Summary: ${kmod_name} kernel module(s)" -+ fi -+ -+ if [ -z "$kmp_provides_group" ]; then -+ echo "Group: System Environment/Kernel" -+ fi -+ -+ if [ ! -z "$kmp_version" ]; then -+ echo "Version: %{kmp_version}" -+ fi -+ -+ if [ ! -z "$kmp_release" ]; then -+ echo "Release: %{kmp_release}" -+ fi -+ -+ cat <<EOF -+Provides: kernel-modules = ${verrel}${variant} -+Provides: ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} -+EOF -+ -+ if [ -z "$kmp" ]; then -+ echo "Requires: ${kdep}" -+ fi -+ -+# -+# RHEL5 - Remove common package requirement on general kmod packages. -+# Requires: ${kmod_name}-kmod-common >= %{?epoch:%{epoch}:}%{version} -+# -+ -+ cat <<EOF -+Requires(post): /usr/sbin/depmod -+Requires(postun): /usr/sbin/depmod -+EOF -+ -+if [ "" != "$kmp_override_preamble" ] -+then -+ cat "$kmp_override_preamble" -+fi -+ -+cat <<EOF -+%description -n kmod-${kmod_name}${dashvariant} -+This package provides the ${kmod_name} kernel modules built for the Linux -+kernel ${verrel}${variant} for the %{_target_cpu} family of processors. -+%post -n kmod-${kmod_name}${dashvariant} -+if [ -e "/boot/System.map-${verrel}${variant}" ]; then -+ /sbin/depmod -aeF "/boot/System.map-${verrel}${variant}" "${verrel}${variant}" > /dev/null || : -+fi -+EOF -+ -+ if [ ! -z "$kmp" ]; then -+ cat <<EOF -+ -+modules=( \$(find /lib/modules/${verrel}${variant}/extra/${kmod_name} | grep '\.ko$') ) -+if [ -x "/sbin/weak-modules" ]; then -+ printf '%s\n' "\${modules[@]}" \ -+ | /sbin/weak-modules --add-modules -+fi -+%preun -n kmod-${kmod_name}${dashvariant} -+rpm -ql kmod-${kmod_name}${dashvariant} | grep '\.ko$' \ -+ > /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules -+EOF -+ -+ fi -+ -+ cat <<EOF -+%postun -n kmod-${kmod_name}${dashvariant} -+/sbin/depmod -aF /boot/System.map-${verrel}${variant} ${verrel}${variant} &> /dev/null || : -+EOF -+ -+ if [ ! -z "$kmp" ]; then -+ cat <<EOF -+modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) ) -+if [ -x "/sbin/weak-modules" ]; then -+ printf '%s\n' "\${modules[@]}" \ -+ | /sbin/weak-modules --remove-modules -+fi -+EOF -+ fi -+ -+echo "%files -n kmod-${kmod_name}${dashvariant}" -+if [ "" == "$kmp_override_filelist" ]; -+then -+ echo "%defattr(644,root,root,755)" -+ echo "/lib/modules/${verrel}${variant}/" -+else -+ cat "$kmp_override_filelist" | get_filelist -+fi -+} -+ -+print_rpmtemplate () -+{ -+ kmod_name="${1}" -+ shift -+ kver="${1}" -+ get_verrel "${1}" -+ shift -+ if [ -z "${kmod_name}" ] ; then -+ echo "Please provide the kmodule-name as first parameter." >&2 -+ exit 2 -+ elif [ -z "${kver}" ] ; then -+ echo "Please provide the kver as second parameter." >&2 -+ exit 2 -+ elif [ -z "${verrel}" ] ; then -+ echo "Couldn't find out the verrel." >&2 -+ exit 2 -+ fi -+ -+ for variant in "$@" ; do -+ if [ "default" == "$variant" ]; -+ then -+ get_rpmtemplate "" -+ else -+ get_rpmtemplate "${variant}" -+ fi -+ done -+} -+ -+usage () -+{ -+ cat <<EOF -+You called: ${invocation} -+ -+Usage: ${myprog} <command> <option>+ -+ Commands: -+ verrel <uname> -+ - Get "base" version-release. -+ variant <uname> -+ - Get variant from uname. -+ rpmtemplate <mainpgkname> <uname> <variants> -+ - Return a template for use in a source RPM -+ rpmtemplate_kmp <mainpgkname> <uname> <variants> -+ - Return a template for use in a source RPM with KMP dependencies -+ version -+ - Output version number and exit. -+EOF -+} -+ -+invocation="$(basename ${0}) $@" -+while [ "${1}" ] ; do -+ case "${1}" in -+ verrel) -+ shift -+ print_verrel $@ -+ exit $? -+ ;; -+ variant) -+ shift -+ print_variant $@ -+ exit $? -+ ;; -+ rpmtemplate) -+ shift -+ print_rpmtemplate "$@" -+ exit $? -+ ;; -+ rpmtemplate_kmp) -+ shift -+ kmp=1 -+ print_rpmtemplate "$@" -+ exit $? -+ ;; -+ version) -+ echo "${myprog} ${myver}" -+ exit 0 -+ ;; -+ *) -+ echo "Error: Unknown option '${1}'." >&2 -+ usage >&2 -+ exit 2 -+ ;; -+ esac -+done -+ -+# Local variables: -+# mode: sh -+# sh-indentation: 2 -+# indent-tabs-mode: nil -+# End: -+# ex: ts=2 sw=2 et -+ -diff --git a/kmodtool.py b/kmodtool.py -deleted file mode 100644 -index 75492b9..0000000 ---- a/kmodtool.py -+++ /dev/null -@@ -1,83 +0,0 @@ --# -*- 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 -index d46aa04..8440e26 100644 ---- a/macros.kmp -+++ b/macros.kmp -@@ -1,22 +1,64 @@ --# Use these macros to differentiate between __vendor and other KMP implementation(s).
--
--kernel_module_package_release 1
--
--__find_requires /usr/lib/rpm/__vendor/find-requires
--
--
--#kernel_module_package [ -n name ] [ -v version ] [ -r release ]
--# [ -f filelist][-p preamble]
--#
--
--%kernel_module_package_buildreqs %global kmodtool_generate_buildreqs 1 \
-- kernel-devel
--
--%kernel_module_package(n:v:r:f:p) %{expand:%( \
-- %define kmodtool /usr/lib/rpm/__vendor/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} %{-p*}%{!-p:%preamble} \
--)}
--
-+# Use these macros to differentiate between __vendor and other KMP implementation(s). -+ -+kernel_module_package_release 1 -+ -+%__find_provides /usr/lib/rpm/find-provides -+%__find_requires /usr/lib/rpm/__vendor/find-requires -+ -+#kernel_module_package [ -n name ] [ -v version ] [ -r release ] [ -s script ] -+# [ -f filelist] [ -x ] [ -p preamble ] flavor flavor ... -+ -+%kernel_module_package_buildreqs %global kmodtool_generate_buildreqs 1 \ -+ kernel-devel -+ -+%kernel_module_package(n:v:r:s:f:xp:) %{expand:%( \ -+ %define kmodtool %{-s*}%{!-s:/usr/lib/rpm/__vendor/kmodtool} \ -+ %define kmp_version %{-v*}%{!-v:%{version}} \ -+ %define kmp_release %{-r*}%{!-r:%{release}} \ -+ %define latest_kernel %(rpm -q --qf '%%{VERSION}-%%{RELEASE}.%%{ARCH}\\\\n' `rpm -q kernel-devel | head -n 1` | head -n 1) \ -+ %{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \ -+ %global kverrel %(%kmodtool verrel %{?kernel_version} 2>/dev/null) \ -+ flavors="default" \ -+ if [ "i686" == "%{_target_cpu}" ] || [ "x86_64" == "%{_target_cpu}" ] \ -+ then \ -+ xenver=$(rpm -q kernel-xen-devel-%{kverrel}|head -n 1)\ -+ kdver=$(rpm -q kernel-kdump-devel-%{kverrel}|head -n 1)\ -+ if [ "kernel-xen-devel-%{kverrel}" == "$xenver" ] \ -+ then \ -+ flavors="$flavors xen" \ -+ fi \ -+ if [ "kernel-kdump-devel-%{kverrel}" == "$kdver" ] \ -+ then \ -+ flavors="$flavors kdump" \ -+ fi \ -+ fi \ -+ if [ -z "%*" ]; then \ -+ flavors_to_build=$flavors \ -+ elif [ -z "%{-x}" ]; then \ -+ flavors_to_build="%*" \ -+ else \ -+ flavors_to_build=" $flavors "\ -+ rm -rf /tmp/tmp.$$ \ -+ echo "[$flavors_to_build]" >/tmp/tmp.$$ \ -+ for i in %* \ -+ do \ -+ flavors_to_build=${flavors_to_build//$i /} -+ done \ -+ fi \ -+ echo "%%global flavors_to_build ${flavors_to_build:-%%nil}" \ -+ echo "%%global kernel_source() /usr/src/kernels/%kverrel\\\$([ %%%%{1} = default ] || echo "%%%%{1}.")" \ -+ if [ ! -z "%{-f*}" ] \ -+ then \ -+ filelist="%{-f*}" \ -+ fi \ -+ if [ ! -z "%{-p*}" ] \ -+ then \ -+ preamble="%{-p*}" \ -+ fi \ -+ nobuildreqs="yes" \ -+ if [ "x%{kmodtool_generate_buildreqs}" != "x1" ] \ -+ then \ -+ nobuildreqs="no" \ -+ fi \ -+ kmp_override_filelist="$filelist" kmp_override_preamble="$preamble" kmp_nobuildreqs="$nobuildreqs" %{kmodtool} rpmtemplate_kmp %{-n*}%{!-n:%name} %{kverrel} $flavors_to_build 2>/dev/null \ -+)} --- -2.33.0 - |