Merge pull request #893 from kernelkit/add-merge-script

Add script for merging defconfigs
This commit is contained in:
Mattias Walström
2025-01-21 14:39:01 +01:00
committed by GitHub
+80
View File
@@ -0,0 +1,80 @@
#!/bin/sh
# Create new defconfigs by only applying the changes from a standard defconfig
set -e
SCRIPT_DIR="$(readlink -f $(dirname -- "$0"))"
MERGE_CONFIG="${SCRIPT_DIR}/../buildroot/support/kconfig/merge_config.sh"
usage() {
cat <<EOF
Usage: $(basename "$0") -b BASE_CONFIG -c CHANGES -o OUTPUT_FILE
Create a new defconfig by applying changes to a base configuration.
Required Options:
-b, --base BASE Path to base defconfig file
-c, --changes CHANGES Path to config changes to apply
-o, --output OUTPUT Path to output defconfig file
Example:
$(basename "$0") \\
-b configs/aarch64_defconfig \\
-c changes/no-containers.conf \\
-o configs/aarch64_wo_containers_defconfig
EOF
exit 1
}
check_file() {
file="$1"
type="$2"
if [ ! -f "$file" ]; then
echo "Error: $type file does not exist: $file" >&2
exit 1
elif [ ! -r "$file" ]; then
echo "Error: $type file is not readable: $file" >&2
exit 1
fi
}
while [ $# -gt 0 ]; do
case $1 in
-b|--base)
base="$2"
shift 2
;;
-c|--changes)
changes="$2"
shift 2
;;
-o|--output)
output="$2"
shift 2
;;
*)
usage
exit 1
;;
esac
done
if [ -z $output ] || [ -z $changes ] || [ -z $output ]; then
usage
exit 1
fi
if [ ! -x "$MERGE_CONFIG" ]; then
echo "Error: merge_config.sh not found or not executable at: $MERGE_CONFIG"
exit 1
fi
check_file "$base" "Base config"
check_file "$changes" "Changes config"
TMPDIR=`mktemp -d`
$MERGE_CONFIG -O "$TMPDIR" -n "$base" "$changes"
O="$TMPDIR" make savedefconfig
mv "$TMPDIR"/defconfig "$output"
rm -r "$TMPDIR"