Blame check-for-config-changes

Bernhard M. Wiedemann 6ebc4a
#! /bin/bash
Bernhard M. Wiedemann 6ebc4a
169da8
# This is a list of toolchain-dependent configs. That is: only those which
169da8
# change .config when gcc, ld, or similar changes.
169da8
#
169da8
# please keep them sorted alphabetically
169da8
declare -a IGNORED_CONFIGS_RE=(
03d2ce
	'AS_HAS_[A-Z0-9_]*'
6abda2
	'AS_VERSION'
165097
	'AS_WRUSS' # x86_32
7999ff
	'BUILTIN_RETURN_ADDRESS_STRIPS_PAC'
169da8
	'CC_CAN_[A-Z_]*'
169da8
	'CC_HAS_[A-Z_]*'
169da8
	'CC_HAVE_[A-Z_]*'
169da8
	'CC_VERSION_TEXT'
3ff8bf
	'DYNAMIC_SIGFRAME'
026f08
	'FTRACE_MCOUNT_USE_[A-Z_]*'
58ca2e
	'GCC_ASM_GOTO_OUTPUT_WORKAROUND'
169da8
	'GCC_VERSION'
17e6c7
	'G*CC[0-9]*_NO_[A-Z_]*'
169da8
	'HAVE_[A-Z]*_COMPILER'
de2733
	'HAVE_SHADOW_CALL_STACK'
169da8
	'LD_VERSION'
165097
	'OBJTOOL'
393f6b
	'PAHOLE_HAS_[A-Z0-9_]*'
735e77
	'PAHOLE_VERSION'
3ff8bf
	'RISCV_ISA_[A-Z_]*'
c3597e
	'TOOLCHAIN_HAS_[A-Z_]*'
4109d3
	'TOOLCHAIN_NEEDS_[A-Z_]*'
169da8
	'TOOLS_SUPPORT_[A-Z_]*'
169da8
)
169da8
169da8
declare -a SED_ARGS=()
169da8
169da8
for CONFIG in "${IGNORED_CONFIGS_RE[@]}"; do
169da8
	SED_ARGS+=(-e "/\\<CONFIG_$CONFIG\\>/ d")
169da8
done
169da8
169da8
SED_ARGS+=(
169da8
	-e '/^# .* is not set$/p'
169da8
	-e '/^$\|^#/d'
169da8
)
169da8
Bernhard M. Wiedemann 6ebc4a
differences="$(
169da8
    diff -bU0 <(sed "${SED_ARGS[@]}" "$1" | sort) \
169da8
	      <(sed "${SED_ARGS[@]}" "$2" | sort) \
Bernhard M. Wiedemann 6ebc4a
    | grep '^[-+][^-+]'
Bernhard M. Wiedemann 6ebc4a
)" || true
Bernhard M. Wiedemann 6ebc4a
if [ -n "$differences" ]; then
Bernhard M. Wiedemann 6ebc4a
    echo
Bernhard M. Wiedemann 6ebc4a
    echo "Changes after running \`make oldconfig':"
Bernhard M. Wiedemann 6ebc4a
    echo "$differences"
Bernhard M. Wiedemann 6ebc4a
    echo
Bernhard M. Wiedemann 6ebc4a
    if echo "$differences" | grep -q '^+' ; then
Bernhard M. Wiedemann 6ebc4a
	exit 1
Bernhard M. Wiedemann 6ebc4a
    fi
Bernhard M. Wiedemann 6ebc4a
fi