]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scripts: kconfig: merge_config.sh: warn on duplicate input files
authorMikko Rapeli <mikko.rapeli@linaro.org>
Thu, 22 Jan 2026 10:57:51 +0000 (12:57 +0200)
committerNathan Chancellor <nathan@kernel.org>
Thu, 22 Jan 2026 22:58:45 +0000 (15:58 -0700)
External scripts like yocto kernel scc may provide
same input config fragment multiple times. This may
be a bug since processing same fragments multiple times
can be time consuming.

Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
Link: https://patch.msgid.link/20260122105751.2186609-3-mikko.rapeli@linaro.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
scripts/kconfig/merge_config.sh

index 9eda9dbd4542d6efd44f255c085297d7f47c4215..735e1de450c6aaca9b98b47522c35d646a5d68e0 100755 (executable)
@@ -130,6 +130,8 @@ trap clean_up EXIT
 
 cat $INITFILE > $TMP_FILE
 
+PROCESSED_FILES=""
+
 # Merge files, printing warnings on overridden values
 for ORIG_MERGE_FILE in $MERGE_LIST ; do
        echo "Merging $ORIG_MERGE_FILE"
@@ -137,6 +139,14 @@ for ORIG_MERGE_FILE in $MERGE_LIST ; do
                echo "The merge file '$ORIG_MERGE_FILE' does not exist.  Exit." >&2
                exit 1
        fi
+
+       # Check for duplicate input files
+       case " $PROCESSED_FILES " in
+               *" $ORIG_MERGE_FILE "*)
+                       ${WARNOVERRIDE} "WARNING: Input file provided multiple times: $ORIG_MERGE_FILE"
+                       ;;
+       esac
+
        # Use awk for single-pass processing instead of per-symbol grep/sed
        if ! "$AWK" -v prefix="$CONFIG_PREFIX" \
                -v warnoverride="$WARNOVERRIDE" \
@@ -259,6 +269,7 @@ for ORIG_MERGE_FILE in $MERGE_LIST ; do
                STRICT_MODE_VIOLATED=true
        fi
        mv "$TMP_FILE.new" "$TMP_FILE"
+       PROCESSED_FILES="$PROCESSED_FILES $ORIG_MERGE_FILE"
 done
 if [ "$STRICT_MODE_VIOLATED" = "true" ]; then
        echo "The fragment redefined a value and strict mode had been passed."