Files
xen/install.sh
Thierry Escande 5c248e8dbb install.sh: Preserve symlinks in destination file system
In various distros (i.e. Debian), /lib is a symbolic link. The tar
command in install.sh replaces the /lib symlink with a directory and
results in a non-functioning system. This has been introduced by the
installation of the systemd watchdog sleep script in /lib/systemd.

This patch adds the tar option --dereference (-h for short) to preserve
symlinks when extracting the dist archive.

Fixes: e54a6cd6a1 ("systemd: Add hooks to stop/start xen-watchdog on suspend/resume")
Signed-off-by: Thierry Escande <thierry.escande@vates.tech>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Tested-by: Jason Andryuk <jason.andryuk@amd.com>
Acked-by: Anthony PERARD <anthony.perard@vates.tech>
2026-04-23 17:39:55 +02:00

36 lines
659 B
Bash

#!/bin/sh
src='./install'
if [ -d ./dist ]; then
src='./dist/install'
fi
if ! [ -d $src ]; then
echo "ERROR: Could not find a valid distribution directory."
echo " If this is a source-only release, try 'make dist'."
exit 1
fi
dst='/'
if [ $# -ne 0 ]; then
dst=$1
fi
if ! [ -d $dst ]; then
echo "ERROR: You must specify a valid install directory."
echo " The specified directory '$dst' is not valid."
exit 1
fi
tmp="`mktemp -d`"
echo "Installing Xen from '$src' to '$dst'..."
(cd $src; tar -cf - * ) | tar -C "$tmp" -xf -
(cd $tmp; tar -cf - *) | tar --no-same-owner -C "$dst" -xhf -
rm -rf "$tmp"
echo "All done."
exit 0