[gdb/testsuite] Use gdb_remote_download in allow_opencl_tests
authorTom de Vries <tdevries@suse.de>
Thu, 23 Mar 2023 13:54:28 +0000 (14:54 +0100)
committerTom de Vries <tdevries@suse.de>
Thu, 23 Mar 2023 13:54:28 +0000 (14:54 +0100)
Simon reported that doing:
...
$ while make check-parallel TESTS='gdb.opencl/*.exp' -j 100; do true; done
...
could run into:
...
ERROR: remote_download to target of \
  /data/vries/gdb/src/gdb/testsuite/lib/opencl_kernel.cl to opencl_kernel.cl: \
  cp: cannot create regular file 'opencl_kernel.cl': File exists
...

Fix this by using gdb_remote_download (instead of plain remote_download) in
allow_opencl_test, which takes care of:
- downloading to a location which is safe for parallel testing, by
  using standard_output_file, and
- cleaning up the downloaded file, meaning we can remove the corresponding
  "remote_file target delete ${clprogram}" lines in allow_opencl_test.

Tested on x86_64-linux.

Reported-by: Simon Marchi <simon.marchi@efficios.com>
gdb/testsuite/lib/opencl.exp

index dc7966443d549a2c3de0e50b6c228af917bcde0a..e878c4e87ae1125d11ab778d3e8e576622987221 100644 (file)
@@ -38,14 +38,13 @@ gdb_caching_proc allow_opencl_tests {} {
     # Set up, compile, and execute an OpenCL program.  Include the current
     # process ID in the file name of the executable to prevent conflicts with
     # invocations for multiple testsuites.
-    set clprogram [remote_download target ${srcdir}/lib/opencl_kernel.cl]
+    set clprogram [gdb_remote_download target ${srcdir}/lib/opencl_kernel.cl]
     set executable opencltest[pid].x
 
     verbose "$me:  compiling OpenCL test app" 2
     set compile_flags {debug nowarnings quiet}
 
     if { [gdb_compile_opencl_hostapp "${clprogram}" "${executable}" "${compile_flags}" ] != "" } {
-       remote_file target delete ${clprogram}
        verbose "$me:  compiling OpenCL binary failed, returning 0" 2
        return 0
     }
@@ -70,9 +69,6 @@ gdb_caching_proc allow_opencl_tests {} {
     gdb_exit
     remote_file build delete $executable
 
-    # Delete the OpenCL program source file.
-    remote_file target delete ${clprogram}
-
     verbose "$me:  returning $result" 2
     return $result
 }