fs/ubi: add option to use custom ubinize config file
authorDanomi Manchego <danomimanchego123@gmail.com>
Wed, 29 Jan 2014 04:54:00 +0000 (23:54 -0500)
committerPeter Korsgaard <peter@korsgaard.com>
Sat, 8 Feb 2014 21:57:31 +0000 (22:57 +0100)
By default, the UBI FS target creates a ubinize configuration
file on-the-fly, for a single volume.  Add an option to specify
a custom config file.

E.g., one might want to deploy a system with a volume for the
built ubifs image, a volume for a future upgrade image, and a
volume for user data.

Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
Reviewed-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
fs/ubifs/Config.in
fs/ubifs/ubi.mk
fs/ubifs/ubinize.cfg

index 70ea81e5d75ad25c65145b4b688b963ae37972bd..ff604c5c383992bb132d9cfdf4e8495d42bfed72 100644 (file)
@@ -119,6 +119,26 @@ config BR2_TARGET_ROOTFS_UBI_SUBSIZE
          The value provided here is passed to the -s/--sub-page-size
          option of ubinize.
 
+config BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG
+       bool "Use custom config file"
+       help
+         Select this option to use a custom ubinize configuration file,
+         rather than the default configuration used by Buildroot (which
+         defines a single dynamic volume marked as auto-resize).  Passing
+         a custom ubinize configuration file allows you to create several
+         volumes, specify volume types, etc.
+
+         As a convenience, buildroot replaces the string
+         "BR2_ROOTFS_UBIFS_PATH" with the path to the built ubifs file.
+         So the volume defined for the root filesystem can specify the
+         image path as:  image=BR2_ROOTFS_UBIFS_PATH
+
+config BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE
+       string "Configuration file path"
+       depends on BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG
+       help
+         Path to the ubinize configuration file.
+
 config BR2_TARGET_ROOTFS_UBI_OPTS
        string "Additional ubinize options"
        help
index 08c952c29664b0d627de4128100c69270553bcd7..aba3bea83b24ed7cd4dbef96060ebf32beb20aeb 100644 (file)
@@ -1,6 +1,6 @@
 ################################################################################
 #
-# Embed the ubifs image into an ubi one
+# Embed the ubifs image into an ubi image
 #
 ################################################################################
 
@@ -14,12 +14,17 @@ UBI_UBINIZE_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_OPTS))
 
 ROOTFS_UBI_DEPENDENCIES = rootfs-ubifs
 
+ifeq ($(BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG),y)
+UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE))
+else
+UBINIZE_CONFIG_FILE_PATH = fs/ubifs/ubinize.cfg
+endif
+
 define ROOTFS_UBI_CMD
-       cp fs/ubifs/ubinize.cfg . ;\
-       echo "image=$@fs" \
-               >> ./ubinize.cfg ;\
-       $(HOST_DIR)/usr/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) ubinize.cfg ;\
-       rm ubinize.cfg
+       $(INSTALL) -m 0644 $(UBINIZE_CONFIG_FILE_PATH) $(BUILD_DIR)/ubinize.cfg ;\
+       $(SED) 's;BR2_ROOTFS_UBIFS_PATH;$@fs;' $(BUILD_DIR)/ubinize.cfg ;\
+       $(HOST_DIR)/usr/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) $(BUILD_DIR)/ubinize.cfg ;\
+       rm $(BUILD_DIR)/ubinize.cfg
 endef
 
 $(eval $(call ROOTFS_TARGET,ubi))
index 65152714b48504e6d83907c17fcb44007b2dba7c..b0aace7b9f9507bfb6cf8cba898c3cbb3781e094 100644 (file)
@@ -5,3 +5,4 @@ vol_type=dynamic
 vol_name=rootfs
 vol_alignment=1
 vol_flags=autoresize
+image=BR2_ROOTFS_UBIFS_PATH