Support 'make check-parallel' in gdb's build dir
authorPedro Alves <palves@redhat.com>
Thu, 11 Feb 2016 19:36:39 +0000 (19:36 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 11 Feb 2016 19:36:39 +0000 (19:36 +0000)
Currently, you can cd to the gdb/testsuite/ dir and use
make check-parallel, instead of using FORCE_PARALLEL:

 $ make -j8 check-parallel RUNTESTFLAGS="--target_board=native-gdbserver"
 $ make -j8 check RUNTESTFLAGS="--target_board=native-gdbserver" FORCE_PARALLEL=1

But you can't do that in the build/gdb/ dir:

 $ make check-parallel RUNTESTFLAGS="--target_board=native-gdbserver"
 make: *** No rule to make target `check-parallel'.  Stop.

I find check-parallel a bit more convenient, and more typo-proof, so
this patch makes it work from the gdb build dir too.

While documenting this in testsuite/README, I found that the parallel
testing mode would better be pulled out to its own section and
extended.

gdb/ChangeLog:
2016-02-11  Pedro Alves  <palves@redhat.com>

* Makefile.in (check-parallel): New rule.

gdb/testsuite/ChangeLog:
2016-02-11  Pedro Alves  <palves@redhat.com>

* README (Parallel testing): New section.
(GDB_PARALLEL): Rewrite.
(FORCE_PARALLEL): Document.

gdb/ChangeLog
gdb/Makefile.in
gdb/testsuite/ChangeLog
gdb/testsuite/README

index c506952..5edafdf 100644 (file)
@@ -1,3 +1,7 @@
+2016-02-11  Pedro Alves  <palves@redhat.com>
+
+       * Makefile.in (check-parallel): New rule.
+
 2016-02-11  Simon Marchi  <simon.marchi@ericsson.com>
 
        * arm-tdep.c (arm_skip_prologue): Remove unused variables.
index ec2af52..602ef43 100644 (file)
@@ -1158,6 +1158,14 @@ check-read1: force
          $(MAKE) $(TARGET_FLAGS_TO_PASS) check-read1; \
        else true; fi
 
+check-parallel: force
+       @if [ -f testsuite/Makefile ]; then \
+         rootme=`pwd`; export rootme; \
+         rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
+         cd testsuite; \
+         $(MAKE) $(TARGET_FLAGS_TO_PASS) check-parallel; \
+       else true; fi
+
 # The idea is to parallelize testing of multilibs, for example:
 #   make -j3 check//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
 # will run 3 concurrent sessions of check, eventually testing all 10
index b35cfcb..1c18935 100644 (file)
@@ -1,3 +1,9 @@
+2016-02-11  Pedro Alves  <palves@redhat.com>
+
+       * README (Parallel testing): New section.
+       (GDB_PARALLEL): Rewrite.
+       (FORCE_PARALLEL): Document.
+
 2016-02-11  Marcin Koƛcielnicki  <koriakin@0x04.net>
 
        * gdb.trace/tfile-avx.c: New test.
index 77ac74e..d58a452 100644 (file)
@@ -25,6 +25,31 @@ The second is to cd to the testsuite directory and invoke the DejaGnu
 (The `site.exp' file contains a handful of useful variables like host
 and target triplets, and pathnames.)
 
+Parallel testing
+****************
+
+If not testing with a remote host (in DejaGnu's sense), you can run
+the GDB test suite in a fully parallel mode.  In this mode, each .exp
+file runs separately and maybe simultaneously.  The test suite ensures
+that all the temporary files created by the test suite do not clash,
+by putting them into separate directories.  This mode is primarily
+intended for use by the Makefile.
+
+For GNU make, the Makefile tries to run the tests in parallel mode if
+any -j option is given.  For a non-GNU make, tests are not
+parallelized.
+
+If RUNTESTFLAGS is not empty, then by default the tests are
+serialized.  This can be overridden by either using the
+`check-parallel' target in the Makefile, or by setting FORCE_PARALLEL
+to any non-empty value:
+
+       make check-parallel RUNTESTFLAGS="--target_board=native-gdbserver
+       make check RUNTESTFLAGS="--target_board=native-gdbserver FORCE_PARALLEL=1
+
+If you want to use runtest directly instead of using the Makefile, see
+the description of GDB_PARALLEL below.
+
 Running the Performance Tests
 *****************************
 
@@ -125,19 +150,18 @@ a .gdbinit.  For example:
 
 GDB_PARALLEL
 
-When testing natively (that is, not with a remote host), you can run
-the GDB test suite in a fully parallel mode.  In this mode, each .exp
-file runs separately and maybe simultaneously.  The test suite will
-ensure that all the temporary files created by the test suite do not
-clash, by putting them into separate directories.  This mode is
-primarily intended for use by the Makefile.
-
-To use this mode, set the GDB_PARALLEL on the runtest command line.
-Before starting the tests, you must ensure that the directories cache,
-outputs, and temp in the test suite build directory are either empty
-or have been deleted.  cache in particular is used to share data
-across invocations of runtest, and files there may affect the test
-results.  Note that the Makefile automatically does these deletions.
+To use parallel testing mode without using the the Makefile, set
+GDB_PARALLEL on the runtest command line to "yes".  Before starting
+the tests, you must ensure that the directories cache, outputs, and
+temp in the test suite build directory are either empty or have been
+deleted.  cache in particular is used to share data across invocations
+of runtest, and files there may affect the test results.  The Makefile
+automatically does these deletions.
+
+FORCE_PARALLEL
+
+Setting FORCE_PARALLEL to any non-empty value forces parallel testing
+mode even if RUNTESTFLAGS is not empty.
 
 GDB_INOTIFY