Files
buildroot/package/dracut/dracut.mk
Matéo Pourrier 90304b7129 package/dracut: switch to dracut-ng and bump to version 110
Bump dracut package source to the newest version of the project,
dracut-ng, release 110.

The original dracut project is now inactive for a long period of time.
Dracut community has transitioned to the dracut-ng fork to continue
development. The migration ensures regular updates for security and bug
fixing, a better support of modern systemd features and kernel
requirements. It also allows alignment with major Linux distributions
(Fedora, Arch Linux, Gentoo), and other open source projects (Yocto).

Changes made :
- dracut.mk: change source to dracut-ng 110
- dracut.hash: adapt hash to dracut-ng 110
- dracut.mk: fix unused systemd symbolic links build error
- Config.in: adapt fs/cpio/Config.in to mention dracut-ng upgrade
- Config.in.host: adapt dracut Config.in.host to mention dracut-ng upgrade
- .checkpackageignore: remove 001-dracut.sh-don-t-unset-LD_PRELOAD.patch

Patch removals and additions :

- Removed 0001-dracut.sh-don-t-unset-LD_PRELOAD.patch:
Upstream dracut-ng removed the 'unset LD_PRELOAD' instruction, making this
patch obsolete.

- Added 0001-fix-functions-prevent-find_binary-from-dropping-last.patch:
Dracut-ng introduced a regression on non-merged-usr architectures.
This was traced down to a bug in find_binary() where a `while read`
loop drops the last PATH element if the string does not end with a colon.
This local patch fixes the Bash EOF read behavior.
Submitted upstream: https://github.com/dracut-ng/dracut-ng/pull/2416

All dracut related runtime tests, including non-merged-usr, have been
locally tested and passed successfully using the reference Buildroot
docker container.

Signed-off-by: Matéo Pourrier <mateo.pourrier@smile.fr>
[Julien: reword commit log title]
Signed-off-by: Julien Olivain <ju.o@free.fr>
2026-04-29 22:01:14 +02:00

54 lines
2.2 KiB
Makefile

################################################################################
#
# dracut
#
################################################################################
DRACUT_VERSION = 110
DRACUT_SITE = $(call github,dracut-ng,dracut-ng,$(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
HOST_DRACUT_INSTALL_OPTS = systemdsystemunitdir="" install
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))