Merge pull request #928 from kernelkit/update-generate-defconfig

generate-defconfig.sh: Allow to have multiple change configurations
This commit is contained in:
Tobias Waldekranz
2025-02-04 14:24:37 +01:00
committed by GitHub
+32 -26
View File
@@ -1,5 +1,6 @@
#!/bin/sh
# Create new defconfigs by only applying the changes from a standard defconfig
set -e
SCRIPT_DIR="$(readlink -f $(dirname -- "$0"))"
@@ -7,28 +8,27 @@ MERGE_CONFIG="${SCRIPT_DIR}/../buildroot/support/kconfig/merge_config.sh"
usage() {
cat <<EOF
Usage: $(basename "$0") -b BASE_CONFIG -c CHANGES -o OUTPUT_FILE
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
-c, --changes CHANGES Path to config changes to apply (can be specified multiple times)
-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
-c changes/extra-features.conf \\
-o configs/aarch64_custom_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
@@ -38,31 +38,34 @@ check_file() {
fi
}
base=""
output=""
changes=""
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
;;
-b|--base)
base="$2"
shift 2
;;
-c|--changes)
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
if [ -z "$base" ] || [ -z "$changes" ] || [ -z "$output" ]; then
usage
exit 1
fi
if [ ! -x "$MERGE_CONFIG" ]; then
@@ -71,10 +74,13 @@ if [ ! -x "$MERGE_CONFIG" ]; then
fi
check_file "$base" "Base config"
check_file "$changes" "Changes config"
for change in $changes; do
check_file "$change" "Changes config"
done
TMPDIR=`mktemp -d`
$MERGE_CONFIG -O "$TMPDIR" "$base" "$changes"
O="$TMPDIR" make savedefconfig
mv "$TMPDIR"/defconfig "$output"
rm -r "$TMPDIR"