summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHamish Moffatt <hamish@cloud.net.au>2008-02-12 05:39:32 +0000
committerHamish Moffatt <hamish@cloud.net.au>2008-02-12 05:39:32 +0000
commit536e98effda4d9fe856befd7f5ac8123ea6e86fd (patch)
treea687185dc86d693ac570953026e68f0a0d06a126
parent03d65319620f61c7757b2b051a3a9d21cba91aab (diff)
Add support for summarising JFFS2 images. With support in the kernel this improves mount time significantly.
-rw-r--r--package/mtd/20050122/mtd.mk11
-rw-r--r--package/mtd/20061007/mtd.mk11
-rw-r--r--package/mtd/mtd-utils/mtd.mk13
-rw-r--r--target/jffs2/Config.in7
-rw-r--r--target/jffs2/jffs2root.mk12
5 files changed, 45 insertions, 9 deletions
diff --git a/package/mtd/20050122/mtd.mk b/package/mtd/20050122/mtd.mk
index 72832fa59..443b5c459 100644
--- a/package/mtd/20050122/mtd.mk
+++ b/package/mtd/20050122/mtd.mk
@@ -25,11 +25,12 @@ endif
#############################################################
#
-# Build mkfs.jffs2 for use on the local host system if
+# Build mkfs.jffs2 and sumtool for use on the local host system if
# needed by target/jffs2root.
#
#############################################################
MKFS_JFFS2 := $(MTD_HOST_DIR)/util/mkfs.jffs2
+SUMTOOL := $(MTD_HOST_DIR)/util/sumtool
ifeq ($(strip $(BR2_PACKAGE_MTD_SNAPSHOT)),y)
$(DL_DIR)/$(MTD_SOURCE):
@@ -55,11 +56,15 @@ $(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
touch $@
endif
-$(MTD_HOST_DIR)/util/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked
+$(MKFS_JFFS2): $(MTD_HOST_DIR)/.unpacked
CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) CC="$(HOSTCC)" CROSS= \
LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util mkfs.jffs2
-mtd-host: $(MKFS_JFFS2)
+$(SUMTOOL): $(MTD_HOST_DIR)/.unpacked
+ CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) CC="$(HOSTCC)" CROSS= \
+ LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util sumtool
+
+mtd-host: $(MKFS_JFFS2) $(SUMTOOL)
mtd-host-source: $(DL_DIR)/$(MTD_SOURCE)
diff --git a/package/mtd/20061007/mtd.mk b/package/mtd/20061007/mtd.mk
index bda366dde..fdd7bb0c7 100644
--- a/package/mtd/20061007/mtd.mk
+++ b/package/mtd/20061007/mtd.mk
@@ -12,11 +12,12 @@ MTD_DATE:=20061007
#############################################################
#
-# Build mkfs.jffs2 for use on the local host system if
+# Build mkfs.jffs2 and sumtool for use on the local host system if
# needed by target/jffs2root.
#
#############################################################
MKFS_JFFS2 := $(MTD_HOST_DIR)/mkfs.jffs2
+SUMTOOL := $(MTD_HOST_DIR)/sumtool
$(DL_DIR)/$(MTD_SOURCE):
$(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE)
@@ -29,11 +30,15 @@ $(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
package/mtd/$(MTD_DATE) \*.patch
touch $@
-$(MTD_HOST_DIR)/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked
+$(MKFS_JFFS2): $(MTD_HOST_DIR)/.unpacked
CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \
$(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR) mkfs.jffs2
-mtd-host: $(MKFS_JFFS2)
+$(SUMTOOL): $(MTD_HOST_DIR)/.unpacked
+ CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \
+ $(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR) sumtool
+
+mtd-host: $(MKFS_JFFS2) $(SUMTOOL)
mtd-host-source: $(DL_DIR)/$(MTD_SOURCE)
diff --git a/package/mtd/mtd-utils/mtd.mk b/package/mtd/mtd-utils/mtd.mk
index 2274de923..86acc93bd 100644
--- a/package/mtd/mtd-utils/mtd.mk
+++ b/package/mtd/mtd-utils/mtd.mk
@@ -13,11 +13,12 @@ MTD_NAME:=mtd-utils-$(MTD_VERSION)
#############################################################
#
-# Build mkfs.jffs2 for use on the local host system if
+# Build mkfs.jffs2 and sumtool for use on the local host system if
# needed by target/jffs2root.
#
#############################################################
MKFS_JFFS2 := $(MTD_HOST_DIR)/mkfs.jffs2
+SUMTOOL := $(MTD_HOST_DIR)/sumtool
$(DL_DIR)/$(MTD_SOURCE):
$(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE)
@@ -33,13 +34,19 @@ $(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
touch $@
-$(MTD_HOST_DIR)/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked
+$(MKFS_JFFS2): $(MTD_HOST_DIR)/.unpacked
CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \
$(MAKE) LINUXDIR=$(LINUX_DIR) \
BUILDDIR=$(MTD_HOST_DIR) \
-C $(MTD_HOST_DIR) mkfs.jffs2
-mtd-host: $(MKFS_JFFS2)
+$(SUMTOOL): $(MTD_HOST_DIR)/.unpacked
+ CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \
+ $(MAKE) LINUXDIR=$(LINUX_DIR) \
+ BUILDDIR=$(MTD_HOST_DIR) \
+ -C $(MTD_HOST_DIR) sumtool
+
+mtd-host: $(MKFS_JFFS2) $(SUMTOOL)
mtd-host-source: $(DL_DIR)/$(MTD_SOURCE)
diff --git a/target/jffs2/Config.in b/target/jffs2/Config.in
index 45fa646e9..e4d463cf0 100644
--- a/target/jffs2/Config.in
+++ b/target/jffs2/Config.in
@@ -114,6 +114,13 @@ 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_SUMMARY
+ bool "Produce a summarized JFFS2 image"
+ depends on BR2_TARGET_ROOTFS_JFFS2
+ help
+ A summarised image can be mounted faster if support is
+ enabled in the kernel (CONFIG_JFFS2_SUMMARY)
+
config BR2_TARGET_ROOTFS_JFFS2_OUTPUT
string "Output File"
depends on BR2_TARGET_ROOTFS_JFFS2
diff --git a/target/jffs2/jffs2root.mk b/target/jffs2/jffs2root.mk
index 6937b8f9d..404c678aa 100644
--- a/target/jffs2/jffs2root.mk
+++ b/target/jffs2/jffs2root.mk
@@ -5,6 +5,7 @@
#############################################################
JFFS2_OPTS := -e $(strip $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE))
+SUMTOOL_OPTS := $(JFFS2_OPTS)
ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PAD)),y)
ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0)
@@ -12,6 +13,7 @@ JFFS2_OPTS += --pad=$(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE))
else
JFFS2_OPTS += -p
endif
+SUMTOOLS_OPTS += -p
endif
ifeq ($(BR2_TARGET_ROOTFS_JFFS2_SQUASH),y)
@@ -20,16 +22,19 @@ endif
ifeq ($(BR2_TARGET_ROOTFS_JFFS2_LE),y)
JFFS2_OPTS += -l
+SUMTOOLS_OPTS += -l
endif
ifeq ($(BR2_TARGET_ROOTFS_JFFS2_BE),y)
JFFS2_OPTS += -b
+SUMTOOL_OPTS += -b
endif
ifneq ($(BR2_TARGET_ROOTFS_JFFS2_DEFAULT_PAGESIZE),y)
JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_PAGESIZE)
ifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y)
JFFS2_OPTS += -n
+SUMTOOL_OPTS += -n
endif
endif
@@ -70,8 +75,15 @@ ifneq ($(TARGET_DEVICE_TABLE),)
>> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET))
endif
# Use fakeroot so mkfs.jffs2 believes the previous fakery
+ifneq ($(BR2_TARGET_ROOTFS_JFFS2_SUMMARY),)
+ echo "$(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $(JFFS2_TARGET).nosummary && " \
+ "$(SUMTOOL) $(SUMTOOL_OPTS) -i $(JFFS2_TARGET).nosummary -o $(JFFS2_TARGET) && " \
+ "rm $(JFFS2_TARGET).nosummary" \
+ >> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET))
+else
echo "$(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $(JFFS2_TARGET)" \
>> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET))
+endif
chmod a+x $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET))
$(STAGING_DIR)/usr/bin/fakeroot -- $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET))
-@rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET))