fs/common.mk: Add support for fakeroot script
RFC PATCH 1/1 fs/common.mk: Add support for fakeroot script
This adds a BR2_ROOTFS_FAKE_ROOT_SCRIPT (similar to BR2_ROOTFS_POST_BUILD_SCRIPT and BR2_ROOTFS_POST_IMAGE_SCRIPT). This script is called inside the fakeroot which allows the script to change permissions, create device nodes, etc.
---
I am using this script as part of a configuration that creates a bunch of directories that need to have specific ownership. I can create the directories in a post-build script, but permissions needed to be done in a fakeroot environment. Didn't see any other way to hook into the fakeroot.
fs/common.mk | 2 ++ system/Config.in | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-)
fs/common.mk +2 -0
@@ -58,6 +58,8 @@ endif endif printf '$(subst $(sep),\n,$(PACKAGES_USERS))' > $(USERS_TABLE) $(TOPDIR)/support/scripts/mkusers $(USERS_TABLE) $(TARGET_DIR) >> $(FAKEROOT_SCRIPT) + $$(foreach s, $$(call qstrip,$$(BR2_ROOTFS_FAKE_ROOT_SCRIPT)), \ + echo $$(s) $$(TARGET_DIR) $$(call qstrip,$$(BR2_ROOTFS_POST_SCRIPT_ARGS)) "|| exit" >> $$(FAKEROOT_SCRIPT)$$(sep)) echo "$$(ROOTFS_$(2)_CMD)" >> $$(FAKEROOT_SCRIPT) chmod a+x $$(FAKEROOT_SCRIPT) $$(HOST_DIR)/usr/bin/fakeroot -- $$(FAKEROOT_SCRIPT)
system/Config.in +15 -1
@@ -312,9 +312,23 @@ config BR2_ROOTFS_POST_IMAGE_SCRIPT first argument. The script is executed from the main Buildroot source directory as the current directory. +config BR2_ROOTFS_FAKE_ROOT_SCRIPT + string "Custom scripts to run during fakeroot image creation" + default "" + help + Specify a space-separated list of scripts to be run after the build + has finished at the end of the fakeroot filesystem image creation. + + This gives a final chance to change permissions, create device + nodes, etc. + + 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_SCRIPT_ARGS string "Extra post-{build,image} arguments" - depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" || BR2_ROOTFS_POST_IMAGE_SCRIPT != "" + depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" || BR2_ROOTFS_POST_IMAGE_SCRIPT != "" || BR2_ROOTFS_FAKE_ROOT_SCRIPT != "" help Pass these aditional arguments to each post-build or post-image scripts.
Signature · 1 line
1.8.4.rc3
RFC PATCH 1/1 fs/common.mk: Add support for fakeroot script
Dear Andrew Ruder,
Quoted 1 line · Andrew Ruder
This adds a
BR2_ROOTFS_FAKE_ROOT_SCRIPT(similar to
Should be FAKEROOT, not FAKE_ROOT (if we validate the whole proposal this patch is doing).
Quoted 11 lines
BR2_ROOTFS_POST_BUILD_SCRIPTandBR2_ROOTFS_POST_IMAGE_SCRIPT). This script is called inside the fakeroot which allows the script to change permissions, create device nodes, etc.Signed-off-by Andrew Ruder <[email protected]>---
I am using this script as part of a configuration that creates a bunch of directories that need to have specific ownership. I can create the directories in a post-build script, but permissions needed to be done in a fakeroot environment. Didn't see any other way to hook into the fakeroot.
Well, the conventional way would be to have those directories created by packages (and they can use the <pkg>_PERMISSIONS mechanism to get proper ownership or permissions). Or, if they really don't belong to any package, create them in the post build script, and have a device table assign the permission and ownership.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
RFC PATCH 1/1 fs/common.mk: Add support for fakeroot script
Quoted 5 lines · Thomas Petazzoni
Well, the conventional way would be to have those directories created by packages (and they can use the <pkg>_PERMISSIONS mechanism to get proper ownership or permissions). Or, if they really don't belong to any package, create them in the post build script, and have a device table assign the permission and ownership.
I didn't realize the device table functionality could modify arbitrary file/directory ownerships but looking through the makedevs source code that DOES appear to be true. I guess let's just consider this thread as a question disguised as a poorly spelled patch. :)
Cheers,
Andy
RFC PATCH 1/1 fs/common.mk: Add support for fakeroot script
Andrew, All,
On 2013-10-18 15:23 -0500, Andrew Ruder spake thusly:
Quoted 10 lines · Thomas Petazzoni
Quoted 5 lines
Well, the conventional way would be to have those directories created by packages (and they can use the <pkg>_PERMISSIONS mechanism to get proper ownership or permissions). Or, if they really don't belong to any package, create them in the post build script, and have a device table assign the permission and ownership.
I didn't realize the device table functionality could modify arbitrary file/directory ownerships but looking through the makedevs source code that DOES appear to be true.
Or you could have had a look at the manual:
http://buildroot.net/downloads/manual/manual.html#makedev-syntax
The first sentence in this section reads:
The makedev syntax is used in several places in Buildroot to define changes to be made for permissions. [...]
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
RFC PATCH 1/1 fs/common.mk: Add support for fakeroot script
Quoted 4 lines · Yann E. MORIN
Or you could have had a look at the manual:
http://buildroot.net/downloads/manual/manual.html#makedev-syntaxThe first sentence in this section reads:
Yes, taken out of context it looks perfect, but put the whole sentence in there and it sounds like it is specifically for device node creation.
Quoted 3 lines
The makedev syntax is used in several places in Buildroot to define changes to be made for permissions, or which device files to create and how to create them, ***in order to avoid calls to mknod.***
Emphasis mine, of course.
- Andy
RFC PATCH 1/1 fs/common.mk: Add support for fakeroot script
Andrew, All,
On 2013-10-18 16:35 -0500, Andrew Ruder spake thusly:
Quoted 6 lines · Yann E. MORIN
Quoted 4 lines
Or you could have had a look at the manual:
http://buildroot.net/downloads/manual/manual.html#makedev-syntaxThe first sentence in this section reads:
Quoted 8 lines
Yes, taken out of context it looks perfect, but put the whole sentence in there and it sounds like it is specifically for device node creation.
Quoted 3 lines
The makedev syntax is used in several places in Buildroot to define changes to be made for permissions, or which device files to create and how to create them, ***in order to avoid calls to mknod.***
Emphasis mine, of course.
OK, maybe previous knowledge of the features makes me read the section in a way that makes it explicit for me. It might not look the same to others. Then, perhaps you could provide a better wording for this? ;-)
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
RFC PATCH 1/1 fs/common.mk: Add support for fakeroot script
In reply to Andrew RuderQuoted 5 lines · Andrew Ruder
This adds a
BR2_ROOTFS_FAKE_ROOT_SCRIPT(similar toBR2_ROOTFS_POST_BUILD_SCRIPTandBR2_ROOTFS_POST_IMAGE_SCRIPT). This script is called inside the fakeroot which allows the script to change permissions, create device nodes, etc.
Quoted 7 lines
Signed-off-by Andrew Ruder <[email protected]>---
I am using this script as part of a configuration that creates a bunch of directories that need to have specific ownership. I can create the directories in a post-build script, but permissions needed to be done in a fakeroot environment. Didn't see any other way to hook into the fakeroot.
Hi Andrew,
At the buildroot developer meeting we decided to drop this patch. For
your particular use case, there is a better way to do it with <pkg>_PERMISSIONS or with the device table. We also discussed other use cases, like doing an rsync inside the fakeroot, but these use cases can just untar the tarball in a post-image script and work on that. And finally, having all these different POST_xxx steps makes things confusing.
If you still see a reason to add this feature, don't hesitate to tell us.
Regards,
Arnout
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F