Busybox readlink implementation only supports the -f option to follow symlinks,
so adjust the logic in order to keep the same behaviour without using the -m
option.
Singed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
livepatch-build | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/livepatch-build b/livepatch-build
index 91d203bda0eb..305644037ee7 100755
--- a/livepatch-build
+++ b/livepatch-build
@@ -336,8 +336,8 @@ while [[ $# -gt 0 ]]; do
;;
--xen-syms)
shift
- XENSYMS="$(readlink -m -- "$1")"
- [ -f "$XENSYMS" ] || die "xen-syms file does not exist"
+ [ -f "$1" ] || die "xen-syms file does not exist"
+ XENSYMS="$(readlink -f -- "$1")"
shift
;;
--depends)
@@ -366,22 +366,20 @@ while [[ $# -gt 0 ]]; do
done
[ -z "$srcarg" ] && die "Xen directory not given"
+[ -d "$srcarg" ] || die "Xen directory does not exist"
[ -z "$patcharg" ] && die "Patchfile not given"
+[ -f "$patcharg" ] || die "Patchfile does not exist"
[ -z "$configarg" ] && die ".config not given"
+[ -f "$configarg" ] || die ".config does not exist"
[ -z "$outputarg" ] && die "Output directory not given"
[ -z "$DEPENDS" ] && die "Build-id dependency not given"
[ -z "$XEN_DEPENDS" ] && die "Xen Build-id dependency not given"
-SRCDIR="$(readlink -m -- "$srcarg")"
+SRCDIR="$(readlink -f -- "$srcarg")"
# We need an absolute path because we move around, but we need to
# retain the name of the symlink (= realpath -s)
PATCHFILE="$(readlink -f "$(dirname "$patcharg")")/$(basename "$patcharg")"
-CONFIGFILE="$(readlink -m -- "$configarg")"
-OUTPUT="$(readlink -m -- "$outputarg")"
-
-[ -d "${SRCDIR}" ] || die "Xen directory does not exist"
-[ -f "${PATCHFILE}" ] || die "Patchfile does not exist"
-[ -f "${CONFIGFILE}" ] || die ".config does not exist"
+CONFIGFILE="$(readlink -f -- "$configarg")"
PATCHNAME=$(make_patch_name "${PATCHFILE}")
@@ -390,17 +388,20 @@ echo
echo "Xen directory: ${SRCDIR}"
echo "Patch file: ${PATCHFILE}"
echo ".config file: ${CONFIGFILE}"
-echo "Output directory: ${OUTPUT}"
+echo "Output directory: $outputarg"
echo "================================================"
echo
if [ "${SKIP}" != "build" ]; then
- [ -e "${OUTPUT}" ] && die "Output directory exists"
+ # Make sure output directory doesn't exist, and create it.
+ [ -e "$outputarg" ] && die "Output directory exists"
+ mkdir -p "$outputarg" || die
+ OUTPUT="$(readlink -f -- "$outputarg")"
+
grep -q 'CONFIG_LIVEPATCH=y' "${CONFIGFILE}" || die "CONFIG_LIVEPATCH must be enabled"
cd "$SRCDIR" || die
patch -s -N -p1 -f --fuzz=0 --dry-run < "$PATCHFILE" || die "Source patch file failed to apply"
- mkdir -p "${OUTPUT}" || die
cp -f "${CONFIGFILE}" "${OUTPUT}/.config"
cp -f "${OUTPUT}/.config" "xen/.config"
@@ -453,7 +454,9 @@ if [ "${SKIP}" != "build" ]; then
fi
if [ "${SKIP}" != "diff" ]; then
- [ -d "${OUTPUT}" ] || die "Output directory does not exist"
+ cd "${SCRIPTDIR}" || die
+ [ -d "$outputarg" ] || die "Output directory does not exist"
+ OUTPUT="$(readlink -f -- "$outputarg")"
cd "${OUTPUT}" || die
create_patch
base-commit: e588b7914e7afa3abb64b15a32fc2fdb57ded341
--
2.43.0
© 2016 - 2024 Red Hat, Inc.