Patch from gtj -- http://bugs.uclibc.org/view.php?id=39
authorEric Andersen <andersen@codepoet.org>
Sun, 23 Jan 2005 10:53:06 +0000 (10:53 -0000)
committerEric Andersen <andersen@codepoet.org>
Sun, 23 Jan 2005 10:53:06 +0000 (10:53 -0000)
0000039: Adds options to ext2 filesystem creation

Adds ability to specify block and inode counts, reserved blocks, permissions
squash and device table in the configuration.

Also adds capability to gzip output and to copy the resulting image to a
secondary location like a tftp server's root directory.

target/ext2/Config.in
target/ext2/ext2root.mk

index 7e137ae41cb17a5ace1c9adbfcfb400a3dc139af..891a43016985a5ca564e5052a4ee53e40d9b0321 100644 (file)
@@ -1,6 +1,51 @@
-config BR2_TARGET_ROOTFS_EXT2
+menuconfig BR2_TARGET_ROOTFS_EXT2
        bool "ext2 root filesystem for the target device"
        default y
        help
          Build an ext2 root filesystem
 
+config BR2_TARGET_ROOTFS_EXT2_BLOCKS
+       int "size in blocks (leave at 0 for auto calculation"
+       depends on BR2_TARGET_ROOTFS_EXT2
+       default 0
+       
+config BR2_TARGET_ROOTFS_EXT2_INODES
+       int "inodes (leave at 0 for auto calculation)"
+       depends on BR2_TARGET_ROOTFS_EXT2
+       default 0
+       
+config BR2_TARGET_ROOTFS_EXT2_RESBLKS
+       int "reserved blocks"
+       depends on BR2_TARGET_ROOTFS_EXT2
+       default 0
+       
+config BR2_TARGET_ROOTFS_EXT2_SQUASH
+       bool "Make all files be owned by root"
+       depends on      BR2_TARGET_ROOTFS_EXT2
+       default y
+
+config BR2_TARGET_ROOTFS_EXT2_DEVFILE
+       string "Location of device table file (blank for none)"
+       depends on BR2_TARGET_ROOTFS_EXT2
+       default "target/default/device_table.txt"
+       
+config BR2_TARGET_ROOTFS_EXT2_OUTPUT
+       string "Output File"
+       depends on BR2_TARGET_ROOTFS_EXT2
+       default "$(IMAGE).ext2"
+       
+config BR2_TARGET_ROOTFS_EXT2_GZ
+       bool "gzip the output file"
+       depends on      BR2_TARGET_ROOTFS_EXT2
+       default n
+
+config BR2_TARGET_ROOTFS_EXT2_COPYTO
+       string "also copy the image to..."
+       depends on      BR2_TARGET_ROOTFS_EXT2
+       default ""
+       help
+               Copies the resulting image to a secondary location
+               like a tftp server's root directory.
+
+       
+       
index e4e77ca0a871ba04aa08d44e175e35e367f518b7..8dfa513e14fa38d9a87c46944670f23bd2bedc0a 100644 (file)
@@ -47,11 +47,61 @@ GENEXT2_SIZE=$(shell expr $(GENEXT2_REALSIZE) + $(GENEXT2_ADDTOROOTSIZE) + 200)
 GENEXT2_INODES=$(shell expr $(shell find $(TARGET_DIR) | wc -l) + 400)
 #GENEXT2_SIZE=100000
 
-ext2root: genext2fs
-       #-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true;
+EXT2_OPTS := 
+
+ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)
+EXT2_OPTS += -b $(GENEXT2_SIZE)
+else
+EXT2_OPTS += -b $(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS))
+endif
+
+ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0)
+EXT2_OPTS += -i $(GENEXT2_INODES)
+else
+EXT2_OPTS += -i $(strip $(BR2_TARGET_ROOTFS_EXT2_INODES))
+endif
+
+ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_SQUASH)),y)
+EXT2_OPTS += -q
+endif
+
+ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),0)
+EXT2_OPTS += -r $(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS))
+endif
+
+EXT2_DEVFILE := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_DEVFILE)))
+ifneq ($(EXT2_DEVFILE),)
+EXT2_OPTS += -D $(EXT2_DEVFILE)
+endif
+
+EXT2_BASE :=   $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_OUTPUT))
+
+ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_GZ)),y)
+EXT2_TARGET := $(EXT2_BASE).gz
+else
+EXT2_TARGET := $(EXT2_BASE)
+endif
+
+$(EXT2_BASE): genext2fs
        -@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
-       $(GENEXT2_DIR)/genext2fs -i $(GENEXT2_INODES) -b $(GENEXT2_SIZE) \
-               -d $(TARGET_DIR) -q -D target/default/device_table.txt $(IMAGE).ext2
+       @rm -rf $(TARGET_DIR)/usr/man
+       @rm -rf $(TARGET_DIR)/usr/share/man
+       @rm -rf $(TARGET_DIR)/usr/info
+       $(GENEXT2_DIR)/genext2fs \
+               -d $(TARGET_DIR) \
+               $(EXT2_OPTS) \
+               $(EXT2_BASE)
+               
+$(EXT2_BASE).gz: $(EXT2_BASE)
+       @gzip --best -fv $(EXT2_BASE)
+       
+EXT2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_COPYTO)))
+       
+ext2root: $(EXT2_TARGET)
+       @ls -l $(EXT2_TARGET)
+ifneq ($(EXT2_COPYTO),)
+       @cp -f $(EXT2_TARGET) $(EXT2_COPYTO)
+endif  
 
 ext2root-source: $(DL_DIR)/$(GENEXT2_SOURCE)