@@ -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