diff options
Diffstat (limited to 'scripts/randomtest')
-rwxr-xr-x | scripts/randomtest | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/scripts/randomtest b/scripts/randomtest new file mode 100755 index 000000000..0450f76f0 --- /dev/null +++ b/scripts/randomtest @@ -0,0 +1,99 @@ +#!/bin/sh + +# Select which libc to build against +libc="glibc" # assumed native +# static cross-compiled (i486-linux-uclibc-XXX) +libc="uclibc" + +test -d tree || exit 1 + +dir=test.$$ +while test -e "$dir" -o -e failed."$dir"; do + dir=test."$RANDOM" +done + +cp -dpr tree "$dir" || exit 1 +cd "$dir" || exit 1 + +echo "Running randconfig test in $dir..." >&2 + +make randconfig >/dev/null || exit 1 + +cat .config \ +| grep -v ^CONFIG_DEBUG_PESSIMIZE= \ +| grep -v CONFIG_WERROR \ +| cat >.config.new +mv .config.new .config +echo CONFIG_WERROR=y >>.config + +test "$libc" = glibc && { +cat .config \ +| grep -v ^CONFIG_SELINUX= \ +| grep -v ^CONFIG_EFENCE= \ +| grep -v ^CONFIG_DMALLOC= \ +| cat >.config.new +mv .config.new .config +} + +test "$libc" = uclibc && { +cat .config \ +| grep -v ^CONFIG_SELINUX= \ +| grep -v ^CONFIG_EFENCE= \ +| grep -v ^CONFIG_DMALLOC= \ +| grep -v ^CONFIG_BUILD_LIBBUSYBOX= \ +| grep -v ^CONFIG_PAM= \ +| grep -v ^CONFIG_TASKSET= \ +| grep -v ^CONFIG_FEATURE_ASSUME_UNICODE= \ +| grep -v ^CONFIG_PIE= \ +| grep -v CONFIG_STATIC \ +| grep -v CONFIG_CROSS_COMPILER_PREFIX \ +| cat >.config.new +mv .config.new .config +echo 'CONFIG_CROSS_COMPILER_PREFIX="i486-linux-uclibc-"' >>.config +echo 'CONFIG_STATIC=y' >>.config +} + +# If NOMMU, remove some things +grep -q ^CONFIG_NOMMU= .config && { +cat .config \ +| grep -v ^CONFIG_ASH= \ +| grep -v ^CONFIG_FEATURE_SH_IS_ASH= \ +| cat >.config.new +mv .config.new .config +} + +# If STATIC, remove some things +# PAM with static linking is probably pointless +# (but I need to try - now I don't have libpam.a on my system, only libpam.so) +grep -q ^CONFIG_STATIC= .config && { +cat .config \ +| grep -v ^CONFIG_PAM= \ +| cat >.config.new +mv .config.new .config +} + +# CONFIG_NOMMU + CONFIG_HUSH + CONFIG_WERROR don't mix +# (produces warning) +grep -q ^CONFIG_NOMMU= .config && \ +grep -q ^CONFIG_HUSH= .config && \ +{ +cat .config \ +| grep -v ^CONFIG_WERROR= \ +| cat >.config.new +mv .config.new .config +} + +# Regenerate .config with default answers for yanked-off options +{ yes "" | make oldconfig >/dev/null; } || exit 1 + +nice -n 10 make + +test -x busybox && { + cd .. + rm -rf "$dir" + exit 0 +} + +cd .. +mv "$dir" failed."$dir" +exit 1 |