2012-02-01 17:02:26

by Josh Boyer

[permalink] [raw]
Subject: [PATCH] merge_config.sh: Use the first file as the initial config

Take the first config fragment and use it verbatim as the initial config set.
This avoids running the verification loop for the first file, as nothing has
actually been merged at this point. This significantly increases performance
for large config fragments.

Signed-off-by: Josh Boyer <[email protected]>
---

When experimenting with merge_config.sh on the Fedora config fragments, this
cut the execution time of a single invocation with all the config fragments
in half (from 28 seconds to 13 seconds).

scripts/kconfig/merge_config.sh | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh
index ceadf0e..23d738a 100644
--- a/scripts/kconfig/merge_config.sh
+++ b/scripts/kconfig/merge_config.sh
@@ -58,12 +58,16 @@ while true; do
esac
done

-
+INITFILE=$1
+shift;

MERGE_LIST=$*
SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p"
TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)

+echo "Using $INITFILE as base"
+cat $INITFILE > $TMP_FILE
+
# Merge files, printing warnings on overrided values
for MERGE_FILE in $MERGE_LIST ; do
echo "Merging $MERGE_FILE"
--
1.7.8.4


2012-02-02 20:16:59

by John Stultz

[permalink] [raw]
Subject: Re: [PATCH] merge_config.sh: Use the first file as the initial config

On Wed, 2012-02-01 at 12:01 -0500, Josh Boyer wrote:
> Take the first config fragment and use it verbatim as the initial config set.
> This avoids running the verification loop for the first file, as nothing has
> actually been merged at this point. This significantly increases performance
> for large config fragments.
>
> Signed-off-by: Josh Boyer <[email protected]>
> ---
>
> When experimenting with merge_config.sh on the Fedora config fragments, this
> cut the execution time of a single invocation with all the config fragments
> in half (from 28 seconds to 13 seconds).

Adding Darren to the CC.

Nice! Looks ok to me.

Acked-by: John Stultz <[email protected]>

> scripts/kconfig/merge_config.sh | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh
> index ceadf0e..23d738a 100644
> --- a/scripts/kconfig/merge_config.sh
> +++ b/scripts/kconfig/merge_config.sh
> @@ -58,12 +58,16 @@ while true; do
> esac
> done
>
> -
> +INITFILE=$1
> +shift;
>
> MERGE_LIST=$*
> SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p"
> TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)
>
> +echo "Using $INITFILE as base"
> +cat $INITFILE > $TMP_FILE
> +
> # Merge files, printing warnings on overrided values
> for MERGE_FILE in $MERGE_LIST ; do
> echo "Merging $MERGE_FILE"

2012-02-02 20:37:45

by Darren Hart

[permalink] [raw]
Subject: Re: [PATCH] merge_config.sh: Use the first file as the initial config



On 02/02/2012 12:14 PM, John Stultz wrote:
> On Wed, 2012-02-01 at 12:01 -0500, Josh Boyer wrote:
>> Take the first config fragment and use it verbatim as the initial config set.
>> This avoids running the verification loop for the first file, as nothing has
>> actually been merged at this point. This significantly increases performance
>> for large config fragments.
>>
>> Signed-off-by: Josh Boyer <[email protected]>
>> ---
>>
>> When experimenting with merge_config.sh on the Fedora config fragments, this
>> cut the execution time of a single invocation with all the config fragments
>> in half (from 28 seconds to 13 seconds).
>
> Adding Darren to the CC.
>
> Nice! Looks ok to me.
>
> Acked-by: John Stultz <[email protected]>

Thanks Josh,

Acked-by: Darren Hart <[email protected]>

>
>> scripts/kconfig/merge_config.sh | 6 +++++-
>> 1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh
>> index ceadf0e..23d738a 100644
>> --- a/scripts/kconfig/merge_config.sh
>> +++ b/scripts/kconfig/merge_config.sh
>> @@ -58,12 +58,16 @@ while true; do
>> esac
>> done
>>
>> -
>> +INITFILE=$1
>> +shift;
>>
>> MERGE_LIST=$*
>> SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p"
>> TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)
>>
>> +echo "Using $INITFILE as base"
>> +cat $INITFILE > $TMP_FILE
>> +
>> # Merge files, printing warnings on overrided values
>> for MERGE_FILE in $MERGE_LIST ; do
>> echo "Merging $MERGE_FILE"
>
>

--
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel