kpatch/9003-kpatch-build-support-makefile-not-in-third-party-mod.patch
Zhipeng Xie 428b311440 sync code to openeuler
sync latest code to openeuler

Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
2019-12-30 15:59:18 +08:00

93 lines
3.4 KiB
Diff

From 214de7459555f3f0461cf4127c55f727ccf473d1 Mon Sep 17 00:00:00 2001
From: Zhipeng Xie <xiezhipeng1@huawei.com>
Date: Fri, 2 Nov 2018 17:24:30 +0000
Subject: [PATCH 1003/1015] kpatch-build: support makefile not in third party
module source directory
support makefile not in third party module source directory.
for example:
testmod/build/Makefile
testmod/src/test.c
Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
---
kpatch-build/kpatch-build | 32 +++++++++++++++++++++++++++-----
1 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
index ccef86d..93a0589 100755
--- a/kpatch-build/kpatch-build
+++ b/kpatch-build/kpatch-build
@@ -311,7 +311,10 @@ find_parent_obj() {
dir="$(dirname "$1")"
absdir="$(readlink -f "$dir")"
pwddir="$(readlink -f .)"
- pdir="${absdir#$pwddir/}"
+ pdir="."
+ if [ "$absdir" != "$pwddir" ];then
+ pdir="${absdir#$pwddir/}"
+ fi
file="$(basename "$1")"
grepname="${1%.o}"
grepname="$grepname\\.o"
@@ -326,6 +329,11 @@ find_parent_obj() {
num="$(find . -name ".*.cmd" -print0 | xargs -0 grep -l "$grepname" | grep -Fvc "$pdir/.${file}.cmd")"
[[ "$num" -eq 1 ]] && last_deep_find="$(dirname "$parent")"
fi
+ if [[ "$num" -eq 0 ]]; then
+ parent="$(find $USERMODBUILDDIR -name ".*.cmd" -print0 | xargs -0 grep -l "$grepname" | grep -Fv "$pdir/.${file}.cmd" | head -n1)"
+ num="$(find $USERMODBUILDDIR -name ".*.cmd" -print0 | xargs -0 grep -l "$grepname" | grep -Fvc "$pdir/.${file}.cmd")"
+ [[ "$num" -eq 1 ]] && last_deep_find="$(dirname "$parent")"
+ fi
else
parent="$(grep -l "$grepname" "$dir"/.*.cmd | grep -Fv "$dir/.${file}.cmd" | head -n1)"
num="$(grep -l "$grepname" "$dir"/.*.cmd | grep -Fvc "$dir/.${file}.cmd")"
@@ -730,16 +738,24 @@ find_special_section_data
if [[ $DEBUG -ge 4 ]]; then
export KPATCH_GCC_DEBUG=1
fi
+if [ -z "$USERMODBUILDDIR" ];then
+ USERMODBUILDDIR=$USERMODDIR;
+fi
if [ -z "$USERMODDIR" ];then
echo "Building original kernel"
./scripts/setlocalversion --save-scmversion || die
else
echo "Building original module"
+ [[ -e $USERMODDIR/Module.symvers ]] && cp -f $USERMODDIR/Module.symvers $TEMPDIR/patch/
fi
unset KPATCH_GCC_TEMPDIR
# $TARGETS used as list, no quotes.
# shellcheck disable=SC2086
-CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " make "-j$CPUS" $TARGETS 2>&1 | logger || die
+if [ -z "$USERMODDIR" ];then
+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " make "-j$CPUS" $TARGETS 2>&1 | logger || die
+else
+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " make -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" "-j$CPUS" $USERMODFLAGS $TARGETS 2>&1 | logger || die
+fi
sleep 1
if [ -z "$USERMODDIR" ];then
@@ -753,9 +769,15 @@ KPATCH_GCC_TEMPDIR="$TEMPDIR"
export KPATCH_GCC_TEMPDIR
# $TARGETS used as list, no quotes.
# shellcheck disable=SC2086
-CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " \
- KBUILD_MODPOST_WARN=1 \
- make "-j$CPUS" $TARGETS 2>&1 | logger || die
+if [ -z "$USERMODDIR" ];then
+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " \
+ KBUILD_MODPOST_WARN=1 \
+ make "-j$CPUS" $TARGETS 2>&1 | logger || die
+else
+ CROSS_COMPILE="$TOOLSDIR/kpatch-gcc " \
+ KBUILD_MODPOST_WARN=1 \
+ make -C "$USERMODBUILDDIR" M="$USERMODBUILDDIR" "-j$CPUS" $USERMODFLAGS $TARGETS 2>&1 | logger || die
+fi
# source.c:(.section+0xFF): undefined reference to `symbol'
grep "undefined reference" "$LOGFILE" | sed -r "s/^.*\`(.*)'$/\\1/" \
--
1.7.5.4