Browse Source

Finish implementing fakeroot handling so when we tar up the
rootfs, the tarball properly inherits device table settings
and device nodes.

Eric Andersen 20 years ago
parent
commit
9540549182
1 changed files with 21 additions and 8 deletions
  1. 21 8
      target/tar/tarroot.mk

+ 21 - 8
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: