Преглед изворни кода

Allow packages to use fakeroot. To accomodate this, convert all
target filesystem creation tools to also use fakeroot.

Eric Andersen пре 20 година
родитељ
комит
d1345f067e

+ 1 - 0
Makefile

@@ -115,6 +115,7 @@ $(TARGET_DIR):
 	if [ -d "$(TARGET_SKEL_DIR)" ] ; then \
 		cp -a $(TARGET_SKEL_DIR)/* $(TARGET_DIR)/; \
 	fi;
+	touch $(STAGING_DIR)/fakeroot.env
 	-find $(TARGET_DIR) -type d -name CVS | xargs rm -rf
 	-find $(TARGET_DIR) -type d -name .svn | xargs rm -rf
 

+ 4 - 2
package/ltp-testsuite/ltp-testsuite.mk

@@ -28,8 +28,10 @@ $(LTP_TESTSUITE_DIR)/testcases/kernel/syscalls/write/write01: $(LTP_TESTSUITE_DI
 $(LTP_TESTSUITE_DIR)/testcases/bin/1K_file: $(LTP_TESTSUITE_DIR)/testcases/kernel/syscalls/write/write01
 	# Use fakeroot to pretend to do 'make install' as root
 	$(STAGING_DIR)/usr/bin/fakeroot \
-	$(MAKE) $(TARGET_CONFIGURE_OPTS) CROSS_COMPILER=$(TARGET_CROSS) \
-		-C $(LTP_TESTSUITE_DIR) install
+		-i $(STAGING_DIR)/fakeroot.env \
+		-s $(STAGING_DIR)/fakeroot.env -- \
+		$(MAKE) $(TARGET_CONFIGURE_OPTS) CROSS_COMPILER=$(TARGET_CROSS) \
+			-C $(LTP_TESTSUITE_DIR) install
 	touch -c $(LTP_TESTSUITE_DIR)/testcases/bin/1K_file
 
 ltp-testsuite: uclibc host-fakeroot $(LTP_TESTSUITE_DIR)/testcases/bin/1K_file

+ 18 - 2
target/cramfs/cramfs.mk

@@ -64,8 +64,24 @@ cramfsroot: cramfs
 	@rm -rf $(TARGET_DIR)/usr/man
 	@rm -rf $(TARGET_DIR)/usr/info
 	/sbin/ldconfig -r $(TARGET_DIR)
-	$(CRAMFS_DIR)/mkcramfs -q $(CRAMFS_ENDIANNESS) -D \
-		target/generic/device_table.txt $(TARGET_DIR) $(IMAGE).cramfs
+	# 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 \
+		-d $(TARGET_DEVICE_TABLE) \
+		$(TARGET_DIR)
+	# Use fakeroot so mkcramfs believes the previous fakery
+	$(STAGING_DIR)/usr/bin/fakeroot \
+		-i $(STAGING_DIR)/fakeroot.env \
+		-s $(STAGING_DIR)/fakeroot.env -- \
+		$(CRAMFS_DIR)/mkcramfs -q $(CRAMFS_ENDIANNESS) \
+		$(TARGET_DIR) $(IMAGE).cramfs
 
 cramfsroot-source: cramfs-source
 

+ 19 - 2
target/ext2/ext2root.mk

@@ -71,6 +71,19 @@ $(EXT2_BASE): genext2fs
 	@rm -rf $(TARGET_DIR)/usr/share/man
 	@rm -rf $(TARGET_DIR)/usr/info
 	/sbin/ldconfig -r $(TARGET_DIR)
+	# 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 \
+		-d $(TARGET_DEVICE_TABLE) \
+		$(TARGET_DIR)
+	# Use fakeroot so genext2fs believes the previous fakery
 ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)
 	GENEXT2_REALSIZE=`LANG=C du -l -s -c -k $(TARGET_DIR) | grep total | sed -e "s/total//"`; \
 	GENEXT2_ADDTOROOTSIZE=`if [ $$GENEXT2_REALSIZE -ge 20000 ] ; then echo 16384; else echo 2400; fi`; \
@@ -78,16 +91,20 @@ ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)
 	GENEXT2_ADDTOINODESIZE=`find $(TARGET_DIR) | wc -l`; \
 	GENEXT2_INODES=`expr $$GENEXT2_ADDTOINODESIZE + 400`; \
 	set -x; \
+	$(STAGING_DIR)/usr/bin/fakeroot \
+		-i $(STAGING_DIR)/fakeroot.env \
+		-s $(STAGING_DIR)/fakeroot.env -- \
 	$(GENEXT2_DIR)/genext2fs \
 		-b $$GENEXT2_SIZE \
 		-i $$GENEXT2_INODES \
 		-d $(TARGET_DIR) \
-		-D $(TARGET_DEVICE_TABLE) \
 		$(EXT2_OPTS) $(EXT2_BASE)
 else
+	$(STAGING_DIR)/usr/bin/fakeroot \
+		-i $(STAGING_DIR)/fakeroot.env \
+		-s $(STAGING_DIR)/fakeroot.env -- \
 	$(GENEXT2_DIR)/genext2fs \
 		-d $(TARGET_DIR) \
-		-D $(TARGET_DEVICE_TABLE) \
 		$(EXT2_OPTS) \
 		$(EXT2_BASE)
 endif

+ 20 - 5
target/jffs2/jffs2root.mk

@@ -44,11 +44,26 @@ $(JFFS2_TARGET): mtd-host
 	@rm -rf $(TARGET_DIR)/usr/share/man
 	@rm -rf $(TARGET_DIR)/usr/info
 	/sbin/ldconfig -r $(TARGET_DIR)
-	$(MKFS_JFFS2) \
-		$(JFFS2_OPTS) \
-		-d $(BUILD_DIR)/root \
-		-o $(JFFS2_TARGET) \
-		-D $(TARGET_DEVICE_TABLE)
+	# 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 \
+		-d $(TARGET_DEVICE_TABLE) \
+		$(TARGET_DIR)
+	# Use fakeroot so mkfs.jffs2 believes the previous fakery
+	$(STAGING_DIR)/usr/bin/fakeroot \
+		-i $(STAGING_DIR)/fakeroot.env \
+		-s $(STAGING_DIR)/fakeroot.env -- \
+		$(MKFS_JFFS2) \
+			$(JFFS2_OPTS) \
+			-d $(BUILD_DIR)/root \
+			-o $(JFFS2_TARGET)
 	@ls -l $(JFFS2_TARGET)
 
 JFFS2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_COPYTO)))

+ 2 - 5
target/squashfs/squashfsroot.mk

@@ -58,9 +58,6 @@ squashfsroot: squashfs host-fakeroot makedevs
 	@rm -rf $(TARGET_DIR)/usr/man
 	@rm -rf $(TARGET_DIR)/usr/info
 	/sbin/ldconfig -r $(TARGET_DIR)
-	# 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 \
@@ -71,9 +68,9 @@ squashfsroot: squashfs host-fakeroot makedevs
 		-i $(STAGING_DIR)/fakeroot.env \
 		-s $(STAGING_DIR)/fakeroot.env -- \
 		$(STAGING_DIR)/bin/makedevs \
-		-d target/generic/device_table.txt \
+		-d $(TARGET_DEVICE_TABLE) \
 		$(TARGET_DIR)
-	# Use fakeroot to fake out mksquashfs per the previous fakery
+	# Use fakeroot so mksquashfs believes the previous fakery
 	$(STAGING_DIR)/usr/bin/fakeroot \
 		-i $(STAGING_DIR)/fakeroot.env \
 		-s $(STAGING_DIR)/fakeroot.env -- \

+ 2 - 5
target/tar/tarroot.mk

@@ -11,9 +11,6 @@ tarroot: host-fakeroot makedevs
 	@rm -rf $(TARGET_DIR)/usr/man
 	@rm -rf $(TARGET_DIR)/usr/info
 	/sbin/ldconfig -r $(TARGET_DIR)
-	# 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 \
@@ -24,9 +21,9 @@ tarroot: host-fakeroot makedevs
 		-i $(STAGING_DIR)/fakeroot.env \
 		-s $(STAGING_DIR)/fakeroot.env -- \
 		$(STAGING_DIR)/bin/makedevs \
-		-d target/generic/device_table.txt \
+		-d $(TARGET_DEVICE_TABLE) \
 		$(TARGET_DIR)
-	# Use fakeroot to fake out tar per the previous fakery
+	# Use fakeroot so tar believes the previous fakery
 	$(STAGING_DIR)/usr/bin/fakeroot \
 		-i $(STAGING_DIR)/fakeroot.env \
 		-s $(STAGING_DIR)/fakeroot.env -- \