Date: Thursday, August 18, 2022 @ 00:02:04
  Author: kgizdov
Revision: 1266781

upgpkg: root 6.26.06-1: cuda and nccl rebuild

Added:
  root/trunk/fix_rootcling.patch
  root/trunk/nlohmann_json.patch
Modified:
  root/trunk/PKGBUILD

---------------------+
 PKGBUILD            |   39 ++++++++++++++++++--------------
 fix_rootcling.patch |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++
 nlohmann_json.patch |   32 ++++++++++++++++++++++++++
 3 files changed, 114 insertions(+), 17 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2022-08-17 23:53:34 UTC (rev 1266780)
+++ PKGBUILD    2022-08-18 00:02:04 UTC (rev 1266781)
@@ -6,8 +6,8 @@
 
 pkgbase=root
 pkgname=('root' 'root-cuda')
-pkgver=6.26.04
-pkgrel=2
+pkgver=6.26.06
+pkgrel=1
 pkgdesc='C++ data analysis framework and interpreter from CERN'
 arch=('x86_64')
 url='https://root.cern'
@@ -99,16 +99,20 @@
     'jupyter_notebook_config.py'
     'nbman-for-arch.patch'
     'thisroot.fail'
+    'fix_rootcling.patch'
+    'nlohmann_json.patch'
 )
-sha512sums=('d1088f7a6c4f6c00efc3fa57add1e12eb45784934520a1be1aa76442cf526a6d9cb5f69e7fe17b7193c89ff829136842568c00389aa3b9ed9e5638451689ca38'
-            
'af8f178fc9df66997d5495b271e38adcd1636aab4c8fc994c6600c2496127829d831250d73d3fc229b02dfe49b9867d0be979beacb959f2f3a05351b8118a4a6'
-            
'1fe6f4aa09d583d33f27cc766f4935510bb7ab6bbb8d4700baa1aaab92ea6c876500b67da1e4f6e0b510aa5616e4e193b860264b86925de85f2d9f558d75d5dc'
-            
'3c81d255a17b902ffac0187af1752847036137e16641a88b17eef0d9c944e6f0d3c954bc93307d6270603f43f6c23f2e04f98dc7a68f9d076dbaa8006a2527d6'
-            
'991be57297f3d39f1d284615a5b4c670282d1a615e4ab134c7cf5226422f7c00bda7a89a24ce5fec8dd0dc06e1b205e20e5c00701ec94caa6717b756f2bfd528'
-            
'9fe8fe72a2c1e86e75f901d80abd184785229949beaa4c7fd3da7ae5aa1e20615b620945f37efeb41377a3641e750be363517871ef35f5826cc0a2a279540bb9'
-            
'1c905ee7a3f8f5f3f567d957f9be6b503a8631565d4d9b9bfea5e496ef86865c5a8be1a1f8c7842754029879cf0afd2465249f532a116cc43660aa2e460ae682'
-            
'08037f68fa816debc4e9c16a26c862bc026c8e6ceaf2f5131d1493470599b4eb2b2efeef35249f15392aeff0c22bff59264e8a4ac6c73e4f195046be9d185724'
-            
'3b9e382480b28f60af0b096ac9a42e6ba611b899717988bdebffd5aeabab054e37a28a7421f4a0f39198638c31f56a657a8a9ccc3db54a87daf50d43d35b1ca9')
+b2sums=('cb9f4b17f7eae36fbd728aa9c03a5705f5d05da0a9c0913fef6145d3fae4843f1a77b3f6251cd6cc322fa7ada4837c0be69aa53b2e1572c72e6e91d1b68aef47'
+        
'5da6218a171ee0fbd7b03518dde22787bb0e478a18dcf227eea4e65598c0a0bb299747c6503ad3026804e1a4dbcf4d2b674b83e6ed6e482dd3d14ceb4646dee8'
+        
'b5defce795dbfeee75dab0cc4c20ac84fe55cb11e9acdd5e75831b6db98e6190621867a65427ab44d93b6fe30398db6fd191defb029a6dcd0af087c1e5115451'
+        
'5e4c589fd9e226fcf7ff9ab880687c10ff0f7b7c03fdf12fc477622d6ec291e2dc62e7f5ce7b68856bccf37b64b2f4331f46788548d39fdca57fd832d1f3b437'
+        
'fb7879d5961a4714ef2cbd33a4872d88dc0938ee87935c39b89b5973b75847413d941cfcb1af1669cb62b262ba5ab54f233dc0afd3e35c85b958622edfacd114'
+        
'36c3543d008eda4b0200b730d3ca795de5dca0fee0ba6f98f1e1edfc820a92dfd1352a558c1593f2f8590b3febabfb74857ca59211a71090106ce292e399dd09'
+        
'47a7b4491f1455ddb02c3793c7fbaf05184dba9a5fc9d7378608727e69c778dd5832c49f11f4d2c8204dcffc86fc4786b5616fb381c4e3e629d78db9c86913c5'
+        
'ec89007c4441d0010c0bfa90ca81e78ceeeb97bacaae2cc4814bd9a781062add80eaa6e4b8cf59c1a61e89ca8a14f3af6f1163766550f6db4154f671e5176d39'
+        
'3501c944e8cab13fe9f5c8ab75a7cdb4b59bc5b00df4bf45ad246ab8cd6cb1ebde19369bc688458c97ff5f5acd4e86fc19b4c8f57ab4cb422d0a5eacac081138'
+        
'5a6b92f685d830853b862c7471f8e802a45923543beb591313abd8aacf383d176d8e283380ab6418caa751449b5abc95391df1ed3ed83ed0b1d3bb9d25056272'
+        
'f7f73d45e9d6f64b2b3ca8f0275fc84f1dc75b88a5a148fc389247f5708331f0b9ebc8920a6d411a8ab8dd305c9d7e69300df5797ba1e5c0146a5f01a5d39e9f')
 
 get_pyver () {
     python -c 'import sys; print(str(sys.version_info[0]) + "." + 
str(sys.version_info[1]))'
@@ -148,12 +152,13 @@
 
     # pass CUDA architectures to nvcc calls
     # Not yet supported in root: TBD
-    export CUSTOM_CUDA_ARCH='-DCMAKE_CUDA_ARCHITECTURES="52-real 52-virtual
-              53-real 53-virtual 60-real 60-virtual
-              61-real 61-virtual 62-real 62-virtual
-              70-real 70-virtual 72-real 72-virtual
-              75-real 75-virtual 80-real 80-virtual
-              86-real 86-virtual"'
+    local _cuda_arches=('52' '53' '60' '61' '62' '70' '72' '75' '80' '86' '87')
+    local _cuda_arch_vals=''
+    for _cuda_arch in "${_cuda_arches[@]}"; do
+        _cuda_arch_vals+="${_cuda_arch}-real;${_cuda_arch}-virtual;"
+    done
+    _cuda_arch_vals="${_cuda_arch_vals:0:-1}"
+    export CUSTOM_CUDA_ARCH='-DCMAKE_CUDA_ARCHITECTURES='"${_cuda_arch_vals}"
 
     cp -r "${pkgbase}-${pkgver}" "${pkgbase}-${pkgver}-cuda"
 }

Added: fix_rootcling.patch
===================================================================
--- fix_rootcling.patch                         (rev 0)
+++ fix_rootcling.patch 2022-08-18 00:02:04 UTC (rev 1266781)
@@ -0,0 +1,60 @@
+From af599f6239e87c85c36e5634d04210f74a6ef78b Mon Sep 17 00:00:00 2001
+From: Jonas Rembser <jonas.remb...@cern.ch>
+Date: Tue, 21 Sep 2021 15:15:17 +0200
+Subject: [PATCH] [cmake] Protect against empty `COMPILE_DEFINITIONS` in
+ rootcint command
+
+In the `rootcint` command defined in `RootMacros.cmake`, the
+`COMPILE_DEFINITIONS` from the target are forwarded as compiler flags.
+
+The `COMPILE_DEFINITIONS` are stored in the `module_defs` variable with
+a generator expression:
+
+```
+set(module_defs $<TARGET_PROPERTY:${ARG_MODULE},COMPILE_DEFINITIONS>)
+```
+
+Then, the definitions are added to the rootcint command with this
+expression:
+
+```
+"$<$<BOOL:${module_defs}>:-D$<JOIN:${module_defs},;-D>>"
+```
+
+This code was almost copied exactly from the CMake documentation
+example:
+
+https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html
+
+In particular, the `BOOL` check makes sure that the if the target
+property is empty, we will not get a bare `-D` with nothing after it,
+corrupting the rootcint command.
+
+However, there is no protextion against the case where the
+`COMPILE_DEFINITIONS` target property is not empty, but its elements are
+empty strings! This happened to me in my recent build.
+
+Instead of trying to figure out where the empty strings are added to the
+`COMPILE_DEFINITIONS`, it is better to also protect against empty target
+property elements in the CMake generator expressions, which is
+implemented in this commit.
+---
+ cmake/modules/RootMacros.cmake | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake
+index c52c23d29af4..c62ffc2152a5 100644
+--- a/cmake/modules/RootMacros.cmake
++++ b/cmake/modules/RootMacros.cmake
+@@ -628,7 +628,10 @@ function(ROOT_GENERATE_DICTIONARY dictionary)
+       # and list exclusion for generator expressions is too complex.
+       set(module_incs 
$<REMOVE_DUPLICATES:$<TARGET_PROPERTY:${ARG_MODULE},INCLUDE_DIRECTORIES>>)
+       set(module_sysincs 
$<REMOVE_DUPLICATES:$<TARGET_PROPERTY:${ARG_MODULE},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>>)
+-      set(module_defs $<TARGET_PROPERTY:${ARG_MODULE},COMPILE_DEFINITIONS>)
++      # The COMPILE_DEFINITIONS list might contain empty elements. These are
++      # removed with the FILTER generator expression, excluding elements that
++      # match the ^$ regexp (only matches empty strings).
++      set(module_defs 
"$<FILTER:$<TARGET_PROPERTY:${ARG_MODULE},COMPILE_DEFINITIONS>,EXCLUDE,^$>")
+     endif()
+   endif()
+ 

Added: nlohmann_json.patch
===================================================================
--- nlohmann_json.patch                         (rev 0)
+++ nlohmann_json.patch 2022-08-18 00:02:04 UTC (rev 1266781)
@@ -0,0 +1,32 @@
+diff --git a/graf3d/eve7/inc/ROOT/REveElement.hxx 
b/graf3d/eve7/inc/ROOT/REveElement.hxx
+index 2a127888a2..9deb3af147 100644
+--- a/graf3d/eve7/inc/ROOT/REveElement.hxx
++++ b/graf3d/eve7/inc/ROOT/REveElement.hxx
+@@ -16,26 +16,13 @@
+ #include <ROOT/REveVector.hxx>
+ #include <ROOT/REveProjectionBases.hxx>
+ 
++#include <nlohmann/json_fwd.hpp>
++
+ #include <map>
+ #include <memory>
+ 
+ class TGeoMatrix;
+ 
+-namespace nlohmann {
+-template<typename T, typename SFINAE>
+-struct adl_serializer;
+-
+-template <template <typename U, typename V, typename... Args> class 
ObjectType,
+-          template <typename U, typename... Args> class ArrayType, class 
StringType, class BooleanType,
+-          class NumberIntegerType, class NumberUnsignedType, class 
NumberFloatType,
+-          template <typename U> class AllocatorType, template <typename T, 
typename SFINAE = void> class JSONSerializer,
+-          class BinaryType>
+-class basic_json;
+-
+-using json = basic_json<std::map, std::vector, std::string, bool, 
std::int64_t, std::uint64_t, double, std::allocator,
+-                        adl_serializer, std::vector<std::uint8_t>>;
+-} // namespace nlohmann
+-
+ namespace ROOT {
+ namespace Experimental {

Reply via email to