aboutsummaryrefslogtreecommitdiff
path: root/package/systemd/0002-install-don-t-use-ln-relative.patch
blob: 61a139e2a2fc7396b1848213c77b355da61d47f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
From 17560d52e9ec0afebbfe31e694870c6433b36f60 Mon Sep 17 00:00:00 2001
From: Adam Duskett <Adamduskett@outlook.com>
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" <yann.morin.1998@free.fr>
[aduskett@gmail.com: Added meson.build section and dirname wrapper in add-wants]
[aduskett@gmail.com: Update for systemd v237]
Signed-off-by: Adam Duskett <Adamduskett@outlook.com>
[tpiepho@impinj.com: Fix add-wants wrapper]
Signed-off-by: Trent Piepho <tpiepho@impinj.com>
---
 meson.build                 | 2 +-
 tools/meson-make-symlink.sh | 3 ++-
 units/meson-add-wants.sh    | 6 ++++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/meson.build b/meson.build
index d4af95a44..d75f2b34c 100644
--- a/meson.build
+++ b/meson.build
@@ -586,7 +586,7 @@ endforeach
 conf.set_quoted('TELINIT', get_option('telinit-path'))
 
 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 501cd43d4..25e7f89fd 100755
--- a/tools/meson-make-symlink.sh
+++ b/tools/meson-make-symlink.sh
@@ -8,5 +8,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 70f7172ae..bb8155075 100755
--- a/units/meson-add-wants.sh
+++ b/units/meson-add-wants.sh
@@ -14,7 +14,7 @@ case "$target" in
                 ;;
 esac
 
-unitpath="${DESTDIR:-}${unitdir}/${unit}"
+unitpath="${unitdir}/${unit}"
 
 case "$target" in
         */)
@@ -25,4 +25,6 @@ case "$target" in
                 ;;
 esac
 
-ln -vfs --relative "$unitpath" "$dir"
+[ ! -d "${dir}" ] && linkdir=`dirname "${dir}"` || linkdir="${dir}"
+dds="$(printf "%s" "${linkdir#${DESTDIR:-}}" |sed -r -e 's:/+[^/]+:../:g; s:/$::')"
+ln -vfs "$dds$unitpath" "$dir"
-- 
2.14.3