Skip to content

Commit

Permalink
fs/cpio: allow users to provide their own dracut modules
Browse files Browse the repository at this point in the history
Dracut modules can only be looked for in HOST_DIR/lib/dracut/modules.d/
as dracut does not offer the possibility to look elsewhere.

Installing files in HOST_DIR/ can do done either from a host-package, or
via a post-built script; there is no overlay like there is for target/.
This is a bit cumbersome.

Additional modules are most probably developped in a relatively tight
loop with the configuration files, so it makes sense to expose both
close together.

Add an option to the fs/cpio filesystem, so users can point to a list
of modules to install.

Signed-off-by: Yann E. MORIN <[email protected]>
Cc: Arnout Vandecappelle (Essensium/Mind) <[email protected]>
Cc: Thierry Bultel <[email protected]>
Cc: Adam Duskett <[email protected]>
Signed-off-by: Thomas Petazzoni <[email protected]>
  • Loading branch information
yann-morin-1998 authored and tpetazzoni committed Feb 6, 2023
1 parent 488a875 commit eb6e466
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
5 changes: 5 additions & 0 deletions fs/cpio/Config.in
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ endchoice

if BR2_TARGET_ROOTFS_CPIO_DRACUT

config BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES
string "extra dracut modules"
help
Space-separated list of directories containing dracut modules.

config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES
string "dracut configuration files"
default "fs/cpio/dracut.conf"
Expand Down
12 changes: 11 additions & 1 deletion fs/cpio/cpio.mk
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y)

ROOTFS_CPIO_DEPENDENCIES += host-dracut

ROOTFS_CPIO_DRACUT_MODULES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES))
ifeq ($(BR_BUILDING),y)
ifneq ($(words $(ROOTFS_CPIO_DRACUT_MODULES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_MODULES)))))
$(error No two dracut modules can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES setting)
endif
endif

ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES))
ifeq ($(BR_BUILDING),y)
ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),)
Expand All @@ -68,11 +75,14 @@ ROOTFS_CPIO_OPTS += --no-kernel
endif

define ROOTFS_CPIO_CMD
mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir
mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir $(HOST_DIR)/lib/dracut/modules.d
touch $(ROOTFS_CPIO_DIR)/empty-config
$(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \
cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg))
)
$(foreach m,$(ROOTFS_CPIO_DRACUT_MODULES), \
cp -a $(m)/* $(HOST_DIR)/lib/dracut/modules.d/
)
$(HOST_DIR)/bin/dracut \
$(ROOTFS_CPIO_OPTS) \
-c $(ROOTFS_CPIO_DIR)/empty-config \
Expand Down

0 comments on commit eb6e466

Please sign in to comment.