kpatch-build: get kernel version from vmlinux if source tree is used

If a kernel SRPM is used to get the kernel sources, the target kernel
version is determined from the name of the SRPM.

One cannot obtain the target kernel version this way if the source tree
is used instead of an SRPM, so let us extract that information from
vmlinux.

Signed-off-by: Evgenii Shatokhin <eshatokhin@odin.com>
This commit is contained in:
Evgenii Shatokhin 2015-11-17 15:59:05 +03:00
parent f152d00a62
commit e169d82192

View File

@ -283,12 +283,6 @@ rm -f "$LOGFILE"
trap cleanup EXIT INT TERM HUP trap cleanup EXIT INT TERM HUP
KVER=${ARCHVERSION%%-*}
if [[ $ARCHVERSION =~ - ]]; then
KREL=${ARCHVERSION##*-}
KREL=${KREL%.*}
fi
if [[ -n $USERSRCDIR ]]; then if [[ -n $USERSRCDIR ]]; then
# save .config and vmlinux since they'll get removed with mrproper so # save .config and vmlinux since they'll get removed with mrproper so
# we can restore them later and be able to run kpatch-build multiple # we can restore them later and be able to run kpatch-build multiple
@ -300,6 +294,15 @@ if [[ -n $USERSRCDIR ]]; then
[[ -z $VMLINUX ]] && VMLINUX="$USERSRCDIR"/vmlinux [[ -z $VMLINUX ]] && VMLINUX="$USERSRCDIR"/vmlinux
[[ ! -e "$VMLINUX" ]] && die "can't find vmlinux" [[ ! -e "$VMLINUX" ]] && die "can't find vmlinux"
[[ "$VMLINUX" = "$USERSRCDIR"/vmlinux ]] && cp -f "$VMLINUX" $TEMPDIR/vmlinux && VMLINUX=$TEMPDIR/vmlinux [[ "$VMLINUX" = "$USERSRCDIR"/vmlinux ]] && cp -f "$VMLINUX" $TEMPDIR/vmlinux && VMLINUX=$TEMPDIR/vmlinux
# Extract the target kernel version from vmlinux in this case.
ARCHVERSION=$(strings "$VMLINUX" | grep -e "^Linux version" | awk '{ print($3); }')
fi
KVER=${ARCHVERSION%%-*}
if [[ $ARCHVERSION =~ - ]]; then
KREL=${ARCHVERSION##*-}
KREL=${KREL%.*}
fi fi
[[ -z $TARGETS ]] && TARGETS="vmlinux modules" [[ -z $TARGETS ]] && TARGETS="vmlinux modules"