#!/bin/bash # # This script is one of the two main driver scripts for testing the bisector. # It should be used to test the bisection tool, if you do NOT want to test # the compiler wrapper (e.g. don't bother with POPULATE_GOOD & POPULATE_BAD # stages). # # It makes sure the good & bad object directories exist (soft links); checks # to see if it needs to compile the good & bad sources & populate the # directories; does so if needed. # # Then it calls main-bisect-test, which runs the actual bisection tests. This # script assumes it is being run from the parent directory. # # NOTE: Your PYTHONPATH environment variable needs to include both the # toolchain-utils directory and the # toolchain-utils/binary_search_tool directory for these testers to work. # SAVE_DIR=`pwd` DIR=full_bisect_test if [[ ! -d "${DIR}" ]] ; then echo "Cannot find ${DIR}; you are running this script from the wrong place." echo "You need to run this from toolchain-utils/binary_search_tool ." exit 1 fi # Set up object file soft links cd ${DIR} rm -f good-objects rm -f bad-objects ln -s good-objects-permanent good-objects ln -s bad-objects-permanent bad-objects if [[ ! -d work ]] ; then mkdir work fi # Check to see if the object files need to be built. if [[ ! -f good-objects-permanent/build.o ]] ; then # 'make clean' rm -f work/*.o # skip populate stages in bisect wrapper unset BISECT_STAGE # Set up the 'good' source files. cd .. ${DIR}/make_sources_good.sh cd ${DIR} # Build the 'good' .o files & copy to appropriate directory. ./build.sh mv work/*.o good-objects-permanent/. # Set up the 'bad' source files. cd .. ${DIR}/make_sources_bad.sh cd ${DIR} # Build the 'bad' .o files & copy to appropriate directory. ./build.sh mv work/*.o bad-objects-permanent/. fi # Now we're ready for the main test. cd ${SAVE_DIR} ${DIR}/main-bisect-test.sh