Message ID | 20240328122818.139194-1-heiko.thiery@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | Add BR2_ROOTFS_POST_{PRE_BUILD|POST_BUILD|FAKEROOT|IMAGE}_SCRIPT_ARGS | expand |
Heiko, All, On 2024-03-28 13:28 +0100, Heiko Thiery spake thusly: > You only can specify one list of arguments that are passed to several > scripts (BR2_ROOTFS_PRE_BUILD_SCRIPT, BR2_ROOTFS_POST_BUILD_SCRIPT, > BR2_ROOTFS_POST_FAKEROOT_SCRIPT and BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS). > > So you have to be careful that the arguments for these scripts do not collide. > > To allow specifiying dedicated arguments to each of the script the new > config options are introduced. For backward compatibility the value of > BR2_ROOTFS_POST_SCRIPT_ARGS is passed to the scripts in case the > specific argument values are not present. > > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> > --- > Makefile | 9 ++-- > docs/manual/customize-post-image.adoc | 5 +++ > docs/manual/customize-rootfs.adoc | 6 +++ > fs/common.mk | 2 +- > system/Config.in | 64 ++++++++++++++++++++++++--- > 5 files changed, 76 insertions(+), 10 deletions(-) > > diff --git a/Makefile b/Makefile > index 91973cca60..b2fd3e881b 100644 > --- a/Makefile > +++ b/Makefile > @@ -584,7 +584,8 @@ $(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG) > prepare: $(BUILD_DIR)/buildroot-config/auto.conf > @$(foreach s, $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT)), \ > $(call MESSAGE,"Executing pre-build script $(s)"); \ > - $(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) > + $(EXTRA_ENV) $(s) $(TARGET_DIR) \ > + $(if $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)))$(sep)) I think I would just have gone with a much simpler solution: $(EXTRA_ENV) $(s) $(TARGET_DIR) \ $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS) \ -- \ $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)) I.e. always pass the generic arguments as they are passed today, add a separating marker (the usual --), and then the new arguments. The advantge is that it still allows to easily pass common arguments to all scripts, adds the possibility to pass custom args to the different types of scripts (post build, fakeroot, and post image). The drawback is that it could break existing scripts that do iterate over their arguments, in they are not prepared to cope with --. I have no idea how prevalent that usage is; I would think that scripts mostly expects a fixed number of arguments, and refer to them with explicit positional args (${1}, ${2}...), or that they are expecting standard getopt args, like our generic support/scripts/genimage.sh, which would then stop processing stuff when encountering '--'. Or even simpler yet, just pass both: $(EXTRA_ENV) $(s) \ $(TARGET_DIR) \ $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS) \ $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)) The reasoning here is even simpler: 1. if people provide scripts that have a scommon set of args, and each type of scripts have special args, that just works: - if args are only positional, scripts have to hardcode that knowledge, so they know how to interpret the positionl args, - if scripts use option parsing, like with getopt, then that also automagically works In both cases, they can decide to pass the common args with the existing BR2_ROOTFS_POST_SCRIPT_ARGS, and the specific args with the new BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS, or they can decide to ignore he former and ionly use the latter; 2. if people provide scripts that have no common args, then they're back to the situation above, where the set of common args is just empty. So, I think this last, simpler option is the best soltuion. Thoughts? Regards, Yann E. MORIN. > .PHONY: world > world: target-post-image > @@ -801,7 +802,8 @@ endif # merged /usr > > $(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \ > @$(call MESSAGE,"Executing post-build script $(s)")$(sep) \ > - $(Q)$(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) > + $(Q)$(EXTRA_ENV) $(s) $(TARGET_DIR) \ > + $(if $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)))$(sep)) > > touch $(TARGET_DIR)/usr > > @@ -819,7 +821,8 @@ target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize > $(Q)mkdir -p $(BINARIES_DIR) > @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ > $(call MESSAGE,"Executing post-image script $(s)"); \ > - $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) > + $(EXTRA_ENV) $(s) $(BINARIES_DIR) \ > + $(if $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)))$(sep)) > > .PHONY: source > source: $(foreach p,$(PACKAGES),$(p)-all-source) > diff --git a/docs/manual/customize-post-image.adoc b/docs/manual/customize-post-image.adoc > index 5308093d06..1f11cf915f 100644 > --- a/docs/manual/customize-post-image.adoc > +++ b/docs/manual/customize-post-image.adoc > @@ -26,6 +26,11 @@ arguments will be passed to the script too. All the scripts will be > passed the exact same set of arguments, it is not possible to pass > different sets of arguments to each script. > > +Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be > +passed to post-build and post-fakeroot scripts. If you want to use > +arguments that are only used for the post-image scripts you can use > ++BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS+. > + > Again just like for the post-build scripts, the scripts have access to > the environment variables +BR2_CONFIG+, +HOST_DIR+, +STAGING_DIR+, > +TARGET_DIR+, +BUILD_DIR+, +BINARIES_DIR+, +CONFIG_DIR+ and > diff --git a/docs/manual/customize-rootfs.adoc b/docs/manual/customize-rootfs.adoc > index d5d8b9288f..1384c1d2d3 100644 > --- a/docs/manual/customize-rootfs.adoc > +++ b/docs/manual/customize-rootfs.adoc > @@ -56,6 +56,12 @@ The post-build scripts are run with the main Buildroot tree as current > passed to the script too. All the scripts will be passed the exact > same set of arguments, it is not possible to pass different sets of > arguments to each script. > + > + Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be > + passed to post-image and post-fakeroot scripts. If you want to use > + arguments that are only used for the post-build scripts you can use > + +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS+. > + > + > In addition, you may also use these environment variables: > > diff --git a/fs/common.mk b/fs/common.mk > index 37eafac4f7..b3fdc28f1d 100644 > --- a/fs/common.mk > +++ b/fs/common.mk > @@ -182,7 +182,7 @@ $$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): $$(ROOTFS_$(2)_DEPENDENCIES) > $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) > $$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\ > echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \ > - echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep)) > + echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(if $$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS)),$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS),$$(BR2_ROOTFS_POST_SCRIPT_ARGS)) >> $$(FAKEROOT_SCRIPT)$$(sep)) > > $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),\ > $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) > diff --git a/system/Config.in b/system/Config.in > index 33ca69b933..1a0b904a4b 100644 > --- a/system/Config.in > +++ b/system/Config.in > @@ -695,20 +695,72 @@ config BR2_ROOTFS_POST_IMAGE_SCRIPT > > config BR2_ROOTFS_POST_SCRIPT_ARGS > string "Extra arguments passed to custom scripts" > - depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" \ > + depends on BR2_ROOTFS_PRE_BUILD_SCRIPT != "" \ > + || BR2_ROOTFS_POST_BUILD_SCRIPT != "" \ > || BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" \ > || BR2_ROOTFS_POST_IMAGE_SCRIPT != "" > help > - Pass these additional arguments to each post-build or > - post-image scripts. > + Pass these additional arguments to each pre-build, post-build, > + post-fakeroot and post-image scripts. > > Note that all the post-build and post-image scripts will be > passed the same set of arguments, you can not pass different > arguments to each script. > > Note also, as stated in their respective help text, that the > - first argument to each post-build or post-image script is the > - target directory / images directory. The arguments in this > - option will be passed *after* those. > + first argument to each script is the target directory / images > + directory. The arguments in this option will be passed *after* those. > + > +config BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS > + string "Extra arguments passed to BR2_ROOTFS_PRE_BUILD_SCRIPT" > + depends on BR2_ROOTFS_PRE_BUILD_SCRIPT != "" > + help > + Pass these additional arguments to the pre-build script. > + > + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for pre-build > + scripts if this option is set. > + > + Note also, as stated in the respective help text, that the > + first argument to each script is the target directory. > + The arguments in this option will be passed *after* those. > + > +config BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS > + string "Extra arguments passed to BR2_ROOTFS_POST_BUILD_SCRIPT" > + depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" > + help > + Pass these additional arguments to the post-build script. > + > + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for post-build > + scripts if this option is set. > + > + Note also, as stated in the respective help text, that the > + first argument to each script is the target directory. > + The arguments in this option will be passed *after* those. > + > +config BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS > + string "Extra arguments passed to BR2_ROOTFS_POST_FAKEROOT_SCRIPT" > + depends on BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" > + help > + Pass these additional arguments to the post-fakeroot script. > + > + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for post-fakeroot > + scripts if this option is set. > + > + Note also, as stated in the respective help text, that the > + first argument to each script is the target directory. > + The arguments in this option will be passed *after* those. > + > +config BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS > + string "Extra arguments passed to POST_IMAGE_SCRIPT" > + depends on BR2_ROOTFS_POST_IMAGE_SCRIPT != "" > + help > + Pass these additional arguments to the post-image script. > + > + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for post-image > + scripts if this option is set. > + > + Note also, as stated in the respective help text, that the > + first argument to each script is the images directory. > + The arguments in this option will be passed *after* those. > > endmenu > -- > 2.39.2 >
Hi Yann, Am Do., 28. März 2024 um 14:14 Uhr schrieb Yann E. MORIN <yann.morin.1998@free.fr>: > > Heiko, All, > > On 2024-03-28 13:28 +0100, Heiko Thiery spake thusly: > > You only can specify one list of arguments that are passed to several > > scripts (BR2_ROOTFS_PRE_BUILD_SCRIPT, BR2_ROOTFS_POST_BUILD_SCRIPT, > > BR2_ROOTFS_POST_FAKEROOT_SCRIPT and BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS). > > > > So you have to be careful that the arguments for these scripts do not collide. > > > > To allow specifiying dedicated arguments to each of the script the new > > config options are introduced. For backward compatibility the value of > > BR2_ROOTFS_POST_SCRIPT_ARGS is passed to the scripts in case the > > specific argument values are not present. > > > > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> > > --- > > Makefile | 9 ++-- > > docs/manual/customize-post-image.adoc | 5 +++ > > docs/manual/customize-rootfs.adoc | 6 +++ > > fs/common.mk | 2 +- > > system/Config.in | 64 ++++++++++++++++++++++++--- > > 5 files changed, 76 insertions(+), 10 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 91973cca60..b2fd3e881b 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -584,7 +584,8 @@ $(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG) > > prepare: $(BUILD_DIR)/buildroot-config/auto.conf > > @$(foreach s, $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT)), \ > > $(call MESSAGE,"Executing pre-build script $(s)"); \ > > - $(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) > > + $(EXTRA_ENV) $(s) $(TARGET_DIR) \ > > + $(if $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)))$(sep)) > > I think I would just have gone with a much simpler solution: > > $(EXTRA_ENV) $(s) $(TARGET_DIR) \ > $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS) \ > -- \ > $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)) > > I.e. always pass the generic arguments as they are passed today, add a > separating marker (the usual --), and then the new arguments. > > The advantge is that it still allows to easily pass common arguments to > all scripts, adds the possibility to pass custom args to the different > types of scripts (post build, fakeroot, and post image). > > The drawback is that it could break existing scripts that do iterate > over their arguments, in they are not prepared to cope with --. I have > no idea how prevalent that usage is; I would think that scripts mostly > expects a fixed number of arguments, and refer to them with explicit > positional args (${1}, ${2}...), or that they are expecting standard > getopt args, like our generic support/scripts/genimage.sh, which would > then stop processing stuff when encountering '--'. > > Or even simpler yet, just pass both: > > $(EXTRA_ENV) $(s) \ > $(TARGET_DIR) \ > $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS) \ > $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)) I think this is really a easier solution with the advantage of having common args acroos all script types. > The reasoning here is even simpler: > > 1. if people provide scripts that have a scommon set of args, and each > type of scripts have special args, that just works: > - if args are only positional, scripts have to hardcode that > knowledge, so they know how to interpret the positionl args, > - if scripts use option parsing, like with getopt, then that also > automagically works > In both cases, they can decide to pass the common args with the > existing BR2_ROOTFS_POST_SCRIPT_ARGS, and the specific args with the > new BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS, or they can decide to ignore > he former and ionly use the latter; > > 2. if people provide scripts that have no common args, then they're > back to the situation above, where the set of common args is just > empty. > > So, I think this last, simpler option is the best soltuion. > > Thoughts? I will rework the patch and provide an updated one.
diff --git a/Makefile b/Makefile index 91973cca60..b2fd3e881b 100644 --- a/Makefile +++ b/Makefile @@ -584,7 +584,8 @@ $(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG) prepare: $(BUILD_DIR)/buildroot-config/auto.conf @$(foreach s, $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT)), \ $(call MESSAGE,"Executing pre-build script $(s)"); \ - $(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + $(EXTRA_ENV) $(s) $(TARGET_DIR) \ + $(if $(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)))$(sep)) .PHONY: world world: target-post-image @@ -801,7 +802,8 @@ endif # merged /usr $(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \ @$(call MESSAGE,"Executing post-build script $(s)")$(sep) \ - $(Q)$(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + $(Q)$(EXTRA_ENV) $(s) $(TARGET_DIR) \ + $(if $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)))$(sep)) touch $(TARGET_DIR)/usr @@ -819,7 +821,8 @@ target-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize $(Q)mkdir -p $(BINARIES_DIR) @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ $(call MESSAGE,"Executing post-image script $(s)"); \ - $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + $(EXTRA_ENV) $(s) $(BINARIES_DIR) \ + $(if $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS)),$(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS)))$(sep)) .PHONY: source source: $(foreach p,$(PACKAGES),$(p)-all-source) diff --git a/docs/manual/customize-post-image.adoc b/docs/manual/customize-post-image.adoc index 5308093d06..1f11cf915f 100644 --- a/docs/manual/customize-post-image.adoc +++ b/docs/manual/customize-post-image.adoc @@ -26,6 +26,11 @@ arguments will be passed to the script too. All the scripts will be passed the exact same set of arguments, it is not possible to pass different sets of arguments to each script. +Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be +passed to post-build and post-fakeroot scripts. If you want to use +arguments that are only used for the post-image scripts you can use ++BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS+. + Again just like for the post-build scripts, the scripts have access to the environment variables +BR2_CONFIG+, +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+, +BUILD_DIR+, +BINARIES_DIR+, +CONFIG_DIR+ and diff --git a/docs/manual/customize-rootfs.adoc b/docs/manual/customize-rootfs.adoc index d5d8b9288f..1384c1d2d3 100644 --- a/docs/manual/customize-rootfs.adoc +++ b/docs/manual/customize-rootfs.adoc @@ -56,6 +56,12 @@ The post-build scripts are run with the main Buildroot tree as current passed to the script too. All the scripts will be passed the exact same set of arguments, it is not possible to pass different sets of arguments to each script. + + Note that the arguments from +BR2_ROOTFS_POST_SCRIPT_ARGS+ will also be + passed to post-image and post-fakeroot scripts. If you want to use + arguments that are only used for the post-build scripts you can use + +BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS+. + + In addition, you may also use these environment variables: diff --git a/fs/common.mk b/fs/common.mk index 37eafac4f7..b3fdc28f1d 100644 --- a/fs/common.mk +++ b/fs/common.mk @@ -182,7 +182,7 @@ $$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): $$(ROOTFS_$(2)_DEPENDENCIES) $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) $$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\ echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \ - echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep)) + echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(if $$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS)),$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS),$$(BR2_ROOTFS_POST_SCRIPT_ARGS)) >> $$(FAKEROOT_SCRIPT)$$(sep)) $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),\ $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) diff --git a/system/Config.in b/system/Config.in index 33ca69b933..1a0b904a4b 100644 --- a/system/Config.in +++ b/system/Config.in @@ -695,20 +695,72 @@ config BR2_ROOTFS_POST_IMAGE_SCRIPT config BR2_ROOTFS_POST_SCRIPT_ARGS string "Extra arguments passed to custom scripts" - depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" \ + depends on BR2_ROOTFS_PRE_BUILD_SCRIPT != "" \ + || BR2_ROOTFS_POST_BUILD_SCRIPT != "" \ || BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" \ || BR2_ROOTFS_POST_IMAGE_SCRIPT != "" help - Pass these additional arguments to each post-build or - post-image scripts. + Pass these additional arguments to each pre-build, post-build, + post-fakeroot and post-image scripts. Note that all the post-build and post-image scripts will be passed the same set of arguments, you can not pass different arguments to each script. Note also, as stated in their respective help text, that the - first argument to each post-build or post-image script is the - target directory / images directory. The arguments in this - option will be passed *after* those. + first argument to each script is the target directory / images + directory. The arguments in this option will be passed *after* those. + +config BR2_ROOTFS_PRE_BUILD_SCRIPT_ARGS + string "Extra arguments passed to BR2_ROOTFS_PRE_BUILD_SCRIPT" + depends on BR2_ROOTFS_PRE_BUILD_SCRIPT != "" + help + Pass these additional arguments to the pre-build script. + + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for pre-build + scripts if this option is set. + + Note also, as stated in the respective help text, that the + first argument to each script is the target directory. + The arguments in this option will be passed *after* those. + +config BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS + string "Extra arguments passed to BR2_ROOTFS_POST_BUILD_SCRIPT" + depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" + help + Pass these additional arguments to the post-build script. + + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for post-build + scripts if this option is set. + + Note also, as stated in the respective help text, that the + first argument to each script is the target directory. + The arguments in this option will be passed *after* those. + +config BR2_ROOTFS_POST_FAKEROOT_SCRIPT_ARGS + string "Extra arguments passed to BR2_ROOTFS_POST_FAKEROOT_SCRIPT" + depends on BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" + help + Pass these additional arguments to the post-fakeroot script. + + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for post-fakeroot + scripts if this option is set. + + Note also, as stated in the respective help text, that the + first argument to each script is the target directory. + The arguments in this option will be passed *after* those. + +config BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS + string "Extra arguments passed to POST_IMAGE_SCRIPT" + depends on BR2_ROOTFS_POST_IMAGE_SCRIPT != "" + help + Pass these additional arguments to the post-image script. + + Note that BR2_ROOTFS_POST_SCRIPT_ARGS is ignored for post-image + scripts if this option is set. + + Note also, as stated in the respective help text, that the + first argument to each script is the images directory. + The arguments in this option will be passed *after* those. endmenu
You only can specify one list of arguments that are passed to several scripts (BR2_ROOTFS_PRE_BUILD_SCRIPT, BR2_ROOTFS_POST_BUILD_SCRIPT, BR2_ROOTFS_POST_FAKEROOT_SCRIPT and BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS). So you have to be careful that the arguments for these scripts do not collide. To allow specifiying dedicated arguments to each of the script the new config options are introduced. For backward compatibility the value of BR2_ROOTFS_POST_SCRIPT_ARGS is passed to the scripts in case the specific argument values are not present. Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> --- Makefile | 9 ++-- docs/manual/customize-post-image.adoc | 5 +++ docs/manual/customize-rootfs.adoc | 6 +++ fs/common.mk | 2 +- system/Config.in | 64 ++++++++++++++++++++++++--- 5 files changed, 76 insertions(+), 10 deletions(-)