mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-31 13:03:02 +02:00
Useful to only create a new image with only small diff with for example aarch64_defconfig. example: If the only diff is the VENDOR, instead of KernelKit you want 'foobar'. create a file with the change: INFIX_VENDOR="foobar" and call ./utils/generate-defconfig.sh -b aarch64_defconfig -c foobar-diff.conf -o configs/foobar_defconfig
81 lines
1.7 KiB
Bash
Executable File
81 lines
1.7 KiB
Bash
Executable File
#!/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"
|