This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] contrib/reghunt: parameterize date command
- From: Janis Johnson <janis187 at us dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 24 Jun 2003 10:19:08 -0700
- Subject: [PATCH] contrib/reghunt: parameterize date command
Way back at the GCC Summit, Kaveh asked me to parameterize the use of
'date' in the regression hunting scripts to make them easier to use
on systems where GNU date is not the default. I've been using these
versions of reg_search and reg_periodic recently and they work fine,
so these changes have been committed.
2003-06-24 Janis Johnson <janis187@us.ibm.com>
* reg_search: Replace existing uses of DATE with MADE_DATE and
use DATE for the date command.
* reg_periodic: Ditto.
Index: reg_search
===================================================================
RCS file: /cvs/gcc/gcc/contrib/reghunt/reg_search,v
retrieving revision 1.1
diff -u -p -r1.1 reg_search
--- reg_search 27 Mar 2003 18:57:42 -0000 1.1
+++ reg_search 24 Jun 2003 17:14:10 -0000
@@ -75,7 +75,7 @@ msg() {
if [ "x${DATE_IN_MSG}" = "x" ]; then
echo "${2}"
else
- echo "`date` ${2}"
+ echo "`${DATE}` ${2}"
fi
}
@@ -96,7 +96,7 @@ error() {
# control tools and report to the user.
make_date() {
- MADE_DATE="`date -u +\"%Y-%m-%d %H:%M %Z\" --date \"1970-01-01 00:00:${1}\"`" \
+ MADE_DATE="`${DATE} -u +\"%Y-%m-%d %H:%M %Z\" --date \"1970-01-01 00:00:${1}\"`" \
|| error "make_date: date command failed"
}
@@ -105,15 +105,15 @@ make_date() {
# testing; the first one needs it, the others can ignore it if they want.
process_date() {
- DATE="${1}"
+ TEST_DATE="${1}"
- ${REG_UPDATE} "${DATE}" || error "source update failed for ${DATE}"
+ ${REG_UPDATE} "${TEST_DATE}" || error "source update failed for ${TEST_DATE}"
# If we're already in a valid range, skip this date if there are no
# differences from either end of the range and adjust LATER.
if [ ${VALID_RANGE} = 1 ]; then
- ${HAS_CHANGES} "${DATE}" "${LATER_THAN}" "${EARLIER_THAN}"
+ ${HAS_CHANGES} "${TEST_DATE}" "${LATER_THAN}" "${EARLIER_THAN}"
RET=$?
case ${RET} in
0) ;;
@@ -123,8 +123,8 @@ process_date() {
esac
fi
- ${REG_BUILD} "${DATE}" || error "build failed for ${DATE}"
- ${REG_TEST} "${DATE}"
+ ${REG_BUILD} "${TEST_DATE}" || error "build failed for ${TEST_DATE}"
+ ${REG_TEST} "${TEST_DATE}"
LATER=$?
}
@@ -149,21 +149,21 @@ search_dates() {
while [ ${DIFF} -ge ${DELTA} ]; do
make_date ${MID}
- DATE="${MADE_DATE}"
+ TEST_DATE="${MADE_DATE}"
# Test it.
- process_date "${DATE}"
+ process_date "${TEST_DATE}"
# Narrow the search based on the outcome of testing DATE.
if [ ${LATER} -eq 1 ]; then
- msg 1 "search dates later than \"${DATE}\""
- LATER_THAN="${DATE}"
+ msg 1 "search dates later than \"${TEST_DATE}\""
+ LATER_THAN="${TEST_DATE}"
let LOW=MID
else
- msg 1 "search dates earlier than \"${DATE}\""
- EARLIER_THAN="${DATE}"
+ msg 1 "search dates earlier than \"${TEST_DATE}\""
+ EARLIER_THAN="${TEST_DATE}"
let HIGH=MID
fi
@@ -176,6 +176,13 @@ search_dates() {
# Main program (so to speak)
########################################################################
+# If DATE isn't defined, use the default date command; the configuration
+# file can override this.
+
+if [ "x${DATE}" = "x" ]; then
+ DATE=date
+fi
+
# The error function uses this.
VALID_RANGE=0
@@ -228,15 +235,15 @@ test ${DELTA} -lt 120 && \
# Change the dates into seconds since the epoch. This uses an extension
# in GNU date.
-LOW_DATE=`date +%s --date "${LOW_DATE}"` || \
+LOW_DATE=`${DATE} +%s --date "${LOW_DATE}"` || \
error "date command failed for \"${LOW_DATE}\""
-HIGH_DATE=`date +%s --date "${HIGH_DATE}"` || \
+HIGH_DATE=`${DATE} +%s --date "${HIGH_DATE}"` || \
error "date command failed for \"${LOW_DATE}\""
# If FIRST_MID was defined, convert it and make sure it's in the range.
if [ "x${FIRST_MID}" != "x" ]; then
- FIRST_MID=`date +%s --date "${FIRST_MID}"` || \
+ FIRST_MID=`${DATE} +%s --date "${FIRST_MID}"` || \
error "date command failed for \"${FIRST_MID}\""
test ${FIRST_MID} -le ${LOW_DATE} && \
error "FIRST_MID date is earlier than LOW_DATE"
Index: reg_periodic
===================================================================
RCS file: /cvs/gcc/gcc/contrib/reghunt/reg_periodic,v
retrieving revision 1.1
diff -u -p -r1.1 reg_periodic
--- reg_periodic 27 Mar 2003 18:57:42 -0000 1.1
+++ reg_periodic 24 Jun 2003 17:14:23 -0000
@@ -55,7 +55,7 @@ msg() {
if [ "x${DATE_IN_MSG}" = "x" ]; then
echo "${2}"
else
- echo "`date` ${2}"
+ echo "`${DATE}` ${2}"
fi
}
@@ -70,7 +70,7 @@ error() {
# control tools and report to the user.
make_date() {
- MADE_DATE="`date -u +\"%Y-%m-%d %H:%M %Z\" --date \"1970-01-01 00:00:${1}\"`" \
+ MADE_DATE="`${DATE} -u +\"%Y-%m-%d %H:%M %Z\" --date \"1970-01-01 00:00:${1}\"`" \
|| error "make_date: date command failed"
}
@@ -79,25 +79,32 @@ make_date() {
# testing; the first one needs it, the others can ignore it if they want.
process_date() {
- DATE="${1}"
+ TEST_DATE="${1}"
- ${REG_UPDATE} "${DATE}"
+ ${REG_UPDATE} "${TEST_DATE}"
if [ $? -ne 0 ]; then
- msg 0 "source update failed for ${DATE}"
+ msg 0 "source update failed for ${TEST_DATE}"
return
fi
- ${REG_BUILD} "${DATE}"
+ ${REG_BUILD} "${TEST_DATE}"
if [ $? -ne 0 ]; then
- msg 0 "build failed for ${DATE}"
+ msg 0 "build failed for ${TEST_DATE}"
return
fi
- ${REG_TEST} "${DATE}"
+ ${REG_TEST} "${TEST_DATE}"
}
########################################################################
# Main program (so to speak)
########################################################################
+# If DATE isn't defined, use the default date command; the configuration
+# file can override this.
+
+if [ "x${DATE}" = "x" ]; then
+ DATE=date
+fi
+
# Process the configuration file.
if [ $# -ne 1 ]; then
@@ -135,9 +142,9 @@ msg 2 "VERBOSITY = ${VERBOSITY}"
# Change the dates into seconds since the epoch. This uses an extension
# in GNU date.
-LOW_DATE=`date +%s --date "${LOW_DATE}"` || \
+LOW_DATE=`${DATE} +%s --date "${LOW_DATE}"` || \
error "date command failed for \"${LOW_DATE}\""
-HIGH_DATE=`date +%s --date "${HIGH_DATE}"` || \
+HIGH_DATE=`${DATE} +%s --date "${HIGH_DATE}"` || \
error "date command failed for \"${LOW_DATE}\""
# Process each date in the range.