package/systemd: fixup RPATH for more systemd host binaries
All systemd binaries depend on libsystemd-shared and need their RPATH
fixed. Use a glob to catch them all.
We can't use $(wildcard ...) because this is expanded before any file
may exist (it's in the same rule that install those file, and the
expansion in Makefile is done once at the beginning of the recipe).
We need to test each file:
1. to ignore files that were not build (e.g. because the host is
missing some dependencies (in which case we don't care; we're only
interested in systemctl, and that one is already built)
2. to ensure the glob was expanded (in case no file would match
systemd-*)
Signed-off-by: Norbert Lange <nolange79@gmail.com>
[yann.morin.1998@free.fr:
- don't use 'set -e', use the more traditional '|| exit 1'
- don't cd into HOST_DIR/bin, but use $(addprefix ...)
- use positive logic in the test
- expand commit log
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
(cherry picked from commit 9f1a9ee932
)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
8a25ca5073
commit
cd5edc9650
@ -568,6 +568,8 @@ HOST_SYSTEMD_DEPENDENCIES = \
|
|||||||
host-libcap \
|
host-libcap \
|
||||||
host-gperf
|
host-gperf
|
||||||
|
|
||||||
|
HOST_SYSTEMD_NINJA_ENV = DESTDIR=$(HOST_DIR)
|
||||||
|
|
||||||
# Fix RPATH After installation
|
# Fix RPATH After installation
|
||||||
# * systemd provides a install_rpath instruction to meson because the binaries
|
# * systemd provides a install_rpath instruction to meson because the binaries
|
||||||
# need to link with libsystemd which is not in a standard path
|
# need to link with libsystemd which is not in a standard path
|
||||||
@ -576,20 +578,14 @@ HOST_SYSTEMD_DEPENDENCIES = \
|
|||||||
# * the original path had been tweaked by buildroot via LDFLAGS to add
|
# * the original path had been tweaked by buildroot via LDFLAGS to add
|
||||||
# $(HOST_DIR)/lib
|
# $(HOST_DIR)/lib
|
||||||
# * thus re-tweak rpath after the installation for all binaries that need it
|
# * thus re-tweak rpath after the installation for all binaries that need it
|
||||||
HOST_SYSTEMD_HOST_TOOLS = \
|
HOST_SYSTEMD_HOST_TOOLS = busctl journalctl systemctl systemd-* udevadm
|
||||||
systemd-analyze \
|
|
||||||
systemd-machine-id-setup \
|
|
||||||
systemd-mount \
|
|
||||||
systemd-nspawn \
|
|
||||||
systemctl \
|
|
||||||
udevadm
|
|
||||||
|
|
||||||
HOST_SYSTEMD_NINJA_ENV = DESTDIR=$(HOST_DIR)
|
|
||||||
|
|
||||||
define HOST_SYSTEMD_FIX_RPATH
|
define HOST_SYSTEMD_FIX_RPATH
|
||||||
$(foreach f,$(HOST_SYSTEMD_HOST_TOOLS), \
|
for f in $(addprefix $(HOST_DIR)/bin/,$(HOST_SYSTEMD_HOST_TOOLS)); do \
|
||||||
$(HOST_DIR)/bin/patchelf --set-rpath $(HOST_DIR)/lib:$(HOST_DIR)/lib/systemd $(HOST_DIR)/bin/$(f)
|
[ -e $$f ] || continue; \
|
||||||
)
|
$(HOST_DIR)/bin/patchelf --set-rpath $(HOST_DIR)/lib:$(HOST_DIR)/lib/systemd $${f} \
|
||||||
|
|| exit 1; \
|
||||||
|
done
|
||||||
endef
|
endef
|
||||||
HOST_SYSTEMD_POST_INSTALL_HOOKS += HOST_SYSTEMD_FIX_RPATH
|
HOST_SYSTEMD_POST_INSTALL_HOOKS += HOST_SYSTEMD_FIX_RPATH
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user