# x86_64
CONFIGS="x86_64:default"
-# i686
-CONFIGS="${CONFIGS} i686:legacy i686:default"
-
# aarch64
CONFIGS="${CONFIGS} aarch64:default"
# armv7hl
-CONFIGS="${CONFIGS} armv7hl:lpae armv7hl:default"
-
-# armv5tel
-CONFIGS="${CONFIGS} armv5tel:default"
+CONFIGS="${CONFIGS} armv7hl:default"
PLATFORMS="x86 arm"
declare -A SUBPLATFORMS
[arm]="arm64 arm32"
)
+search_kernel_dir() {
+ local dir
+ for dir in /builddir/source/linux-*; do
+ if [ -d "${dir}" ]; then
+ echo "${dir}"
+ break
+ fi
+ done
+}
+
function get_platform() {
local arch="${1}"
arm*)
echo "arm"
;;
- x86_64|i?86)
+ x86_64)
echo "x86"
;;
esac
fi
done
- local config_mode="oldnoconfig"
+ local config_mode="olddefconfig"
local extra_configs
while [ $# -gt 0 ]; do
case "${1}" in
case "${arch}:${flavour}" in
# x86
x86_64:default)
- configs="${configs} config-x86-generic config-x86_64-default"
- ;;
- i686:default)
- configs="${configs} config-x86-generic config-i686-default"
- ;;
- i686:legacy)
- configs="${configs} config-x86-generic config-i686-default"
- configs="${configs} config-i686-legacy"
+ configs="${configs} config-x86-generic"
;;
# ARM64
;;
# ARM
- armv5tel:default)
- configs="${configs} config-arm-generic config-arm32-generic"
- configs="${configs} config-armv5tel-default"
- ;;
armv7hl:default)
configs="${configs} config-arm-generic config-arm32-generic"
- configs="${configs} config-armv7hl-default"
- ;;
- armv7hl:lpae)
- configs="${configs} config-arm-generic config-arm32-generic"
- configs="${configs} config-armv7hl-default config-armv7hl-lpae"
;;
*)
echo >&2 "ERROR: Invalid parameters given: $@"
for config in ${configs}; do
cat ${tmp_out} > ${tmp_in}
perl ${SCRIPTS_DIR}/merge.pl \
- ${config} ${tmp_in} > ${tmp_out}
+ ${tmp_in} ${config} > ${tmp_out}
done
if [ "${config_mode}" != "none" ]; then
- echo "Running 'make oldnoconfig' for ${arch} (${flavour})..."
+ echo "Running 'make olddefconfig' for ${arch} (${flavour})..."
local kernel_arch="$(get_kernel_arch "${arch}")"
(
cd ${KERNEL_DIR}
}
# This function runs an interactive "make oldconfig".
-function make_oldconfig() {
- local arch="x86_64"
- local kernel_arch="x86"
+function make_config() {
+ local action="${1}"
+ local arch="${2}"
+
+ # Default to x86_64 when no arch is given
+ if [ -z "${arch}" ]; then
+ arch="x86_64"
+ fi
+
+ # Detect kernel arch
+ local kernel_arch="$(get_kernel_arch "${arch}")"
local flavour="default"
local config_in=$(mktemp)
merge_config ${arch} ${flavour} ${config_in} --mode=none
(
- cd ${KERNEL_DIR}
+ pushd ${KERNEL_DIR}
cat ${config_in} > .config
echo "You may now edit the configuration..."
-
- local option
- select option in oldconfig menuconfig oldnoconfig startover quit; do
- case "${option}" in
- oldconfig|menuconfig|oldnoconfig)
- make ARCH=${kernel_arch} ${option}
- ;;
- startover)
- cat ${config_in} > .config
- ;;
- quit)
- break
- ;;
- esac
- done
+ make ARCH=${kernel_arch} "${action}"
cat .config > ${config_out}
+ popd
)
${SCRIPTS_DIR}/configdiff.py ${config_in} ${config_out} > ${diff_out}
# config-generic
# Intersection of all files.
-# config-x86-generic
-# Diff of (intersection of (i686-{default,legacy} and x86_64-default)
-# against config-generic).
# config-x86-x86_64
# Diff against merge of (config-generic and config-x86-generic).
merge_config ${arch} ${flavour} ${filename} ${extra_configs}
- # Do not include leaf configuration.
- case "${config}" in
- armv7hl:lpae)
- continue
- ;;
- i686:legacy)
- continue
- ;;
- esac
-
platform="$(get_platform "${arch}")"
subplatform="$(get_subplatform "${arch}")"
filename=${tmpdir}/config-${arch}-${flavour}
case "${config}" in
- aarch64:default)
+ aarch64:default|armv7hl:default|x86_64:default)
# Virtual configuration
rm -f ${filename}
continue
;;
- armv7hl:lpae|i686:legacy)
- # Legacy depends directly on the default configuration.
- ${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${arch}-default \
- ${filename} > ${filename}.tmp
- ;;
*)
platform="$(get_subplatform "${arch}" || get_platform "${arch}")"
${SCRIPTS_DIR}/configdiff.py ${tmpdir}/config-${platform}-common \
rm -rf ${tmpdir}
}
-KERNEL_DIR=
+KERNEL_DIR="$(search_kernel_dir)"
# Parse commandline.
while [ $# -gt 0 ]; do
arg=${1}; shift
case "${arg}" in
- --kernel-dir=*)
- KERNEL_DIR=${arg#--kernel-dir=}
- ;;
help|"")
echo "${0} - available commands:"
echo " * merge <arch> <flavour> <output filename>"
- echo " * update ..."
+ echo " * menuconfig"
echo " * oldconfig"
- echo ""
- echo " You must always set --kernel-dir=..."
+ echo " * olddefconfig"
exit 0
;;
- merge|oldconfig|update)
+ listnewconfig|menuconfig|merge|oldconfig|olddefconfig)
action=${arg}
break
;;
done
if [ -z "${KERNEL_DIR}" ]; then
- echo >&2 "--kernel-dir=... was not set!"
+ echo >&2 "KERNEL_DIR was not set!"
exit 2
fi
merge_config $@
exit $?
;;
- oldconfig)
- make_oldconfig
- exit $?
- ;;
- update)
- diff_configs $@
+ listnewconfig|menuconfig|oldconfig|olddefconfig)
+ make_config "${action}" "$@"
exit $?
;;
esac