Message ID | 417c53083693347f5c22298c49c8ff9df1f35d0f.1660931225.git.yann.morin.1998@free.fr |
---|---|
State | Accepted |
Headers | show |
Series | dracut: extend support and tests (branch yem/dracut) | expand |
On 19/08/2022 19:51, Yann E. MORIN wrote: > It is not unusual that projects can target multiple boards, and in > such cases, a lot is shared between boards and only the low-level > stuff differ. > > Allow users to specify more than one dracut config file to cover > tose cases. > > dracut does not accept more than one config file with the -c option, > but it can load more than one from a directory with --confdir. So, > we copy all the config files to a temporary directory and se that as > --confdir. However, we can't drop passing -c, or dracut would read > the system-wide /etc/dracut.conf (not sure if ${prefix} is even used), > which we do not want. So, we use an empty file as -c; /dev/null comes > in handy as an empty file. > > Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> > Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> > Cc: Thierry Bultel <thierry.bultel@linatsea.fr> > Cc: Adam Duskett <aduskett@gmail.com> Applied to master, thanks. Regards, Arnout > --- > fs/cpio/Config.in | 12 +++++++----- > fs/cpio/cpio.mk | 19 ++++++++++++++----- > 2 files changed, 21 insertions(+), 10 deletions(-) > > diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in > index 861e9a929e..94a826f9e4 100644 > --- a/fs/cpio/Config.in > +++ b/fs/cpio/Config.in > @@ -29,13 +29,15 @@ endchoice > > if BR2_TARGET_ROOTFS_CPIO_DRACUT > > -config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE > - string "dracut configuration file" > +config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES > + string "dracut configuration files" > default "fs/cpio/dracut.conf" > help > - Dracut configuration file. It determines which parts of the > - rootfs get included in the cpio image. See dracut.conf(5) or > - https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc > + Space-separated list of Dracut configuration files. They > + determine which parts of the rootfs get included in the > + cpio image. See: > + dracut.conf(5) > + https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc > > The default configuration file is suitable for busybox init. > It doesn't, however, pivot_root into a full rootfs. > diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk > index fa66b1c710..d671c337df 100644 > --- a/fs/cpio/cpio.mk > +++ b/fs/cpio/cpio.mk > @@ -50,9 +50,14 @@ else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y) > > ROOTFS_CPIO_DEPENDENCIES += host-dracut > > -ROOTFS_CPIO_DRACUT_CONF_FILE = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE)) > -ifeq ($(BR_BUILDING):$(ROOTFS_CPIO_DRACUT_CONF_FILE),y:) > -$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE setting) > +ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES)) > +ifeq ($(BR_BUILDING),y) > +ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),) > +$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) > +endif > +ifneq ($(words $(ROOTFS_CPIO_DRACUT_CONF_FILES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_CONF_FILES))))) > +$(error No two dracut config files can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) > +endif > endif > > ifeq ($(BR2_LINUX_KERNEL),y) > @@ -63,10 +68,14 @@ ROOTFS_CPIO_OPTS += --no-kernel > endif > > define ROOTFS_CPIO_CMD > - mkdir -p $(ROOTFS_CPIO_DIR)/tmp > + mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir > + $(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \ > + cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg)) > + ) > $(HOST_DIR)/bin/dracut \ > $(ROOTFS_CPIO_OPTS) \ > - -c $(ROOTFS_CPIO_DRACUT_CONF_FILE) \ > + -c /dev/null \ > + --confdir $(ROOTFS_CPIO_DIR)/confdir \ > --sysroot $(TARGET_DIR) \ > --tmpdir $(ROOTFS_CPIO_DIR)/tmp \ > -M \
Arnout, All, On 2022-09-17 22:17 +0200, Arnout Vandecappelle spake thusly: > On 19/08/2022 19:51, Yann E. MORIN wrote: > >Allow users to specify more than one dracut config file to cover > >tose cases. [--SNIP--] > Applied to master, thanks. [--SNIP--] > >diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in > >index 861e9a929e..94a826f9e4 100644 > >--- a/fs/cpio/Config.in > >+++ b/fs/cpio/Config.in > >@@ -29,13 +29,15 @@ endchoice > > if BR2_TARGET_ROOTFS_CPIO_DRACUT > >-config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE > >- string "dracut configuration file" > >+config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES When that patch was written, we did not have a release yet with support for dracut, so I did not add a legacy for _CPIO_DRACUT_CONF_FILE when I made it a plural. But 2022.08 does have dracut, so we now need to handle the legacy for BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE (or not make it a plural). Regards, Yann E. MORIN. > >+ string "dracut configuration files" > > default "fs/cpio/dracut.conf" > > help > >- Dracut configuration file. It determines which parts of the > >- rootfs get included in the cpio image. See dracut.conf(5) or > >- https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc > >+ Space-separated list of Dracut configuration files. They > >+ determine which parts of the rootfs get included in the > >+ cpio image. See: > >+ dracut.conf(5) > >+ https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc > > The default configuration file is suitable for busybox init. > > It doesn't, however, pivot_root into a full rootfs. > >diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk > >index fa66b1c710..d671c337df 100644 > >--- a/fs/cpio/cpio.mk > >+++ b/fs/cpio/cpio.mk > >@@ -50,9 +50,14 @@ else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y) > > ROOTFS_CPIO_DEPENDENCIES += host-dracut > >-ROOTFS_CPIO_DRACUT_CONF_FILE = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE)) > >-ifeq ($(BR_BUILDING):$(ROOTFS_CPIO_DRACUT_CONF_FILE),y:) > >-$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE setting) > >+ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES)) > >+ifeq ($(BR_BUILDING),y) > >+ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),) > >+$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) > >+endif > >+ifneq ($(words $(ROOTFS_CPIO_DRACUT_CONF_FILES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_CONF_FILES))))) > >+$(error No two dracut config files can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) > >+endif > > endif > > ifeq ($(BR2_LINUX_KERNEL),y) > >@@ -63,10 +68,14 @@ ROOTFS_CPIO_OPTS += --no-kernel > > endif > > define ROOTFS_CPIO_CMD > >- mkdir -p $(ROOTFS_CPIO_DIR)/tmp > >+ mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir > >+ $(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \ > >+ cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg)) > >+ ) > > $(HOST_DIR)/bin/dracut \ > > $(ROOTFS_CPIO_OPTS) \ > >- -c $(ROOTFS_CPIO_DRACUT_CONF_FILE) \ > >+ -c /dev/null \ > >+ --confdir $(ROOTFS_CPIO_DIR)/confdir \ > > --sysroot $(TARGET_DIR) \ > > --tmpdir $(ROOTFS_CPIO_DIR)/tmp \ > > -M \
On 17/09/2022 23:10, Yann E. MORIN wrote: > Arnout, All, > > On 2022-09-17 22:17 +0200, Arnout Vandecappelle spake thusly: >> On 19/08/2022 19:51, Yann E. MORIN wrote: >>> Allow users to specify more than one dracut config file to cover >>> tose cases. > [--SNIP--] >> Applied to master, thanks. > [--SNIP--] >>> diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in >>> index 861e9a929e..94a826f9e4 100644 >>> --- a/fs/cpio/Config.in >>> +++ b/fs/cpio/Config.in >>> @@ -29,13 +29,15 @@ endchoice >>> if BR2_TARGET_ROOTFS_CPIO_DRACUT >>> -config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE >>> - string "dracut configuration file" >>> +config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES > > When that patch was written, we did not have a release yet with support > for dracut, so I did not add a legacy for _CPIO_DRACUT_CONF_FILE when I > made it a plural. But 2022.08 does have dracut, so we now need to handle > the legacy for BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE (or not make it a > plural). I know that, that's why I first checked if dracut was merged in 2022.08. It was merged during the stabilisation period but to next, not to master. So, no worries. Regards, Arnout > > Regards, > Yann E. MORIN. > >>> + string "dracut configuration files" >>> default "fs/cpio/dracut.conf" >>> help >>> - Dracut configuration file. It determines which parts of the >>> - rootfs get included in the cpio image. See dracut.conf(5) or >>> - https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc >>> + Space-separated list of Dracut configuration files. They >>> + determine which parts of the rootfs get included in the >>> + cpio image. See: >>> + dracut.conf(5) >>> + https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc >>> The default configuration file is suitable for busybox init. >>> It doesn't, however, pivot_root into a full rootfs. >>> diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk >>> index fa66b1c710..d671c337df 100644 >>> --- a/fs/cpio/cpio.mk >>> +++ b/fs/cpio/cpio.mk >>> @@ -50,9 +50,14 @@ else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y) >>> ROOTFS_CPIO_DEPENDENCIES += host-dracut >>> -ROOTFS_CPIO_DRACUT_CONF_FILE = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE)) >>> -ifeq ($(BR_BUILDING):$(ROOTFS_CPIO_DRACUT_CONF_FILE),y:) >>> -$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE setting) >>> +ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES)) >>> +ifeq ($(BR_BUILDING),y) >>> +ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),) >>> +$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) >>> +endif >>> +ifneq ($(words $(ROOTFS_CPIO_DRACUT_CONF_FILES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_CONF_FILES))))) >>> +$(error No two dracut config files can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) >>> +endif >>> endif >>> ifeq ($(BR2_LINUX_KERNEL),y) >>> @@ -63,10 +68,14 @@ ROOTFS_CPIO_OPTS += --no-kernel >>> endif >>> define ROOTFS_CPIO_CMD >>> - mkdir -p $(ROOTFS_CPIO_DIR)/tmp >>> + mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir >>> + $(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \ >>> + cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg)) >>> + ) >>> $(HOST_DIR)/bin/dracut \ >>> $(ROOTFS_CPIO_OPTS) \ >>> - -c $(ROOTFS_CPIO_DRACUT_CONF_FILE) \ >>> + -c /dev/null \ >>> + --confdir $(ROOTFS_CPIO_DIR)/confdir \ >>> --sysroot $(TARGET_DIR) \ >>> --tmpdir $(ROOTFS_CPIO_DIR)/tmp \ >>> -M \ >
Arnout, All, On 2022-09-18 10:41 +0200, Arnout Vandecappelle spake thusly: > On 17/09/2022 23:10, Yann E. MORIN wrote: > >When that patch was written, we did not have a release yet with support > >for dracut, so I did not add a legacy for _CPIO_DRACUT_CONF_FILE when I > >made it a plural. But 2022.08 does have dracut, so we now need to handle > >the legacy for BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE (or not make it a > >plural). > I know that, that's why I first checked if dracut was merged in 2022.08. It > was merged during the stabilisation period but to next, not to master. So, > no worries. Arg... Of coutrse, stupid me... :-/ I'll mark my morning patch as rejected, then. Thanks for being more acute than I was! :-) Regards, Yann E. MORIN.
diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in index 861e9a929e..94a826f9e4 100644 --- a/fs/cpio/Config.in +++ b/fs/cpio/Config.in @@ -29,13 +29,15 @@ endchoice if BR2_TARGET_ROOTFS_CPIO_DRACUT -config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE - string "dracut configuration file" +config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES + string "dracut configuration files" default "fs/cpio/dracut.conf" help - Dracut configuration file. It determines which parts of the - rootfs get included in the cpio image. See dracut.conf(5) or - https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc + Space-separated list of Dracut configuration files. They + determine which parts of the rootfs get included in the + cpio image. See: + dracut.conf(5) + https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc The default configuration file is suitable for busybox init. It doesn't, however, pivot_root into a full rootfs. diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk index fa66b1c710..d671c337df 100644 --- a/fs/cpio/cpio.mk +++ b/fs/cpio/cpio.mk @@ -50,9 +50,14 @@ else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y) ROOTFS_CPIO_DEPENDENCIES += host-dracut -ROOTFS_CPIO_DRACUT_CONF_FILE = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE)) -ifeq ($(BR_BUILDING):$(ROOTFS_CPIO_DRACUT_CONF_FILE),y:) -$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE setting) +ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES)) +ifeq ($(BR_BUILDING),y) +ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),) +$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) +endif +ifneq ($(words $(ROOTFS_CPIO_DRACUT_CONF_FILES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_CONF_FILES))))) +$(error No two dracut config files can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) +endif endif ifeq ($(BR2_LINUX_KERNEL),y) @@ -63,10 +68,14 @@ ROOTFS_CPIO_OPTS += --no-kernel endif define ROOTFS_CPIO_CMD - mkdir -p $(ROOTFS_CPIO_DIR)/tmp + mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir + $(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \ + cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg)) + ) $(HOST_DIR)/bin/dracut \ $(ROOTFS_CPIO_OPTS) \ - -c $(ROOTFS_CPIO_DRACUT_CONF_FILE) \ + -c /dev/null \ + --confdir $(ROOTFS_CPIO_DIR)/confdir \ --sysroot $(TARGET_DIR) \ --tmpdir $(ROOTFS_CPIO_DIR)/tmp \ -M \
It is not unusual that projects can target multiple boards, and in such cases, a lot is shared between boards and only the low-level stuff differ. Allow users to specify more than one dracut config file to cover tose cases. dracut does not accept more than one config file with the -c option, but it can load more than one from a directory with --confdir. So, we copy all the config files to a temporary directory and se that as --confdir. However, we can't drop passing -c, or dracut would read the system-wide /etc/dracut.conf (not sure if ${prefix} is even used), which we do not want. So, we use an empty file as -c; /dev/null comes in handy as an empty file. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Thierry Bultel <thierry.bultel@linatsea.fr> Cc: Adam Duskett <aduskett@gmail.com> --- fs/cpio/Config.in | 12 +++++++----- fs/cpio/cpio.mk | 19 ++++++++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-)