Patch from gtj: http://bugs.uclibc.org/view.php?id=40
authorEric Andersen <andersen@codepoet.org>
Sun, 23 Jan 2005 11:16:11 +0000 (11:16 -0000)
committerEric Andersen <andersen@codepoet.org>
Sun, 23 Jan 2005 11:16:11 +0000 (11:16 -0000)
0000040: Adds options to jffs2 filesystem creation

Brings jffs2 up to the 20041007 build level so it will compile with both 2.4
and 2.6 kernels.

Adds ability to specify eraseblock and pad sizes, permissions squash,
big/little endian and device table in the configuration.

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

mtd.patch adds capabilities of the previously attached patch plus allows you to
compile a version of the utilities to run on the target system.

So now there's a set of config options under package to compile the utils for
distribution to the target and a set of config options under target to create a
jffs2 filesystem.

package/mtd/Config.in [new file with mode: 0644]
package/mtd/Makefile.in [new file with mode: 0644]
package/mtd/mtd.mk [new file with mode: 0644]
target/jffs2/Config.in
target/jffs2/jffs2root.mk

diff --git a/package/mtd/Config.in b/package/mtd/Config.in
new file mode 100644 (file)
index 0000000..a6cd22d
--- /dev/null
@@ -0,0 +1,99 @@
+
+menuconfig BR2_PACKAGE_MTD
+       bool "mtd/jffs2 utilities"
+       default n
+       help
+         Build mtd/jffs utilities
+
+config BR2_PACKAGE_MTD_FLASH_ERASE
+       bool "flash_erase"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_FLASH_ERASEASLL
+       bool "flash_eraseall"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_FLASH_INFO
+       bool "flash_info"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_FLASH_LOCK
+       bool "flash_loco"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_FLASH_UNLOCK
+       bool "flash_unlock"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_FLASHCP
+       bool "flashcp"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_JFFS2DUMP
+       bool "jffs2dump"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_FTL_CHECK
+       bool "ftl_check"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_FTL_FORMAT
+       bool "ftl_format"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_NFTL_FORMAT
+       bool "nftl_format"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_NFTLDUMP
+       bool "nftldump"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_MKFSJFFS2
+       bool "mkfs.jffs2"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_MKFSJFFS
+       bool "mkfs.jffs"
+       default y
+       depends on BR2_PACKAGE_MTD
+
+config BR2_PACKAGE_MTD_NANDDUMP
+       bool "nanddump"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_NANDWRITE
+       bool "nandwrite"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_MTD_DEBUG
+       bool "mtd_debug"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_DOCFDISK
+       bool "docfdisk"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+config BR2_PACKAGE_MTD_DOC_LOADBIOS
+       bool "doc_loadbios"
+       default y
+       depends on BR2_PACKAGE_MTD
+       
+
+       
diff --git a/package/mtd/Makefile.in b/package/mtd/Makefile.in
new file mode 100644 (file)
index 0000000..d8c9cd7
--- /dev/null
@@ -0,0 +1,3 @@
+ifeq ($(strip $(BR2_PACKAGE_MTD)),y)
+TARGETS+=mtd
+endif
diff --git a/package/mtd/mtd.mk b/package/mtd/mtd.mk
new file mode 100644 (file)
index 0000000..ea1cf31
--- /dev/null
@@ -0,0 +1,98 @@
+#############################################################
+#
+# mtd provides jffs2 utilities
+#
+#############################################################
+MTD_SOURCE=mtd_20041007.orig.tar.gz
+MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd
+
+#############################################################
+#
+# Build mkfs.jffs2 for use on the local host system if
+# needed by target/jffs2root.
+# If /sbin/mkfs.jffs2 already exists, no make is needed
+#
+#############################################################
+MKFS_JFFS2=$(shell which mkfs.jffs2 2>/dev/null || echo $(STAGING_DIR)/bin/mkfs.jffs2)
+
+MTD_HOST_DIR   :=      $(TOOL_BUILD_DIR)/mtd-20041007.orig
+
+$(DL_DIR)/$(MTD_SOURCE):
+       $(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE)
+
+$(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
+       zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
+       touch $(MTD_HOST_DIR)/.unpacked
+
+$(MTD_HOST_DIR)/util/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked
+       CFLAGS=-I$(LINUX_HEADERS_DIR)/include \
+               $(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util mkfs.jffs2
+       
+$(STAGING_DIR)/bin/mkfs.jffs2: $(MTD_HOST_DIR)/util/mkfs.jffs2
+       cp -f $(MTD_HOST_DIR)/util/mkfs.jffs2 $(STAGING_DIR)/bin
+       
+mtd-host: $(MKFS_JFFS2)
+
+mtd-host-source: $(DL_DIR)/$(MTD_SOURCE)
+
+mtd-host-clean:
+       -$(MAKE) -C $(MTD_HOST_DIR) clean
+
+mtd-host-dirclean:
+       rm -rf $(MTD_HOST_DIR)
+
+#############################################################
+#
+# build mtd for use on the target system
+#
+#############################################################
+MTD_DIR:=$(BUILD_DIR)/mtd-20041007.orig
+
+$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
+       zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+       touch $(MTD_DIR)/.unpacked
+
+MTD_TARGETS_n :=
+MTD_TARGETS_y :=
+
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASE)             += flash_erase
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASEALL)  += flash_eraseall
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_INFO)              += flash_info
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_LOCK)              += flash_lock
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_UNLOCK)    += flash_unlock
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASHCP)                         += flashcp
+MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS2)               += mkfs.jffs2
+MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS)                        += mkfs.jffs
+MTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS2DUMP)               += jffs2dump
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_CHECK)               += ftl_check
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_FORMAT)              += ftl_format
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTLDUMP)                        += nftldump
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTL_FORMAT)             += nftl_format
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDDUMPP)               += nanddump
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDWRITE)               += nandwrite
+MTD_TARGETS_$(BR2_PACKAGE_MTD_MTD_DEBUG)               += mtd_debug
+MTD_TARGETS_$(BR2_PACKAGE_MTD_DOCFDISK)                        += docfdisk
+MTD_TARGETS_$(BR2_PACKAGE_MTD_DOC_LOADBIOS)    += doc_loadbios
+
+MTD_BUILD_TARGETS := $(addprefix $(MTD_DIR)/util/, $(MTD_TARGETS_y))
+
+$(MTD_BUILD_TARGETS): $(MTD_DIR)/.unpacked
+       CFLAGS="-I$(LINUX_HEADERS_DIR)/include $(TARGET_CFLAGS)" \
+       $(MAKE) CC=$(TARGET_CC) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util
+
+MTD_TARGETS := $(addprefix $(TARGET_DIR)/usr/sbin/, $(MTD_TARGETS_y))
+
+$(MTD_TARGETS): $(TARGET_DIR)/usr/sbin/% : $(MTD_DIR)/util/%
+       cp -f $< $@
+
+mtd: $(MTD_TARGETS)
+
+mtd-source: $(DL_DIR)/$(MTD_SOURCE)
+
+mtd-clean:
+       -$(MAKE) -C $(MTD_DIR) clean
+       
+mtd-dirclean:
+       rm -rf $(MTD_DIR)
+
+
index 0d79dd1ffa7d216e5c14055ece7150725a03313b..4f5edac4c8ead5ceaec5026d7e2ee93cdebf41f2 100644 (file)
@@ -1,6 +1,60 @@
-config BR2_TARGET_ROOTFS_JFFS2
-       bool "jffs2 root filesystem for the target device"
+
+menuconfig BR2_TARGET_ROOTFS_JFFS2
+       bool "Build jffs2 root filesystem for the target device"
        default n
        help
          Build a jffs2 root filesystem
 
+config BR2_TARGET_ROOTFS_JFFS2_EBSIZE
+       hex "Erase block size"
+       depends on BR2_TARGET_ROOTFS_JFFS2
+       default 0x20000
+       
+config BR2_TARGET_ROOTFS_JFFS2_PAD
+       bool "Pad output"
+       depends on BR2_TARGET_ROOTFS_JFFS2
+       
+config BR2_TARGET_ROOTFS_JFFS2_PADSIZE
+       hex "Pad output size (0x0 = to end of EB)"
+       depends on BR2_TARGET_ROOTFS_JFFS2_PAD
+       default 0x0
+       help
+               Set to 0x0 to pad to end of erase block.        
+       
+choice
+       prompt "Endianess"
+       default BR2_TARGET_ROOTFS_JFFS2_LE
+       depends on BR2_TARGET_ROOTFS_JFFS2
+       
+config BR2_TARGET_ROOTFS_JFFS2_LE
+       bool "little-endian"
+       depends on      BR2_TARGET_ROOTFS_JFFS2
+       
+config BR2_TARGET_ROOTFS_JFFS2_BE
+       bool "big-endian"
+       depends on      BR2_TARGET_ROOTFS_JFFS2
+       
+endchoice
+
+config BR2_TARGET_ROOTFS_JFFS2_SQUASH
+       bool "Make all files be owned by root"
+       depends on      BR2_TARGET_ROOTFS_JFFS2
+
+config BR2_TARGET_ROOTFS_JFFS2_DEVFILE
+       string "Location of device table file"
+       depends on BR2_TARGET_ROOTFS_JFFS2
+       default "target/default/device_table.txt"
+       
+config BR2_TARGET_ROOTFS_JFFS2_OUTPUT
+       string "Output File"
+       depends on BR2_TARGET_ROOTFS_JFFS2
+       default "$(IMAGE).jffs2"
+       
+config BR2_TARGET_ROOTFS_JFFS2_COPYTO
+       string "also copy the image to..."
+       depends on      BR2_TARGET_ROOTFS_JFFS2
+       default ""
+       help
+               Copies the resulting image to a secondary location.
+               
+       
index ee23d9b41ba9ec9d0546280b3f133d912c6c174a..3e64a62d59de8b8fcb22856c2bfdb1a48ef975b7 100644 (file)
@@ -1,49 +1,68 @@
 #############################################################
 #
-# mtd provides us with mkfs.jffs2, to target JFFS2 filesystems
+# Build the jffs2 root filesystem image
 #
 #############################################################
 
-MTD_DIR:=$(BUILD_DIR)/mtd-20011217
-MTD_SOURCE=mtd_20011217.orig.tar.gz
-MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd
-MKFS_JFFS2=$(shell which mkfs.jffs2 2>/dev/null || echo $(MTD_DIR)/util/mkfs.jffs2)
+JFFS2_OPTS := -e $(strip $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE))
 
-$(DL_DIR)/$(MTD_SOURCE):
-       $(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE)
+ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PAD)),y)
+JFFS2_OPTS += -p 
+ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0)
+JFFS2_OPTS += $(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE))
+endif
+endif
 
-$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
-       zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) -xvf -
-       touch $(MTD_DIR)/.unpacked
+ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_SQUASH)),y)
+JFFS2_OPTS += -q
+endif
 
-$(MTD_DIR)/util/mkfs.jffs2: $(MTD_DIR)/.unpacked
-       CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util
+ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_LE)),y)
+JFFS2_OPTS += -l
+endif
 
-mtd: $(MKFS_JFFS2)
+ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_BE)),y)
+JFFS2_OPTS += -b
+endif
 
+JFFS2_DEVFILE = $(strip $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_DEVFILE)))
+ifneq ($(JFFS2_DEVFILE),)
+JFFS2_OPTS += -D $(JFFS2_DEVFILE)
+endif
+
+JFFS2_TARGET := $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_OUTPUT))
 
-#############################################################
 #
-# Build the jffs2 root filesystem image
+# mtd-host is a dependency which builds a local copy of mkfs.jffs2 if it's needed.
+# the actual build is done from package/mtd/mtd.mk and it sets the
+# value of MKFS_JFFS2 to either the previously installed copy or the one
+# just built.
 #
-#############################################################
-
-jffs2root: mtd
-       #-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true;
+$(JFFS2_TARGET): mtd-host
        -@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
        @rm -rf $(TARGET_DIR)/usr/man
+       @rm -rf $(TARGET_DIR)/usr/share/man
        @rm -rf $(TARGET_DIR)/usr/info
-       $(MKFS_JFFS2) --pad --little-endian --squash -e 0x20000 \
-               -D target/default/device_table.txt -d $(TARGET_DIR) \
-               -o $(IMAGE).jffs2
+       $(MKFS_JFFS2) \
+               $(JFFS2_OPTS) \
+               -d $(BUILD_DIR)/root \
+               -o $(JFFS2_TARGET)
+       @ls -l $(JFFS2_TARGET)
+
+JFFS2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_COPYTO)))
+
+jffs2root: $(JFFS2_TARGET)
+ifneq ($(JFFS2_COPYTO),)
+       @cp -f $(JFFS2_TARGET) $(JFFS2_COPYTO)
+endif  
 
-jffs2root-source: $(DL_DIR)/$(MTD_SOURCE)
+jffs2root-source: mtd-host-source
 
-jffs2root-clean:
-       -$(MAKE) -C $(MTD_DIR) clean
+jffs2root-clean: mtd-host-clean
+       -rm -f $(JFFS2_TARGET)
 
-jffs2root-dirclean:
-       rm -rf $(MTD_DIR)
+jffs2root-dirclean: mtd-host-dirclean
+       -rm -f $(JFFS2_TARGET)