From ecf3b9baaebda1d9182c22dc504e32ed275d4abb Mon Sep 17 00:00:00 2001 From: Adam Duskett Date: Sun, 31 Dec 2017 12:46:04 -0500 Subject: [PATCH] install: don't use ln --relative Oldish enterprise-class distributions have too old versions of coreutils, with ln not supporting --relative. So we fake it. ln --relative would create minimalist relative paths, but they are not trivial to generate. Instead, we always create paths relative to the root, i.e.: ln -s --relative /usr/bin/foo /usr/sbin/foo would create: /usr/sbin/foo -> ../bin/foo while we do : /usr/sbin/foo -> ../../usr/bin/foo Signed-off-by: "Yann E. MORIN" [aduskett@gmail.com: Added meson.build section and dirname wrapper in add-wants] Signed-off-by: Adam Duskett --- meson.build | 2 +- tools/meson-make-symlink.sh | 3 ++- units/meson-add-wants.sh | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index ddc061c..614201a 100644 --- a/meson.build +++ b/meson.build @@ -531,7 +531,7 @@ foreach prog : progs endforeach if run_command('ln', '--relative', '--help').returncode() != 0 - error('ln does not support --relative') + message('ln does not support --relative') endif ############################################################ diff --git a/tools/meson-make-symlink.sh b/tools/meson-make-symlink.sh index 47a5e70..e9002ad 100755 --- a/tools/meson-make-symlink.sh +++ b/tools/meson-make-symlink.sh @@ -7,5 +7,6 @@ mkdir -vp "$(dirname "${DESTDIR:-}$2")" if [ "$(dirname $1)" = . ]; then ln -vfs -T "$1" "${DESTDIR:-}$2" else - ln -vfs -T --relative "${DESTDIR:-}$1" "${DESTDIR:-}$2" + dds="$( dirname "$2" |sed -r -e 's:/+[^/]+:../:g; s:/$::' )" + ln -vfs -T "${dds}$1" "${DESTDIR:-}$2" fi diff --git a/units/meson-add-wants.sh b/units/meson-add-wants.sh index dfd287e..8c08283 100755 --- a/units/meson-add-wants.sh +++ b/units/meson-add-wants.sh @@ -13,7 +13,7 @@ case "$target" in ;; esac -unitpath="${DESTDIR:-}${unitdir}/${unit}" +unitpath="${unitdir}/${unit}" case "$target" in */) @@ -24,4 +24,5 @@ case "$target" in ;; esac -ln -vfs --relative "$unitpath" "$dir" +dds="$( dirname `printf "%s" "${dir#${DESTDIR:-}}" |sed -r -e 's:/+[^/]+:../:g; s:/$::'` )" +ln -vfs "$dds$unitpath" "$dir" -- 2.14.3