[gdb/testsuite] Use unique portnum in parallel testing (check//% case)
Make target check//% is the gdb variant of a similar gcc make target [1]. When running tests using check//%: ... $ cd build/gdb $ make check//unix/{-fPIE/-pie,-fno-PIE/-no-pie} -j2 TESTS=gdb.server/*.exp ... we get: ... $ cat build/gdb/testsuite.unix.-fPIE.-pie/cache/portnum 2427 $ cat build/gdb/testsuite.unix.-fno-PIE.-no-pie/cache/portnum 2423 ... The problem is that there are two portnum files used in parallel. Fix this by: - creating a common lockdir build/gdb/testsuite.lockdir for make target check//%, - passing this down to the runtests invocations using variable GDB_LOCK_DIR, and - using GDB_LOCK_DIR in lock_dir. Tested on aarch64-linux. Approved-By: Tom Tromey <tom@tromey.com> PR testsuite/31632 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31632 [1] https://gcc.gnu.org/install/test.html
This commit is contained in:
parent
e82dca2a57
commit
c479e964a8
2 changed files with 11 additions and 2 deletions
|
@ -2003,6 +2003,10 @@ check-all-boards: force
|
|||
$(MAKE) $(TARGET_FLAGS_TO_PASS) check-all-boards; \
|
||||
else true; fi
|
||||
|
||||
testsuite.lockdir: force
|
||||
rm -rf $@
|
||||
mkdir -p $@
|
||||
|
||||
# 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
|
||||
|
@ -2011,7 +2015,7 @@ check-all-boards: force
|
|||
# used, this rule will harmlessly fail to match. Used FORCE_PARALLEL to
|
||||
# prevent serialized checking due to the passed RUNTESTFLAGS.
|
||||
# FIXME: use config.status --config not --version, when available.
|
||||
check//%: force
|
||||
check//%: force testsuite.lockdir
|
||||
@if [ -f testsuite/config.status ]; then \
|
||||
rootme=`pwd`; export rootme; \
|
||||
rootsrc=`cd $(srcdir); pwd`; export rootsrc; \
|
||||
|
@ -2029,7 +2033,7 @@ check//%: force
|
|||
); \
|
||||
else :; fi && cd $$testdir && \
|
||||
$(MAKE) $(TARGET_FLAGS_TO_PASS) \
|
||||
RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \
|
||||
RUNTESTFLAGS="GDB_LOCK_DIR=$$rootme/testsuite.lockdir --target_board=$$variant $(RUNTESTFLAGS)" \
|
||||
FORCE_PARALLEL=$(if $(FORCE_PARALLEL),1,$(if $(RUNTESTFLAGS),,1)) \
|
||||
"$$target"; \
|
||||
else true; fi
|
||||
|
|
|
@ -180,6 +180,11 @@ proc lock_file_release {info} {
|
|||
# Return directory where we keep lock files.
|
||||
|
||||
proc lock_dir {} {
|
||||
if { [info exists ::GDB_LOCK_DIR] } {
|
||||
# When using check//.
|
||||
return $::GDB_LOCK_DIR
|
||||
}
|
||||
|
||||
return [make_gdb_parallel_path cache]
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue