#!/bin/sh
# Exhaust(ive, ing) (Mean, Multi) (Test, Trouble)
# Copyright (c) 2002-2011 IBM All Rights Reserved
-#
# Builds ICU a whole lotta times and with different options
# Set the options below and execute this script with the shell.
# You can also use the uconfigtest.local file to override the BUILD_DIR
# and ICUPLATFORM variables.
+# It can be handy to run 'tail -F uconfigtest/stats' in another window to see where things are.
+
#------------------- Find full path names -----------------------
JOPT=-j2
# Build root - tools/release/c/uconfigtest
BUILD_DIR=${BUILD_DIR:-${S}/uconfigtest}
+FAILS=${BUILD_DIR}/fails
+STATS=${BUILD_DIR}/stats
+
+>${FAILS}
+>${STATS}
+echo >> ${STATS}
+echo >> ${STATS}
+
# the runConfigureICU platform name
ICUPLATFORM=${ICUPLATFORM:-Linux}
SRC_DIR=${SRC_DIR:-${ICU}/source}
# ------------ End of config variables
-
-# Prepare uconfig.h
UCONFIG_H=$SRC_DIR/common/unicode/uconfig.h
-if grep -q myconfig.h $UCONFIG_H ;
+UCONFIG_LOCAL_H=uconfig_local.h
+UCONFIG_USE_LOCAL=UCONFIG_USE_LOCAL
+# Prepare uconfig.h
+if grep -q ${UCONFIG_LOCAL_H} $UCONFIG_H ;
then
echo "# $UCONFIG_H already contains our patch, no change"
else
mv $UCONFIG_H ${UCONFIG_H}.orig
cat > $UCONFIG_H <<EOF
-#if defined(IN_UCONFIGTEST)
-#include "myconfig.h"
+#if defined(${UCONFIG_USE_LOCAL})
+#include ${UCONFIG_LOCAL_H}"
#endif
/* for uconfigtest.sh - you may REMOVE above this line */
/* ----------------------------------------------------------- */
echo
echo " build to ${BUILD_DIR}/${NAME} and install in ${BUILD_DIR}/I${NAME} "
echo
+
+ echo "${NAME} ---------------------------------------" >> ${STATS}
}
# Clean up the old tree before building again
clean()
{
+ stats clean
echo cleaning ${BUILD_DIR}/${NAME} and ${BUILD_DIR}/I${NAME}
rm -rf ${BUILD_DIR}/I${NAME} ${BUILD_DIR}/${NAME}
mkdir -p ${BUILD_DIR}/${NAME}
# Run configure with the appropriate options (out of source build)
config()
{
+ stats config
mkdir -p ${BUILD_DIR}/${NAME} 2>/dev/null
cd ${BUILD_DIR}/${NAME}
mkdir emtinc 2>/dev/null
# myconfig.h
- cat > emtinc/myconfig.h <<EOF
+ cat > emtinc/${UCONFIG_LOCAL_H} <<EOF
/* NAME=${NAME} */
/* UCONFIGS=${UCONFIGS} */
/* CPPFLAGS=${CPPFLAGS} */
EOF
for what in `echo $UCONFIGS`;
do
- echo "#define UCONFIG_${what} 1" >> emtinc/myconfig.h
+ echo "#define UCONFIG_${what} 1" >> emtinc/${UCONFIG_LOCAL_H}
done
- cat >> emtinc/myconfig.h <<EOF
+ cat >> emtinc/${UCONFIG_LOCAL_H} <<EOF
#endif
EOF
- CPPFLAGS="${CPPFLAGS} -DIN_UCONFIGTEST -I${BUILD_DIR}/${NAME}/emtinc"
+ CPPFLAGS="${CPPFLAGS} -D${UCONFIG_USE_LOCAL} -I${BUILD_DIR}/${NAME}/emtinc"
echo "CPPFLAGS=\"$CPPFLAGS\" Configure $COPTS --srcdir=$SRC_DIR"
$SRC_DIR/runConfigureICU ${ICUPLATFORM} $COPTS --prefix=${BUILD_DIR}/I${NAME} --srcdir=$SRC_DIR 2>&1 > ${BUILD_DIR}/${NAME}/config.out
}
+stats()
+{
+ STATUS="${NAME}: ${1} "`date`
+ echo ${STATUS} >> ${STATS}
+ echo "\e[1m*** ${NAME} ********* ${1} ************* \e[m"
+}
+
+fail()
+{
+ FAILURE="error: ${BUILD_DIR}/${NAME}: ${1} "`date`
+ echo ${FAILURE} >> ${FAILS}
+ echo ${FAILURE} >> ${STATS}
+ echo "\e[7m${FAILURE}\e[m"
+}
+
# Do an actual build
bld()
{
##*## every line:
##*## . . . 2>&1 | tee -a ./bld.log | sed -e "s/^/${NAME}: /"
cd ${BUILD_DIR}/${NAME}
- /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.all make -k ${JOPT} all
- /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.install make -k install INSTALL_DATA='ln -svf '
- /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.il make -k install-local
- /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.chk make -k ${JOPT} check INTLTEST_OPTS=-w CINTLTST_OPTS=-w
- PATH=${BUILD_DIR}/I${NAME}/bin:$PATH make -C ${BUILD_DIR}/${NAME}/test/hdrtst/ check
+ stats "make -k ${JOPT} all ${1}"
+ /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.all make -k ${JOPT} all ${1} DEPS= || fail make
+ stats install
+ /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.install make -k install ${1} DEPS= INSTALL_DATA='ln -svf ' || fail install
+ /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.il make -k install-local ${1} DEPS= || fail install-local
+ stats check
+ /usr/bin/time -o ${BUILD_DIR}/times/${NAME}.chk make -k ${JOPT} check ${1} INTLTEST_OPTS=-w CINTLTST_OPTS=-w DEPS= || fail check
+ stats hdrtst
+ PATH=${BUILD_DIR}/I${NAME}/bin:$PATH make -k -C ${BUILD_DIR}/${NAME}/test/hdrtst/ DEPS= check || fail hdrtst
}
+
# Do a complete cycle for a run
+# arg: opts to build
doit()
{
-ban ; clean ; config ; bld
+ban ; clean ; config ; bld ${1}
}
# Set up the variables for convenience
# Now, come the actual test runs
# Each one sets a NAME, and CPPFLAGS or other flags, and calls doit
+######################
+# DEFAULT
+export NAME=DEFAULT
+export UCONFIGS=""
+export CPPFLAGS=""
+doit
+USE_PREBUILT_DATA="ICUDATA_SOURCE_ARCHIVE=`echo ${BUILD_DIR}/DEFAULT/data/out/tmp/*.dat`"
+######################
+
######################
# NO_MST
export NAME=NO_MST
export NAME=NO_RGX
export UCONFIGS="$NO_RGX"
export CPPFLAGS=""
-doit
+doit ${USE_PREBUILT_DATA}
######################
######################
export NAME=NO_FIO
export UCONFIGS="$NO_FIO"
export CPPFLAGS=""
-doit
+doit ${USE_PREBUILT_DATA}
######################
######################
doit
######################
-######################
-# DEFAULT
-export NAME=DEFAULT
-export UCONFIGS=""
-export CPPFLAGS=""
-doit
-######################
-
NAME=done
ban
echo "grep status ${BUILD_DIR}/times/*"
grep status ${BUILD_DIR}/times/*
+if [ -s ${FAILS} ];
+then
+ echo "Failures: "
+ cat ${FAILS}
+fi
+