[PATCH] scripts/get_default_envs.sh: preserve order of multiple entries for same variable

It's possible that the default_environment[] array contains multiple entries for the same variable, e.g. a setting from env_default.h based on some CONFIG_* variable, and another from CONFIG_EXTRA_ENV_SETTINGS. In such a case, the last setting takes effect.
Hence, in order to be able to use the output from this script as an CONFIG_DEFAULT_ENV_FILE and get the same default environment as one currently has, we need to preserve the order. So only sort by the variable name, and disable the last-resort comparison.
We could pipe the result through uniq to remove duplicate lines, but I think there's some value in seeing that certain variables are defined multiple times.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk --- scripts/get_default_envs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/get_default_envs.sh b/scripts/get_default_envs.sh index da86a9d69c..d1f2ce4d5c 100755 --- a/scripts/get_default_envs.sh +++ b/scripts/get_default_envs.sh @@ -35,7 +35,7 @@ cp ${env_obj_file_path} ${ENV_OBJ_FILE_COPY} ${OBJCOPY} -O binary -j ".rodata.default_environment" ${ENV_OBJ_FILE_COPY}
# Replace default '\0' with '\n' and sort entries -tr '\0' '\n' < ${ENV_OBJ_FILE_COPY} | sort -u +tr '\0' '\n' < ${ENV_OBJ_FILE_COPY} | sort --field-separator== -k1,1 --stable
rm ${ENV_OBJ_FILE_COPY}

Hi Rasmus,
It's possible that the default_environment[] array contains multiple entries for the same variable, e.g. a setting from env_default.h based on some CONFIG_* variable, and another from CONFIG_EXTRA_ENV_SETTINGS. In such a case, the last setting takes effect.
Hence, in order to be able to use the output from this script as an CONFIG_DEFAULT_ENV_FILE and get the same default environment as one currently has, we need to preserve the order. So only sort by the variable name, and disable the last-resort comparison.
We could pipe the result through uniq to remove duplicate lines, but I think there's some value in seeing that certain variables are defined multiple times.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk
scripts/get_default_envs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/get_default_envs.sh b/scripts/get_default_envs.sh index da86a9d69c..d1f2ce4d5c 100755 --- a/scripts/get_default_envs.sh +++ b/scripts/get_default_envs.sh @@ -35,7 +35,7 @@ cp ${env_obj_file_path} ${ENV_OBJ_FILE_COPY} ${OBJCOPY} -O binary -j ".rodata.default_environment" ${ENV_OBJ_FILE_COPY} # Replace default '\0' with '\n' and sort entries -tr '\0' '\n' < ${ENV_OBJ_FILE_COPY} | sort -u +tr '\0' '\n' < ${ENV_OBJ_FILE_COPY} | sort --field-separator== -k1,1 --stable rm ${ENV_OBJ_FILE_COPY}
Reviewed-by: Lukasz Majewski lukma@denx.de
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

On Mon, 6 Jan 2020 at 05:17, Lukasz Majewski lukma@denx.de wrote:
Hi Rasmus,
It's possible that the default_environment[] array contains multiple entries for the same variable, e.g. a setting from env_default.h based on some CONFIG_* variable, and another from CONFIG_EXTRA_ENV_SETTINGS. In such a case, the last setting takes effect.
Hence, in order to be able to use the output from this script as an CONFIG_DEFAULT_ENV_FILE and get the same default environment as one currently has, we need to preserve the order. So only sort by the variable name, and disable the last-resort comparison.
We could pipe the result through uniq to remove duplicate lines, but I think there's some value in seeing that certain variables are defined multiple times.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk
scripts/get_default_envs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org

On 30/01/2020 03.17, Simon Glass wrote:
On Mon, 6 Jan 2020 at 05:17, Lukasz Majewski lukma@denx.de wrote:
Hi Rasmus,
It's possible that the default_environment[] array contains multiple entries for the same variable, e.g. a setting from env_default.h based on some CONFIG_* variable, and another from CONFIG_EXTRA_ENV_SETTINGS. In such a case, the last setting takes effect.
Hence, in order to be able to use the output from this script as an CONFIG_DEFAULT_ENV_FILE and get the same default environment as one currently has, we need to preserve the order. So only sort by the variable name, and disable the last-resort comparison.
We could pipe the result through uniq to remove duplicate lines, but I think there's some value in seeing that certain variables are defined multiple times.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk
scripts/get_default_envs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Lukasz Majewski lukma@denx.de
Reviewed-by: Simon Glass sjg@chromium.org
Hi Tom,
This has two R-Bs, perhaps I can get you to pick it up?
Thanks, Rasmus

On Mon, Jan 06, 2020 at 12:01:17PM +0000, Rasmus Villemoes wrote:
It's possible that the default_environment[] array contains multiple entries for the same variable, e.g. a setting from env_default.h based on some CONFIG_* variable, and another from CONFIG_EXTRA_ENV_SETTINGS. In such a case, the last setting takes effect.
Hence, in order to be able to use the output from this script as an CONFIG_DEFAULT_ENV_FILE and get the same default environment as one currently has, we need to preserve the order. So only sort by the variable name, and disable the last-resort comparison.
We could pipe the result through uniq to remove duplicate lines, but I think there's some value in seeing that certain variables are defined multiple times.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk Reviewed-by: Lukasz Majewski lukma@denx.de Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!
participants (4)
-
Lukasz Majewski
-
Rasmus Villemoes
-
Simon Glass
-
Tom Rini