mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-09 16:01:54 -09:00
Dracut-internal executables were linked against system libraries, instead of Buildroot host packages. For example: $ ldd host/lib/dracut/dracut-install linux-vdso.so.1 (0x00007f578cf06000) libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007f578cccd000) libkmod.so.2 => /usr/lib/x86_64-linux-gnu/libkmod.so.2 (0x00007f578ccb1000) /lib64/ld-linux-x86-64.so.2 (0x00007f578cf08000) libcrypto.so.3 => /usr/lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f578c600000) libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007f578cc92000) libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f578c536000) The reason is that Dracut is not a "real" autoconf package, and the hand-written ./configure script does not preserve LDFLAGS for make. Pass the environment variables directly to fix this. Signed-off-by: Fiona Klute (othermo GmbH) <fiona.klute@gmx.de> [Julien: add comment in dracut.mk] Signed-off-by: Julien Olivain <ju.o@free.fr>
64 lines
2.5 KiB
Makefile
64 lines
2.5 KiB
Makefile
################################################################################
|
|
#
|
|
# dracut
|
|
#
|
|
################################################################################
|
|
|
|
DRACUT_VERSION = 112
|
|
DRACUT_SITE = $(call github,dracut-ng,dracut,$(DRACUT_VERSION))
|
|
DRACUT_LICENSE = GPL-2.0
|
|
DRACUT_LICENSE_FILES = COPYING
|
|
DRACUT_CPE_ID_VALID = YES
|
|
|
|
HOST_DRACUT_DEPENDENCIES = host-pkgconf host-kmod host-cross-ldd
|
|
# Dracut is not a real autotools package, and the hand-written
|
|
# ./configure script does not preserve LDFLAGS for make.
|
|
HOST_DRACUT_MAKE_ENV = $(HOST_CONFIGURE_OPTS)
|
|
HOST_DRACUT_INSTALL_OPTS = systemdsystemunitdir="" install
|
|
|
|
ifeq ($(BR2_PACKAGE_HOST_RUSTC),y)
|
|
HOST_DRACUT_CONF_OPTS += --enable-dracut-cpio
|
|
HOST_DRACUT_DEPENDENCIES += host-rustc
|
|
else
|
|
HOST_DRACUT_CONF_OPTS += --disable-dracut-cpio
|
|
endif
|
|
|
|
define HOST_DRACUT_POST_INSTALL_WRAPPER_SCRIPT
|
|
mv $(HOST_DIR)/bin/dracut $(HOST_DIR)/bin/dracut.real
|
|
sed -e "s%@@TARGET_CROSS@@%$(TARGET_CROSS)%" \
|
|
$(HOST_DRACUT_PKGDIR)/dracut_wrapper.in > \
|
|
$(@D)/dracut_wrapper
|
|
install -D -m 0755 $(@D)/dracut_wrapper $(HOST_DIR)/bin/dracut
|
|
endef
|
|
HOST_DRACUT_POST_INSTALL_HOOKS += HOST_DRACUT_POST_INSTALL_WRAPPER_SCRIPT
|
|
|
|
# When using uClibc or musl, there must be "ld-uClibc.so.1" or
|
|
# "ld-musl-x.so" symlinks, respectively - else the init process cannot
|
|
# start
|
|
define HOST_DRACUT_POST_INSTALL_LIBC_LINKS_MODULE
|
|
$(INSTALL) -D -m 0755 package/dracut/merged-usr-module-setup.sh \
|
|
$(HOST_DIR)/lib/dracut/modules.d/0000-merged-usr/module-setup.sh
|
|
$(INSTALL) -D -m 0755 package/dracut/libc-links-module-setup.sh \
|
|
$(HOST_DIR)/lib/dracut/modules.d/05libc-links/module-setup.sh
|
|
endef
|
|
HOST_DRACUT_POST_INSTALL_HOOKS += HOST_DRACUT_POST_INSTALL_LIBC_LINKS_MODULE
|
|
|
|
ifeq ($(BR2_INIT_BUSYBOX),y)
|
|
# Dracut does not support busybox init (systemd init is assumed to work
|
|
# out of the box, though). It provides a busybox module, that does not
|
|
# use the same paths as buildroot, and is not meant to be used as an init
|
|
# system.
|
|
# So it is simpler for users to disable the standard 'busybox' module in
|
|
# the configuration file, and enable the "busybox-init' module instead.
|
|
# Note that setting the script as executable (0755) is not mandatory,
|
|
# but this is what dracut does on all its modules, so lets just conform
|
|
# to it.
|
|
define HOST_DRACUT_POST_INSTALL_BUSYBOX_INIT_MODULE
|
|
$(INSTALL) -D -m 0755 package/dracut/busybox-init-module-setup.sh \
|
|
$(HOST_DIR)/lib/dracut/modules.d/05busybox-init/module-setup.sh
|
|
endef
|
|
HOST_DRACUT_POST_INSTALL_HOOKS += HOST_DRACUT_POST_INSTALL_BUSYBOX_INIT_MODULE
|
|
endif
|
|
|
|
$(eval $(host-autotools-package))
|