2
1
Эх сурвалжийг харах

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

Eric Andersen 20 жил өмнө
parent
commit
9540549182
1 өөрчлөгдсөн 21 нэмэгдсэн , 8 устгасан
  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: