diff mbox series

scripts: kconfig: merge_config: config files: add a trailing newline

Message ID 20240802124236.2895857-1-anders.roxell@linaro.org (mailing list archive)
State New
Headers show
Series scripts: kconfig: merge_config: config files: add a trailing newline | expand

Commit Message

Anders Roxell Aug. 2, 2024, 12:42 p.m. UTC
When merging files without trailing newlines a the end of the file, two
config fragments end up at the same row if file1.config doens't have a
trailing newline at the end of the file.

file1.config "CONFIG_1=y"
file2.config "CONFIG_2=y"
./scripts/kconfig/merge_config.sh -m .config file1.config file2.config

this will generate a .config lookingn like this.
cat .config
...
CONFIG_1=yCONFIG_2=y"

Making sure so we add a newline at the end of every config file that is
passed into the script.

Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
---
 scripts/kconfig/merge_config.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Masahiro Yamada Aug. 3, 2024, 2:25 p.m. UTC | #1
On Fri, Aug 2, 2024 at 9:42 PM Anders Roxell <anders.roxell@linaro.org> wrote:
>
> When merging files without trailing newlines a the end of the file, two
> config fragments end up at the same row if file1.config doens't have a
> trailing newline at the end of the file.
>
> file1.config "CONFIG_1=y"
> file2.config "CONFIG_2=y"
> ./scripts/kconfig/merge_config.sh -m .config file1.config file2.config
>
> this will generate a .config lookingn like this.
> cat .config
> ...
> CONFIG_1=yCONFIG_2=y"
>
> Making sure so we add a newline at the end of every config file that is
> passed into the script.
>
> Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
> ---
>  scripts/kconfig/merge_config.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh
> index 902eb429b9db..ce1b77ee043b 100755
> --- a/scripts/kconfig/merge_config.sh
> +++ b/scripts/kconfig/merge_config.sh
> @@ -136,7 +136,7 @@ for ORIG_MERGE_FILE in $MERGE_LIST ; do
>                 echo "The merge file '$ORIG_MERGE_FILE' does not exist.  Exit." >&2
>                 exit 1
>         fi
> -       cat $ORIG_MERGE_FILE > $MERGE_FILE
> +       cat $ORIG_MERGE_FILE | sed -e '$a\' > $MERGE_FILE


Is the pipe necessary? This seems to be equivalent to:

  sed -e '$a\' $ORIG_MERGE_FILE > $MERGE_FILE






This issue also happens if $INITFILE lacks a newline at the end.


I think the right place to insert a line is there:


        # In case the previous file lacks a new line at the end
        echo >> $TMP_FILE
        cat $MERGE_FILE >> $TMP_FILE


I am fine with always inserting a line between files.
Anders Roxell Aug. 5, 2024, 9:21 a.m. UTC | #2
On Sat, 3 Aug 2024 at 16:26, Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Fri, Aug 2, 2024 at 9:42 PM Anders Roxell <anders.roxell@linaro.org> wrote:
> >
> > When merging files without trailing newlines a the end of the file, two
> > config fragments end up at the same row if file1.config doens't have a
> > trailing newline at the end of the file.
> >
> > file1.config "CONFIG_1=y"
> > file2.config "CONFIG_2=y"
> > ./scripts/kconfig/merge_config.sh -m .config file1.config file2.config
> >
> > this will generate a .config lookingn like this.
> > cat .config
> > ...
> > CONFIG_1=yCONFIG_2=y"
> >
> > Making sure so we add a newline at the end of every config file that is
> > passed into the script.
> >
> > Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
> > ---
> >  scripts/kconfig/merge_config.sh | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh
> > index 902eb429b9db..ce1b77ee043b 100755
> > --- a/scripts/kconfig/merge_config.sh
> > +++ b/scripts/kconfig/merge_config.sh
> > @@ -136,7 +136,7 @@ for ORIG_MERGE_FILE in $MERGE_LIST ; do
> >                 echo "The merge file '$ORIG_MERGE_FILE' does not exist.  Exit." >&2
> >                 exit 1
> >         fi
> > -       cat $ORIG_MERGE_FILE > $MERGE_FILE
> > +       cat $ORIG_MERGE_FILE | sed -e '$a\' > $MERGE_FILE
>
>
> Is the pipe necessary? This seems to be equivalent to:
>
>   sed -e '$a\' $ORIG_MERGE_FILE > $MERGE_FILE
>
>
>
>
>
>
> This issue also happens if $INITFILE lacks a newline at the end.
>
>
> I think the right place to insert a line is there:
>
>
>         # In case the previous file lacks a new line at the end
>         echo >> $TMP_FILE
>         cat $MERGE_FILE >> $TMP_FILE
>
>
> I am fine with always inserting a line between files.

Thank you Masahiro for your review.
Sending a v2 shortly.

Cheers,
Anders
diff mbox series

Patch

diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh
index 902eb429b9db..ce1b77ee043b 100755
--- a/scripts/kconfig/merge_config.sh
+++ b/scripts/kconfig/merge_config.sh
@@ -136,7 +136,7 @@  for ORIG_MERGE_FILE in $MERGE_LIST ; do
 		echo "The merge file '$ORIG_MERGE_FILE' does not exist.  Exit." >&2
 		exit 1
 	fi
-	cat $ORIG_MERGE_FILE > $MERGE_FILE
+	cat $ORIG_MERGE_FILE | sed -e '$a\' > $MERGE_FILE
 	CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE)
 
 	for CFG in $CFG_LIST ; do