diff options
Diffstat (limited to 'meta-oe/recipes-kernel/kpatch/kpatch')
2 files changed, 167 insertions, 0 deletions
diff --git a/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch b/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch new file mode 100644 index 0000000000..348d82acc1 --- /dev/null +++ b/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch @@ -0,0 +1,105 @@ +From 21909e3f9096fa8e4825df8c65114ee92ab3d532 Mon Sep 17 00:00:00 2001 +From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com> +Date: Wed, 7 Aug 2019 02:57:35 +0900 +Subject: [PATCH] kpatch-build: add cross-compilation support + +This patch introduces new option for kpatch-build +script "--cross-compile" which can be used for +specifying cross-complier prefix. +It allows to build live patches not only on +target system, but also on hosts for a target other +than the one on which the compiler is running + +Also removed quotes in exec lines, so it is +possible to pass multy-component strings like +"ccache x86_64-xelinux-linux-" as cross-compiler + +Upstream-Status: Pending + +Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com> +--- + kpatch-build/kpatch-build | 13 +++++++++++-- + kpatch-build/kpatch-gcc | 4 ++-- + 2 files changed, 13 insertions(+), 4 deletions(-) + +diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build +index 9ef3809..463dab1 100755 +--- a/kpatch-build/kpatch-build ++++ b/kpatch-build/kpatch-build +@@ -198,7 +198,7 @@ gcc_version_check() { + # gcc --version varies between distributions therefore extract version + # by compiling a test file and compare it to vmlinux's version. + echo 'void main(void) {}' > "$c" +- out="$(gcc -c -pg -ffunction-sections -o "$o" "$c" 2>&1)" ++ out="$(${KPATCH_CROSS_COMPILE}gcc -c -pg -ffunction-sections -o "$o" "$c" 2>&1)" + gccver="$(gcc_version_from_file "$o")" + if [[ -n "$OOT_MODULE" ]]; then + kgccver="$(gcc_version_from_file "$OOT_MODULE")" +@@ -411,6 +411,8 @@ usage() { + echo " (can be specified multiple times)" >&2 + echo " -e, --oot-module Enable patching out-of-tree module," >&2 + echo " specify current version of module" >&2 ++ echo " --cross-compile Specify the prefix used for all executables" >&2 ++ echo " used during compilation" >&2 + echo " --skip-cleanup Skip post-build cleanup" >&2 + echo " --skip-gcc-check Skip gcc version matching check" >&2 + echo " (not recommended)" >&2 +@@ -416,7 +418,7 @@ usage() { + echo " (not recommended)" >&2 + } + +-options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed" ++options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,cross-compile:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed" + + eval set -- "$options" + +@@ -479,6 +481,10 @@ while [[ $# -gt 0 ]]; do + OOT_MODULE="$(readlink -f "$2")" + shift + ;; ++ --cross-compile) ++ KPATCH_CROSS_COMPILE="$2" ++ shift ++ ;; + --skip-cleanup) + echo "Skipping cleanup" + SKIPCLEANUP=1 +@@ -757,6 +763,8 @@ if [[ $DEBUG -ge 4 ]]; then + export KPATCH_GCC_DEBUG=1 + fi + ++export KPATCH_CROSS_COMPILE ++ + echo "Building original source" + [[ -n "$OOT_MODULE" ]] || ./scripts/setlocalversion --save-scmversion || die + unset KPATCH_GCC_TEMPDIR +@@ -940,6 +948,7 @@ fi + KPATCH_BUILD="$KPATCH_BUILD" KPATCH_NAME="$MODNAME" \ + KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS" \ + KPATCH_LDFLAGS="$KPATCH_LDFLAGS" \ ++CROSS_COMPILE="$KPATCH_CROSS_COMPILE" \ + make 2>&1 | logger || die + + if ! "$KPATCH_MODULE"; then +diff --git a/kpatch-build/kpatch-gcc b/kpatch-build/kpatch-gcc +index 9663290..56e6c8f 100755 +--- a/kpatch-build/kpatch-gcc ++++ b/kpatch-build/kpatch-gcc +@@ -8,7 +8,7 @@ TOOLCHAINCMD="$1" + shift + + if [[ -z "$KPATCH_GCC_TEMPDIR" ]]; then +- exec "$TOOLCHAINCMD" "$@" ++ exec ${KPATCH_CROSS_COMPILE}${TOOLCHAINCMD} "$@" + fi + + declare -a args=("$@") +@@ -84,4 +84,4 @@ elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then + done + fi + +-exec "$TOOLCHAINCMD" "${args[@]}" ++exec ${KPATCH_CROSS_COMPILE}${TOOLCHAINCMD} "${args[@]}" +-- +2.7.4 + diff --git a/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch b/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch new file mode 100644 index 0000000000..0cc3684134 --- /dev/null +++ b/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch @@ -0,0 +1,62 @@ +From 4143fa0092fe4cafee10b24a97d3ad0b41ab7a30 Mon Sep 17 00:00:00 2001 +From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com> +Date: Wed, 7 Aug 2019 03:24:39 +0900 +Subject: [PATCH] kpatch-build: allow overriding of distro name + +It is sometimes useful to have ability to override +distro name, for example during cross-compilation +build when livepatch modules will be ran on the +target which differs from host. + +This patch adds a new --distro option which +implements all needed functionality + +Upstream-Status: Pending + +Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com> +--- + kpatch-build/kpatch-build | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build +index 39933fc..c0258a2 100755 +--- a/kpatch-build/kpatch-build ++++ b/kpatch-build/kpatch-build +@@ -413,12 +413,13 @@ usage() { + echo " specify current version of module" >&2 + echo " --cross-compile Specify the prefix used for all executables" >&2 + echo " used during compilation" >&2 ++ echo " --distro Override distro name" >&2 + echo " --skip-cleanup Skip post-build cleanup" >&2 + echo " --skip-gcc-check Skip gcc version matching check" >&2 + echo " (not recommended)" >&2 + } + +-options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,cross-compile:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed" ++options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,cross-compile:,distro:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed" + + eval set -- "$options" + +@@ -485,6 +486,10 @@ while [[ $# -gt 0 ]]; do + KPATCH_CROSS_COMPILE="$2" + shift + ;; ++ --distro) ++ DISTRO="$2" ++ shift ++ ;; + --skip-cleanup) + echo "Skipping cleanup" + SKIPCLEANUP=1 +@@ -613,7 +613,7 @@ fi + # Don't check external file. + # shellcheck disable=SC1090 + [[ -f "$RELEASE_FILE" ]] && source "$RELEASE_FILE" +-DISTRO="$ID" ++DISTRO="${DISTRO:-${ID}}" + if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]]; then + [[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/lib/modules/$ARCHVERSION/vmlinux" + [[ -e "$VMLINUX" ]] || die "kernel-debuginfo-$ARCHVERSION not installed" +-- +2.7.4 + |