diff mbox

fs/ubifs: work around fakeroot / sed -i issue on systems with SELinux enabled

Message ID 20161126234027.22300-1-peter@korsgaard.com
State Accepted
Commit 01354e1a0f4333ffee40a20260a5689e3846560c
Headers show

Commit Message

Peter Korsgaard Nov. 26, 2016, 11:40 p.m. UTC
Fixes #9386

GNU sed -i misbehaves on systems with SELinux enabled, as it tries to copy
to the SELinux security context (xattr) from the source file to to the new
destination file, which fails under fakeroot and leaves the file with 000
permissions, causing ubinize to fail when it cannot read to configuration
file.

So as a workaround, combine the install and tweak steps in a single
sed with a redirect to the destination file instead.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 fs/ubifs/ubi.mk | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Peter Korsgaard Nov. 27, 2016, 8:20 p.m. UTC | #1
On Sun, Nov 27, 2016 at 12:40 AM, Peter Korsgaard <peter@korsgaard.com> wrote:
> Fixes #9386
>
> GNU sed -i misbehaves on systems with SELinux enabled, as it tries to copy
> to the SELinux security context (xattr) from the source file to to the new
> destination file, which fails under fakeroot and leaves the file with 000
> permissions, causing ubinize to fail when it cannot read to configuration
> file.
>
> So as a workaround, combine the install and tweak steps in a single
> sed with a redirect to the destination file instead.
>
> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Committed, thanks.

I will now revert the changes moving from fakeroot to pseudo.
diff mbox

Patch

diff --git a/fs/ubifs/ubi.mk b/fs/ubifs/ubi.mk
index cda4bf4..e488cb5 100644
--- a/fs/ubifs/ubi.mk
+++ b/fs/ubifs/ubi.mk
@@ -20,9 +20,11 @@  else
 UBINIZE_CONFIG_FILE_PATH = fs/ubifs/ubinize.cfg
 endif
 
+# don't use sed -i as it misbehaves on systems with SELinux enabled when this is
+# executed through fakeroot (see #9386)
 define ROOTFS_UBI_CMD
-	$(INSTALL) -m 0644 $(UBINIZE_CONFIG_FILE_PATH) $(BUILD_DIR)/ubinize.cfg
-	$(SED) 's;BR2_ROOTFS_UBIFS_PATH;$@fs;' $(BUILD_DIR)/ubinize.cfg
+	sed 's;BR2_ROOTFS_UBIFS_PATH;$@fs;' \
+		$(UBINIZE_CONFIG_FILE_PATH) > $(BUILD_DIR)/ubinize.cfg
 	$(HOST_DIR)/usr/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) $(BUILD_DIR)/ubinize.cfg
 	rm $(BUILD_DIR)/ubinize.cfg
 endef