Files
buildroot/package/dracut/dracut.mk
Fiona Klute (othermo GmbH) 45acb281ca package/dracut: pass HOST_CONFIGURE_OPTS to make
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>
2026-09-01 21:14:52 +02:00

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))