[PATCH] defaultenv: Reorder overlay append order

Teresa Gámez t.gamez at phytec.de
Wed Sep 10 07:46:08 PDT 2014


The defaultenv_add_base() functions adds the enviroment coming from
CONFIG_DEFAULT_ENVIRONMENT_PATH. But this is not only for
traditional enviroments, but also for external enviroments in e.g. build
systems. The external enviroment should override the enviroment set
in the board file and not the other way around. Made sure that
external enviroment is always added last.

Signed-off-by: Teresa Gámez <t.gamez at phytec.de>
---
 defaultenv/defaultenv.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/defaultenv/defaultenv.c b/defaultenv/defaultenv.c
index dc0e484..3b4efcf 100644
--- a/defaultenv/defaultenv.c
+++ b/defaultenv/defaultenv.c
@@ -50,10 +50,20 @@ static void defaultenv_add_base(void)
 		defaultenv_append_directory(defaultenv_2_dfu);
 	if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC))
 		defaultenv_append_directory(defaultenv_1);
+}
+
+static void defaultenv_add_external(void)
+{
+	static int external_added;
+
+	if (external_added)
+		return;
+
+	external_added = 1;
 
 	/*
-	 * The traditional environment given with CONFIG_DEFAULT_ENVIRONMENT_PATH.
-	 * Once all users are converted to bbenv-y this can go.
+	 * The traditional or external environment given with
+	 * CONFIG_DEFAULT_ENVIRONMENT_PATH.
 	 */
 	defaultenv_append((void *)default_environment,
 			default_environment_size, "defaultenv");
@@ -141,6 +151,8 @@ int defaultenv_load(const char *dir, unsigned flags)
 
 	defaultenv_add_base();
 
+	defaultenv_add_external();
+
 	list_for_each_entry(df, &defaultenv_list, list) {
 		ret = defaultenv_load_one(df, dir, flags);
 		if (ret)
-- 
1.7.0.4




More information about the barebox mailing list