#!/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 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