فهرست منبع

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

Eric Andersen 20 سال پیش
والد
کامیت
d1345f067e
7فایلهای تغییر یافته به همراه66 افزوده شده و 21 حذف شده
  1. 1 0
      Makefile
  2. 4 2
      package/ltp-testsuite/ltp-testsuite.mk
  3. 18 2
      target/cramfs/cramfs.mk
  4. 19 2
      target/ext2/ext2root.mk
  5. 20 5
      target/jffs2/jffs2root.mk
  6. 2 5
      target/squashfs/squashfsroot.mk
  7. 2 5
      target/tar/tarroot.mk

+ 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 -- \