You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.3 KiB
105 lines
2.3 KiB
#!/bin/bash
|
|
|
|
RETVAL=0
|
|
ARCHES="arm64 arm x86"
|
|
if [ -z "$ANDROID_BUILD_TOP" ]; then
|
|
echo "ANDROID_BUILD_TOP not set, exiting"
|
|
exit 1
|
|
fi
|
|
AFRAGS="$ANDROID_BUILD_TOP/kernel/configs"
|
|
KERNEL_VERSIONS=`ls -d $AFRAGS/android-* | xargs -n 1 basename`
|
|
|
|
check_fragment()
|
|
{
|
|
ERRORS=0
|
|
|
|
while read line; do
|
|
grep -q "$line" .config
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Error, $line not found in merged config."
|
|
ERRORS=1
|
|
fi
|
|
done < <(grep -v -E "^# " $1)
|
|
|
|
if [ $ERRORS -ne 0 ]
|
|
then
|
|
echo "Errors encountered while checking $1"
|
|
RETVAL=1
|
|
else
|
|
echo "Fragment $1 is okay"
|
|
fi
|
|
echo ""
|
|
}
|
|
|
|
check_arches()
|
|
{
|
|
for arch in $ARCHES; do
|
|
rm .config
|
|
make ARCH=$arch allnoconfig
|
|
FRAGMENTS="$AFRAGS/$version/android-base.config \
|
|
$AFRAGS/$version/android-recommended.config"
|
|
if [ -f $AFRAGS/$version/android-base-$arch.config ]; then
|
|
FRAGMENTS="$FRAGMENTS $AFRAGS/$version/android-base-$arch.config"
|
|
fi
|
|
if [ -f $AFRAGS/$version/android-recommended-$arch.config ]; then
|
|
FRAGMENTS="$FRAGMENTS $AFRAGS/$version/android-recommended-$arch.config"
|
|
fi
|
|
ARCH=$arch scripts/kconfig/merge_config.sh .config $FRAGMENTS &> /dev/null
|
|
for f in $FRAGMENTS; do
|
|
check_fragment $f
|
|
done
|
|
done
|
|
}
|
|
|
|
check_configs()
|
|
{
|
|
for version in $KERNEL_VERSIONS; do
|
|
echo "Changing to $KERNEL_PATH"
|
|
cd $KERNEL_PATH
|
|
git checkout $version
|
|
check_arches
|
|
done
|
|
}
|
|
|
|
show_help()
|
|
{
|
|
cat << EOF
|
|
Usage: ${0##*/} [-h] [-a arches] [-v versions] -k path-to-kernel
|
|
Check that the kernel config fragments are consistent with the Kconfig files
|
|
in the given kernel versions. This requires an android common kernel repo to
|
|
be checked out and made available to this script via the -k option or the
|
|
KERNEL_PATH environment variable. Note this script does not verify the
|
|
configs in the conditional XML fragments.
|
|
|
|
-h display this help and exit
|
|
-a arches quote-enclosed whitespace separated list of
|
|
architectures to check, valid architectures are
|
|
arm64, arm, and x86
|
|
-k kernel path to android common kernel repo
|
|
-v versions quote-enclosed whitespace separated list of
|
|
kernel versions to check (android-x.y)
|
|
EOF
|
|
}
|
|
|
|
OPTIND=1
|
|
while getopts "h?a:v:k:" opt; do
|
|
case "$opt" in
|
|
h|\?)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
a)
|
|
ARCHES="$OPTARG"
|
|
;;
|
|
v)
|
|
KERNEL_VERSIONS="$OPTARG"
|
|
;;
|
|
k)
|
|
KERNEL_PATH="${OPTARG/#\~/$HOME}"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
check_configs
|