system: add option to pass extra args to post-build and post-image scripts
PATCH 1/1 system: add option to pass extra args to post-build and post-image scripts
From: "Yann E. MORIN" <[email protected]>
It can be useful to have different configuration use the same post-build and/or post-image scripts as they share a common infrastructure, but yet have minor differentiation.
This option allows passing zero or more additional arguments to each post-build or post-image script.
The same set of extra arguments are passed to all scripts, it is not possible to pass different arguments to each script.
---
Changes v1 -> v2:
- $(TARGET_DIR) is no longer the only argument (Baruch)
- mention BR2_ROOTFS_POST_IMAGE_SCRIPT in the manual
--- Makefile | 4 ++-- docs/manual/customize-rootfs.txt | 19 ++++++++++++------- system/Config.in | 26 +++++++++++++++++++++----- 3 files changed, 35 insertions(+), 14 deletions(-)
Makefile +2 -2
@@ -512,7 +512,7 @@ endif @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \ $(call MESSAGE,"Executing post-build script $(s)"); \ - $(s) $(TARGET_DIR)$(sep)) + $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) LOCALE_WHITELIST=$(BUILD_DIR)/locales.nopurge
@@ -558,7 +558,7 @@ endif target-post-image: @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ $(call MESSAGE,"Executing post-image script $(s)"); \ - $(s) $(BINARIES_DIR)$(sep)) + $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) toolchain-eclipse-register: ./support/scripts/eclipse-register-toolchain `readlink -f $(O)` $(notdir $(TARGET_CROSS)) $(BR2_ARCH)
docs/manual/customize-rootfs.txt +12 -7
@@ -69,15 +69,20 @@ specify a space-separated list of scripts in the found in the +System configuration+ menu as well. Each of those scripts will be called with the path to the +images+ -output directory as first and unique argument, and will be executed -with the main Buildroot source directory as the current -directory. Those scripts will be executed as the user that executes -Buildroot, which should normally not be the root user. Therefore, any -action requiring root permissions in one of these _post-image scripts_ -will require special handling (usage of fakeroot or sudo), which is -left to the script developer. +output directory as first argument, and will be executed with the main +Buildroot source directory as the current directory. Those scripts will +be executed as the user that executes Buildroot, which should normally +not be the root user. Therefore, any action requiring root permissions +in one of these _post-image scripts_ will require special handling +(usage of fakeroot or sudo), which is left to the script developer. Just like for the _post-build scripts_ mentioned above, you also have access to the following environment variables from your _post-image scripts_: +BUILDROOT_CONFIG+, +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+, +BINARIES_DIR+ and +BASE_DIR+. + +Additionally, each of the +BR2_ROOTFS_POST_BUILD_SCRIPT+ and ++BR2_ROOTFS_POST_IMAGE_SCRIPT+ scripts will be passed the arguments +specified in +BR2_ROOTFS_POST_SCRIPT_ARGS+ (if that is not empty). +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.
system/Config.in +21 -5
@@ -272,9 +272,9 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT add-ons and the like, so the generated files can be used directly without further processing. - These scripts are called with the target directory name as first and - only argument. Make sure the exit code of those scripts are 0, - otherwise make will stop after calling them. + These scripts are called with the target directory name as first + argument. Make sure the exit code of those scripts are 0, otherwise + make will stop after calling them. config BR2_ROOTFS_POST_IMAGE_SCRIPT string "Custom scripts to run after creating filesystem images"
@@ -291,7 +291,23 @@ config BR2_ROOTFS_POST_IMAGE_SCRIPT action. These scripts are called with the images directory name as - first and only argument. The script is executed from the - main Buildroot source directory as the current directory. + first argument. The script is executed from the main Buildroot + source directory as the current directory. + +config BR2_ROOTFS_POST_SCRIPT_ARGS + string "Extra post-{build,image} arguments" + depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" || BR2_ROOTFS_POST_IMAGE_SCRIPT != "" + help + Pass these aditional arguments to each post-build or 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 $(TARGET_DIR). The arguments in this option will be + passed *after*. endmenu
Signature · 1 line
1.8.1.2
PATCH 1/1 system: add option to pass extra args to post-build and post-image scripts
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Yann" == Yann E MORIN <[email protected]> writes:
Yann> From: "Yann E. MORIN" <[email protected]>
Yann> It can be useful to have different configuration use the same post-build Yann> and/or post-image scripts as they share a common infrastructure, but yet Yann> have minor differentiation.
Yann> This option allows passing zero or more additional arguments to each Yann> post-build or post-image script.
Yann> The same set of extra arguments are passed to all scripts, it is not Yann> possible to pass different arguments to each script.
Yann> Signed-off-by: "Yann E. MORIN" <[email protected]> Yann> Cc: Baruch Siach <[email protected]>
Yann> ---
Yann> Changes v1 -> v2:
Yann> - $(TARGET_DIR) is no longer the only argument (Baruch)
Yann> - mention BR2_ROOTFS_POST_IMAGE_SCRIPT in the manual
Yann> +config BR2_ROOTFS_POST_SCRIPT_ARGS
Yann> + string "Extra post-{build,image} arguments"
Yann> + depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" || BR2_ROOTFS_POST_IMAGE_SCRIPT != ""
Yann> + help
Yann> + Pass these aditional arguments to each post-build or post-image
Yann> + scripts.
Yann> +
Yann> + Note that all the post-build and post-image scripts will be passed Yann> + the same set of arguments, you can not pass different arguments to Yann> + each script. Yann> + Yann> + Note also, as stated in their respective help text, that the first Yann> + argument to each post-build or post-image script is the target/ Yann> + directory $(TARGET_DIR). The arguments in this option will be Yann> + passed *after*.
The post-image script is called with the images directory, not the target directory.
Committed with that fixed, thanks.
Signature · 1 line
Bye, Peter Korsgaard