summaryrefslogtreecommitdiffstats
path: root/target/squashfs
diff options
context:
space:
mode:
Diffstat (limited to 'target/squashfs')
-rw-r--r--target/squashfs/squashfs.patch36
-rw-r--r--target/squashfs/squashfsroot.mk51
2 files changed, 87 insertions, 0 deletions
diff --git a/target/squashfs/squashfs.patch b/target/squashfs/squashfs.patch
new file mode 100644
index 000000000..ea75a7f18
--- /dev/null
+++ b/target/squashfs/squashfs.patch
@@ -0,0 +1,36 @@
+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:
diff --git a/target/squashfs/squashfsroot.mk b/target/squashfs/squashfsroot.mk
new file mode 100644
index 000000000..523d5e2a9
--- /dev/null
+++ b/target/squashfs/squashfsroot.mk
@@ -0,0 +1,51 @@
+#############################################################
+#
+# mksquashfs to build to target squashfs filesystems
+#
+#############################################################
+SQUASHFS_DIR=$(BUILD_DIR)/squashfs1.3r3
+SQUASHFS_SOURCE=squashfs1.3r3.tar.gz
+SQUASHFS_SITE=http://aleron.dl.sourceforge.net/sourceforge/squashfs
+
+$(DL_DIR)/$(SQUASHFS_SOURCE):
+ $(WGET) -P $(DL_DIR) $(SQUASHFS_SITE)/$(SQUASHFS_SOURCE)
+
+$(SQUASHFS_DIR): $(DL_DIR)/$(SQUASHFS_SOURCE) #$(SQUASHFS_PATCH)
+ zcat $(DL_DIR)/$(SQUASHFS_SOURCE) | tar -C $(BUILD_DIR) -xvf -
+ $(SOURCE_DIR)/patch-kernel.sh $(SQUASHFS_DIR) $(SOURCE_DIR) squashfs.patch
+
+$(SQUASHFS_DIR)/squashfs-tools/mksquashfs: $(SQUASHFS_DIR)
+ $(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools;
+
+squashfs: $(SQUASHFS_DIR)/squashfs-tools/mksquashfs
+
+squashfs-source: $(DL_DIR)/$(SQUASHFS_SOURCE)
+
+squashfs-clean:
+ -$(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools clean
+
+squashfs-dirclean:
+ rm -rf $(SQUASHFS_DIR)
+
+#############################################################
+#
+# Build the squashfs root filesystem image
+#
+#############################################################
+
+squashfsroot: squashfs
+ #-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true;
+ -@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 $(SOURCE_DIR)/device_table.txt $(TARGET_DIR) $(IMAGE)
+ $(SQUASHFS_DIR)/squashfs-tools/mksquashfs $(TARGET_DIR) $(IMAGE) -noappend -root-owned
+
+squashfsroot-source: squashfs-source
+
+squashfsroot-clean:
+ -$(MAKE) -C $(SQUASHFS_DIR) clean
+
+squashfsroot-dirclean:
+ rm -rf $(SQUASHFS_DIR)
+