diff options
-rw-r--r-- | config_test/Makefile | 6 | ||||
-rwxr-xr-x | config_test/run_tests | 40 | ||||
-rw-r--r-- | configure.in | 29 |
3 files changed, 50 insertions, 25 deletions
diff --git a/config_test/Makefile b/config_test/Makefile index 295696e9..1064d569 100644 --- a/config_test/Makefile +++ b/config_test/Makefile @@ -1,9 +1,11 @@ -all: child_test.c +all: child_test + +child_test: child_test.c gcc -o child_test child_test.c test: - ./run_tests 10 + ./run_tests 10 100 > /dev/null clean: rm -f child_test diff --git a/config_test/run_tests b/config_test/run_tests index e41db232..e7db3cae 100755 --- a/config_test/run_tests +++ b/config_test/run_tests @@ -1,16 +1,30 @@ #!/bin/ksh +# $1 is the number of iterations to run +# If $2 is specified, this is the number of times you run each iteration +# If there is a fail at run, exit 1 +# Prints to stdout # of successes and passes +# Prints to stderr a dot for each run -i=0 -success=0 -fail=0 -while [[ $i -lt $1 ]] ; do - ./child_test - if [[ $? -eq 0 ]] ; then - success=$(($success+1)) - else - fail=$((fail+1)) - fi - i=$(($i+1)) +total_runs=$2 +[[ -z $total_runs ]] && total_runs=1 +run=1 +while [[ $run -le $total_runs ]] ; do + i=0 + success=0 + fail=0 + while [[ $i -lt $1 ]] ; do + ./child_test + if [[ $? -eq 0 ]] ; then + success=$(($success+1)) + else + fail=$((fail+1)) + fi + i=$(($i+1)) + done + print "Success=$success Fail=$fail" + [[ $fail -gt 0 ]] && exit 1 + run=$(($run+1)) + [[ $total_runs -gt 1 ]] && print -u2 -n "." done -print "Success=$success Fail=$fail" -[[ $fail -gt 0 ]] && exit 1 +[[ $total_runs -gt 1 ]] && print -u2 +exit 0 diff --git a/configure.in b/configure.in index be9fe83a..9303850a 100644 --- a/configure.in +++ b/configure.in @@ -1680,17 +1680,26 @@ dnl Wierd problem where ECHILD is returned from a wait call in error dnl Only appears to affect nslookup and dig calls. Only affects redhat around dnl 2.6.9-11 (okay in 2.6.9-5). Redhat investigating root cause dnl We patch plugins/popen.c -dnl Need to add smp because uname different on those. May need to check -dnl Fedora Core too in future -if echo $ac_cv_uname_r | egrep "\.EL(smp)?$" >/dev/null 2>&1 ; then - AC_MSG_CHECKING(for redhat spopen problem) - ( cd config_test && make && make test ) > /dev/null 2>&1 - if test $? -eq 0 ; then - AC_MSG_RESULT(okay) - else - AC_MSG_RESULT(error) - AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, "Problem on redhat with spopen") +dnl Need to add smp because uname different on those +dnl Can force patch to be applied with --enable-redhat-pthread-workaround +AC_ARG_ENABLE(redhat-pthread-workaround, + AC_HELP_STRING([--enable-redhat-pthread-workaround], + [force Redhat patch to be applied (default: test system)]), + [ac_cv_enable_redhat_pthread_workaround=$enableval], + [ac_cv_enable_redhat_pthread_workaround=test]) +if test "$ac_cv_enable_redhat_pthread_workaround" = "test" ; then + if echo $ac_cv_uname_r | egrep "\.EL(smp)?$" >/dev/null 2>&1 ; then + AC_MSG_CHECKING(for redhat spopen problem) + ( cd config_test && make && make test ) > /dev/null 2>&1 + if test $? -eq 0 ; then + AC_MSG_RESULT(okay) + else + AC_MSG_RESULT(error) + AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, [Workaround on redhat in spopen]) + fi fi +elif test "$ac_cv_enable_redhat_pthread_workaround" = "yes" ; then + AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, [Forced workaround on redhat in spopen]) fi dnl External libraries - see ACKNOWLEDGEMENTS |