Files
applets
arch
archival
console-tools
coreutils
debianutils
docs
e2fsprogs
editors
examples
findutils
include
init
libbb
libpwdgrp
loginutils
mailutils
miscutils
modutils
networking
printutils
procps
runit
scripts
basic
kconfig
Kbuild
Kbuild.include
Makefile.IMA
Makefile.build
Makefile.clean
Makefile.host
Makefile.lib
bb_release
bloat-o-meter
checkhelp.awk
checkstack.pl
cleanup_printf2puts
defconfig
echo.c
find_bad_common_bufsiz
find_stray_common_vars
fix_ws.sh
gcc-version.sh
individual
memusage
mkconfigs
mkdiff_obj
mkdiff_obj_bloat
mkmakefile
objsizes
randomtest
randomtest.loop
sample_pmap
showasm
trylink
selinux
shell
sysklogd
testsuite
util-linux
.gitignore
.indent.pro
AUTHORS
Config.in
INSTALL
LICENSE
Makefile
Makefile.custom
Makefile.flags
Makefile.help
README
TODO
TODO_config_nommu
busybox/scripts/randomtest
Denys Vlasenko 31e2e7b863 randomconfig fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-12-12 02:42:35 +01:00

84 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
# Select which libc to build against
libc="glibc" # assumed native
# static, cross-compilation
libc="uclibc"
# x86 32-bit:
uclibc_cross="i486-linux-uclibc-"
# My system has strange prefix for x86 64-bit uclibc:
#uclibc_cross="x86_64-pc-linux-gnu-"
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="'"$uclibc_cross"'"' >>.config
echo 'CONFIG_STATIC=y' >>.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
}
# Regenerate .config with default answers for yanked-off options
{ yes "" | make oldconfig >/dev/null; } || exit 1
nice -n 10 make $MAKEOPTS 2>&1 | tee -a make.log
test -x busybox && {
cd ..
rm -rf "$dir"
exit 0
}
cd ..
mv "$dir" "failed.$dir"
exit 1