Browse Source

barebox: add an option to embed environment image

Barebox provides an option to embed a custom environment image into
barebox binary. This image will be used, when the environment found in
the environment sector is invalid. Both embedded and external images
can be used together, so having both options at the same time is
justified.

This patch sets barebox Kconfig option CONFIG_DEFAULT_ENVIRONMENT_PATH
to user specified path. This way one can use such BR's variables like
BR2_EXTERNAL, TOPDIR etc. to provide paths to custom environment
folders.

Cc: Pieter Smith <pieter@boesman.nl>
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Yegor Yefremov 9 years ago
parent
commit
f80735ce39
3 changed files with 43 additions and 0 deletions
  1. 17 0
      boot/barebox/barebox-aux/Config.in
  2. 9 0
      boot/barebox/barebox.mk
  3. 17 0
      boot/barebox/barebox/Config.in

+ 17 - 0
boot/barebox/barebox-aux/Config.in

@@ -57,3 +57,20 @@ config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV_PATH
 	  the additions needed. The output will be an image in the
 	  the additions needed. The output will be an image in the
 	  barebox devfs format, stored in the images directory, with
 	  barebox devfs format, stored in the images directory, with
 	  the same name as the directory name given here.
 	  the same name as the directory name given here.
+
+config BR2_TARGET_BAREBOX_AUX_CUSTOM_EMBEDDED_ENV_PATH
+	string "Embedded environment path"
+	help
+	  If this option is not empty, it is the path to a custom
+	  embedded barebox environment. This image will be used when
+	  the environment found in the environment sector is
+	  invalid. This option sets the barebox Kconfig option
+	  CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This
+	  way it is possible to use Buildroot variables like
+	  BR2_EXTERNAL, TOPDIR etc. to refer to the custom
+	  environment.
+
+	  Depending on your setup, the custom embedded environment
+	  will probably be based on either the content of the
+	  defaultenv or defaultenv-2 directories in the barebox source
+	  code.

+ 9 - 0
boot/barebox/barebox.mk

@@ -39,6 +39,8 @@ $(1)_DEPENDENCIES = host-lzop
 $(1)_LICENSE = GPLv2 with exceptions
 $(1)_LICENSE = GPLv2 with exceptions
 $(1)_LICENSE_FILES = COPYING
 $(1)_LICENSE_FILES = COPYING
 
 
+$(1)_CUSTOM_EMBEDDED_ENV_PATH = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_EMBEDDED_ENV_PATH))
+
 ifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),)
 ifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),)
 define $(1)_APPLY_CUSTOM_PATCHES
 define $(1)_APPLY_CUSTOM_PATCHES
 	$$(APPLY_PATCHES) $$(@D) \
 	$$(APPLY_PATCHES) $$(@D) \
@@ -96,6 +98,13 @@ define $(1)_INSTALL_CUSTOM_ENV
 endef
 endef
 endif
 endif
 
 
+ifneq ($$($(1)_CUSTOM_EMBEDDED_ENV_PATH),)
+define $(1)_KCONFIG_FIXUP_CMDS
+	$$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_ENVIRONMENT,$$(@D)/.config)
+	$$(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENVIRONMENT_PATH,"$$($(1)_CUSTOM_EMBEDDED_ENV_PATH)",$$(@D)/.config)
+endef
+endif
+
 define $(1)_BUILD_CMDS
 define $(1)_BUILD_CMDS
 	$$($(1)_BUILD_BAREBOXENV_CMDS)
 	$$($(1)_BUILD_BAREBOXENV_CMDS)
 	$$(TARGET_MAKE_ENV) $$(MAKE) $$($(1)_MAKE_FLAGS) -C $$(@D)
 	$$(TARGET_MAKE_ENV) $$(MAKE) $$($(1)_MAKE_FLAGS) -C $$(@D)

+ 17 - 0
boot/barebox/barebox/Config.in

@@ -63,3 +63,20 @@ config BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH
 	  the additions needed. The output will be an image in the
 	  the additions needed. The output will be an image in the
 	  barebox devfs format, stored in the images directory, with
 	  barebox devfs format, stored in the images directory, with
 	  the same name as the directory name given here.
 	  the same name as the directory name given here.
+
+config BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH
+	string "Embedded environment path"
+	help
+	  If this option is not empty, it is the path to a custom
+	  embedded barebox environment. This image will be used when
+	  the environment found in the environment sector is
+	  invalid. This option sets the barebox Kconfig option
+	  CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This
+	  way it is possible to use Buildroot variables like
+	  BR2_EXTERNAL, TOPDIR etc. to refer to the custom
+	  environment.
+
+	  Depending on your setup, the custom embedded environment
+	  will probably be based on either the content of the
+	  defaultenv or defaultenv-2 directories in the barebox source
+	  code.