summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeresa Gámez <t.gamez@phytec.de>2014-09-10 16:46:08 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-09-11 09:15:17 +0200
commit22acbddd89518b3079ee54bbc5faabbca3ebc5d1 (patch)
tree431d7320116552a39cc86a1927bb060d9e69a1ce
parent066220589497b8dbad4f268c0ebda4f60ce7661e (diff)
downloadbarebox-22acbddd89518b3079ee54bbc5faabbca3ebc5d1.tar.gz
defaultenv: Reorder overlay append order
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@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--defaultenv/defaultenv.c16
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)