The package rpms/root.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/root.git/commit/?id=78faffb6b8608....
Change:
-%ifarch %{ix86}
Thanks.
Full change:
============
commit 78faffb6b86080e66ae21914ffd655f9ab0ccc81
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Fri Oct 21 05:11:01 2022 +0200
Update to 6.26.08
Drop patch root-move-private-decl.patch (fixed upstream)
Drop some previously backported patches
Rename patch root-blas-linking-and-ignore-prefix.patch (partially fixed)
Backport locking of gInterpreterMutex in TClingClassInfo::IsEnum
diff --git a/root-Guard-gInterpreterMutex-in-TClingClassInfo-IsEnum.patch
b/root-Guard-gInterpreterMutex-in-TClingClassInfo-IsEnum.patch
new file mode 100644
index 0000000..d407f38
--- /dev/null
+++ b/root-Guard-gInterpreterMutex-in-TClingClassInfo-IsEnum.patch
@@ -0,0 +1,30 @@
+From 25fcf69c0662b09fbd9dc1c0446b7679ae020ed5 Mon Sep 17 00:00:00 2001
+From: Vincenzo Eduardo Padulano <v.e.padulano(a)gmail.com>
+Date: Sat, 8 Oct 2022 03:12:06 +0200
+Subject: [PATCH] [core] Guard gInterpreterMutex in TClingClassInfo::IsEnum
+
+Fixes
https://github.com/root-project/root/issues/11515
+
+This method leads to contention in some specific scenarios (see linked
+issue).
+
+Co-authored-by: Philippe Canal <pcanal(a)fnal.gov>
+---
+ core/metacling/src/TClingClassInfo.cxx | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/core/metacling/src/TClingClassInfo.cxx
b/core/metacling/src/TClingClassInfo.cxx
+index c0c061dfca..ce6e82d388 100644
+--- a/core/metacling/src/TClingClassInfo.cxx
++++ b/core/metacling/src/TClingClassInfo.cxx
+@@ -815,6 +815,7 @@ bool TClingClassInfo::IsBase(const char *name) const
+
+ bool TClingClassInfo::IsEnum(cling::Interpreter *interp, const char *name)
+ {
++ R__LOCKGUARD(gInterpreterMutex);
+ // Note: This is a static member function.
+ TClingClassInfo info(interp, name);
+ if (info.IsValid() && (info.Property() & kIsEnum)) {
+--
+2.37.3
+
diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch
index 0d9f41a..63490b5 100644
--- a/root-big-endian-byte-swap.patch
+++ b/root-big-endian-byte-swap.patch
@@ -15,8 +15,8 @@ index 3b0a30cdb0..23e41d746f 100644
@@ -1,3 +1,4 @@
+#include "Byteswap.h"
#include "TMVA/RModelParser_ONNX.hxx"
- #include "TMVA/OperatorList.hxx"
#include "onnx_proto3.pb.h"
+
@@ -980,9 +981,14 @@ RModel RModelParser_ONNX::Parse(std::string filename){
//void* data = malloc (fLength * sizeof(float));
std::shared_ptr<void> data(malloc(fLength * sizeof(float)), free);
diff --git a/root-fix-TMVA-tutorial-using-internally-python.patch
b/root-fix-TMVA-tutorial-using-internally-python.patch
deleted file mode 100644
index e1cae2a..0000000
--- a/root-fix-TMVA-tutorial-using-internally-python.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From db974bbe72b97c798b7db52d2481aa24c2ce2b76 Mon Sep 17 00:00:00 2001
-From: moneta <lorenzo.moneta(a)cern.ch>
-Date: Thu, 17 Mar 2022 16:28:42 +0100
-Subject: [PATCH] Fix TMVA tutorial using internally pyton for MacOS 12.3
-
-With the new MacOS update python (and python2) is not existing anymore, only python3.
-Add then a new function TMVA::Python_executable() using ROOT config to determine if ROOT
is using python version 2 or 3. In case of 3 returns as executable "python3".
-
-Fix also the correct location of the input ONNX file for TMVA_SOFIE_ONNX.C (copying the
file at configure time)
----
- tmva/pymva/inc/TMVA/PyMethodBase.h | 6 ++++++
- tmva/pymva/src/PyMethodBase.cxx | 20 ++++++++++++++++++++
- tutorials/CMakeLists.txt | 5 ++++-
- tutorials/tmva/TMVA_CNN_Classification.C | 5 +++--
- tutorials/tmva/TMVA_RNN_Classification.C | 2 +-
- tutorials/tmva/TMVA_SOFIE_Keras.C | 2 +-
- tutorials/tmva/TMVA_SOFIE_ONNX.C | 2 +-
- tutorials/tmva/TMVA_SOFIE_PyTorch.C | 2 +-
- 8 files changed, 37 insertions(+), 7 deletions(-)
-
-diff --git a/tmva/pymva/inc/TMVA/PyMethodBase.h b/tmva/pymva/inc/TMVA/PyMethodBase.h
-index 31a5caada9..a213c3fbad 100644
---- a/tmva/pymva/inc/TMVA/PyMethodBase.h
-+++ b/tmva/pymva/inc/TMVA/PyMethodBase.h
-@@ -53,6 +53,12 @@ namespace TMVA {
- class MethodBoost;
- class DataSetInfo;
-
-+ /// Function to find current Python executable
-+ /// used by ROOT
-+ /// If Python2 is installed return "python"
-+ /// Instead if "Python3" return "python3"
-+ TString Python_Executable();
-+
- class PyMethodBase : public MethodBase {
-
- friend class Factory;
-diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx
-index 86f979e006..26b0f31135 100644
---- a/tmva/pymva/src/PyMethodBase.cxx
-+++ b/tmva/pymva/src/PyMethodBase.cxx
-@@ -19,6 +19,9 @@
- #include "TMVA/MsgLogger.h"
- #include "TMVA/Results.h"
- #include "TMVA/Timer.h"
-+#include "TMVA/Tools.h"
-+
-+#include "TSystem.h"
-
- #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
- #include <numpy/arrayobject.h>
-@@ -37,6 +40,23 @@ public:
- ~PyGILRAII() { PyGILState_Release(m_GILState); }
- };
- } // namespace Internal
-+
-+/// get current Python executable used by ROOT
-+TString Python_Executable() {
-+ TString python_version = gSystem->GetFromPipe("root-config
--python-version");
-+ if (python_version.IsNull()) {
-+ TMVA::gTools().Log() << kFATAL << "Can't find a valid Python
version used to build ROOT" << Endl;
-+ return nullptr;
-+ }
-+ if(python_version[0] == '2')
-+ return "python";
-+ else if (python_version[0] == '3')
-+ return "python3";
-+
-+ TMVA::gTools().Log() << kFATAL << "Invalid Python version used to
build ROOT : " << python_version << Endl;
-+ return nullptr;
-+}
-+
- } // namespace TMVA
-
- ClassImp(PyMethodBase);
-diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
-index de77aaa787..f1f1abda71 100644
---- a/tutorials/CMakeLists.txt
-+++ b/tutorials/CMakeLists.txt
-@@ -281,8 +281,11 @@ else()
- endif()
- if (NOT tmva-sofie)
- list(APPEND tmva_veto tmva/TMVA_SOFIE_ONNX.C)
-+ else()
-+ #copy ONNX file needed for the tutorial
-+ configure_file(${CMAKE_SOURCE_DIR}/tmva/sofie/test/input_models/Linear_16.onnx
${CMAKE_BINARY_DIR}/tutorials/tmva/Linear_16.onnx COPYONLY)
- endif()
--
-+
- endif()
-
- if (NOT ROOT_pythia6_FOUND)
-diff --git a/tutorials/tmva/TMVA_CNN_Classification.C
b/tutorials/tmva/TMVA_CNN_Classification.C
-index fa03562a8f..31172bb729 100644
---- a/tutorials/tmva/TMVA_CNN_Classification.C
-+++ b/tutorials/tmva/TMVA_CNN_Classification.C
-@@ -145,6 +145,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1,
1, 1})
- TMVA::PyMethodBase::PyInitialize();
- #else
- useKerasCNN = false;
-+ usePyTorchCNN = false;
- #endif
-
- TFile *outputFile = nullptr;
-@@ -445,7 +446,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1,
1, 1})
-
- m.SaveSource("make_cnn_model.py");
- // execute
-- gSystem->Exec("python make_cnn_model.py");
-+ gSystem->Exec(TMVA::Python_Executable() + " make_cnn_model.py");
-
- if (gSystem->AccessPathName("model_cnn.h5")) {
- Warning("TMVA_CNN_Classification", "Error creating Keras model
file - skip using Keras");
-@@ -465,7 +466,7 @@ void TMVA_CNN_Classification(std::vector<bool> opt = {1, 1, 1,
1, 1})
- Info("TMVA_CNN_Classification", "Using Convolutional PyTorch
Model");
- TString pyTorchFileName = gROOT->GetTutorialDir() +
TString("/tmva/PyTorch_Generate_CNN_Model.py");
- // check that pytorch can be imported and file defining the model and used later
when booking the method is existing
-- if (gSystem->Exec("python -c 'import torch'") ||
gSystem->AccessPathName(pyTorchFileName) ) {
-+ if (gSystem->Exec(TMVA::Python_Executable() + " -c 'import
torch'") || gSystem->AccessPathName(pyTorchFileName) ) {
- Warning("TMVA_CNN_Classification", "PyTorch is not installed or
model building file is not existing - skip using PyTorch");
- }
- else {
-diff --git a/tutorials/tmva/TMVA_RNN_Classification.C
b/tutorials/tmva/TMVA_RNN_Classification.C
-index eb26d03a2f..b49e4d91c4 100644
---- a/tutorials/tmva/TMVA_RNN_Classification.C
-+++ b/tutorials/tmva/TMVA_RNN_Classification.C
-@@ -431,7 +431,7 @@ the option string
-
- m.SaveSource("make_rnn_model.py");
- // execute
-- gSystem->Exec("python make_rnn_model.py");
-+ gSystem->Exec(TMVA::Python_Executable() + "
make_rnn_model.py");
-
- if (gSystem->AccessPathName(modelName)) {
- Warning("TMVA_RNN_Classification", "Error creating Keras
recurrent model file - Skip using Keras");
-diff --git a/tutorials/tmva/TMVA_SOFIE_Keras.C b/tutorials/tmva/TMVA_SOFIE_Keras.C
-index e9fdbba21a..a87269f7f4 100644
---- a/tutorials/tmva/TMVA_SOFIE_Keras.C
-+++ b/tutorials/tmva/TMVA_SOFIE_Keras.C
-@@ -45,7 +45,7 @@ void TMVA_SOFIE_Keras(){
- TMacro m;
- m.AddLine(pythonSrc);
- m.SaveSource("make_keras_model.py");
-- gSystem->Exec("python make_keras_model.py");
-+ gSystem->Exec(TMVA::Python_Executable() + " make_keras_model.py");
-
- //Parsing the saved Keras .h5 file into RModel object
- SOFIE::RModel model = SOFIE::PyKeras::Parse("KerasModel.h5");
-diff --git a/tutorials/tmva/TMVA_SOFIE_ONNX.C b/tutorials/tmva/TMVA_SOFIE_ONNX.C
-index 30148db4fa..bf66c38896 100644
---- a/tutorials/tmva/TMVA_SOFIE_ONNX.C
-+++ b/tutorials/tmva/TMVA_SOFIE_ONNX.C
-@@ -13,7 +13,7 @@ using namespace TMVA::Experimental;
- void TMVA_SOFIE_ONNX(){
- //Creating parser object to parse ONNX files
- SOFIE::RModelParser_ONNX Parser;
-- SOFIE::RModel model =
Parser.Parse("../../tmva/sofie/test/input_models/Linear_16.onnx");
-+ SOFIE::RModel model = Parser.Parse(std::string(gROOT->GetTutorialsDir()) +
"/tmva/Linear_16.onnx");
-
- //Generating inference code
- model.Generate();
-diff --git a/tutorials/tmva/TMVA_SOFIE_PyTorch.C b/tutorials/tmva/TMVA_SOFIE_PyTorch.C
-index b208b042d7..580787cae1 100644
---- a/tutorials/tmva/TMVA_SOFIE_PyTorch.C
-+++ b/tutorials/tmva/TMVA_SOFIE_PyTorch.C
-@@ -47,7 +47,7 @@ void TMVA_SOFIE_PyTorch(){
- TMacro m;
- m.AddLine(pythonSrc);
- m.SaveSource("make_pytorch_model.py");
-- gSystem->Exec("python make_pytorch_model.py");
-+ gSystem->Exec(TMVA::Python_Executable() + " make_pytorch_model.py");
-
- //Parsing a PyTorch model requires the shape and data-type of input tensor
- //Data-type of input tensor defaults to Float if not specified
---
-2.35.1
-
diff --git a/root-blas-linking-and-ignore-prefix.patch b/root-ignore-prefix.patch
similarity index 53%
rename from root-blas-linking-and-ignore-prefix.patch
rename to root-ignore-prefix.patch
index abe53f7..5b9918a 100644
--- a/root-blas-linking-and-ignore-prefix.patch
+++ b/root-ignore-prefix.patch
@@ -13,15 +13,6 @@ diff --git a/tmva/sofie/test/CMakeLists.txt
b/tmva/sofie/test/CMakeLists.txt
index e4f9d28748..a3a2c9ae16 100644
--- a/tmva/sofie/test/CMakeLists.txt
+++ b/tmva/sofie/test/CMakeLists.txt
-@@ -43,7 +43,7 @@ target_compile_options(emitFromONNX PRIVATE -Wno-unused-parameter
-Wno-array-bou
-
- # Automatic compilation of headers from onnx files
- add_custom_target(SofieCompileModels_ONNX)
--add_dependencies(SofieCompileModels_ONNX emitFromONNX)
-+add_dependencies(SofieCompileModels_ONNX emitFromONNX onepcm)
-
- # Finding .onnx files to be compiled and creating the appropriate command
- file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx")
@@ -51,7 +51,7 @@ foreach(onnx_file ${ONNX_FILES})
get_filename_component(fname ${onnx_file} NAME_WE)
get_filename_component(fdir ${onnx_file} DIRECTORY)
@@ -31,25 +22,6 @@ index e4f9d28748..a3a2c9ae16 100644
USES_TERMINAL
)
endforeach()
-@@ -60,7 +60,8 @@ endforeach()
- ROOT_ADD_GTEST(TestCustomModelsFromONNX TestCustomModelsFromONNX.cxx
- LIBRARIES
- ROOTTMVASofie
-- blas
-+ ${BLAS_LINKER_FLAGS}
-+ ${BLAS_LIBRARIES}
- INCLUDE_DIRS
- ${CMAKE_CURRENT_BINARY_DIR}
- )
-@@ -92,7 +93,7 @@ target_compile_options(emitFromROOT PRIVATE -Wno-unused-parameter
-Wno-array-bou
-
- # Automatic compilation of headers from root files
- add_custom_target(SofieCompileModels_ROOT)
--add_dependencies(SofieCompileModels_ROOT emitFromROOT)
-+add_dependencies(SofieCompileModels_ROOT emitFromROOT onepcm)
-
- # Finding .onnx files to be parsed and creating the appropriate command
- file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx")
@@ -100,7 +101,7 @@ foreach(onnx_file ${ONNX_FILES})
get_filename_component(fname ${onnx_file} NAME_WE)
get_filename_component(fdir ${onnx_file} DIRECTORY)
@@ -59,16 +31,6 @@ index e4f9d28748..a3a2c9ae16 100644
USES_TERMINAL
)
endforeach()
-@@ -109,7 +110,8 @@ endforeach()
- ROOT_ADD_GTEST(TestCustomModelsFromROOT TestCustomModelsFromROOT.cxx
- LIBRARIES
- ROOTTMVASofie
-- blas
-+ ${BLAS_LINKER_FLAGS}
-+ ${BLAS_LIBRARIES}
- INCLUDE_DIRS
- ${CMAKE_CURRENT_BINARY_DIR}
- )
--
2.35.1
diff --git a/root-json-3.11.patch b/root-json-3.11.patch
deleted file mode 100644
index d5c35be..0000000
--- a/root-json-3.11.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From aa68881d612060a131b103ffcadc4b0f2185c49e Mon Sep 17 00:00:00 2001
-From: Jonas Hahnfeld <jonas.hahnfeld(a)cern.ch>
-Date: Thu, 18 Aug 2022 08:57:44 +0200
-Subject: [PATCH 1/3] [eve7] Add missing includes to REveElement.hxx
-
----
- graf3d/eve7/inc/ROOT/REveElement.hxx | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/graf3d/eve7/inc/ROOT/REveElement.hxx b/graf3d/eve7/inc/ROOT/REveElement.hxx
-index 2a127888a2c5..19fad1ec4f77 100644
---- a/graf3d/eve7/inc/ROOT/REveElement.hxx
-+++ b/graf3d/eve7/inc/ROOT/REveElement.hxx
-@@ -18,6 +18,11 @@
-
- #include <map>
- #include <memory>
-+#include <list>
-+#include <ostream>
-+#include <set>
-+#include <string>
-+#include <vector>
-
- class TGeoMatrix;
-
-
-From 395d387b115249a1cab38dbe2fde77ff308a29a5 Mon Sep 17 00:00:00 2001
-From: Jonas Hahnfeld <jonas.hahnfeld(a)cern.ch>
-Date: Thu, 18 Aug 2022 09:13:14 +0200
-Subject: [PATCH 2/3] [eve7] Include json_fwd.hpp if available
-
-Version 3.11 of nlohmann/json introduced "versioned, ABI-tagged inline
-namespace"s, which breaks our forward declaration. Fortunately, we can
-assume the json_fwd.hpp header to be present starting from that same
-version because the JSON_MultipleHeaders option now defaults to ON and
-even if not, json_fwd.hpp is installed since patch version 3.11.2. For
-earlier versions, both methods work but json_fwd.hpp isn't guaranteed
-to be installed. Still use it if available.
-
-Fixes #11130
----
- graf3d/eve7/inc/ROOT/REveElement.hxx | 17 ++++++++++++++---
- 1 file changed, 14 insertions(+), 3 deletions(-)
-
-diff --git a/graf3d/eve7/inc/ROOT/REveElement.hxx b/graf3d/eve7/inc/ROOT/REveElement.hxx
-index 19fad1ec4f77..4a1a463befa4 100644
---- a/graf3d/eve7/inc/ROOT/REveElement.hxx
-+++ b/graf3d/eve7/inc/ROOT/REveElement.hxx
-@@ -16,15 +16,22 @@
- #include <ROOT/REveVector.hxx>
- #include <ROOT/REveProjectionBases.hxx>
-
--#include <map>
- #include <memory>
- #include <list>
- #include <ostream>
- #include <set>
- #include <string>
--#include <vector>
-
--class TGeoMatrix;
-+#if __has_include(<nlohmann/json_fwd.hpp>)
-+#include <nlohmann/json_fwd.hpp>
-+#else
-+// This forward declaration works for versions before 3.11.0, which introduced
-+// a "versioned, ABI-tagged inline namespace". The json_fwd.hpp header is
-+// present in multi-header installations (the default as of version 3.11.0), and
-+// single-header installations of version 3.11.2+.
-+
-+#include <map>
-+#include <vector>
-
- namespace nlohmann {
- template<typename T, typename SFINAE>
-@@ -41,6 +48,10 @@ using json = basic_json<std::map, std::vector, std::string, bool,
std::int64_t,
- adl_serializer, std::vector<std::uint8_t>>;
- } // namespace nlohmann
-
-+#endif
-+
-+class TGeoMatrix;
-+
- namespace ROOT {
- namespace Experimental {
-
-
-From 7f699ad7249d85d989a0e01525e3ad359e936fd7 Mon Sep 17 00:00:00 2001
-From: Jonas Hahnfeld <jonas.hahnfeld(a)cern.ch>
-Date: Thu, 18 Aug 2022 10:09:28 +0200
-Subject: [PATCH 3/3] [cmake] Check for json_fwd.hpp in versions > 3.11
-
-Our forward declaration in REveElement.hxx breaks with the versioned
-namespaces in 3.11, so we require the json_fwd.hpp header.
----
- cmake/modules/SearchInstalledSoftware.cmake | 24 +++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/cmake/modules/SearchInstalledSoftware.cmake
b/cmake/modules/SearchInstalledSoftware.cmake
-index 7da7ce8a46dd..9e871da42a26 100644
---- a/cmake/modules/SearchInstalledSoftware.cmake
-+++ b/cmake/modules/SearchInstalledSoftware.cmake
-@@ -6,6 +6,7 @@
-
- #---Check for installed packages depending on the build options/components enabled --
- include(CheckCXXSourceCompiles)
-+include(CheckIncludeFileCXX)
- include(ExternalProject)
- include(FindPackageHandleStandardArgs)
-
-@@ -80,6 +81,29 @@ if(NOT builtin_nlohmannjson)
- message(STATUS "nlohmann/json.hpp not found. Switching on
builtin_nlohmannjson option")
- set(builtin_nlohmannjson ON CACHE BOOL "Enabled because nlohmann/json.hpp not
found" FORCE)
- endif()
-+
-+ # If we found an external nlohmann_json with a version greater than 3.11,
-+ # check that it has the json_fwd.hpp header.
-+ if(nlohmann_json_FOUND AND nlohmann_json_VERSION VERSION_GREATER_EQUAL 3.11)
-+ set(_old_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+ set(_old_CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET})
-+
-+ set(CMAKE_REQUIRED_LIBRARIES nlohmann_json::nlohmann_json)
-+ set(CMAKE_REQUIRED_QUIET TRUE)
-+ check_include_file_cxx("nlohmann/json_fwd.hpp" _nlohmann_json_fwd_hpp)
-+ if(NOT _nlohmann_json_fwd_hpp)
-+ set(_msg "Could not find nlohmann/json_fwd.hpp, which is required for
versions greater than 3.11.")
-+ if(nlohmann_json_VERSION VERSION_LESS 3.11.2)
-+ set(_msg "${_msg} Please upgrade to at least version 3.11.2.")
-+ else()
-+ set(_msg "${_msg} It is installed by default, so your installation is
incomplete!")
-+ endif()
-+ message(FATAL_ERROR "${_msg}")
-+ endif()
-+
-+ set(CMAKE_REQUIRED_LIBRARIES ${_old_CMAKE_REQUIRED_LIBRARIES})
-+ set(CMAKE_REQUIRED_QUIET ${_old_CMAKE_REQUIRED_QUIET})
-+ endif()
- endif()
- endif()
-
diff --git a/root-move-private-decl.patch b/root-move-private-decl.patch
deleted file mode 100644
index aa81617..0000000
--- a/root-move-private-decl.patch
+++ /dev/null
@@ -1,405 +0,0 @@
-From 9cdd51029f54aba874608f34580ea0ba94b670c7 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Thu, 17 Mar 2022 07:40:28 +0100
-Subject: [PATCH] Move private declarations away from the public header file
-
-This fixes warnings such as these:
-
-IncrementalExecutor::executeFunction: symbol
'_ZN4TMVA12Experimental5SOFIE8INTERNAL19make_ROperator_SeluERKN4onnx9NodeProtoERKNS3_10GraphProtoERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11ETensorTypeESt4hashISG_ESt8equal_toISG_ESaISt4pairIKSG_SH_EEE'
unresolved while linking function '_GLOBAL__sub_I_cling_module_0'!
-You are probably missing the definition of
TMVA::Experimental::SOFIE::INTERNAL::make_ROperator_Selu(onnx::NodeProto const&,
onnx::GraphProto const&, std::unordered_map<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
TMVA::Experimental::SOFIE::ETensorType, std::hash<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const,
TMVA::Experimental::SOFIE::ETensorType> > >&)
-Maybe you need to load the corresponding shared library?
----
- .../inc/TMVA/RModelParser_ONNX.hxx | 61 -------
- tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 164 +++++++++++++++---
- 2 files changed, 139 insertions(+), 86 deletions(-)
-
-diff --git a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
-index 9e9764c0b6..09bcd34fe1 100644
---- a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
-+++ b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx
-@@ -1,81 +1,20 @@
- #ifndef TMVA_SOFIE_RMODELPARSER_ONNX
- #define TMVA_SOFIE_RMODELPARSER_ONNX
-
--
--
- #include "TMVA/SOFIE_common.hxx"
- #include "TMVA/RModel.hxx"
--#include "TMVA/OperatorList.hxx"
-
- #include <string>
--#include <fstream>
--#include <memory>
--#include <ctime>
--
--//forward delcaration
--namespace onnx{
-- class NodeProto;
-- class GraphProto;
--}
-
- namespace TMVA{
- namespace Experimental{
- namespace SOFIE{
-
--namespace INTERNAL{
--
--std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const
onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto,
std::unordered_map<std::string, ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto
&nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string,
ETensorType> &tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto
&nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string,
ETensorType> &tensor_type);
--std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto
&nodeproto, const onnx::GraphProto &graphproto, std::unordered_map<std::string,
ETensorType> &tensor_type);
--std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& graphproto, std::unordered_map<std::string,
ETensorType>& tensor_type);
--
--
--using factoryMethodMap = std::unordered_map<std::string,
std::unique_ptr<ROperator> (*)(const onnx::NodeProto&, const
onnx::GraphProto&, std::unordered_map<std::string, ETensorType>&)>;
--const factoryMethodMap mapOptypeOperator = {
-- {"Gemm", &make_ROperator_Gemm},
-- {"Transpose", &make_ROperator_Transpose},
-- {"Relu", &make_ROperator_Relu},
-- {"Conv", &make_ROperator_Conv},
-- {"RNN", &make_ROperator_RNN},
-- {"Selu", &make_ROperator_Selu},
-- {"Sigmoid", &make_ROperator_Sigmoid},
-- {"LSTM", &make_ROperator_LSTM},
-- {"GRU", &make_ROperator_GRU},
-- {"BatchNormalization", &make_ROperator_BatchNormalization},
-- {"AveragePool", &make_ROperator_Pool},
-- {"GlobalAveragePool", &make_ROperator_Pool},
-- {"MaxPool", &make_ROperator_Pool},
-- {"Add", &make_ROperator_Add},
-- {"Reshape", &make_ROperator_Reshape},
-- {"Flatten", &make_ROperator_Reshape},
-- {"Slice", &make_ROperator_Slice},
-- {"Squeeze", &make_ROperator_Reshape},
-- {"Unsqueeze", &make_ROperator_Reshape},
-- {"Flatten", &make_ROperator_Reshape}
--};
--
--std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto&
graphproto, std::unordered_map<std::string, ETensorType>& tensor_type);
--}//INTERNAL
--
--
--
- class RModelParser_ONNX{
- public:
- RModel Parse(std::string filename);
- };
-
--
--
- }//SOFIE
- }//Experimental
- }//TMVA
-diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
-index 3b0a30cdb0..5f89bf66bd 100644
---- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
-+++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
-@@ -1,9 +1,12 @@
- #include "TMVA/RModelParser_ONNX.hxx"
-+#include "TMVA/OperatorList.hxx"
- #include "onnx_proto3.pb.h"
-
- #include <string>
-+#include <fstream>
- #include <memory>
- #include <cassert>
-+#include <ctime>
-
- namespace TMVA{
- namespace Experimental{
-@@ -11,7 +14,84 @@ namespace SOFIE{
-
- namespace INTERNAL{
-
--std::unique_ptr<ROperator> make_ROperator(size_t idx, const onnx::GraphProto&
graphproto, std::unordered_map<std::string, ETensorType>& tensor_type){
-+static std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+
std::unordered_map<std::string, ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+
std::unordered_map<std::string, ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_BatchNorm(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+
std::unordered_map<std::string, ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+
std::unordered_map<std::string, ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+
std::unordered_map<std::string, ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto
&graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+using factoryMethodMap =
-+ std::unordered_map<std::string, std::unique_ptr<ROperator> (*)(const
onnx::NodeProto &, const onnx::GraphProto &,
-+
std::unordered_map<std::string, ETensorType> &)>;
-+
-+static const factoryMethodMap mapOptypeOperator = {
-+ {"Gemm", &make_ROperator_Gemm}, {"Transpose",
&make_ROperator_Transpose},
-+ {"Relu", &make_ROperator_Relu}, {"Conv",
&make_ROperator_Conv},
-+ {"RNN", &make_ROperator_RNN}, {"Selu",
&make_ROperator_Selu},
-+ {"Sigmoid", &make_ROperator_Sigmoid}, {"LSTM",
&make_ROperator_LSTM},
-+ {"GRU", &make_ROperator_GRU},
{"BatchNormalization", &make_ROperator_BatchNorm},
-+ {"AveragePool", &make_ROperator_Pool}, {"GlobalAveragePool",
&make_ROperator_Pool},
-+ {"MaxPool", &make_ROperator_Pool}, {"Add",
&make_ROperator_Add},
-+ {"Reshape", &make_ROperator_Reshape}, {"Flatten",
&make_ROperator_Reshape},
-+ {"Slice", &make_ROperator_Slice}, {"Squeeze",
&make_ROperator_Reshape},
-+ {"Unsqueeze", &make_ROperator_Reshape}, {"Flatten",
&make_ROperator_Reshape}};
-+
-+static std::unique_ptr<ROperator> make_ROperator(size_t idx, const
onnx::GraphProto &graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type);
-+
-+static std::unique_ptr<ROperator> make_ROperator(size_t idx, const
onnx::GraphProto &graphproto,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
- const auto& nodeproto = graphproto.node(idx);
- auto find = mapOptypeOperator.find(nodeproto.op_type());
- if (find == mapOptypeOperator.end()){
-@@ -24,7 +104,10 @@ std::unique_ptr<ROperator> make_ROperator(size_t idx, const
onnx::GraphProto& gr
- }
- }
-
--std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string,
ETensorType>& tensor_type){
-+static std::unique_ptr<ROperator> make_ROperator_Add(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type = ETensorType::UNDEFINED;
-
-@@ -59,7 +142,11 @@ std::unique_ptr<ROperator> make_ROperator_Add(const
onnx::NodeProto& nodeproto,
-
- return op;
- }
--std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /*graphproto*/, std::unordered_map<std::string,
ETensorType>& tensor_type){
-+
-+static std::unique_ptr<ROperator> make_ROperator_Transpose(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto*/,
-+
std::unordered_map<std::string, ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -99,7 +186,10 @@ std::unique_ptr<ROperator> make_ROperator_Transpose(const
onnx::NodeProto& nodep
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string,
ETensorType>& tensor_type){
-+static std::unique_ptr<ROperator> make_ROperator_Relu(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -131,7 +221,10 @@ std::unique_ptr<ROperator> make_ROperator_Relu(const
onnx::NodeProto& nodeproto,
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string,
ETensorType>& tensor_type){
-+static std::unique_ptr<ROperator> make_ROperator_Selu(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -163,7 +256,10 @@ std::unique_ptr<ROperator> make_ROperator_Selu(const
onnx::NodeProto& nodeproto,
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map<std::string,
ETensorType>& tensor_type){
-+static std::unique_ptr<ROperator> make_ROperator_Sigmoid(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto */,
-+
std::unordered_map<std::string, ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -195,7 +291,10 @@ std::unique_ptr<ROperator> make_ROperator_Sigmoid(const
onnx::NodeProto& nodepro
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /* graphproto */,
std::unordered_map<std::string, ETensorType>& tensor_type){
-+static std::unique_ptr<ROperator> make_ROperator_Gemm(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto & /*
graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -252,7 +351,11 @@ std::unique_ptr<ROperator> make_ROperator_Gemm(const
onnx::NodeProto& nodeproto,
-
- return op;
- }
--std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /* graphproto */,
std::unordered_map<std::string, ETensorType>& tensor_type) {
-+
-+static std::unique_ptr<ROperator> make_ROperator_GRU(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto & /*
graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -344,7 +447,10 @@ std::unique_ptr<ROperator> make_ROperator_GRU(const
onnx::NodeProto& nodeproto,
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /* graphproto */,
std::unordered_map<std::string, ETensorType>& tensor_type) {
-+static std::unique_ptr<ROperator> make_ROperator_Conv(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto & /*
graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -408,7 +514,10 @@ std::unique_ptr<ROperator> make_ROperator_Conv(const
onnx::NodeProto& nodeproto,
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /* graphproto */,
std::unordered_map<std::string, ETensorType>& tensor_type) {
-+static std::unique_ptr<ROperator> make_ROperator_Pool(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto & /*
graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -485,14 +594,13 @@ std::unique_ptr<ROperator> make_ROperator_Pool(const
onnx::NodeProto& nodeproto,
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto
&nodeproto,
-- const onnx::GraphProto &
/*graphproto */,
-- std::unordered_map<std::string,
ETensorType> &tensor_type)
-+static std::unique_ptr<ROperator> make_ROperator_Reshape(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto */,
-+
std::unordered_map<std::string, ETensorType> &tensor_type)
- {
- // make Reshape operator
- ETensorType input_type = ETensorType::UNDEFINED;
-
--
- ReshapeOpMode opMode = Reshape;
- if (nodeproto.op_type() == "Flatten")
- opMode = Flatten;
-@@ -501,7 +609,6 @@ std::unique_ptr<ROperator> make_ROperator_Reshape(const
onnx::NodeProto &nodepro
- else if (nodeproto.op_type() == "Unsqueeze")
- opMode = Unsqueeze;
-
--
- //bool hasShapeInput = (opMode == Reshape) ? true : false;
-
- // reshape has as extra input shape tensor (int64) but
-@@ -553,9 +660,9 @@ std::unique_ptr<ROperator> make_ROperator_Reshape(const
onnx::NodeProto &nodepro
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto
&nodeproto,
-- const onnx::GraphProto &
/*graphproto */,
-- std::unordered_map<std::string,
ETensorType> &tensor_type)
-+static std::unique_ptr<ROperator> make_ROperator_Slice(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto */,
-+
std::unordered_map<std::string, ETensorType> &tensor_type)
- {
- // make Slice operator
- ETensorType input_type = ETensorType::UNDEFINED;
-@@ -634,7 +741,10 @@ std::unique_ptr<ROperator> make_ROperator_Slice(const
onnx::NodeProto &nodeproto
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /* graphproto */,
std::unordered_map<std::string, ETensorType>& tensor_type) {
-+static std::unique_ptr<ROperator> make_ROperator_RNN(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto & /*
graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -722,7 +832,10 @@ std::unique_ptr<ROperator> make_ROperator_RNN(const
onnx::NodeProto& nodeproto,
- return op;
- }
-
--std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto&
nodeproto, const onnx::GraphProto& /* graphproto */,
std::unordered_map<std::string, ETensorType>& tensor_type) {
-+static std::unique_ptr<ROperator> make_ROperator_LSTM(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto & /*
graphproto */,
-+ std::unordered_map<std::string,
ETensorType> &tensor_type)
-+{
-
- ETensorType input_type;
-
-@@ -825,9 +938,10 @@ std::unique_ptr<ROperator> make_ROperator_LSTM(const
onnx::NodeProto& nodeproto,
-
- return op;
- }
--std::unique_ptr<ROperator> make_ROperator_BatchNormalization(const onnx::NodeProto
&nodeproto,
-- const onnx::GraphProto
&/*graphproto*/,
--
std::unordered_map<std::string, ETensorType> &tensor_type)
-+
-+static std::unique_ptr<ROperator> make_ROperator_BatchNorm(const onnx::NodeProto
&nodeproto,
-+ const onnx::GraphProto &
/*graphproto*/,
-+
std::unordered_map<std::string, ETensorType> &tensor_type)
- {
-
- ETensorType input_type;
-@@ -843,8 +957,8 @@ std::unique_ptr<ROperator>
make_ROperator_BatchNormalization(const onnx::NodePro
-
- std::unique_ptr<ROperator> op;
- float fepsilon = 1e-05;
-- float fmomentum = 0.9;
-- std::size_t ftraining_mode = 0;
-+ float fmomentum = 0.9;
-+ std::size_t ftraining_mode = 0;
-
- switch(input_type) {
- case ETensorType::FLOAT:
---
-2.35.1
-
diff --git a/root-protect-against-empty-COMPILE_DEFINITIONS.patch
b/root-protect-against-empty-COMPILE_DEFINITIONS.patch
deleted file mode 100644
index 7b7fd89..0000000
--- a/root-protect-against-empty-COMPILE_DEFINITIONS.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 08ab7e03061e551647d707637957252d121f9c39 Mon Sep 17 00:00:00 2001
-From: Jonas Rembser <jonas.rembser(a)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 c52c23d29a..c62ffc2152 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()
-
---
-2.37.2
-
diff --git a/root.spec b/root.spec
index 5b135f6..85e9a9b 100644
--- a/root.spec
+++ b/root.spec
@@ -63,9 +63,9 @@
%global __provides_exclude_from
^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$
Name: root
-Version: 6.26.06
+Version: 6.26.08
%global libversion %(cut -d. -f 1-2 <<< %{version})
-Release: 5%{?dist}
+Release: 1%{?dist}
Summary: Numerical data analysis framework
License: LGPLv2+
@@ -130,10 +130,10 @@
Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch
Patch14: %{name}-test-timeout.patch
# Fixes for tmva-sofie test compilation
#
https://github.com/root-project/root/pull/10117
-Patch15: %{name}-blas-linking-and-ignore-prefix.patch
-# Move private declarations away from the public header file
-#
https://github.com/root-project/root/pull/10145
-Patch16: %{name}-move-private-decl.patch
+Patch15: %{name}-ignore-prefix.patch
+# Fixes for garbage collection in Python 3.11
+#
https://github.com/root-project/root/pull/11457
+Patch16: %{name}-Fixes-for-garbage-collection-in-Python-3.11.patch
# Fix test when long is 32 bits
#
https://github.com/root-project/root/pull/10302
Patch17: %{name}-longlong.patch
@@ -176,19 +176,11 @@ Patch30: %{name}-tmva-threads.patch
Patch31: %{name}-core-base-test.patch
# Backports
Patch32: %{name}-make-dyld-based-library-search-behavior-default.patch
-Patch33: %{name}-fix-TMVA-tutorial-using-internally-python.patch
+Patch33: %{name}-get-rid-of-lsb_release.patch
Patch34: %{name}-threadsh1-avoid-heap-use-after-free.patch
Patch35: %{name}-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch
Patch36: %{name}-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch
-# Fixes for garbage collection in Python 3.11
-#
https://github.com/root-project/root/pull/11457
-Patch37: %{name}-Fixes-for-garbage-collection-in-Python-3.11.patch
-# Backport
-Patch38: %{name}-get-rid-of-lsb_release.patch
-Patch39: %{name}-protect-against-empty-COMPILE_DEFINITIONS.patch
-# Compatibility with nlohmann json 3.11+
-#
https://github.com/root-project/root/pull/11205
-Patch40: root-json-3.11.patch
+Patch37: %{name}-Guard-gInterpreterMutex-in-TClingClassInfo-IsEnum.patch
%if %{?rhel}%{!?rhel:0} == 7
BuildRequires: devtoolset-8-toolchain
@@ -2055,9 +2047,6 @@ This package contains an ntuple extension for ROOT 7.
%patch35 -p1
%patch36 -p1
%patch37 -p1
-%patch38 -p1
-%patch39 -p1
-%patch40 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
@@ -2103,12 +2092,13 @@ rm etc/notebook/JsMVA/css/*.min.css
%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8
# Allow older json on EPEL 7/8
-sed 's!nlohmann_json 3.9! nlohmann_json 3.6!' \
+sed 's!nlohmann_json 3.9!nlohmann_json 3.6!' \
-i cmake/modules/SearchInstalledSoftware.cmake
%endif
%if %{?rhel}%{!?rhel:0} == 7
# On EPEL 7 disable test that fails to compile
+# Brace initialization list is ambiguous with old compiler
sed 's!.*dataframe_datasetspec!### &!' -i tree/dataframe/test/CMakeLists.txt
%endif
@@ -2772,10 +2762,11 @@ tutorial-dataframe-df026_AsNumpyArrays-py|\
tutorial-roofit-rf409_NumPyPandasToRooFit-py"
%endif
-%ifarch %{ix86}
-# Test failing on ix86 only
-# - gtest-tree-dataframe-test-dataframe-snapshot
-excluded="${excluded}|gtest-tree-dataframe-test-dataframe-snapshot"
+%if %{?rhel}%{!?rhel:0} == 7
+# - pyunittests-pyroot-roofit-roodataset-numpy
+# AttributeError: module 'numpy' has no attribute 'isin'
+excluded="${excluded}|\
+pyunittests-pyroot-roofit-roodataset-numpy"
%endif
%ifarch %{ix86} %{arm}
@@ -3992,6 +3983,13 @@ fi
%endif
%changelog
+* Wed Oct 19 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.26.08-1
+- Update to 6.26.08
+- Drop patch root-move-private-decl.patch (fixed upstream)
+- Drop some previously backported patches
+- Rename patch root-blas-linking-and-ignore-prefix.patch (partially fixed)
+- Backport locking of gInterpreterMutex in TClingClassInfo::IsEnum
+
* Sat Oct 01 2022 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 6.26.06-5
- Use upstream's proposed change for the Python garbage collection issue
diff --git a/sources b/sources
index bd0e6ae..b16c003 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (root-6.26.06.tar.xz) =
6002de6c8b1f43647356d008ca4ed369107ed67ba129271f01180544ad38120f0a26180cd297065fab3669e55671b7ceb53a5ead0c4f61b2ed31b68753bc8adb
+SHA512 (root-6.26.08.tar.xz) =
02a8f8463c49275624e704e41240a9250b6d0b72803f48983656df2bcff685423b5b015096ae797a294b7bf0223aa02ec601d084934e3c7218bf4beaa305c615
SHA512 (root-testfiles.tar.xz) =
945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f