meson: make our symlinking script more portable

We do not need the --relative case as it is dead code (we only ever link
a filename without directory components).

For the rest, GNU-specific ln -T does two things:

- if the link name is an existing directory, ln fails instead of
  creating a surprising link inside the directory
- if the link name is a symlink to a directory, ln treats it as a file,
  and due to -f, unlinks it

The second case can be portably solved by ln -n, and both cases can be
solved by doing what the original autotools Makefile did: rm -f && ln -s

If the file exists, it will be removed. If it cannot be removed, it must
be an ordinary directory, and the script aborts with an error.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Eli Schwartz 2021-04-19 22:25:51 -04:00 committed by Allan McRae
parent 079b9d44e2
commit 8fe5520709

View file

@ -5,8 +5,6 @@ set -eu
# and we need to create the target directory... # and we need to create the target directory...
mkdir -vp "$(dirname "${DESTDIR:-}$2")" mkdir -vp "$(dirname "${DESTDIR:-}$2")"
if [ "$(dirname $1)" = . ]; then
ln -vfs -T "$1" "${DESTDIR:-}$2" rm -f "${DESTDIR:-}$2"
else ln -vs "$1" "${DESTDIR:-}$2"
ln -vfs -T --relative "${DESTDIR:-}$1" "${DESTDIR:-}$2"
fi