This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch: changes to patch_tester.sh


In an effort not to miss regressions any more, I've started using
patch_tester.sh on the gcc compile farm.

This patch is a grab bag of a few different fixes and changes:

* usage() is wrong about the watermark argument

* Now you can set up a tester with a $STATE/defaults file, which has
  system-specific default settings for configure, make, and make
  check.  I use this on the compile farm to pass --with-mpfr.

* I changed selfexec to use $0 since I wanted the tester to always
  restart my hacked version.  This change could go either way, I
  guess... once the other bits are in I suppose I probably would not
  need this, at least not until I made another change.

* If a patch removes all the contents of a file, we now delete the
  file.  I wanted to test a patch that did an svn rm and this was
  needed.  I think it is more likely that this scenario means that the
  file was deleted than that the user really wanted a zero-length
  file.

  FWIW patch_tester.sh already doesn't work with the mercurial
  repository, AFAICT.  So, I think my patch hack didn't really break
  anything here.  In the future, assuming we do switch to hg, I'd
  assume we can play some fun DVC game instead of schlepping patches
  around.


Ok?

Tom

contrib/ChangeLog:
2008-03-05  Tom Tromey  <tromey@redhat.com>

	* patch_tester.sh (usage): Watermark is not lexicographic.
	Load $STATE/defaults if it exists.
	(selfexec): Use $0.
	(apply_patch): Handle deletions.
	(bootntest): Handle default settings.

Index: contrib/patch_tester.sh
===================================================================
--- contrib/patch_tester.sh	(revision 132902)
+++ contrib/patch_tester.sh	(working copy)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 # Tests a set of patches from a directory.
-# Copyright (C) 2007  Free Software Foundation, Inc.
+# Copyright (C) 2007, 2008  Free Software Foundation, Inc.
 # Contributed by Sebastian Pop <sebastian.pop@amd.com>
 
 # This program is free software; you can redistribute it and/or modify
@@ -48,8 +48,7 @@
     PATCHES_DIR.  Default is ${default_standby} minutes.
 
     WATERMARK is the 5 minute average system charge under which a new
-    compile can start.  Default is ${default_watermark}.  Note that the comparison 
-    is done in lexicographical order, so don't forget the leading 0.
+    compile can start.  Default is ${default_watermark}.
 
     SAVECOMPILERS copies the compilers in the same directory as the
     test results for the non patched version.  Default is not copy.
@@ -132,6 +131,12 @@
     svn -q co svn://gcc.gnu.org/svn/gcc/trunk .
 }
 
+# This can contain required local settings:
+#  default_config  configure options, always passed
+#  default_make    make bootstrap options, always passed
+#  default_check   make check options, always passed
+[ -f $STATE/defaults ] && . $STATE/defaults
+
 VERSION=`svn info $SOURCE | grep "^Revision:" | sed -e "s/^Revision://g" -e "s/ //g"`
 
 exec >> $STATE/tester.log 2>&1 || exit 1
@@ -182,7 +187,7 @@
 }
 
 selfexec () {
-    exec ${CONFIG_SHELL-/bin/sh} $SOURCE/contrib/patch_tester.sh $args
+    exec ${CONFIG_SHELL-/bin/sh} $0 $args
 }
 
 update () {
@@ -263,6 +268,17 @@
 	    return 1
 	fi
     fi
+
+    # Just assume indexes for now -- not really great, but svn always
+    # makes them.
+    grep "^Index: " $PATCH | sed -e 's/Index: //' | while read file; do
+	# If the patch resulted in an empty file, delete it.
+	# This is how svn reports deletions.
+	if [ ! -s $file ]; then
+	    rm -f $file
+	    report "Deleting empty file $file"
+	fi
+    done
 }
 
 save_compilers () {
@@ -279,13 +295,16 @@
     cd $BUILD
 
     CONFIG_OPTIONS=`grep "^configure:" $PATCH | sed -e "s/^configure://g"`
+    CONFIG_OPTIONS="$default_config $CONFIG_OPTIONS"
     if ! $SOURCE/configure $CONFIG_OPTIONS &> $1/configure ; then
 	report "configure failed with:"
 	freport $1/configure
 	return 1
     fi
 
-    if ! make $dashj `grep "^make:" $PATCH | sed -e "s/^make://g"` bootstrap &> $1/bootstrap ; then
+    MAKE_ARGS=`grep "^make:" $PATCH | sed -e "s/^make://g"`
+    MAKE_ARGS="$default_make $MAKE_ARGS"
+    if ! make $dashj $MAKE_ARGS bootstrap &> $1/bootstrap ; then
 	report "bootstrap failed with last lines:"
 	tail -30 $1/bootstrap > $1/last_bootstrap
 	freport $1/last_bootstrap
@@ -296,6 +315,7 @@
     fi
 
     CHECK_OPTIONS=`grep "^check:" $PATCH | sed -e "s/^check://g"`
+    CHECK_OPTIONS="$default_check $CHECK_OPTIONS"
     make $dashj $CHECK_OPTIONS -k check &> $1/check
 
     for LOG in $TESTLOGS ; do


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]