fs/common: add option to execute custom scripts under fakeroot

Some users have the need to be able to tweak the content of the target
rootfs with root-like rights, that is, from inside the fakeroot script.

Add a new system option to allow those users to provide a list of
scripts, like the post-build and post-image scripts, that will be run
from our fakeroot script.

[Peter: pass TARGET_DIR to scripts, tweak help text]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: Cam Hutchison <camh@xdna.net>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Yann E. MORIN 2016-07-03 17:08:19 +02:00 committed by Peter Korsgaard
parent 7d56f0cc55
commit 9cdb281fa6
2 changed files with 39 additions and 2 deletions

View File

@ -92,6 +92,9 @@ endif
$$(call PRINTF,$$(PACKAGES_PERMISSIONS_TABLE)) >> $$(FULL_DEVICE_TABLE)
echo "$$(HOST_DIR)/usr/bin/makedevs -d $$(FULL_DEVICE_TABLE) $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT)
endif
$$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\
echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \
echo $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep))
$$(call PRINTF,$$(ROOTFS_$(2)_CMD)) >> $$(FAKEROOT_SCRIPT)
chmod a+x $$(FAKEROOT_SCRIPT)
PATH=$$(BR_PATH) $$(HOST_DIR)/usr/bin/fakeroot -- $$(FAKEROOT_SCRIPT)

View File

@ -454,6 +454,38 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT
argument. Make sure the exit code of those scripts are 0, otherwise
make will stop after calling them.
config BR2_ROOTFS_POST_FAKEROOT_SCRIPT
string "Custom scripts to run inside the fakeroot environment"
default ""
help
Specify a space-separated list of scripts to be run at the end
of the fakeroot script right before the image(s) are actually
generated.
This gives users the opportunity to do customisations of the
content of the rootfs, which would otherwise require root
rigths.
These scripts are called with the target directory name as
first argument. The build will fail on the first scripts that
exits with a non-zero exit code.
Note that Buildroot already provides mechanisms to customise
the content of the rootfs:
- BR2_ROOTFS_STATIC_DEVICE_TABLE
to create arbitrary entries statically in /dev
- BR2_ROOTFS_DEVICE_TABLE
to set arbitrary permissions as well as extended attributes
(such as capabilities) on files and directories,
- BR2_ROOTFS_USERS_TABLES:
to create arbitrary users and their home directories
It is highly recommended to use those mechanisms if possible,
rather than using custom fakeroot scripts.
config BR2_ROOTFS_POST_IMAGE_SCRIPT
string "Custom scripts to run after creating filesystem images"
default ""
@ -473,8 +505,10 @@ config BR2_ROOTFS_POST_IMAGE_SCRIPT
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 != ""
string "Extra arguments passed to custom scripts"
depends on 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.