[uClibc-cvs] svn commit: trunk/buildroot: package/fakeroot target/makedevs target/ etc...

andersen at uclibc.org andersen at uclibc.org
Fri Jun 24 05:02:01 UTC 2005


Author: andersen
Date: 2005-06-23 23:02:00 -0600 (Thu, 23 Jun 2005)
New Revision: 10576

Log:
Use fakeroot and makedevs to fake mksquashfs into building properly setup file
permissions and device nodes into the target rootfs without needing to be root.


Removed:
   trunk/buildroot/target/squashfs/squashfs.patch

Modified:
   trunk/buildroot/package/fakeroot/fakeroot.mk
   trunk/buildroot/target/makedevs/makedevs.mk
   trunk/buildroot/target/squashfs/squashfsroot.mk


Changeset:
Modified: trunk/buildroot/package/fakeroot/fakeroot.mk
===================================================================
--- trunk/buildroot/package/fakeroot/fakeroot.mk	2005-06-24 03:47:57 UTC (rev 10575)
+++ trunk/buildroot/package/fakeroot/fakeroot.mk	2005-06-24 05:02:00 UTC (rev 10576)
@@ -40,8 +40,6 @@
 
 $(STAGING_DIR)/usr/bin/fakeroot: $(FAKEROOT_DIR1)/faked
 	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(FAKEROOT_DIR1) install
-	#-mv $(TARGET_DIR)/usr/bin/$(ARCH)-linux-faked $(TARGET_DIR)/usr/bin/faked
-	#-mv $(TARGET_DIR)/usr/bin/$(ARCH)-linux-fakeroot $(TARGET_DIR)/usr/bin/fakeroot
 
 host-fakeroot: uclibc $(STAGING_DIR)/usr/bin/fakeroot
 

Modified: trunk/buildroot/target/makedevs/makedevs.mk
===================================================================
--- trunk/buildroot/target/makedevs/makedevs.mk	2005-06-24 03:47:57 UTC (rev 10575)
+++ trunk/buildroot/target/makedevs/makedevs.mk	2005-06-24 05:02:00 UTC (rev 10576)
@@ -15,8 +15,12 @@
 	gcc -Wall -O2 makedevs.c -o makedevs
 	touch -c $(MAKEDEVS_DIR)/makedevs
 
-makedevs: $(MAKEDEVS_DIR)/makedevs
+$(STAGING_DIR)/bin/makedevs: $(MAKEDEVS_DIR)/makedevs
+	$(INSTALL) -m 755 $(MAKEDEVS_DIR)/makedevs $(STAGING_DIR)/bin/makedevs
+	touch -c $(STAGING_DIR)/bin/makedevs
 
+makedevs: $(STAGING_DIR)/bin/makedevs
+
 makedevs-source:
 
 makedevs-clean:

Deleted: trunk/buildroot/target/squashfs/squashfs.patch
===================================================================
--- trunk/buildroot/target/squashfs/squashfs.patch	2005-06-24 03:47:57 UTC (rev 10575)
+++ trunk/buildroot/target/squashfs/squashfs.patch	2005-06-24 05:02:00 UTC (rev 10576)
@@ -1,36 +0,0 @@
-This is a stupid little patch adding an option to change all uid/gid to
-root/root in the generated filesystem.  We really need to teach mksquashfs
-about device tables though...
-
---- squashfs1.3r3/squashfs-tools/mksquashfs.c-dist	2004-03-29 20:35:37.000000000 -0600
-+++ squashfs1.3r3/squashfs-tools/mksquashfs.c	2004-03-29 22:28:51.000000000 -0600
-@@ -136,6 +136,8 @@
- 	stotal_bytes, stotal_inode_bytes, stotal_directory_bytes, sinode_count, sfile_count, ssym_count, sdev_count, sdir_count, sdup_files;
- int restore = 0;
- 
-+unsigned int root_owned = 0;
-+
- /*flag whether destination file is a block device */
- int block_device = 0;
- 
-@@ -421,6 +423,11 @@
- 		return SQUASHFS_INVALID;
- 	}
- 
-+	if (root_owned) {
-+		buf.st_uid = 0;
-+		buf.st_gid = 0;
-+	}
-+
- 	base->mode = SQUASHFS_MODE(buf.st_mode);
- 	base->uid = get_uid(&file_type, (squashfs_uid) buf.st_uid);
- 	base->inode_type = file_type;
-@@ -1268,6 +1275,8 @@
- 			root_name = argv[i];
- 		} else if(strcmp(argv[i], "-version") == 0) {
- 			VERSION();
-+		} else if (strcmp(argv[i], "-root-owned") == 0) {
-+			root_owned = TRUE;
- 		} else {
- 			ERROR("%s: invalid option\n\n", argv[0]);
- printOptions:

Modified: trunk/buildroot/target/squashfs/squashfsroot.mk
===================================================================
--- trunk/buildroot/target/squashfs/squashfsroot.mk	2005-06-24 03:47:57 UTC (rev 10575)
+++ trunk/buildroot/target/squashfs/squashfsroot.mk	2005-06-24 05:02:00 UTC (rev 10576)
@@ -34,13 +34,25 @@
 #
 #############################################################
 
-squashfsroot: squashfs
-	#- at find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true;
+squashfsroot: squashfs host-fakeroot makedevs
+	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 -- \
+		find $(TARGET_DIR) | xargs chown -R root:root
+	# 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) \
+		target/default/device_table.txt
 	- at find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
 	@rm -rf $(TARGET_DIR)/usr/man
 	@rm -rf $(TARGET_DIR)/usr/info
-	#$(SQUASHFS_DIR)/squashfs-tools/mksquashfs -q -D target/default/device_table.txt $(TARGET_DIR) $(IMAGE)
-	$(SQUASHFS_DIR)/squashfs-tools/mksquashfs $(TARGET_DIR) $(IMAGE).squashfs -noappend -root-owned
+	# Use fakeroot to fake out mksquashfs per the previous fakery
+	$(STAGING_DIR)/usr/bin/fakeroot -i $(STAGING_DIR)/fakeroot.env -- \
+		$(SQUASHFS_DIR)/squashfs-tools/mksquashfs $(TARGET_DIR) \
+		$(IMAGE).squashfs -noappend
 
 squashfsroot-source: squashfs-source
 




More information about the uClibc-cvs mailing list