diff mbox series

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

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

Commit Message

Rasmus Villemoes Jan. 6, 2020, 12:01 p.m. UTC
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(-)

Comments

Lukasz Majewski Jan. 6, 2020, 12:16 p.m. UTC | #1
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>
Simon Glass Jan. 30, 2020, 2:17 a.m. UTC | #2
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>
Tom Rini May 7, 2020, 1:03 p.m. UTC | #3
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 mbox series

Patch

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}