Message ID | 20200106120107.22564-1-rasmus.villemoes@prevas.dk |
---|---|
State | Accepted |
Commit | 15c160301cf4761d45e09808f9d818525425901b |
Headers | show |
Series | scripts/get_default_envs.sh: preserve order of multiple entries for same variable | expand |
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 at 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 at 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 at denx.de -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 488 bytes Desc: OpenPGP digital signature URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200106/8cb426c3/attachment.sig>
On Mon, 6 Jan 2020 at 05:17, Lukasz Majewski <lukma at 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 at prevas.dk> > > --- > > scripts/get_default_envs.sh | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Simon Glass <sjg at chromium.org>
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 at prevas.dk> > Reviewed-by: Lukasz Majewski <lukma at denx.de> > Reviewed-by: Simon Glass <sjg at chromium.org> Applied to u-boot/master, thanks!
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}
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 at prevas.dk> --- scripts/get_default_envs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)