Passed cilium connectivity tests as a worker node

This commit is contained in:
2026-04-29 02:34:04 +08:00
parent e86b3b3383
commit 6d290a97ae
10 changed files with 614 additions and 277 deletions

127
kernel-build/ensure-kconfig.sh Executable file
View File

@@ -0,0 +1,127 @@
#!/bin/sh
set -eu
CONFIG_FILE="${1:-}"
EXPECTED_FILE="${2:-}"
if [ -z "$CONFIG_FILE" ] || [ -z "$EXPECTED_FILE" ]; then
echo "usage: $0 <resolved-.config> <expected-fragment.config>" >&2
exit 2
fi
if [ ! -f "$CONFIG_FILE" ]; then
echo "error: config file not found: $CONFIG_FILE" >&2
exit 2
fi
if [ ! -f "$EXPECTED_FILE" ]; then
echo "error: expected config fragment not found: $EXPECTED_FILE" >&2
exit 2
fi
failed=0
normalize_expected_line() {
line="$1"
case "$line" in
CONFIG_*=y|CONFIG_*=m)
echo "$line"
;;
CONFIG_*=n)
sym="${line%%=*}"
echo "# $sym is not set"
;;
"# CONFIG_"*" is not set")
echo "$line"
;;
CONFIG_*=*)
echo "$line"
;;
*)
return 1
;;
esac
}
is_disabled_expected() {
expected="$1"
case "$expected" in
"# CONFIG_"*" is not set")
return 0
;;
*)
return 1
;;
esac
}
symbol_from_expected() {
expected="$1"
case "$expected" in
CONFIG_*=*)
echo "${expected%%=*}"
;;
"# CONFIG_"*" is not set")
printf '%s\n' "$expected" | sed 's/^# \(CONFIG_[^ ]*\) is not set$/\1/'
;;
*)
return 1
;;
esac
}
check_expected_line() {
expected="$1"
sym="$(symbol_from_expected "$expected")"
actual="$(grep -E "^${sym}=|^# ${sym} is not set$" "$CONFIG_FILE" || true)"
if [ "$actual" = "$expected" ]; then
return 0
fi
# For disabled symbols, absence from the final .config is acceptable.
# Some Kconfig symbols do not exist on this arch/tree, and missing still means "not enabled".
if is_disabled_expected "$expected" && [ -z "$actual" ]; then
return 0
fi
echo "kconfig mismatch: $sym" >&2
echo " expected: $expected" >&2
if [ -n "$actual" ]; then
echo " actual: $actual" >&2
else
echo " actual: <missing>" >&2
fi
failed=1
}
while IFS= read -r raw || [ -n "$raw" ]; do
# Strip leading/trailing whitespace.
line="$(printf '%s\n' "$raw" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')"
# Ignore blanks.
[ -z "$line" ] && continue
# Ignore normal comments, but keep '# CONFIG_FOO is not set'.
case "$line" in
"# CONFIG_"*" is not set") ;;
"#"*) continue ;;
esac
expected="$(normalize_expected_line "$line" || true)"
[ -z "${expected:-}" ] && continue
check_expected_line "$expected"
done < "$EXPECTED_FILE"
if [ "$failed" -ne 0 ]; then
echo "error: resolved kernel config does not satisfy $EXPECTED_FILE" >&2
exit 1
fi
echo "kernel config satisfies $EXPECTED_FILE"