[PATCH] D51663: [test-suite, CUDA] Update CUDA test suite cmake files.

Artem Belevich via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 4 16:21:25 PDT 2018


tra created this revision.
tra added a reviewer: MatzeB.
Herald added subscribers: bixia, jlebar, mgorny, sanjoy.

This should unbreak CUDA buildbots affected by https://reviews.llvm.org/D51048.

The problem is that CUDA test suite is generating multiple
test executables that all use the same reference output file
and that resulted in multiple compilation jobs attempting to
create the same symlink at the same time.

This patch adds a SUFFIX parameter to make it possible to append
a suffix to the target file name and that allows us to avoid name clashes.


Repository:
  rT test-suite

https://reviews.llvm.org/D51663

Files:
  External/CUDA/CMakeLists.txt
  cmake/modules/TestSuite.cmake


Index: cmake/modules/TestSuite.cmake
===================================================================
--- cmake/modules/TestSuite.cmake
+++ cmake/modules/TestSuite.cmake
@@ -18,26 +18,31 @@
 # directory of the benchmark executable.
 # Paths are interepreted relative to CMAKE_CURRENT_SOURCE_DIR by default but
 # this can be changed with the SOURCE_DIR argument.
+# If SUFFIX is specified, it's appended to the destination file names.
 function(llvm_test_data target)
-  cmake_parse_arguments(_LTDARGS "MUST_COPY" "SOURCE_DIR" "" ${ARGN})
+  cmake_parse_arguments(_LTDARGS "MUST_COPY" "SOURCE_DIR;SUFFIX" "" ${ARGN})
   set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
   if(_LTDARGS_SOURCE_DIR)
     set(SOURCE_DIR ${_LTDARGS_SOURCE_DIR})
   endif()
+  set(SUFFIX)
+  if(_LTDARGS_SUFFIX)
+    set(SUFFIX ${_LTDARGS_SUFFIX})
+  endif()
   foreach(file ${_LTDARGS_UNPARSED_ARGUMENTS})
     set(full_path ${SOURCE_DIR}/${file})
     if(_LTDARGS_MUST_COPY OR TEST_SUITE_COPY_DATA)
       if(IS_DIRECTORY ${full_path})
-        llvm_copy_dir(${target} $<TARGET_FILE_DIR:${target}>/${file} ${full_path})
+        llvm_copy_dir(${target} $<TARGET_FILE_DIR:${target}>/${file}${SUFFIX} ${full_path})
       else()
-        llvm_copy(${target} $<TARGET_FILE_DIR:${target}>/${file} ${full_path})
+        llvm_copy(${target} $<TARGET_FILE_DIR:${target}>/${file}${SUFFIX} ${full_path})
       endif()
     else()
       get_filename_component(file_subdir ${file} DIRECTORY)
       if(file_subdir)
         llvm_make_directory(${target} ${file_subdir})
       endif()
-      llvm_create_symlink(${target} $<TARGET_FILE_DIR:${target}>/${file} ${full_path})
+      llvm_create_symlink(${target} $<TARGET_FILE_DIR:${target}>/${file}${SUFFIX} ${full_path})
     endif()
   endforeach()
 endfunction()
Index: External/CUDA/CMakeLists.txt
===================================================================
--- External/CUDA/CMakeLists.txt
+++ External/CUDA/CMakeLists.txt
@@ -57,14 +57,19 @@
     cuda_glob(_sources ${FileGlob})
     set(_executable ${Name}-${VariantSuffix})
     set(_executable_path ${CMAKE_CURRENT_BINARY_DIR}/${_executable})
+    llvm_test_run()
+    set(REFERENCE_OUTPUT)
     # Verify reference output if it exists.
     if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${Name}.reference_output)
-      llvm_test_traditional(${Name})
+      set(REFERENCE_OUTPUT ${Name}.reference_output)
+      llvm_test_verify(WORKDIR ${CMAKE_CURRENT_BINARY_DIR}
+        ${FPCMP} %o ${REFERENCE_OUTPUT}-${VariantSuffix}
+      )
+      llvm_test_executable(${_executable} ${_sources})
+      llvm_test_data(${_executable} SUFFIX "-${VariantSuffix}" ${REFERENCE_OUTPUT})
     else()
-      # otherwise just run the executable.
-      llvm_test_run()
+      llvm_test_executable(${_executable} ${_sources})
     endif()
-    llvm_test_executable(${_executable} ${_sources})
     target_compile_options(${_executable} PUBLIC ${VariantCPPFLAGS})
     if(VariantLibs)
       target_link_libraries(${_executable} ${VariantLibs})


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51663.163942.patch
Type: text/x-patch
Size: 3002 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180904/9ed6cede/attachment.bin>


More information about the llvm-commits mailing list