[arch-commits] Commit in root/trunk (PKGBUILD fix_cuda_cxx17.patch)
Konstantin Gizdov
kgizdov at archlinux.org
Mon Jul 27 12:22:53 UTC 2020
Date: Monday, July 27, 2020 @ 12:22:53
Author: kgizdov
Revision: 665441
upgpkg: root 6.22.00-4: use better cxx17 patch
Modified:
root/trunk/PKGBUILD
root/trunk/fix_cuda_cxx17.patch
----------------------+
PKGBUILD | 4
fix_cuda_cxx17.patch | 294 ++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 294 insertions(+), 4 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2020-07-27 12:08:54 UTC (rev 665440)
+++ PKGBUILD 2020-07-27 12:22:53 UTC (rev 665441)
@@ -7,7 +7,7 @@
pkgbase=root
pkgname=('root' 'root-cuda')
pkgver=6.22.00
-pkgrel=3
+pkgrel=4
pkgdesc='C++ data analysis framework and interpreter from CERN'
arch=('x86_64')
url='https://root.cern'
@@ -105,7 +105,7 @@
'12814f50b7016bd86d3f91e0e31c052783a0c0fa72b7d6a072d3ae6f86c2437323d585e531235377ebbfdd9cb76abd7da84d9631de821151547f1d4b13417e69'
'ff555ac4db568affe139701907f86d919a2206f3e304f69dd317b756ea0904b5934d9364a524060778aa507809ce78448621619bb34039ba34c5a71af71a4a8c'
'2ae126795df4127c27a6287a1499bdb8b2bacb74cfbec17dabe378a5fb9fc7c755644e4090a4da1d0045bf5d4f542f06da827a0f48a5927ee8509874045f18b6'
- 'f7dbbd4ba08dd6e7d631b1cd9414ea51bfe64d8074835c9ccd95bcbdba1e72107b928df97738dde04c8e2e5399432cc748fd6b6188c372eb085b188962255640')
+ 'b437f3b2a50efe5b482727bd8c1d606d8b572fbca1f2fab6255e521a084810c0cf1c5b09a561e2efca76934182fe5ec4a284286556860ffa31f7113be8a95c12')
get_pyver () {
python -c 'import sys; print(str(sys.version_info[0]) + "." + str(sys.version_info[1]))'
Modified: fix_cuda_cxx17.patch
===================================================================
--- fix_cuda_cxx17.patch 2020-07-27 12:08:54 UTC (rev 665440)
+++ fix_cuda_cxx17.patch 2020-07-27 12:22:53 UTC (rev 665441)
@@ -1,7 +1,7 @@
From 62fff7d03d8785a69f56115b27081fe1081edc9b Mon Sep 17 00:00:00 2001
From: Konstantin Gizdov <kgizdov at gmail.com>
Date: Fri, 24 Jul 2020 18:23:49 +0300
-Subject: [PATCH 1/2] fix regression in f8edeb9 not using correct string_view
+Subject: [PATCH 1/6] fix regression in f8edeb9 not using correct string_view
when CUDA C++ standard allows it
---
@@ -106,7 +106,7 @@
From d30bf0190f668434f23875e201a80450b6d2dddb Mon Sep 17 00:00:00 2001
From: Konstantin Gizdov <kgizdov at gmail.com>
Date: Fri, 24 Jul 2020 18:53:53 +0300
-Subject: [PATCH 2/2] set R__CUDA_HAS_STD_STRING_VIEW to undef in all other
+Subject: [PATCH 2/6] set R__CUDA_HAS_STD_STRING_VIEW to undef in all other
cases
---
@@ -125,3 +125,293 @@
if(found_stdstringview)
CHECK_CXX_SOURCE_COMPILES("#include <string_view>
int main() { size_t pos; std::string_view str; std::stod(str,&pos); return 0;}" found_stod_stringview)
+
+From 5e473046f480af31e038b04a0a8101f3c86ab590 Mon Sep 17 00:00:00 2001
+From: Konstantin Gizdov <kgizdov at gmail.com>
+Date: Sat, 25 Jul 2020 01:48:18 +0300
+Subject: [PATCH 3/6] re-locate to correct place in configuration and check by
+ compilation
+
+---
+ cmake/modules/RootConfiguration.cmake | 43 ++++++++++++++++++++++++---
+ 1 file changed, 39 insertions(+), 4 deletions(-)
+
+diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake
+index c9f7206d12c..d306245199c 100644
+--- a/cmake/modules/RootConfiguration.cmake
++++ b/cmake/modules/RootConfiguration.cmake
+@@ -512,10 +512,49 @@ unset(found_stdexpstringview CACHE)
+ unset(found_stod_stringview CACHE)
+
+ set(hasstdexpstringview undef)
++set(cudahasstdstringview undef)
+ CHECK_CXX_SOURCE_COMPILES("#include <string_view>
+ int main() { char arr[3] = {'B', 'a', 'r'}; std::string_view strv(arr, sizeof(arr)); return 0;}" found_stdstringview)
+ if(found_stdstringview)
+ set(hasstdstringview define)
++ if(cuda)
++ if(CMAKE_CUDA_STANDARD GREATER_EQUAL CMAKE_CXX_STANDARD)
++ # CUDA_NVCC_EXECUTABLE
++ if(DEFINED ENV{CUDA_NVCC_EXECUTABLE})
++ set(CUDA_NVCC_EXECUTABLE "$ENV{CUDA_NVCC_EXECUTABLE}" CACHE FILEPATH "The CUDA compiler")
++ else()
++ find_program(CUDA_NVCC_EXECUTABLE
++ NAMES nvcc nvcc.exe
++ PATHS "${CUDA_TOOLKIT_ROOT_DIR}"
++ ENV CUDA_TOOKIT_ROOT
++ ENV CUDA_PATH
++ ENV CUDA_BIN_PATH
++ PATH_SUFFIXES bin bin64
++ DOC "The CUDA compiler"
++ NO_DEFAULT_PATH
++ )
++ find_program(CUDA_NVCC_EXECUTABLE
++ NAMES nvcc nvcc.exe
++ PATHS /opt/cuda/bin
++ PATH_SUFFIXES cuda/bin
++ DOC "The CUDA compiler"
++ )
++ # Search default search paths, after we search our own set of paths.
++ find_program(CUDA_NVCC_EXECUTABLE nvcc)
++ endif()
++ mark_as_advanced(CUDA_NVCC_EXECUTABLE)
++ if(CUDA_NVCC_EXECUTABLE)
++ execute_process(COMMAND "echo"
++ "-e" "#include <string_view>\nint main() { char arr[3] = {'B', 'a', 'r'}; std::string_view strv(arr, sizeof(arr)); return 0;}"
++ "|"
++ "${CUDA_NVCC_EXECUTABLE}" "-std=c++${CMAKE_CUDA_STANDARD}" "-o" "/dev/null" "-x" "c++" "-"
++ RESULT_VARIABLE nvcc_compiled_string_view)
++ if (nvcc_compiled_string_view EQUAL "0")
++ set(cudahasstdstringview define)
++ endif()
++ endif()
++ endif()
++ endif()
+ else()
+ set(hasstdstringview undef)
+
+@@ -528,13 +567,9 @@ else()
+ endif()
+ endif()
+
+-set(cudahasstdstringview undef)
+ if(found_stdstringview)
+ CHECK_CXX_SOURCE_COMPILES("#include <string_view>
+ int main() { size_t pos; std::string_view str; std::stod(str,&pos); return 0;}" found_stod_stringview)
+- if(CMAKE_CUDA_STANDARD GREATER_EQUAL CMAKE_CXX_STANDARD)
+- set(cudahasstdstringview define)
+- endif()
+ elseif(found_stdexpstringview)
+ CHECK_CXX_SOURCE_COMPILES("#include <experimental/string_view>
+ int main() { size_t pos; std::experimental::string_view str; std::stod(str,&pos); return 0;}" found_stod_stringview)
+
+From 32e1f3c0cec557c4fa82a07992ae9c1cd4075fcf Mon Sep 17 00:00:00 2001
+From: Konstantin Gizdov <kgizdov at gmail.com>
+Date: Sat, 25 Jul 2020 01:50:20 +0300
+Subject: [PATCH 4/6] no need to compare C++ standard between CUDA and host
+ anymore
+
+---
+ cmake/modules/RootConfiguration.cmake | 66 +++++++++++++--------------
+ 1 file changed, 32 insertions(+), 34 deletions(-)
+
+diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake
+index d306245199c..2eff954ef94 100644
+--- a/cmake/modules/RootConfiguration.cmake
++++ b/cmake/modules/RootConfiguration.cmake
+@@ -518,40 +518,38 @@ CHECK_CXX_SOURCE_COMPILES("#include <string_view>
+ if(found_stdstringview)
+ set(hasstdstringview define)
+ if(cuda)
+- if(CMAKE_CUDA_STANDARD GREATER_EQUAL CMAKE_CXX_STANDARD)
+- # CUDA_NVCC_EXECUTABLE
+- if(DEFINED ENV{CUDA_NVCC_EXECUTABLE})
+- set(CUDA_NVCC_EXECUTABLE "$ENV{CUDA_NVCC_EXECUTABLE}" CACHE FILEPATH "The CUDA compiler")
+- else()
+- find_program(CUDA_NVCC_EXECUTABLE
+- NAMES nvcc nvcc.exe
+- PATHS "${CUDA_TOOLKIT_ROOT_DIR}"
+- ENV CUDA_TOOKIT_ROOT
+- ENV CUDA_PATH
+- ENV CUDA_BIN_PATH
+- PATH_SUFFIXES bin bin64
+- DOC "The CUDA compiler"
+- NO_DEFAULT_PATH
+- )
+- find_program(CUDA_NVCC_EXECUTABLE
+- NAMES nvcc nvcc.exe
+- PATHS /opt/cuda/bin
+- PATH_SUFFIXES cuda/bin
+- DOC "The CUDA compiler"
+- )
+- # Search default search paths, after we search our own set of paths.
+- find_program(CUDA_NVCC_EXECUTABLE nvcc)
+- endif()
+- mark_as_advanced(CUDA_NVCC_EXECUTABLE)
+- if(CUDA_NVCC_EXECUTABLE)
+- execute_process(COMMAND "echo"
+- "-e" "#include <string_view>\nint main() { char arr[3] = {'B', 'a', 'r'}; std::string_view strv(arr, sizeof(arr)); return 0;}"
+- "|"
+- "${CUDA_NVCC_EXECUTABLE}" "-std=c++${CMAKE_CUDA_STANDARD}" "-o" "/dev/null" "-x" "c++" "-"
+- RESULT_VARIABLE nvcc_compiled_string_view)
+- if (nvcc_compiled_string_view EQUAL "0")
+- set(cudahasstdstringview define)
+- endif()
++ # CUDA_NVCC_EXECUTABLE
++ if(DEFINED ENV{CUDA_NVCC_EXECUTABLE})
++ set(CUDA_NVCC_EXECUTABLE "$ENV{CUDA_NVCC_EXECUTABLE}" CACHE FILEPATH "The CUDA compiler")
++ else()
++ find_program(CUDA_NVCC_EXECUTABLE
++ NAMES nvcc nvcc.exe
++ PATHS "${CUDA_TOOLKIT_ROOT_DIR}"
++ ENV CUDA_TOOKIT_ROOT
++ ENV CUDA_PATH
++ ENV CUDA_BIN_PATH
++ PATH_SUFFIXES bin bin64
++ DOC "The CUDA compiler"
++ NO_DEFAULT_PATH
++ )
++ find_program(CUDA_NVCC_EXECUTABLE
++ NAMES nvcc nvcc.exe
++ PATHS /opt/cuda/bin
++ PATH_SUFFIXES cuda/bin
++ DOC "The CUDA compiler"
++ )
++ # Search default search paths, after we search our own set of paths.
++ find_program(CUDA_NVCC_EXECUTABLE nvcc)
++ endif()
++ mark_as_advanced(CUDA_NVCC_EXECUTABLE)
++ if(CUDA_NVCC_EXECUTABLE)
++ execute_process(COMMAND "echo"
++ "-e" "#include <string_view>\nint main() { char arr[3] = {'B', 'a', 'r'}; std::string_view strv(arr, sizeof(arr)); return 0;}"
++ "|"
++ "${CUDA_NVCC_EXECUTABLE}" "-std=c++${CMAKE_CUDA_STANDARD}" "-o" "/dev/null" "-x" "c++" "-"
++ RESULT_VARIABLE nvcc_compiled_string_view)
++ if (nvcc_compiled_string_view EQUAL "0")
++ set(cudahasstdstringview define)
+ endif()
+ endif()
+ endif()
+
+From fccf1ba488fb7da334ef89e9df098bbdeee83ca5 Mon Sep 17 00:00:00 2001
+From: Konstantin Gizdov <kgizdov at gmail.com>
+Date: Sat, 25 Jul 2020 02:39:22 +0300
+Subject: [PATCH 5/6] find NVCC early; fix CMake execute process
+
+---
+ cmake/modules/RootConfiguration.cmake | 32 +++------------------
+ cmake/modules/SearchInstalledSoftware.cmake | 24 ++++++++++++++++
+ 2 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake
+index 2eff954ef94..11d1e6b76c0 100644
+--- a/cmake/modules/RootConfiguration.cmake
++++ b/cmake/modules/RootConfiguration.cmake
+@@ -518,35 +518,11 @@ CHECK_CXX_SOURCE_COMPILES("#include <string_view>
+ if(found_stdstringview)
+ set(hasstdstringview define)
+ if(cuda)
+- # CUDA_NVCC_EXECUTABLE
+- if(DEFINED ENV{CUDA_NVCC_EXECUTABLE})
+- set(CUDA_NVCC_EXECUTABLE "$ENV{CUDA_NVCC_EXECUTABLE}" CACHE FILEPATH "The CUDA compiler")
+- else()
+- find_program(CUDA_NVCC_EXECUTABLE
+- NAMES nvcc nvcc.exe
+- PATHS "${CUDA_TOOLKIT_ROOT_DIR}"
+- ENV CUDA_TOOKIT_ROOT
+- ENV CUDA_PATH
+- ENV CUDA_BIN_PATH
+- PATH_SUFFIXES bin bin64
+- DOC "The CUDA compiler"
+- NO_DEFAULT_PATH
+- )
+- find_program(CUDA_NVCC_EXECUTABLE
+- NAMES nvcc nvcc.exe
+- PATHS /opt/cuda/bin
+- PATH_SUFFIXES cuda/bin
+- DOC "The CUDA compiler"
+- )
+- # Search default search paths, after we search our own set of paths.
+- find_program(CUDA_NVCC_EXECUTABLE nvcc)
+- endif()
+- mark_as_advanced(CUDA_NVCC_EXECUTABLE)
+ if(CUDA_NVCC_EXECUTABLE)
+- execute_process(COMMAND "echo"
+- "-e" "#include <string_view>\nint main() { char arr[3] = {'B', 'a', 'r'}; std::string_view strv(arr, sizeof(arr)); return 0;}"
+- "|"
+- "${CUDA_NVCC_EXECUTABLE}" "-std=c++${CMAKE_CUDA_STANDARD}" "-o" "/dev/null" "-x" "c++" "-"
++ execute_process(
++ COMMAND "echo"
++ "-e" "#include <string_view>\nint main() { char arr[3] = {'B', 'a', 'r'}; std::string_view strv(arr, sizeof(arr)); return 0;}"
++ COMMAND "${CUDA_NVCC_EXECUTABLE}" "-std=c++${CMAKE_CUDA_STANDARD}" "-o" "/dev/null" "-x" "c++" "-"
+ RESULT_VARIABLE nvcc_compiled_string_view)
+ if (nvcc_compiled_string_view EQUAL "0")
+ set(cudahasstdstringview define)
+diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
+index 12f9d65371b..297578d3437 100644
+--- a/cmake/modules/SearchInstalledSoftware.cmake
++++ b/cmake/modules/SearchInstalledSoftware.cmake
+@@ -1462,6 +1462,30 @@ if(cuda OR tmva-gpu)
+ endif()
+ enable_language(CUDA)
+ set(cuda ON CACHE BOOL "Found Cuda for TMVA GPU" FORCE)
++ # CUDA_NVCC_EXECUTABLE
++ if(DEFINED ENV{CUDA_NVCC_EXECUTABLE})
++ set(CUDA_NVCC_EXECUTABLE "$ENV{CUDA_NVCC_EXECUTABLE}" CACHE FILEPATH "The CUDA compiler")
++ else()
++ find_program(CUDA_NVCC_EXECUTABLE
++ NAMES nvcc nvcc.exe
++ PATHS "${CUDA_TOOLKIT_ROOT_DIR}"
++ ENV CUDA_TOOKIT_ROOT
++ ENV CUDA_PATH
++ ENV CUDA_BIN_PATH
++ PATH_SUFFIXES bin bin64
++ DOC "The CUDA compiler"
++ NO_DEFAULT_PATH
++ )
++ find_program(CUDA_NVCC_EXECUTABLE
++ NAMES nvcc nvcc.exe
++ PATHS /opt/cuda/bin
++ PATH_SUFFIXES cuda/bin
++ DOC "The CUDA compiler"
++ )
++ # Search default search paths, after we search our own set of paths.
++ find_program(CUDA_NVCC_EXECUTABLE nvcc)
++ endif()
++ mark_as_advanced(CUDA_NVCC_EXECUTABLE)
+ ###
+ ### look for package CuDNN
+ if (cudnn)
+
+From bd7728fe40fa98640354baeab6504b4b499327c0 Mon Sep 17 00:00:00 2001
+From: Konstantin Gizdov <kgizdov at gmail.com>
+Date: Sat, 25 Jul 2020 02:44:25 +0300
+Subject: [PATCH 6/6] null sinks differ on different platforms
+
+---
+ cmake/modules/RootConfiguration.cmake | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake
+index 11d1e6b76c0..5a3ff396780 100644
+--- a/cmake/modules/RootConfiguration.cmake
++++ b/cmake/modules/RootConfiguration.cmake
+@@ -519,11 +519,17 @@ if(found_stdstringview)
+ set(hasstdstringview define)
+ if(cuda)
+ if(CUDA_NVCC_EXECUTABLE)
++ if (WIN32)
++ set(PLATFORM_NULL_FILE "nul")
++ else()
++ set(PLATFORM_NULL_FILE "/dev/null")
++ endif()
+ execute_process(
+ COMMAND "echo"
+ "-e" "#include <string_view>\nint main() { char arr[3] = {'B', 'a', 'r'}; std::string_view strv(arr, sizeof(arr)); return 0;}"
+- COMMAND "${CUDA_NVCC_EXECUTABLE}" "-std=c++${CMAKE_CUDA_STANDARD}" "-o" "/dev/null" "-x" "c++" "-"
++ COMMAND "${CUDA_NVCC_EXECUTABLE}" "-std=c++${CMAKE_CUDA_STANDARD}" "-o" "${PLATFORM_NULL_FILE}" "-x" "c++" "-"
+ RESULT_VARIABLE nvcc_compiled_string_view)
++ unset(PLATFORM_NULL_FILE CACHE)
+ if (nvcc_compiled_string_view EQUAL "0")
+ set(cudahasstdstringview define)
+ endif()
More information about the arch-commits
mailing list