build: meson: support $DESTDIR in installation script

Adapt the meson post-installation script to handle the $DESTDIR
variable supplied by user to specify the installation target
directory. While at it, convert the script to shell because it seems
simpler to me.

(cherry picked from commit 98b4a19a53)
This commit is contained in:
Beniamino Galvani 2018-09-13 17:24:58 +02:00
parent 353cc20683
commit bd519d88e4
4 changed files with 46 additions and 48 deletions

View file

@ -4744,7 +4744,6 @@ EXTRA_DIST += \
valgrind.suppressions \
meson.build \
meson_options.txt \
meson_post_install.py \
config.h.meson \
config-extra.h.meson \
docs/meson.build \
@ -4785,6 +4784,7 @@ EXTRA_DIST += \
tools/check-exports.sh \
tools/create-exports-NetworkManager.sh \
tools/debug-helper.py \
tools/meson-post-install.sh \
tools/run-nm-test.sh \
tools/test-networkmanager-service.py \
tools/test-sudo-wrapper.sh \

View file

@ -896,7 +896,7 @@ configure_file(
)
meson.add_install_script(
'meson_post_install.py',
join_paths('tools', 'meson-post-install.sh'),
nm_datadir,
nm_bindir,
nm_pkgconfdir,

View file

@ -1,46 +0,0 @@
#!/usr/bin/env python3
import os
import sys
if not os.environ.get('DESTDIR'):
datadir = sys.argv[1]
bindir = sys.argv[2]
pkgconfdir = sys.argv[3]
pkglibdir = sys.argv[4]
localstatedir = sys.argv[5]
completions_dir = os.path.join(datadir, 'bash-completion', 'completions')
os.rename(os.path.join(completions_dir, 'nmcli-completion'), os.path.join(completions_dir, 'nmcli'))
nmtui_alias = ['nmtui-connect', 'nmtui-edit', 'nmtui-hostname']
src = os.path.join(bindir, 'nmtui')
[os.symlink(src, os.path.join(bindir, dst))
for dst in nmtui_alias]
dst_dirs = [
os.path.join(pkgconfdir, 'conf.d'),
os.path.join(pkgconfdir, 'system-connections'),
os.path.join(pkgconfdir, 'dispatcher.d', 'no-wait.d'),
os.path.join(pkgconfdir, 'dispatcher.d', 'pre-down.d'),
os.path.join(pkgconfdir, 'dispatcher.d', 'pre-up.d'),
os.path.join(pkgconfdir, 'dnsmasq.d'),
os.path.join(pkgconfdir, 'dnsmasq-shared.d'),
os.path.join(pkglibdir, 'conf.d'),
os.path.join(pkglibdir, 'VPN'),
os.path.join(localstatedir, 'lib', 'NetworkManager')
]
[os.makedirs(dst_dir)
for dst_dir in dst_dirs
if not os.path.exists(dst_dir)]
if sys.argv[6] == 'install_docs':
mandir = sys.argv[7]
src = os.path.join(mandir, 'man1', 'nmtui.1')
[os.symlink(src, os.path.join(mandir, 'man1', dst + '.1'))
for dst in nmtui_alias]
src = os.path.join(mandir, 'man5', 'NetworkManager.conf.5')
dst = os.path.join(mandir, 'man5', 'nm-system-settings.conf.5')
os.symlink(src, dst)

44
tools/meson-post-install.sh Executable file
View file

@ -0,0 +1,44 @@
#!/bin/sh
datadir=$1
bindir=$2
pkgconfdir=$3
pkglibdir=$4
localstatedir=$5
[ -n "$DESTDIR" ] && DESTDIR=${DESTDIR%%/}/
if [ -f "${DESTDIR}${datadir}/bash-completion/completions/nmcli-completion" ]; then
mv "${DESTDIR}${datadir}/bash-completion/completions/nmcli-completion" \
"${DESTDIR}${datadir}/bash-completion/completions/nmcli"
fi
if [ -x "${DESTDIR}${bindir}/nmtui" ]; then
for alias in nmtui-connect nmtui-edit nmtui-hostname; do
ln -sf nmtui "${DESTDIR}${bindir}/$alias"
done
fi
for dir in "${pkgconfdir}/conf.d" \
"${pkgconfdir}/system-connections" \
"${pkgconfdir}/dispatcher.d/no-wait.d" \
"${pkgconfdir}/dispatcher.d/pre-down.d" \
"${pkgconfdir}/dispatcher.d/pre-up.d" \
"${pkgconfdir}/dnsmasq.d" \
"${pkgconfdir}/dnsmasq-shared.d" \
"${pkgconfdir}/conf.d" \
"${pkgconfdir}/VPN" \
"${localstatedir}/lib/NetworkManager"; do
mkdir -p "${DESTDIR}${dir}"
done
if [ "$6" = install_docs ]; then
mandir=$7
for alias in nmtui-connect nmtui-edit nmtui-hostname; do
ln -f "${DESTDIR}${mandir}/man1/nmtui.1" "${DESTDIR}${mandir}/man1/${alias}.1"
done
ln -f "${DESTDIR}${mandir}/man5/NetworkManager.conf.5" "${DESTDIR}${mandir}/man5/nm-system-settings.conf"
fi