summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/tar/tarroot.mk29
1 files changed, 21 insertions, 8 deletions
diff --git a/target/tar/tarroot.mk b/target/tar/tarroot.mk
index e85030b97..d58198f70 100644
--- a/target/tar/tarroot.mk
+++ b/target/tar/tarroot.mk
@@ -6,17 +6,30 @@
TAR_OPTS := $(strip $(BR2_TARGET_ROOTFS_TAR_OPTIONS))
-TAR_TARGET := $(IMAGE).tar
-
-$(TAR_TARGET):
+tarroot: host-fakeroot makedevs
-@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
@rm -rf $(TARGET_DIR)/usr/man
- @rm -rf $(TARGET_DIR)/usr/share/man
@rm -rf $(TARGET_DIR)/usr/info
- tar -c$(TAR_OPTS)f $(TAR_TARGET) -C $(TARGET_DIR) .
-
-tarroot: $(TAR_TARGET)
- @ls -l $(TAR_TARGET)
+ # Use fakeroot to munge permissions and do root-like things
+ rm -f $(STAGING_DIR)/fakeroot.env
+ touch $(STAGING_DIR)/fakeroot.env
+ # Use fakeroot to pretend all target binaries are owned by root
+ $(STAGING_DIR)/usr/bin/fakeroot \
+ -i $(STAGING_DIR)/fakeroot.env \
+ -s $(STAGING_DIR)/fakeroot.env -- \
+ chown -R root:root $(TARGET_DIR)
+ # Use fakeroot to pretend to create all needed device nodes
+ $(STAGING_DIR)/usr/bin/fakeroot \
+ -i $(STAGING_DIR)/fakeroot.env \
+ -s $(STAGING_DIR)/fakeroot.env -- \
+ $(STAGING_DIR)/bin/makedevs \
+ -r $(TARGET_DIR) \
+ -d target/generic/device_table.txt
+ # Use fakeroot to fake out mksquashfs per the previous fakery
+ $(STAGING_DIR)/usr/bin/fakeroot \
+ -i $(STAGING_DIR)/fakeroot.env \
+ -s $(STAGING_DIR)/fakeroot.env -- \
+ tar -c$(TAR_OPTS)f $(IMAGE).tar -C $(TARGET_DIR) .
tarroot-source: