From f57d1d575ec6e885d4d17358f00b73b9df04192a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 9 Dec 2021 17:14:53 +0100 Subject: [PATCH 001/112] Fix segfaults on ppc64le when using the large code model --- root-doxygen-crash-el7.patch | 44 +++++++++++++ root-doxygen-fix1.patch | 87 +++++++++++++++++++++++++ root-doxygen-fix2.patch | 26 ++++++++ root-ppc-no-codemodel.patch | 13 ---- root-ppc-segfault-fix.patch | 49 +++++++++++++++ root-symbol-rewrite.patch | 31 +++++++++ root.spec | 119 +++++++++++++++++------------------ 7 files changed, 296 insertions(+), 73 deletions(-) create mode 100644 root-doxygen-crash-el7.patch create mode 100644 root-doxygen-fix1.patch create mode 100644 root-doxygen-fix2.patch delete mode 100644 root-ppc-no-codemodel.patch create mode 100644 root-ppc-segfault-fix.patch create mode 100644 root-symbol-rewrite.patch diff --git a/root-doxygen-crash-el7.patch b/root-doxygen-crash-el7.patch new file mode 100644 index 0000000..28fb075 --- /dev/null +++ b/root-doxygen-crash-el7.patch @@ -0,0 +1,44 @@ +diff -ur root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C +--- root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C 2021-11-05 18:09:46.916687882 +0100 +@@ -5,7 +5,6 @@ + /// This tutorial shows how a histogram can be filled in parallel + /// with a multiprocess approach. + /// +-/// \macro_image + /// \macro_code + /// + /// \date January 2016 +diff -ur root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C +--- root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C 2021-12-06 18:19:08.498933048 +0100 +@@ -10,7 +10,6 @@ + /// method. This method is not thread safe: in presence of ROOT histograms, the + /// system will not crash but the result is not uniquely defined. + /// +-/// \macro_image + /// \macro_code + /// + /// \date January 2016 +diff -ur root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C root-6.24.06/tutorials/multicore/mt304_fillHistos.C +--- root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mt304_fillHistos.C 2021-12-06 19:54:20.634373797 +0100 +@@ -5,7 +5,6 @@ + /// Illustrates use of power-of-two autobin algorithm + /// + /// \macro_code +-/// \macro_image + /// + /// \date November 2017 + /// \author Gerardo Ganis +diff -ur root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C +--- root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-12-06 19:54:22.174377227 +0100 +@@ -5,7 +5,6 @@ + /// This tutorial shows how a histogram can be filled in parallel + /// with a multiprocess approach. + /// +-/// \macro_image + /// \macro_code + /// + /// \date January 2016 diff --git a/root-doxygen-fix1.patch b/root-doxygen-fix1.patch new file mode 100644 index 0000000..9525bf4 --- /dev/null +++ b/root-doxygen-fix1.patch @@ -0,0 +1,87 @@ +From e303e0105b6f7bd7848a4385fcb62bedb847abb4 Mon Sep 17 00:00:00 2001 +From: Olivier Couet +Date: Mon, 12 Apr 2021 16:22:49 +0200 +Subject: [PATCH] RLogScopedVerbosity doxygen doc fix (#7830) + +* RLogScopedVerbosity doxygen doc was not visible because source code was under ``` instead of ~~~ + +* [foundation] RLogger doc (NFC) - thanks, Sergey! + +Co-authored-by: Axel Naumann +--- + core/foundation/inc/ROOT/RLogger.hxx | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/core/foundation/inc/ROOT/RLogger.hxx b/core/foundation/inc/ROOT/RLogger.hxx +index d753bbc358..c1a1b22690 100644 +--- a/core/foundation/inc/ROOT/RLogger.hxx ++++ b/core/foundation/inc/ROOT/RLogger.hxx +@@ -109,7 +109,7 @@ public: + /// Construct an anonymous channel. + RLogChannel() = default; + +- /// Construct an anonymous channel with a default vebosity. ++ /// Construct an anonymous channel with a default verbosity. + explicit RLogChannel(ELogLevel verbosity) : fVerbosity(verbosity) {} + + /// Construct a log channel given its name, which is part of the diagnostics. +@@ -202,11 +202,11 @@ namespace Detail { + + This builder can be used through the utility preprocessor macros R__LOG_ERROR, + R__LOG_WARNING etc like this: +- ```c++ ++~~~ {.cpp} + R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; + const int decreasedInfoLevel = 5; + R__LOG_XDEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; +- ``` ++~~~ + This will automatically capture the current class and function name, the file and line number. + */ + +@@ -235,10 +235,10 @@ public: + Change the verbosity level (global or specific to the RLogChannel passed to the + constructor) for the lifetime of this object. + Example: +- ```c++ ++~~~ {.cpp} + RLogScopedVerbosity debugThis(gFooLog, ELogLevel::kDebug); + Foo::SomethingToDebug(); +- ``` ++~~~ + */ + class RLogScopedVerbosity { + RLogChannel *fChannel; +@@ -331,10 +331,10 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons + + - The conditional `RLogBuilder` use prevents stream operators from being called if + verbosity is too low, i.e.: +- ```` ++ ~~~ + RLogScopedVerbosity silence(RLogLevel::kFatal); + R__LOG_DEBUG(7) << WillNotBeCalled(); +- ``` ++ ~~~ + - To update counts of warnings / errors / fatal errors, those RLogEntries must + always be created, even if in the end their emission will be silenced. This + should be fine, performance-wise, as they should not happen frequently. +@@ -350,13 +350,13 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons + + /// \name LogMacros + /// Macros to log diagnostics. +-/// ```c++ ++/// ~~~ {.cpp} + /// R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; + /// + /// RLogScopedVerbosity verbose(kDebug + 5); + /// const int decreasedInfoLevel = 5; +-/// R__LOG_DEBUG(decreasedInfoLevel, ROOT::Experimental::WebGUILog()) << "nitty-gritty details"; +-/// ``` ++/// R__LOG_DEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; ++/// ~~~ + ///\{ + #define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__) + #define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__) +-- +2.33.1 + diff --git a/root-doxygen-fix2.patch b/root-doxygen-fix2.patch new file mode 100644 index 0000000..1fa75e7 --- /dev/null +++ b/root-doxygen-fix2.patch @@ -0,0 +1,26 @@ +From 37a1a43347bc1ecb492b13e2f06d80c16779c84f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 5 Dec 2021 21:51:32 +0100 +Subject: [PATCH] Fix doxygen warning + +warning: reached end of file while inside a ~~~ block! +--- + gui/webdisplay/src/RWebDisplayHandle.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx +index 44a544bb51..84ff7a6990 100644 +--- a/gui/webdisplay/src/RWebDisplayHandle.cxx ++++ b/gui/webdisplay/src/RWebDisplayHandle.cxx +@@ -608,7 +608,7 @@ std::unique_ptr RWebDisplayHandle::Display(const RWebDisplayA + /// Browser can specified when starting `root --web=firefox` + /// Returns true when browser started + /// It is convenience method, equivalent to: +-/// ~~~ ++/// ~~~ + /// RWebDisplayArgs args; + /// args.SetUrl(url); + /// args.SetStandalone(false); +-- +2.33.1 + diff --git a/root-ppc-no-codemodel.patch b/root-ppc-no-codemodel.patch deleted file mode 100644 index 3429097..0000000 --- a/root-ppc-no-codemodel.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -index c98a3be0ed..f77d4adec2 100644 ---- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -@@ -77,7 +77,7 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) { - #if defined(__powerpc64__) || defined(__PPC64__) - // We have to use large code model for PowerPC64 because TOC and text sections - // can be more than 2GB apart. -- JTMB->setCodeModel(CodeModel::Large); -+ //JTMB->setCodeModel(CodeModel::Large); - #endif - - std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); diff --git a/root-ppc-segfault-fix.patch b/root-ppc-segfault-fix.patch new file mode 100644 index 0000000..b9cba0f --- /dev/null +++ b/root-ppc-segfault-fix.patch @@ -0,0 +1,49 @@ +From 55ae047b70e927de5c84cfa5ad42905cbd58d499 Mon Sep 17 00:00:00 2001 +From: Vassil Vassilev +Date: Sat, 4 Dec 2021 00:06:19 +0000 +Subject: [PATCH] [llvm] Restore the ppc64le support that we lost in llvm8. + +This patch is backported from https://reviews.llvm.org/D94183 + +For more discussion see https://github.com/numba/numba/issues/4026 + +Fixes root-project/root#8072 and root-project/root#9297 +--- + .../src/lib/Target/PowerPC/PPCISelLowering.cpp | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +diff --git a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp +index 24d50074860d..a922b40aa902 100644 +--- a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp ++++ b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp +@@ -4463,7 +4463,15 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, + if (!G) + return false; + +- const GlobalValue *GV = G->getGlobal(); ++ const GlobalValue *GV = G->getGlobal(); ++ ++ // If the GV is not a strong definition then we need to assume it can be ++ // replaced by another function at link time. The function that replaces ++ // it may not share the same TOC as the caller since the callee may be ++ // replaced by a PC Relative version of the same function. ++ if (!GV->isStrongDefinitionForLinker()) ++ return false; ++ + // The medium and large code models are expected to provide a sufficiently + // large TOC to provide all data addressing needs of a module with a + // single TOC. Since each module will be addressed with a single TOC then we +@@ -4472,13 +4480,6 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, + CodeModel::Large == TM.getCodeModel()) + return TM.shouldAssumeDSOLocal(*Caller->getParent(), GV); + +- // Otherwise we need to ensure callee and caller are in the same section, +- // since the linker may allocate multiple TOCs, and we don't know which +- // sections will belong to the same TOC base. +- +- if (!GV->isStrongDefinitionForLinker()) +- return false; +- + // Any explicitly-specified sections and section prefixes must also match. + // Also, if we're using -ffunction-sections, then each function is always in + // a different section (the same is true for COMDAT functions). diff --git a/root-symbol-rewrite.patch b/root-symbol-rewrite.patch new file mode 100644 index 0000000..c91bbe6 --- /dev/null +++ b/root-symbol-rewrite.patch @@ -0,0 +1,31 @@ +From f99eedeb72644671cd584f48e4c136d47f6b0020 Mon Sep 17 00:00:00 2001 +From: Fangrui Song +Date: Thu, 12 Dec 2019 16:18:57 -0800 +Subject: [PATCH] [MC][PowerPC] Fix a crash when redefining a symbol after .set + +Fix PR44284. This is probably not valid assembly but we should not crash. + +Reviewed By: luporl, #powerpc, steven.zhang + +Differential Revision: https://reviews.llvm.org/D71443 +--- + interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp +index 00df9e41fdae..5e91bdb2f8de 100644 +--- a/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp ++++ b/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp +@@ -201,7 +201,8 @@ public: + + void finish() override { + for (auto *Sym : UpdateOther) +- copyLocalEntry(Sym, Sym->getVariableValue()); ++ if (Sym->isVariable()) ++ copyLocalEntry(Sym, Sym->getVariableValue()); + } + + private: +-- +2.33.1 + diff --git a/root.spec b/root.spec index 26707c6..4406bef 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -117,9 +117,11 @@ Patch15: %{name}-fix-ppc64le-compilation-with-gcc-10.patch # Actually request the use of the large code model for ppc64le # https://github.com/root-project/root/pull/8230 Patch16: %{name}-ppc-codemodel.patch -# Do not request the large code model for ppc64le -# It causes segmentation faults -Patch17: %{name}-ppc-no-codemodel.patch +# Fix segfaults on ppc64le when using the large code model +# PR by Vassil Vassilev based on upstream fix +# https://reviews.llvm.org/D91983 +# https://github.com/root-project/root/pull/9380 +Patch17: %{name}-ppc-segfault-fix.patch # Fall back to blocking I/O if uring fails # Backported # - commit 691403b2cc504fd4e3e7227894023913014a61ff @@ -139,6 +141,17 @@ Patch23: %{name}-ptr-is-null-TStreamerInfo.patch # Fix two failing tests on s390x # https://github.com/root-project/root/pull/8826 Patch24: %{name}-stress-s390x.patch +# Doxygen warning fixes +# Backported from upstream +Patch25: root-doxygen-fix1.patch +# Doxygen warning fixes +# https://github.com/root-project/root/pull/9388 +Patch26: root-doxygen-fix2.patch +# Don't run tutorials that crash during doc generation +# EPEL 7 specific +Patch27: %{name}-doxygen-crash-el7.patch +# Backported fix from LLVM upstream +Patch28: %{name}-symbol-rewrite.patch BuildRequires: make %if %{?rhel}%{!?rhel:0} == 7 @@ -1912,6 +1925,12 @@ This package contains an ntuple extension for ROOT 7. %patch22 -p1 %patch23 -p1 %patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%if %{?rhel}%{!?rhel:0} == 7 +%patch27 -p1 +%endif +%patch28 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2788,60 +2807,30 @@ excluded="${excluded}|test-stresshistofit\$\$" %ifarch %{power64} # PPC64LE specific failures # -# - test-stressgraphics(-interpreted) -excluded="${excluded}|test-stressgraphics" - -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 -# - pyunittests-pyroot-pyz-array-interface -# - pyunittests-pyroot-pyz-rdataframe-asnumpy -# - pyunittests-pyroot-pyz-rdataframe-makenumpy -# - pyunittests-pyroot-pyz-rvec-asrvec -# - pyunittests-pyroot-pyz-ttree-asmatrix -# - tutorial-dataframe-df026_AsNumpyArrays-py -# - tutorial-pyroot-pyroot001_arrayInterface-py -# - tutorial-pyroot-pyroot002_TTreeAsMatrix-py +# - test-stresshistofit-interpreted +# - test-stresshistogram-interpreted +# - test-stressmathcore-interpreted +# - test-stressroostats-interpreted excluded="${excluded}|\ -pyunittests-pyroot-pyz-array-interface|\ -pyunittests-pyroot-pyz-rdataframe-asnumpy|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -pyunittests-pyroot-pyz-rvec-asrvec|\ -pyunittests-pyroot-pyz-ttree-asmatrix|\ -tutorial-dataframe-df026_AsNumpyArrays-py|\ -tutorial-pyroot-pyroot001_arrayInterface-py|\ -tutorial-pyroot-pyroot002_TTreeAsMatrix-py" -%endif +test-stresshistofit-interpreted|\ +test-stresshistogram-interpreted|\ +test-stressmathcore-interpreted|\ +test-stressroostats-interpreted" -%if %{?fedora}%{!?fedora:0} -# - pyunittests-pyroot-pyz-rtensor -# - pyunittests-pyroot-pyz-ttree-branch -# - pyunittests-pyroot-pyz-ttree-setbranchaddress -# - tutorial-r-example -# - tutorial-r-DataFrame -# - tutorial-r-Function -# - tutorial-r-Functor -# - tutorial-r-GlobalMinimization -# - tutorial-r-Integration -# - tutorial-r-Interpolation -# - tutorial-r-Minimization -# - tutorial-r-SimpleFitting -# - tutorial-tmva-envelope-classification -# - tutorial-tmva-TMVA* -# Relocation R_PPC64_REL32 overflow +%if %{?rhel}%{!?rhel:0} == 8 +# Random segmentation faults +# - gtest-tree-dataframe-test-dataframe-snapshot +# +# Fails on ppc64le since RHEL 8.5 update +# Exception: Found not whitelisted libraries after importing ROOT: +# - libpthread-2.28 +# - libm-2.28 +# - libc-2.28 +# - librt-2.28 +# - pyunittests-pyroot-import-load-libs excluded="${excluded}|\ -pyunittests-pyroot-pyz-rtensor|\ -pyunittests-pyroot-pyz-ttree-branch|\ -pyunittests-pyroot-pyz-ttree-setbranchaddress|\ -tutorial-r-example|\ -tutorial-r-DataFrame|\ -tutorial-r-Function|\ -tutorial-r-Functor|\ -tutorial-r-GlobalMinimization|\ -tutorial-r-Integration|\ -tutorial-r-Interpolation|\ -tutorial-r-Minimization|\ -tutorial-r-SimpleFitting|\ -tutorial-tmva-envelope-classification|\ -tutorial-tmva-TMVA" +gtest-tree-dataframe-test-dataframe-snapshot|\ +pyunittests-pyroot-import-load-libs" %endif %endif @@ -2852,7 +2841,6 @@ tutorial-tmva-TMVA" # - gtest-tree-ntuple-v7-test-ntuple-basics # - gtest-tree-ntuple-v7-test-ntuple-extended # - gtest-tree-ntuple-v7-test-ntuple-minifile -# - gtest-tree-ntuple-v7-test-ntuple-storage # - pyunittests-pyroot-pyz-rtensor # - test-stresshistogram(-interpreted) # - test-stresshistofit(-interpreted) @@ -2860,21 +2848,29 @@ tutorial-tmva-TMVA" # - tutorial-roofit-rf203_ranges-py # - tutorial-roofit-rf612_recoverFromInvalidParameters # - tutorial-roofit-rf902_numgenconfig-py -# - tutorial-v7-ntuple-ntpl005_introspection excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ -gtest-tree-ntuple-v7-test-ntuple-storage|\ pyunittests-pyroot-pyz-rtensor|\ test-stresshistogram|\ test-stresshistofit|\ tutorial-dataframe-df006_ranges-py|\ tutorial-roofit-rf203_ranges-py|\ tutorial-roofit-rf612_recoverFromInvalidParameters|\ -tutorial-roofit-rf902_numgenconfig-py|\ -tutorial-v7-ntuple-ntpl005_introspection" +tutorial-roofit-rf902_numgenconfig-py" + +%if %{?rhel}%{!?rhel:0} == 8 +# Issues with file sizes on EPEL 8 s390x +# - gtest-tree-tree-test-testTBranch +# - test-stress +# - test-stressgraphics(-interpreted) +excluded="${excluded}|\ +gtest-tree-tree-test-testTBranch|\ +test-stress\$\$|\ +test-stressgraphics" +%endif %endif # Filter out parts of tests that require remote network access @@ -3861,6 +3857,9 @@ fi %endif %changelog +* Tue Dec 07 2021 Mattias Ellert - 6.24.06-2 +- Fix segfaults on ppc64le when using the large code model + * Thu Nov 04 2021 Mattias Ellert - 6.24.06-1 - Update to 6.24.06 From 530bdfbe23276d5410c2d1b98a7a0d1d8f558ea6 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 17 Jan 2022 19:28:30 +0100 Subject: [PATCH 002/112] Backport gcc 12 fix from LLVM Fix test failure on ppc64le and aarch64 with gcc 12 --- root-fix-compilation-with-gcc-12.patch | 63 +++++++++++++++++++ ...e-on-ppc64le-and-aarch64-with-gcc-12.patch | 43 +++++++++++++ root.spec | 14 ++++- 3 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 root-fix-compilation-with-gcc-12.patch create mode 100644 root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch diff --git a/root-fix-compilation-with-gcc-12.patch b/root-fix-compilation-with-gcc-12.patch new file mode 100644 index 0000000..2c34516 --- /dev/null +++ b/root-fix-compilation-with-gcc-12.patch @@ -0,0 +1,63 @@ +From 3bc55ece1db8b32c5e86fd6b85856addd67265fb Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 15 Jan 2022 06:35:58 +0100 +Subject: [PATCH] Fix compilation with gcc 12 + +Fixes error: use of deleted function + +/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp: In member function 'std::string llvm::NVPTXAsmPrinter::getPTXFundamentalTypeStr(llvm::Type*, bool) const': +/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:1319:10: error: use of deleted function 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::nullptr_t) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator; std::nullptr_t = std::nullptr_t]' + 1319 | return nullptr; + | ^~~~~~~ +In file included from /usr/include/c++/12/string:53, + from /usr/include/c++/12/bits/locale_classes.h:40, + from /usr/include/c++/12/bits/ios_base.h:41, + from /usr/include/c++/12/streambuf:41, + from /usr/include/c++/12/bits/streambuf_iterator.h:35, + from /usr/include/c++/12/iterator:66, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/iterator_range.h:21, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/SmallVector.h:16, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/STLExtras.h:20, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/StringRef.h:12, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/Pass.h:31, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTX.h:17, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.h:17, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:14: +/usr/include/c++/12/bits/basic_string.h:732:7: note: declared here + 732 | basic_string(nullptr_t) = delete; + | ^~~~~~~~~~~~ + +Fix backported from LLVM upstrea https://reviews.llvm.org/D87697 +--- + interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +index 5f38b4a3c4..bfa74bd98f 100644 +--- a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp ++++ b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +@@ -1281,9 +1281,6 @@ void NVPTXAsmPrinter::emitPTXAddressSpace(unsigned int AddressSpace, + std::string + NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const { + switch (Ty->getTypeID()) { +- default: +- llvm_unreachable("unexpected type"); +- break; + case Type::IntegerTyID: { + unsigned NumBits = cast(Ty)->getBitWidth(); + if (NumBits == 1) +@@ -1314,9 +1311,10 @@ NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const { + return "b32"; + else + return "u32"; ++ default: ++ break; + } + llvm_unreachable("unexpected type"); +- return nullptr; + } + + void NVPTXAsmPrinter::emitPTXGlobalVariable(const GlobalVariable *GVar, +-- +2.34.1 + diff --git a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch new file mode 100644 index 0000000..007c3cd --- /dev/null +++ b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch @@ -0,0 +1,43 @@ +From ddc155795baa9d4690717c204e54a7fd4600c688 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 17 Jan 2022 18:49:30 +0100 +Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12 + +.../hist/hist/test/test_tprofile2poly.cxx:61: Failure +The difference between cont1 and cont2 is 1.4551915228366852e-11, which exceeds delta, where +cont1 evaluates to 54886.064319363642, +cont2 evaluates to 54886.064319363628, and +delta evaluates to 9.999999960041972e-12. +.../hist/hist/test/test_tprofile2poly.cxx:61: Failure +The difference between cont1 and cont2 is 1.4551915228366852e-11, where +cont1 evaluates to 109868.61342004745, +cont2 evaluates to 109868.61342004743. +The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead. +--- + hist/hist/test/test_tprofile2poly.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx +index 40cb3052a2..5150da0bea 100644 +--- a/hist/hist/test/test_tprofile2poly.cxx ++++ b/hist/hist/test/test_tprofile2poly.cxx +@@ -58,14 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { + for(Double_t x=0.5; x<10; x+=2.0) { + cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(x,y)); + cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(x,y)); +- ASSERT_NEAR(cont1, cont2, delta); ++ ASSERT_NEAR(cont1, cont2, 2*delta); + } + + } + // test overflow + cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11)); + cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11)); +- ASSERT_NEAR(cont1, cont2, delta); ++ ASSERT_NEAR(cont1, cont2, 2*delta); + + } + +-- +2.34.1 + diff --git a/root.spec b/root.spec index 4406bef..3c01a6c 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -152,6 +152,12 @@ Patch26: root-doxygen-fix2.patch Patch27: %{name}-doxygen-crash-el7.patch # Backported fix from LLVM upstream Patch28: %{name}-symbol-rewrite.patch +# Backport gcc 12 fix from LLVM +# https://github.com/root-project/root/pull/9586 +Patch29: %{name}-fix-compilation-with-gcc-12.patch +# Fix test failure on ppc64le and aarch64 with gcc 12 +# https://github.com/root-project/root/pull/9601 +Patch30: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch BuildRequires: make %if %{?rhel}%{!?rhel:0} == 7 @@ -1931,6 +1937,8 @@ This package contains an ntuple extension for ROOT 7. %patch27 -p1 %endif %patch28 -p1 +%patch29 -p1 +%patch30 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3857,6 +3865,10 @@ fi %endif %changelog +* Sun Jan 16 2022 Mattias Ellert - 6.24.06-3 +- Backport gcc 12 fix from LLVM +- Fix test failure on ppc64le and aarch64 with gcc 12 + * Tue Dec 07 2021 Mattias Ellert - 6.24.06-2 - Fix segfaults on ppc64le when using the large code model From 79bc80ed33ef23cb412f65727b6a12e70b46ac55 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jan 2022 17:57:47 +0000 Subject: [PATCH 003/112] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 3c01a6c..bd095b6 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3865,6 +3865,9 @@ fi %endif %changelog +* Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Sun Jan 16 2022 Mattias Ellert - 6.24.06-3 - Backport gcc 12 fix from LLVM - Fix test failure on ppc64le and aarch64 with gcc 12 From d28cfab6db23ba8129741cb9d378affbc249e264 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 28 Jan 2022 21:28:20 +0100 Subject: [PATCH 004/112] Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) --- root.spec | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index bd095b6..3fa4562 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -2840,6 +2840,13 @@ excluded="${excluded}|\ gtest-tree-dataframe-test-dataframe-snapshot|\ pyunittests-pyroot-import-load-libs" %endif + +%if %{?fedora}%{!?fedora:0} >= 36 +# Fails on Fedora 36 ppc64le +# - test-stressHistFactory(-interpreted) +excluded="${excluded}|\ +test-stressHistFactory" +%endif %endif %ifarch s390x @@ -3865,6 +3872,10 @@ fi %endif %changelog +* Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 +- Exclude failing test on Fedora 36 ppc64le: + test-stressHistFactory(-interpreted) + * Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 1ca8ad1517f21dca869c95afa310022f2b86fed0 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 29 Jan 2022 00:30:44 +0100 Subject: [PATCH 005/112] Disable package note flags --- root.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/root.spec b/root.spec index 3fa4562..4c8d449 100644 --- a/root.spec +++ b/root.spec @@ -1,6 +1,10 @@ %undefine __cmake_in_source_build %undefine __cmake3_in_source_build +# Disable package note flags, since root saves the compiler/linker flags +# used during the build +%undefine _package_note_flags + %if %{?fedora}%{!?fedora:0} >= 31 || %{?rhel}%{!?rhel:0} >= 8 # Don't build python2-root for Fedora >= 31 %global buildpy2 0 @@ -3875,6 +3879,7 @@ fi * Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 - Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) +# Disable package note flags * Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 65aa8a70756160cf36ea5323a408673d44c78b3c Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Wed, 9 Feb 2022 21:06:51 -0700 Subject: [PATCH 006/112] Rebuild for glew 2.2 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 4c8d449..3a305ae 100644 --- a/root.spec +++ b/root.spec @@ -55,7 +55,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 6%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3876,6 +3876,9 @@ fi %endif %changelog +* Thu Feb 10 2022 Orion Poplawski - 6.24.06-6 +- Rebuild for glew 2.2 + * Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 - Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) From 2f8e3d96d1a2bbe2f9cd8a9a87d4ab147df9e60b Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 5 Apr 2022 14:39:21 +0200 Subject: [PATCH 007/112] Update to 6.24.04 New subpackages: root-roofit-common, root-roofit-dataframe-helpers, root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser Removed subpackages: root-memstat and root-montecarlo-vmc Drop the doxygen generated root-doc package (doxygen runs out of memory) Dropped patches: 17 New patches: 22 Updated patches: 5 --- root-32bit-dataframe.patch | 132 ++- root-add-RCutFlowReport-to-LinkDef-file.patch | 26 - root-add-RDisplay-to-LinkDef-file.patch | 25 - ...add-TTreeProcessorMP-to-LinkDef-file.patch | 36 - root-avoid-deleting-TFormulas-twice.patch | 37 + root-big-endian-byte-swap.patch | 40 + root-blas-linking-and-ignore-prefix.patch | 74 ++ root-core-base-test.patch | 31 + root-dataframe-callback.patch | 45 + root-doc-no-notebooks.patch | 21 - root-doxygen-crash-el7.patch | 44 - root-doxygen-crash.patch | 275 ----- root-doxygen-fix1.patch | 87 -- root-doxygen-fix2.patch | 26 - root-endian-warn.patch | 33 + root-epel7-ppc64le-pyroot.patch | 16 - ...MVA-tutorial-using-internally-python.patch | 177 +++ root-fix-multicore-tests-with-few-cores.patch | 168 --- ...-fix-ppc64le-compilation-with-gcc-10.patch | 29 - root-get-src.sh | 6 + root-jsmva-static.patch | 2 +- root-longlong.patch | 52 + ...ased-library-search-behavior-default.patch | 147 +++ root-memory-usage.patch | 43 +- root-missing-include.patch | 32 + root-move-private-decl.patch | 405 +++++++ root-namespace-pymva.patch | 31 + root-namespace-roofit.patch | 43 + root-namespace-sofie.patch | 30 + root-ntuplewait.patch | 39 + root-old-gtest-compat.patch | 325 ++++- root-ppc-codemodel.patch | 36 - root-ppc-segfault-fix.patch | 49 - root-ptr-is-null-RooFit-TMVA.patch | 80 -- root-ptr-is-null-TStreamerInfo.patch | 32 - root-rcolor-static-init.patch | 42 + root-roofit-overflow.patch | 59 + root-roofit-tutorial.patch | 74 ++ root-stress-s390x.patch | 39 - ...-threadsh1-avoid-heap-use-after-free.patch | 48 + root-tmva-threads.patch | 62 + root-unbundle-gtest.patch | 305 +++-- root-uring-warn.patch | 43 + root-uring.patch | 55 - ...ue-filenames-in-fillrandom-tutorials.patch | 25 + root.spec | 1052 +++++++++-------- sources | 2 +- 47 files changed, 2698 insertions(+), 1782 deletions(-) delete mode 100644 root-add-RCutFlowReport-to-LinkDef-file.patch delete mode 100644 root-add-RDisplay-to-LinkDef-file.patch delete mode 100644 root-add-TTreeProcessorMP-to-LinkDef-file.patch create mode 100644 root-avoid-deleting-TFormulas-twice.patch create mode 100644 root-big-endian-byte-swap.patch create mode 100644 root-blas-linking-and-ignore-prefix.patch create mode 100644 root-core-base-test.patch create mode 100644 root-dataframe-callback.patch delete mode 100644 root-doc-no-notebooks.patch delete mode 100644 root-doxygen-crash-el7.patch delete mode 100644 root-doxygen-crash.patch delete mode 100644 root-doxygen-fix1.patch delete mode 100644 root-doxygen-fix2.patch create mode 100644 root-endian-warn.patch delete mode 100644 root-epel7-ppc64le-pyroot.patch create mode 100644 root-fix-TMVA-tutorial-using-internally-python.patch delete mode 100644 root-fix-multicore-tests-with-few-cores.patch delete mode 100644 root-fix-ppc64le-compilation-with-gcc-10.patch create mode 100755 root-get-src.sh create mode 100644 root-longlong.patch create mode 100644 root-make-dyld-based-library-search-behavior-default.patch create mode 100644 root-missing-include.patch create mode 100644 root-move-private-decl.patch create mode 100644 root-namespace-pymva.patch create mode 100644 root-namespace-roofit.patch create mode 100644 root-namespace-sofie.patch create mode 100644 root-ntuplewait.patch delete mode 100644 root-ppc-codemodel.patch delete mode 100644 root-ppc-segfault-fix.patch delete mode 100644 root-ptr-is-null-RooFit-TMVA.patch delete mode 100644 root-ptr-is-null-TStreamerInfo.patch create mode 100644 root-rcolor-static-init.patch create mode 100644 root-roofit-overflow.patch create mode 100644 root-roofit-tutorial.patch delete mode 100644 root-stress-s390x.patch create mode 100644 root-threadsh1-avoid-heap-use-after-free.patch create mode 100644 root-tmva-threads.patch create mode 100644 root-uring-warn.patch delete mode 100644 root-uring.patch create mode 100644 root-use-unique-filenames-in-fillrandom-tutorials.patch diff --git a/root-32bit-dataframe.patch b/root-32bit-dataframe.patch index f9ff85f..89e3c95 100644 --- a/root-32bit-dataframe.patch +++ b/root-32bit-dataframe.patch @@ -1,21 +1,24 @@ -diff -ur root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py root-6.24.02/bindings/pyroot_legacy/ROOT.py ---- root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/pyroot_legacy/ROOT.py 2021-08-11 10:44:16.895804556 +0200 -@@ -438,9 +438,7 @@ - # This function is injected as method to the respective classes in Pythonize.cxx. - _root._RDataFrameAsNumpy = _RDataFrameAsNumpy - --# This Pythonisation is there only for 64 bits builds --if (sys.maxsize > 2**32): # https://docs.python.org/3/library/platform.html#cross-platform -- _root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix -+_root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix - - - ### RINT command emulation ------------------------------------------------------ -diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/makepchinput.py ---- root-6.24.02.orig/build/unix/makepchinput.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/build/unix/makepchinput.py 2021-08-11 10:44:16.926804638 +0200 -@@ -252,9 +252,6 @@ +From 686d5011df607fde2a42c729d6bd446486163784 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 13 Mar 2020 16:20:17 +0100 +Subject: [PATCH] Restore 32-bit dataframe + +--- + build/unix/makepchinput.py | 3 --- + cmake/modules/RootBuildOptions.cmake | 5 ----- + tree/dataframe/test/dataframe_cache.cxx | 4 ---- + tree/dataframe/test/datasource_arrow.cxx | 4 ---- + tree/dataframe/test/datasource_csv.cxx | 4 ---- + tree/dataframe/test/datasource_root.cxx | 4 ---- + tree/dataframe/test/datasource_trivial.cxx | 4 ---- + tutorials/CMakeLists.txt | 5 ----- + 8 files changed, 33 deletions(-) + +diff --git a/build/unix/makepchinput.py b/build/unix/makepchinput.py +index 1adff487de..eec73f946d 100755 +--- a/build/unix/makepchinput.py ++++ b/build/unix/makepchinput.py +@@ -252,9 +252,6 @@ def isDirForPCH(dirName, legacyPyROOT): "math/vdt", "tmva/rmva"] @@ -25,10 +28,27 @@ diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/ma accepted = isAnyPatternInString(PCHPatternsWhitelist,dirName) and \ not isAnyPatternInString(PCHPatternsBlacklist,dirName) -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/tree/dataframe/test/dataframe_cache.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_cache.cxx 2021-08-11 10:44:16.927804641 +0200 -@@ -224,8 +224,6 @@ +diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake +index 7886c5f3e9..6fbd8873f1 100644 +--- a/cmake/modules/RootBuildOptions.cmake ++++ b/cmake/modules/RootBuildOptions.cmake +@@ -344,11 +344,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + set(runtime_cxxmodules_defvalue OFF) + endif() + +-# Disable RDataFrame on 32-bit UNIX platforms due to ROOT-9236 +-if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4) +- set(dataframe_defvalue OFF) +-endif() +- + # MultiProcess is not possible on Windows, so fail if it is manually set: + if(roofit_multiprocess AND WIN32) + message(FATAL_ERROR ">>> Option 'roofit_multiprocess' is not supported on Windows.") +diff --git a/tree/dataframe/test/dataframe_cache.cxx b/tree/dataframe/test/dataframe_cache.cxx +index 77be488052..8475b98acb 100644 +--- a/tree/dataframe/test/dataframe_cache.cxx ++++ b/tree/dataframe/test/dataframe_cache.cxx +@@ -224,8 +224,6 @@ TEST(Cache, evtCounter) } @@ -37,7 +57,7 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/ TEST(Cache, Regex) { -@@ -335,8 +333,6 @@ +@@ -329,8 +327,6 @@ TEST(Cache, Carrays) gSystem->Unlink(fileName); } @@ -46,10 +66,11 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/ // ROOT-10563 TEST(Cache, Alias) { -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02/tree/dataframe/test/datasource_arrow.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_arrow.cxx 2021-08-11 10:44:16.927804641 +0200 -@@ -177,8 +177,6 @@ +diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx +index 5ac9fcf09a..5f5f94a666 100644 +--- a/tree/dataframe/test/datasource_arrow.cxx ++++ b/tree/dataframe/test/datasource_arrow.cxx +@@ -177,8 +177,6 @@ TEST(RArrowDS, SetNSlotsTwice) } #endif @@ -58,16 +79,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02 TEST(RArrowDS, FromARDF) { std::unique_ptr tds(new RArrowDS(createTestTable(), {})); -@@ -250,5 +248,3 @@ +@@ -250,5 +248,3 @@ TEST(RArrowDS, FromARDFWithJittingMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/tree/dataframe/test/datasource_csv.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_csv.cxx 2021-08-11 10:44:16.927804641 +0200 -@@ -207,8 +207,6 @@ +diff --git a/tree/dataframe/test/datasource_csv.cxx b/tree/dataframe/test/datasource_csv.cxx +index 6554719f98..d93117b67a 100644 +--- a/tree/dataframe/test/datasource_csv.cxx ++++ b/tree/dataframe/test/datasource_csv.cxx +@@ -210,8 +210,6 @@ TEST(RCsvDS, SetNSlotsTwice) } #endif @@ -76,16 +98,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/t TEST(RCsvDS, FromARDF) { std::unique_ptr tds(new RCsvDS(fileName0)); -@@ -321,5 +319,3 @@ +@@ -324,5 +322,3 @@ TEST(RCsvDS, ProgressiveReadingRDFMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/tree/dataframe/test/datasource_root.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_root.cxx 2021-08-11 10:44:16.928804644 +0200 -@@ -117,8 +117,6 @@ +diff --git a/tree/dataframe/test/datasource_root.cxx b/tree/dataframe/test/datasource_root.cxx +index 79840d9fff..4c795fee6f 100644 +--- a/tree/dataframe/test/datasource_root.cxx ++++ b/tree/dataframe/test/datasource_root.cxx +@@ -117,8 +117,6 @@ TEST(TRootTDS, SetNSlotsTwice) } #endif @@ -93,17 +116,18 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/ - TEST(TRootTDS, FromARDF) { - std::unique_ptr tds(new RRootDS(treeName, fileGlob)); -@@ -190,5 +188,3 @@ + std::unique_ptr tds(new ROOT::Internal::RDF::RRootDS(treeName, fileGlob)); +@@ -190,5 +188,3 @@ TEST(TRootTDS, FromARDFWithJittingMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.02/tree/dataframe/test/datasource_trivial.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_trivial.cxx 2021-08-11 10:44:16.928804644 +0200 -@@ -141,8 +141,6 @@ +diff --git a/tree/dataframe/test/datasource_trivial.cxx b/tree/dataframe/test/datasource_trivial.cxx +index 7da675c83b..deb89301c7 100644 +--- a/tree/dataframe/test/datasource_trivial.cxx ++++ b/tree/dataframe/test/datasource_trivial.cxx +@@ -141,8 +141,6 @@ TEST(RTrivialDS, EarlyQuitWithRange) EXPECT_EQ(df.Range(10).Count().GetValue(), 10); } @@ -112,16 +136,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24. TEST(RTrivialDS, FromARDFWithJitting) { std::unique_ptr tds(new RTrivialDS(32)); -@@ -245,5 +243,3 @@ +@@ -245,5 +243,3 @@ TEST(RTrivialDS, SkipEntriesMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMakeLists.txt ---- root-6.24.02.orig/tutorials/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/CMakeLists.txt 2021-08-11 10:44:16.974804766 +0200 -@@ -279,10 +279,6 @@ +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index a6e5c97703..12bb610d67 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -332,10 +332,6 @@ else() list(APPEND root7_veto ${v7_veto_files}) endif() @@ -129,10 +154,10 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake - set(bits32_veto dataframe/*.C graphs/timeSeriesFrom*.C v7/ntuple/ntpl004_dimuon.C) -endif() - - #---These ones are disabled !!! ------------------------------------ - set(extra_veto - legacy/benchmarks.C -@@ -335,7 +331,6 @@ + if (APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES arm64) + set(macm1_veto dataframe/df107_SingleTopAnalysis.py) + endif() +@@ -391,7 +387,6 @@ set(all_veto hsimple.C ${classic_veto} ${pythia_veto} ${root7_veto} @@ -140,3 +165,6 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake ${xrootd_veto} ${mlp_veto} ${spectrum_veto} +-- +2.35.1 + diff --git a/root-add-RCutFlowReport-to-LinkDef-file.patch b/root-add-RCutFlowReport-to-LinkDef-file.patch deleted file mode 100644 index 9ec99a1..0000000 --- a/root-add-RCutFlowReport-to-LinkDef-file.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 2e3fabbe5423f50ee98ce848d8e85ec7a2a2106d Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Thu, 15 Jul 2021 12:17:56 +0200 -Subject: [PATCH] [DF] Add RCutFlowReport to LinkDef - -This should fix some sporadic failures in cling's symbol resolution -in builds without runtime cxx modules. ---- - tree/dataframe/inc/LinkDef.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h -index 8103468082..684fc3b6f1 100644 ---- a/tree/dataframe/inc/LinkDef.h -+++ b/tree/dataframe/inc/LinkDef.h -@@ -58,6 +58,7 @@ - #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; - #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; - #pragma link C++ class TNotifyLink; -+#pragma link C++ class ROOT::RDF::RCutFlowReport; - - #endif - --- -2.31.1 - diff --git a/root-add-RDisplay-to-LinkDef-file.patch b/root-add-RDisplay-to-LinkDef-file.patch deleted file mode 100644 index e86880c..0000000 --- a/root-add-RDisplay-to-LinkDef-file.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d9e15857c189edcfa75af5c6244ff68fac74f06f Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Thu, 10 Jun 2021 10:00:32 +0200 -Subject: [PATCH] [DF] Add RDisplay to LinkDef - -To help cling autoloading. ---- - tree/dataframe/inc/LinkDef.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h -index 3879ac8d5d..8103468082 100644 ---- a/tree/dataframe/inc/LinkDef.h -+++ b/tree/dataframe/inc/LinkDef.h -@@ -20,6 +20,7 @@ - #pragma link C++ namespace ROOT::Internal::RDF::GraphDrawing; - #pragma link C++ namespace ROOT::Detail::RDF; - #pragma link C++ namespace ROOT::RDF; -+#pragma link C++ class ROOT::RDF::RDisplay-; - #pragma link C++ class ROOT::Internal::RDF::RActionBase-; - #pragma link C++ class ROOT::Internal::RDF::RJittedAction-; - #pragma link C++ class ROOT::Detail::RDF::RFilterBase-; --- -2.31.1 - diff --git a/root-add-TTreeProcessorMP-to-LinkDef-file.patch b/root-add-TTreeProcessorMP-to-LinkDef-file.patch deleted file mode 100644 index c8a0b1f..0000000 --- a/root-add-TTreeProcessorMP-to-LinkDef-file.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 56d52ccf2fad2736e49d3cfc4c9df22492e1dbfc Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 8 Jun 2021 02:46:18 +0200 -Subject: [PATCH] Add TTreeProcessorMP to LinkDef - -This fixes test failure: - - 745/1157 Test #729: tutorial-multicore-mp102_readNtuplesFillHistosAndFit ................***Failed 1.55 sec -Processing /builddir/build/BUILD/root-6.25.01/tutorials/multicore/mp102_readNtuplesFillHistosAndFit.C... -IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMPC1Ej' unresolved while linking [cling interface function]! -You are probably missing the definition of ROOT::TTreeProcessorMP::TTreeProcessorMP(unsigned int) -Maybe you need to load the corresponding shared library? -IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMP11ReplyToIdleEP7TSocket' unresolved while linking [cling interface function]! -You are probably missing the definition of ROOT::TTreeProcessorMP::ReplyToIdle(TSocket*) -Maybe you need to load the corresponding shared library? -CMake Error at /builddir/build/BUILD/root-6.25.01/x86_64-redhat-linux-gnu/RootTestDriver.cmake:237 (message): - error code: 1 ---- - tree/treeplayer/inc/LinkDef.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tree/treeplayer/inc/LinkDef.h b/tree/treeplayer/inc/LinkDef.h -index e7fdd7c9bf..d195536a40 100644 ---- a/tree/treeplayer/inc/LinkDef.h -+++ b/tree/treeplayer/inc/LinkDef.h -@@ -30,6 +30,7 @@ - #pragma link C++ class TSimpleAnalysis+; - #ifndef _MSC_VER - #pragma link C++ class TMPWorkerTree+; -+#pragma link C++ class ROOT::TTreeProcessorMP-; - #endif - #ifdef R__USE_IMT - #pragma link C++ class ROOT::TTreeProcessorMT-; --- -2.31.1 - diff --git a/root-avoid-deleting-TFormulas-twice.patch b/root-avoid-deleting-TFormulas-twice.patch new file mode 100644 index 0000000..af758ed --- /dev/null +++ b/root-avoid-deleting-TFormulas-twice.patch @@ -0,0 +1,37 @@ +From c7dd58f3bc012690bab16763b1d73a4b7106ced9 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 29 Mar 2022 15:40:35 +0200 +Subject: [PATCH] Avoid deleting TFormulas twice + +Example failure: + + 562/1224 Test #541: tutorial-gl-gltf3 ...................................................***Failed Error regular expression found in output. Regex=[Error in <] 1.36 sec +Processing /builddir/build/BUILD/root-6.26.00/tutorials/gl/gltf3.C... +Error in : A list is accessing an object (0x7fffd1c959a0) already deleted (list name = Functions) +Error in : A list is accessing an object (0x7fffd1c95750) already deleted (list name = Functions) + +The commit also changes the filename used in +tutorials/hist/fillrandom.py to be different form the one used in +tutorials/hist/fillrandom.C (and tutorials/pyroot/fillrandom.py) +--- + tutorials/gl/gltf3.C | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tutorials/gl/gltf3.C b/tutorials/gl/gltf3.C +index 3697e69b7a..4089f0d2b7 100644 +--- a/tutorials/gl/gltf3.C ++++ b/tutorials/gl/gltf3.C +@@ -27,8 +27,8 @@ void gltf3() + TPad *tf3Pad = new TPad("box", "box", 0.04, 0.04, 0.96, 0.8); + tf3Pad->Draw(); + +- TFormula f1 = TFormula("f1", "x*x + y*y + z*z + 2*y - 1"); +- TFormula f2 = TFormula("f2", "x*x + y*y + z*z - 2*y - 1"); ++ TFormula *f1 = new TFormula("f1", "x*x + y*y + z*z + 2*y - 1"); ++ TFormula *f2 = new TFormula("f2", "x*x + y*y + z*z - 2*y - 1"); + + // Klein bottle with cut top&bottom parts + // The Klein bottle is a closed non-orientable surface that has no +-- +2.35.1 + diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch new file mode 100644 index 0000000..0d9f41a --- /dev/null +++ b/root-big-endian-byte-swap.patch @@ -0,0 +1,40 @@ +From d9e03aad7a5132fe9db9992eecb47ee4e91c354c Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 25 Mar 2022 11:13:12 +0100 +Subject: [PATCH] Byte swap values read from the protobuf raw data stream on + big endian + +--- + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +index 3b0a30cdb0..23e41d746f 100644 +--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx ++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +@@ -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 data(malloc(fLength * sizeof(float)), free); + +- if (tensorproto->raw_data().empty() == false){ +- auto raw_data_ptr = reinterpret_cast(const_cast(tensorproto->raw_data().c_str())); +- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float)); ++ if (!tensorproto->raw_data().empty()) { ++#ifdef R__BYTESWAP ++ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float)); ++#else ++ for (std::size_t k = 0; k < fLength; ++k) ++ (reinterpret_cast(data.get()))[k] = ++ R__bswap_32((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); ++#endif + }else{ + tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), static_cast(data.get())); + } +-- +2.35.1 + diff --git a/root-blas-linking-and-ignore-prefix.patch b/root-blas-linking-and-ignore-prefix.patch new file mode 100644 index 0000000..abe53f7 --- /dev/null +++ b/root-blas-linking-and-ignore-prefix.patch @@ -0,0 +1,74 @@ +From 1aa9231becda09a89ec576e4a17ca4d9b6e2f310 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 15 Mar 2022 14:55:37 +0100 +Subject: [PATCH] Link to the blas library found by cmake, not hardcoded + "blas". Set ROOTIGNOREPREFIX=1 when running built binaries during build. Make + sure PCH is created before running emitters. + +--- + tmva/sofie/test/CMakeLists.txt | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +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) + add_custom_command(TARGET SofieCompileModels_ONNX POST_BUILD +- COMMAND ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} ++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} + 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) + add_custom_command(TARGET SofieCompileModels_ROOT POST_BUILD +- COMMAND ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} ++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} + 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-core-base-test.patch b/root-core-base-test.patch new file mode 100644 index 0000000..c268390 --- /dev/null +++ b/root-core-base-test.patch @@ -0,0 +1,31 @@ +From 12d52a60629e1639ced23a1919bd85628d9135ea Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 3 Apr 2022 23:23:00 +0200 +Subject: [PATCH] Fix library link order + +Fixes undefined references when linking CoreBaseTests + +../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::TMemFile(char const*, TMemFile::ZeroCopyView_t const&)' +../../../lib/libCling.so.6.26.00: undefined reference to `TFile::TFile(char const*, char const*, char const*, int)' +../../../lib/libCling.so.6.26.00: undefined reference to `TFile::~TFile()' +../../../lib/libCling.so.6.26.00: undefined reference to `TStreamerInfo::TStreamerInfo()' +../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::~TMemFile()' +--- + core/base/test/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/base/test/CMakeLists.txt b/core/base/test/CMakeLists.txt +index 4b08cb0390..9b52e83405 100644 +--- a/core/base/test/CMakeLists.txt ++++ b/core/base/test/CMakeLists.txt +@@ -22,6 +22,6 @@ ROOT_ADD_GTEST(CoreBaseTests + TExceptionHandlerTests.cxx + TStringTest.cxx + TBitsTests.cxx +- LIBRARIES Core RIO ${extralibs}) ++ LIBRARIES ${extralibs} RIO Core) + + ROOT_ADD_GTEST(CoreErrorTests TErrorTests.cxx LIBRARIES Core) +-- +2.35.1 + diff --git a/root-dataframe-callback.patch b/root-dataframe-callback.patch new file mode 100644 index 0000000..57ffc08 --- /dev/null +++ b/root-dataframe-callback.patch @@ -0,0 +1,45 @@ +From d849bc502eec4ec95d15ca41319ba0467ab22759 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 15:55:29 +0100 +Subject: [PATCH] =?UTF-8?q?NENTRIES=20is=20not=20always=20a=20multiple=20o?= + =?UTF-8?q?f=20the=20expected=20size.=20NENTRIES=20is=2010.=20On=20a=204?= + =?UTF-8?q?=20core=20machine=20the=20expected=20size=20in=202=20=C3=97=204?= + =?UTF-8?q?=20=3D=208.=20Looping=20over=20the=208=20IDs,=202=20have=202=20?= + =?UTF-8?q?entries=20the=20remaining=206=20have=201=20entry=20for=20a=20to?= + =?UTF-8?q?tal=20of=2010=20(NENTRIES)=20entries.=20The=20test=20checked=20?= + =?UTF-8?q?that=20each=20ID=20had=20NENTRIES/(expected=20size)=20entries,?= + =?UTF-8?q?=20which=20in=20this=20case=20with=20integer=20division=20equal?= + =?UTF-8?q?s=201=20entry,=20which=20was=20not=20the=20correct=20test.=20Th?= + =?UTF-8?q?is=20commit=20chenges=20to=20test=20to=20check=20that=20the=20t?= + =?UTF-8?q?otal=20number=20of=20entries=20summed=20for=20all=20IDs=20equal?= + =?UTF-8?q?s=20NENTRIES.?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + tree/dataframe/test/dataframe_samplecallback.cxx | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx +index 188d58dd31..d387ea5f86 100644 +--- a/tree/dataframe/test/dataframe_samplecallback.cxx ++++ b/tree/dataframe/test/dataframe_samplecallback.cxx +@@ -125,11 +125,13 @@ TEST_P(RDFSampleCallback, EmptySourceSampleID) { + // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled + const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2ull); + ASSERT_EQ(result->size(), expectedSize); ++ ULong64_t entries = 0; + for (auto &id : *result) { + // check that all entries start with the expected string + EXPECT_TRUE(id.AsString().rfind("Empty source, range: {", 0) == 0); +- EXPECT_EQ(id.NEntries(), NENTRIES / expectedSize); ++ entries += id.NEntries(); + } ++ EXPECT_EQ(entries, NENTRIES); + } else { + ASSERT_EQ(result->size(), 1); + const auto &id = result->at(0); +-- +2.35.1 + diff --git a/root-doc-no-notebooks.patch b/root-doc-no-notebooks.patch deleted file mode 100644 index f94d31f..0000000 --- a/root-doc-no-notebooks.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ur root-6.20.02.orig/documentation/doxygen/filter.cxx root-6.20.02/documentation/doxygen/filter.cxx ---- root-6.20.02.orig/documentation/doxygen/filter.cxx 2020-03-15 16:21:25.000000000 +0100 -+++ root-6.20.02/documentation/doxygen/filter.cxx 2020-03-15 20:05:59.047270429 +0100 -@@ -378,16 +378,7 @@ - - // notebook found - if (gLineString.find("\\notebook") != string::npos) { -- ExecuteCommand(StringFormat("%s converttonotebook.py %s %s/notebooks/", -- gPythonExec.c_str(), -- gFileName.c_str(), gOutDir.c_str())); -- if (gPython){ -- gLineString = "## "; -- } -- else{ -- gLineString = "/// "; -- } -- gLineString += StringFormat( "\\htmlonly \"View \"Open \\endhtmlonly \n", gMacroName.c_str() , gMacroName.c_str()); -+ gLineString = ""; - } - - // \macro_output found diff --git a/root-doxygen-crash-el7.patch b/root-doxygen-crash-el7.patch deleted file mode 100644 index 28fb075..0000000 --- a/root-doxygen-crash-el7.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -ur root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C ---- root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C 2021-11-05 18:09:46.916687882 +0100 -@@ -5,7 +5,6 @@ - /// This tutorial shows how a histogram can be filled in parallel - /// with a multiprocess approach. - /// --/// \macro_image - /// \macro_code - /// - /// \date January 2016 -diff -ur root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C ---- root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C 2021-12-06 18:19:08.498933048 +0100 -@@ -10,7 +10,6 @@ - /// method. This method is not thread safe: in presence of ROOT histograms, the - /// system will not crash but the result is not uniquely defined. - /// --/// \macro_image - /// \macro_code - /// - /// \date January 2016 -diff -ur root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C root-6.24.06/tutorials/multicore/mt304_fillHistos.C ---- root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mt304_fillHistos.C 2021-12-06 19:54:20.634373797 +0100 -@@ -5,7 +5,6 @@ - /// Illustrates use of power-of-two autobin algorithm - /// - /// \macro_code --/// \macro_image - /// - /// \date November 2017 - /// \author Gerardo Ganis -diff -ur root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C ---- root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-12-06 19:54:22.174377227 +0100 -@@ -5,7 +5,6 @@ - /// This tutorial shows how a histogram can be filled in parallel - /// with a multiprocess approach. - /// --/// \macro_image - /// \macro_code - /// - /// \date January 2016 diff --git a/root-doxygen-crash.patch b/root-doxygen-crash.patch deleted file mode 100644 index d69d7e7..0000000 --- a/root-doxygen-crash.patch +++ /dev/null @@ -1,275 +0,0 @@ -diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C root-6.24.02/tutorials/dataframe/df002_dataModel.C ---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df002_dataModel.C 2021-08-11 03:55:11.021149115 +0200 -@@ -7,7 +7,6 @@ - /// complex than flat ntuples with RDataFrame - /// - /// \macro_code --/// \macro_image - /// - /// \date December 2016 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py root-6.24.02/tutorials/dataframe/df002_dataModel.py ---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df002_dataModel.py 2021-08-11 03:55:11.084149272 +0200 -@@ -7,7 +7,6 @@ - ## complex than flat ntuples with RDataFrame - ## - ## \macro_code --## \macro_image - ## - ## \date May 2017 - ## \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.C root-6.24.02/tutorials/dataframe/df003_profiles.C ---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df003_profiles.C 2021-08-11 03:55:11.148149432 +0200 -@@ -7,7 +7,6 @@ - /// RDataFrame. See the documentation of TProfile and TProfile2D to better - /// understand the analogy of this code with the example one. - /// --/// \macro_image - /// \macro_code - /// - /// \date February 2017 -diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.py root-6.24.02/tutorials/dataframe/df003_profiles.py ---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df003_profiles.py 2021-08-11 03:55:11.211149590 +0200 -@@ -8,7 +8,6 @@ - ## understand the analogy of this code with the example one. - ## - ## \macro_code --## \macro_image - ## - ## \date February 2017 - ## \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C ---- root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C 2021-08-11 03:55:11.275149750 +0200 -@@ -7,7 +7,6 @@ - /// `Fill` method. - /// - /// \macro_code --/// \macro_image - /// - /// \date March 2017 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C root-6.24.02/tutorials/dataframe/df007_snapshot.C ---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df007_snapshot.C 2021-08-11 03:55:11.338149907 +0200 -@@ -5,7 +5,6 @@ - /// - /// This tutorial shows how to write out datasets in ROOT format using the RDataFrame - /// --/// \macro_image - /// \macro_code - /// - /// \date April 2017 -diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py root-6.24.02/tutorials/dataframe/df007_snapshot.py ---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df007_snapshot.py 2021-08-11 03:55:11.402150067 +0200 -@@ -5,7 +5,6 @@ - ## - ## This tutorial shows how to write out datasets in ROOT format using the RDataFrame - ## --## \macro_image - ## \macro_code - ## - ## \date April 2017 -diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C ---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C 2021-08-11 03:55:11.465150225 +0200 -@@ -14,7 +14,6 @@ - /// DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700). - /// - /// \macro_code --/// \macro_image - /// - /// \date October 2017 - /// \author Enric Tejedor (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py ---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py 2021-08-11 03:55:11.529150385 +0200 -@@ -14,7 +14,6 @@ - ## DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700). - ## - ## \macro_code --## \macro_image - ## - ## \date October 2017 - ## \author Enric Tejedor (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C ---- root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C 2021-08-11 03:55:11.593150545 +0200 -@@ -14,7 +14,6 @@ - /// From the ROOT website: https://root.cern.ch/files/tutorials/tdf014_CsvDataSource_MuRun2010B.csv - /// - /// \macro_code --/// \macro_image - /// - /// \date February 2018 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C root-6.24.02/tutorials/dataframe/df016_vecOps.C ---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df016_vecOps.C 2021-08-11 03:55:11.656150702 +0200 -@@ -7,7 +7,6 @@ - /// stored in datasets, a situation very common in HEP data analysis. - /// - /// \macro_code --/// \macro_image - /// - /// \date February 2018 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py root-6.24.02/tutorials/dataframe/df016_vecOps.py ---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df016_vecOps.py 2021-08-11 03:55:11.720150862 +0200 -@@ -6,7 +6,6 @@ - ## This tutorial shows the potential of the VecOps approach for treating collections - ## stored in datasets, a situation very common in HEP data analysis. - ## --## \macro_image - ## \macro_code - ## - ## \date February 2018 -diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C ---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C 2021-08-11 03:55:11.783151020 +0200 -@@ -11,7 +11,6 @@ - /// greater than 100. - /// - /// \macro_code --/// \macro_image - /// - /// \date March 2018 - /// \authors Danilo Piparo (CERN), Andre Vieira Silva -diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py ---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py 2021-08-11 03:55:11.846151177 +0200 -@@ -7,7 +7,6 @@ - ## model typically adopted in HEP for analysis. - ## - ## \macro_code --## \macro_image - ## - ## \date March 2018 - ## \authors Danilo Piparo (CERN), Andre Vieira Silva -diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.C root-6.24.02/tutorials/dataframe/df019_Cache.C ---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df019_Cache.C 2021-08-11 03:55:11.910151337 +0200 -@@ -18,7 +18,6 @@ - /// only when the event loop is triggered on it. - /// - /// \macro_code --/// \macro_image - /// - /// \date June 2018 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.py root-6.24.02/tutorials/dataframe/df019_Cache.py ---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df019_Cache.py 2021-08-11 03:55:11.973151495 +0200 -@@ -18,7 +18,6 @@ - ## only when the event loop is triggered on it. - ## - ## \macro_code --## \macro_image - ## - ## \date June 2018 - ## \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C root-6.24.02/tutorials/dataframe/df021_createTGraph.C ---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.C 2021-08-11 03:55:12.037151655 +0200 -@@ -4,7 +4,6 @@ - /// Fill a TGraph using RDataFrame. - /// - /// \macro_code --/// \macro_image - /// - /// \date July 2018 - /// \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino) -diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py root-6.24.02/tutorials/dataframe/df021_createTGraph.py ---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.py 2021-08-11 03:55:12.100151813 +0200 -@@ -4,7 +4,6 @@ - ## Fill a TGraph using RDataFrame. - ## - ## \macro_code --## \macro_image - ## - ## \date July 2018 - ## \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino) -diff -ur root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C root-6.24.02/tutorials/tmva/tmva003_RReader.C ---- root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/tmva003_RReader.C 2021-08-11 04:16:33.833359421 +0200 -@@ -5,7 +5,6 @@ - /// TMVA XML files. - /// - /// \macro_code --/// \macro_output - /// - /// \date July 2019 - /// \author Stefan Wunsch -diff -ur root-6.24.02.orig/tutorials/tmva/tmva103_Application.C root-6.24.02/tutorials/tmva/tmva103_Application.C ---- root-6.24.02.orig/tutorials/tmva/tmva103_Application.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/tmva103_Application.C 2021-08-11 21:56:49.387390340 +0200 -@@ -6,7 +6,6 @@ - /// event-by-event inference, batch inference and pipelines with RDataFrame. - /// - /// \macro_code --/// \macro_output - /// - /// \date December 2018 - /// \author Stefan Wunsch -diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C ---- root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C 2021-08-10 15:21:03.306171069 +0200 -@@ -6,7 +6,6 @@ - /// This is an example of using a CNN in TMVA. We do classification using a toy image data set - /// that is generated when running the example macro - /// --/// \macro_image - /// \macro_output - /// \macro_code - /// -diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C ---- root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C 2021-08-10 15:21:33.974251559 +0200 -@@ -7,7 +7,6 @@ - /// used in this paper: Baldi, P., P. Sadowski, and D. Whiteson. “Searching for Exotic Particles in High-energy Physics - /// with Deep Learning.” Nature Communications 5 (July 2, 2014). - /// --/// \macro_image - /// \macro_output - /// \macro_code - /// -diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C ---- root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C 2021-08-10 15:21:15.657203486 +0200 -@@ -6,7 +6,6 @@ - /// This is an example of using a RNN in TMVA. We do classification using a toy time dependent data set - /// that is generated when running this example macro - /// --/// \macro_image - /// \macro_output - /// \macro_code - /// -diff -ur root-6.24.02.orig/tutorials/v7/line.cxx root-6.24.02/tutorials/v7/line.cxx ---- root-6.24.02.orig/tutorials/v7/line.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/v7/line.cxx 2021-08-16 14:25:32.528867781 +0200 -@@ -6,7 +6,6 @@ - /// "normal" coordinates' system and changing the line color linearly from black - /// to red. - /// --/// \macro_image (line.png) - /// \macro_code - /// - /// \date 2018-03-18 -diff -ur root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C ---- root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C 2021-08-10 15:22:06.504336763 +0200 -@@ -4,7 +4,6 @@ - /// Write and read an RNTuple from a user-defined class. Adapted from tv3.C - /// Illustrates various RNTuple introspection methods. - /// --/// \macro_image - /// \macro_code - /// - /// \date April 2020 diff --git a/root-doxygen-fix1.patch b/root-doxygen-fix1.patch deleted file mode 100644 index 9525bf4..0000000 --- a/root-doxygen-fix1.patch +++ /dev/null @@ -1,87 +0,0 @@ -From e303e0105b6f7bd7848a4385fcb62bedb847abb4 Mon Sep 17 00:00:00 2001 -From: Olivier Couet -Date: Mon, 12 Apr 2021 16:22:49 +0200 -Subject: [PATCH] RLogScopedVerbosity doxygen doc fix (#7830) - -* RLogScopedVerbosity doxygen doc was not visible because source code was under ``` instead of ~~~ - -* [foundation] RLogger doc (NFC) - thanks, Sergey! - -Co-authored-by: Axel Naumann ---- - core/foundation/inc/ROOT/RLogger.hxx | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/core/foundation/inc/ROOT/RLogger.hxx b/core/foundation/inc/ROOT/RLogger.hxx -index d753bbc358..c1a1b22690 100644 ---- a/core/foundation/inc/ROOT/RLogger.hxx -+++ b/core/foundation/inc/ROOT/RLogger.hxx -@@ -109,7 +109,7 @@ public: - /// Construct an anonymous channel. - RLogChannel() = default; - -- /// Construct an anonymous channel with a default vebosity. -+ /// Construct an anonymous channel with a default verbosity. - explicit RLogChannel(ELogLevel verbosity) : fVerbosity(verbosity) {} - - /// Construct a log channel given its name, which is part of the diagnostics. -@@ -202,11 +202,11 @@ namespace Detail { - - This builder can be used through the utility preprocessor macros R__LOG_ERROR, - R__LOG_WARNING etc like this: -- ```c++ -+~~~ {.cpp} - R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; - const int decreasedInfoLevel = 5; - R__LOG_XDEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; -- ``` -+~~~ - This will automatically capture the current class and function name, the file and line number. - */ - -@@ -235,10 +235,10 @@ public: - Change the verbosity level (global or specific to the RLogChannel passed to the - constructor) for the lifetime of this object. - Example: -- ```c++ -+~~~ {.cpp} - RLogScopedVerbosity debugThis(gFooLog, ELogLevel::kDebug); - Foo::SomethingToDebug(); -- ``` -+~~~ - */ - class RLogScopedVerbosity { - RLogChannel *fChannel; -@@ -331,10 +331,10 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons - - - The conditional `RLogBuilder` use prevents stream operators from being called if - verbosity is too low, i.e.: -- ```` -+ ~~~ - RLogScopedVerbosity silence(RLogLevel::kFatal); - R__LOG_DEBUG(7) << WillNotBeCalled(); -- ``` -+ ~~~ - - To update counts of warnings / errors / fatal errors, those RLogEntries must - always be created, even if in the end their emission will be silenced. This - should be fine, performance-wise, as they should not happen frequently. -@@ -350,13 +350,13 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons - - /// \name LogMacros - /// Macros to log diagnostics. --/// ```c++ -+/// ~~~ {.cpp} - /// R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; - /// - /// RLogScopedVerbosity verbose(kDebug + 5); - /// const int decreasedInfoLevel = 5; --/// R__LOG_DEBUG(decreasedInfoLevel, ROOT::Experimental::WebGUILog()) << "nitty-gritty details"; --/// ``` -+/// R__LOG_DEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; -+/// ~~~ - ///\{ - #define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__) - #define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__) --- -2.33.1 - diff --git a/root-doxygen-fix2.patch b/root-doxygen-fix2.patch deleted file mode 100644 index 1fa75e7..0000000 --- a/root-doxygen-fix2.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 37a1a43347bc1ecb492b13e2f06d80c16779c84f Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 5 Dec 2021 21:51:32 +0100 -Subject: [PATCH] Fix doxygen warning - -warning: reached end of file while inside a ~~~ block! ---- - gui/webdisplay/src/RWebDisplayHandle.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx -index 44a544bb51..84ff7a6990 100644 ---- a/gui/webdisplay/src/RWebDisplayHandle.cxx -+++ b/gui/webdisplay/src/RWebDisplayHandle.cxx -@@ -608,7 +608,7 @@ std::unique_ptr RWebDisplayHandle::Display(const RWebDisplayA - /// Browser can specified when starting `root --web=firefox` - /// Returns true when browser started - /// It is convenience method, equivalent to: --/// ~~~ -+/// ~~~ - /// RWebDisplayArgs args; - /// args.SetUrl(url); - /// args.SetStandalone(false); --- -2.33.1 - diff --git a/root-endian-warn.patch b/root-endian-warn.patch new file mode 100644 index 0000000..77cd6b9 --- /dev/null +++ b/root-endian-warn.patch @@ -0,0 +1,33 @@ +From ba0dc65e558fd916dbe18f8dbe8208a3be932c25 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 28 Mar 2022 09:20:18 +0200 +Subject: [PATCH 2/2] Ignore warnings about RooNaNPacker not being implemented + for big endian + +This warning is triggered in many tests, so it makes sense to put it +in the default ignored set. +--- + test/unit_testing_support/ROOTUnitTestSupport.cxx | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/test/unit_testing_support/ROOTUnitTestSupport.cxx b/test/unit_testing_support/ROOTUnitTestSupport.cxx +index 259ab4e09c..79cd476950 100644 +--- a/test/unit_testing_support/ROOTUnitTestSupport.cxx ++++ b/test/unit_testing_support/ROOTUnitTestSupport.cxx +@@ -73,6 +73,13 @@ static struct ForbidDiagnostics { + return; + } + ++ // FIXME: RooNaNPacker warns about not being implemented for big endian ++ if (level == kWarning ++ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) { ++ std::cerr << "Warning in " << location << " " << msg << std::endl; ++ return; ++ } ++ + FAIL() << "Received unexpected diagnostic of severity " + << level + << " at '" << location << "' reading '" << msg << "'.\n" +-- +2.35.1 + diff --git a/root-epel7-ppc64le-pyroot.patch b/root-epel7-ppc64le-pyroot.patch deleted file mode 100644 index 4619bf0..0000000 --- a/root-epel7-ppc64le-pyroot.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -ur root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py ---- root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-13 11:42:09.000000000 +0100 -+++ root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-14 15:38:24.462463625 +0100 -@@ -19,6 +19,12 @@ - # Prevent cppyy from filtering ROOT libraries - environ['CPPYY_NO_ROOT_FILTER'] = '1' - -+try: -+ from ctypes import cdll -+ libCore = cdll.LoadLibrary("libCore.so") -+except: -+ print("An exception occurred while loading libCore.so with ctypes") -+ - import cppyy - if not 'ROOTSYS' in environ: - # Revert setting made by cppyy diff --git a/root-fix-TMVA-tutorial-using-internally-python.patch b/root-fix-TMVA-tutorial-using-internally-python.patch new file mode 100644 index 0000000..e1cae2a --- /dev/null +++ b/root-fix-TMVA-tutorial-using-internally-python.patch @@ -0,0 +1,177 @@ +From db974bbe72b97c798b7db52d2481aa24c2ce2b76 Mon Sep 17 00:00:00 2001 +From: moneta +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 +@@ -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 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 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 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-fix-multicore-tests-with-few-cores.patch b/root-fix-multicore-tests-with-few-cores.patch deleted file mode 100644 index 55ad56e..0000000 --- a/root-fix-multicore-tests-with-few-cores.patch +++ /dev/null @@ -1,168 +0,0 @@ -From 153f1c3de0e24f5678fd3a706f902ac12b11048e Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 18 Apr 2021 07:28:41 +0200 -Subject: [PATCH] Fix multicore tests when running on machines with few cores - -When running on machines with few cores, enabling multithreading can -give you fewer cores than requested. For most of the tests this does -not matter. However, some tests verify the number of threads used. -This commit adapts those tests for this situation. ---- - tree/dataframe/test/dataframe_concurrency.cxx | 18 +++++++++------- - tree/dataframe/test/dataframe_interface.cxx | 7 +++++-- - tree/dataframe/test/dataframe_simple.cxx | 2 +- - tree/dataframe/test/dataframe_snapshot.cxx | 6 ++++-- - .../test/treeprocmt/treeprocessormt.cxx | 21 +++++++++++++++---- - 5 files changed, 37 insertions(+), 17 deletions(-) - -diff --git a/tree/dataframe/test/dataframe_concurrency.cxx b/tree/dataframe/test/dataframe_concurrency.cxx -index d1b25493e5..a4bce595f8 100644 ---- a/tree/dataframe/test/dataframe_concurrency.cxx -+++ b/tree/dataframe/test/dataframe_concurrency.cxx -@@ -57,33 +57,35 @@ TEST(RDFConcurrency, NestedParallelismBetweenDefineCalls) - // [DF] Warn on mismatch between slot pool size and effective number of slots - TEST(RDFSimpleTests, ThrowOnPoolSizeMismatch) - { -+ const unsigned int nslots = std::min(3u, std::thread::hardware_concurrency()); -+ - // pool created after RDF -- { -+ if (nslots > 1) { - ROOT::RDataFrame df(1); -- ROOT::EnableImplicitMT(3); -+ ROOT::EnableImplicitMT(nslots); - try { - df.Count().GetValue(); - } catch (const std::runtime_error &e) { - const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required " -- "was 1, but when starting the event loop it was 3. Maybe EnableImplicitMT() was " -+ "was 1, but when starting the event loop it was " + std::to_string(nslots) + ". Maybe EnableImplicitMT() was " - "called after the RDataFrame was constructed?"; -- EXPECT_STREQ(e.what(), expected_msg); -+ EXPECT_STREQ(e.what(), expected_msg.c_str()); - } - ROOT::DisableImplicitMT(); - } - - // pool deleted after RDF creation -- { -- ROOT::EnableImplicitMT(3); -+ if (nslots > 1) { -+ ROOT::EnableImplicitMT(nslots); - ROOT::RDataFrame df(1); - ROOT::DisableImplicitMT(); - try { - df.Count().GetValue(); - } catch (const std::runtime_error &e) { - const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required " -- "was 3, but when starting the event loop it was 1. Maybe DisableImplicitMT() was " -+ "was " + std::to_string(nslots) + ", but when starting the event loop it was 1. Maybe DisableImplicitMT() was " - "called after the RDataFrame was constructed?"; -- EXPECT_STREQ(e.what(), expected_msg); -+ EXPECT_STREQ(e.what(), expected_msg.c_str()); - } - } - } -diff --git a/tree/dataframe/test/dataframe_interface.cxx b/tree/dataframe/test/dataframe_interface.cxx -index afdd8360ef..90e052f1a7 100644 ---- a/tree/dataframe/test/dataframe_interface.cxx -+++ b/tree/dataframe/test/dataframe_interface.cxx -@@ -7,6 +7,8 @@ - - #include "gtest/gtest.h" - -+#include -+ - using namespace ROOT; - using namespace ROOT::RDF; - -@@ -351,9 +353,10 @@ TEST(RDataFrameInterface, GetNSlots) - ROOT::RDataFrame df0(1); - EXPECT_EQ(1U, df0.GetNSlots()); - #ifdef R__USE_IMT -- ROOT::EnableImplicitMT(3); -+ unsigned int nslots = std::min(3U, std::thread::hardware_concurrency()); -+ ROOT::EnableImplicitMT(nslots); - ROOT::RDataFrame df3(1); -- EXPECT_EQ(3U, df3.GetNSlots()); -+ EXPECT_EQ(nslots, df3.GetNSlots()); - ROOT::DisableImplicitMT(); - ROOT::RDataFrame df1(1); - EXPECT_EQ(1U, df1.GetNSlots()); -diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx -index c6aba48b3e..e6b92be776 100644 ---- a/tree/dataframe/test/dataframe_simple.cxx -+++ b/tree/dataframe/test/dataframe_simple.cxx -@@ -26,7 +26,7 @@ using namespace ROOT::VecOps; - // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially - class RDFSimpleTests : public ::testing::TestWithParam { - protected: -- RDFSimpleTests() : NSLOTS(GetParam() ? 4u : 1u) -+ RDFSimpleTests() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u) - { - if (GetParam()) - ROOT::EnableImplicitMT(NSLOTS); -diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx -index 3ce9254442..92444feff1 100644 ---- a/tree/dataframe/test/dataframe_snapshot.cxx -+++ b/tree/dataframe/test/dataframe_snapshot.cxx -@@ -10,6 +10,7 @@ - #include "gtest/gtest.h" - #include - #include -+#include - using namespace ROOT; // RDataFrame - using namespace ROOT::RDF; // RInterface - using namespace ROOT::VecOps; // RVec -@@ -1041,9 +1042,10 @@ TEST(RDFSnapshotMore, EmptyBuffersMT) - { - const auto fname = "emptybuffersmt.root"; - const auto treename = "t"; -- ROOT::EnableImplicitMT(4); -+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency()); -+ ROOT::EnableImplicitMT(nslots); - ROOT::RDataFrame d(10); -- auto dd = d.DefineSlot("x", [](unsigned int s) { return s == 3 ? 0 : 1; }) -+ auto dd = d.DefineSlot("x", [&](unsigned int s) { return s == nslots - 1 ? 0 : 1; }) - .Filter([](int x) { return x == 0; }, {"x"}, "f"); - auto r = dd.Report(); - dd.Snapshot(treename, fname, {"x"}); -diff --git a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx -index 5d5b2cbf42..963ce8a1b1 100644 ---- a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx -+++ b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx -@@ -294,14 +294,27 @@ TEST(TreeProcessorMT, LimitNTasks_CheckEntries) - } - }; - -- ROOT::EnableImplicitMT(4); -+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency()); -+ ROOT::EnableImplicitMT(nslots); - - ROOT::TTreeProcessorMT p(filename, treename); - p.Process(f); - -- EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n"; -- EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n"; -- EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n"; -+ if (nslots == 4) { -+ EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n"; -+ EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n"; -+ EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n"; -+ } -+ else if (nslots == 2) { -+ EXPECT_EQ(nTasks, 48U) << "Wrong number of tasks generated!\n"; -+ EXPECT_EQ(nEntriesCountsMap[20], 17U) << "Wrong number of tasks with 20 clusters each!\n"; -+ EXPECT_EQ(nEntriesCountsMap[21], 31U) << "Wrong number of tasks with 21 clusters each!\n"; -+ } -+ else if (nslots == 1) { -+ EXPECT_EQ(nTasks, 24U) << "Wrong number of tasks generated!\n"; -+ EXPECT_EQ(nEntriesCountsMap[41], 17U) << "Wrong number of tasks with 41 clusters each!\n"; -+ EXPECT_EQ(nEntriesCountsMap[42], 7U) << "Wrong number of tasks with 42 clusters each!\n"; -+ } - - gSystem->Unlink(filename); - ROOT::DisableImplicitMT(); --- -2.30.2 - diff --git a/root-fix-ppc64le-compilation-with-gcc-10.patch b/root-fix-ppc64le-compilation-with-gcc-10.patch deleted file mode 100644 index 2624de8..0000000 --- a/root-fix-ppc64le-compilation-with-gcc-10.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 5b8e969ca045aa238c685009e0aa48d74cbdbf22 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 13 Mar 2020 17:09:03 +0100 -Subject: [PATCH 1/2] Fix ppc64le compilation with gcc 10 - -Reapply fix lost in the LLVM 9 upgrade. This fix is in LLVM 10. - -Backported from llvm upstream -https://reviews.llvm.org/D74129 ---- - interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp -index c8ed42d266..16bb00d2e9 100644 ---- a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp -+++ b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp -@@ -2546,7 +2546,7 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr, - '/', '/', '/', '/', '/', '/', '/', '/' - }; - while (CurPtr+16 <= BufferEnd && -- !vec_any_eq(*(const vector unsigned char*)CurPtr, Slashes)) -+ !vec_any_eq(*(const __vector unsigned char*)CurPtr, Slashes)) - CurPtr += 16; - #else - // Scan for '/' quickly. Many block comments are very large. --- -2.30.2 - diff --git a/root-get-src.sh b/root-get-src.sh new file mode 100755 index 0000000..d83c34a --- /dev/null +++ b/root-get-src.sh @@ -0,0 +1,6 @@ +#!/bin/sh +VERSION=$1 +wget -N https://root.cern/download/root_v${VERSION}.source.tar.gz +tar -z -x -f root_v${VERSION}.source.tar.gz +find root-${VERSION}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';' +tar -J -c --group root --owner root -f root-${VERSION}.tar.xz root-${VERSION} diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch index a81848a..2550f4d 100644 --- a/root-jsmva-static.patch +++ b/root-jsmva-static.patch @@ -29,7 +29,7 @@ diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/noteb (function(factory){ -- var JSROOT_source_dir = "https://root.cern.ch/js/notebook/scripts/"; +- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/"; + var JSROOT_source_dir = "/static/scripts/"; var url = ""; diff --git a/root-longlong.patch b/root-longlong.patch new file mode 100644 index 0000000..856e015 --- /dev/null +++ b/root-longlong.patch @@ -0,0 +1,52 @@ +From 7fe5ef049baf614626d985b05cb0b335f9764a3c Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 16:15:00 +0100 +Subject: [PATCH] Fix test when long is 32 bits + +This test tests support for 64 bit values. But it uses a long type, +which fails on platforme where a long is 32 bits. + +This commit changes the test to use a long long type instead. +--- + tree/dataframe/test/dataframe_snapshot.cxx | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx +index 05354e83d5..a30440558e 100644 +--- a/tree/dataframe/test/dataframe_snapshot.cxx ++++ b/tree/dataframe/test/dataframe_snapshot.cxx +@@ -470,11 +470,11 @@ void ReadWriteCarray(const char *outFileNameBase) + auto size = 0; + int v[maxArraySize]; + bool vb[maxArraySize]; +- long int vl[maxArraySize]; ++ long long int vl[maxArraySize]; + t.Branch("size", &size, "size/I"); + t.Branch("v", v, "v[size]/I"); + t.Branch("vb", vb, "vb[size]/O"); +- t.Branch("vl", vl, "vl[size]/G"); ++ t.Branch("vl", vl, "vl[size]/L"); + + // Size 1 + size = 1; +@@ -518,7 +518,7 @@ void ReadWriteCarray(const char *outFileNameBase) + TTreeReader r(treename, &f2); + TTreeReaderArray rv(r, "v"); + TTreeReaderArray rvb(r, "vb"); +- TTreeReaderArray rvl(r, "vl"); ++ TTreeReaderArray rvl(r, "vl"); + + // Size 1 + EXPECT_TRUE(r.Next()); +@@ -571,7 +571,7 @@ void ReadWriteCarray(const char *outFileNameBase) + + const auto outfname2 = outFileNameBaseStr + "_out2.root"; + RDataFrame(treename, fname) +- .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); ++ .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); + outputChecker(outfname2.c_str()); + + gSystem->Unlink(fname.c_str()); +-- +2.35.1 + diff --git a/root-make-dyld-based-library-search-behavior-default.patch b/root-make-dyld-based-library-search-behavior-default.patch new file mode 100644 index 0000000..9b88576 --- /dev/null +++ b/root-make-dyld-based-library-search-behavior-default.patch @@ -0,0 +1,147 @@ +From 6ae602bba7d33c900a117c9de0187ab5a28e14b8 Mon Sep 17 00:00:00 2001 +From: Vassil Vassilev +Date: Mon, 21 Mar 2022 22:16:54 +0000 +Subject: [PATCH] Make the dyld-based library search behavior default for + non-modules. + +The dyld-based system was developed in the context on C++ modules but it turned +into a modules-agnostic feature. Instead of having to maintain more code, we +should rely on it even for non-modules build of ROOT. +--- + core/metacling/src/TCling.cxx | 109 +++------------------------------- + 1 file changed, 8 insertions(+), 101 deletions(-) + +diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx +index dec399cf2b..3eae1c8570 100644 +--- a/core/metacling/src/TCling.cxx ++++ b/core/metacling/src/TCling.cxx +@@ -6501,14 +6501,18 @@ bool TCling::LibraryLoadingFailed(const std::string& errmessage, const std::stri + return false; + } + +-static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_name, +- const cling::DynamicLibraryManager &DLM) { ++//////////////////////////////////////////////////////////////////////////////// ++/// Autoload a library based on a missing symbol. ++ ++void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { ++ ++ const cling::DynamicLibraryManager &DLM = *GetInterpreterImpl()->getDynamicLibraryManager(); + R__LOCKGUARD(gInterpreterMutex); + + auto LibLoader = [](const std::string& LibName) -> bool { + if (gSystem->Load(LibName.c_str(), "", false) < 0) { +- Error("TCling__LazyFunctionCreatorAutoloadForModule", +- "Failed to load library %s", LibName.c_str()); ++ ::Error("TCling__LazyFunctionCreatorAutoloadForModule", ++ "Failed to load library %s", LibName.c_str()); + return false; + } + return true; //success. +@@ -6536,103 +6540,6 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_nam + return nullptr; + + return llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name); +- +-} +- +-//////////////////////////////////////////////////////////////////////////////// +-/// Autoload a library based on a missing symbol. +- +-void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { +- if (fCxxModulesEnabled) +- return LazyFunctionCreatorAutoloadForModule(mangled_name, +- *GetInterpreterImpl()->getDynamicLibraryManager()); +- +- // First see whether the symbol is in the library that we are currently +- // loading. It will have access to the symbols of its dependent libraries, +- // thus checking "back()" is sufficient. +- if (!fRegisterModuleDyLibs.empty()) { +- if (void* addr = dlsym(fRegisterModuleDyLibs.back(), +- mangled_name.c_str())) { +- return addr; +- } +- } +- +- int err = 0; +- char* demangled_name_c = TClassEdit::DemangleName(mangled_name.c_str(), err); +- if (err) { +- return 0; +- } +- +- std::string name(demangled_name_c); +- free(demangled_name_c); +- +- //fprintf(stderr, "demangled name: '%s'\n", demangled_name); +- // +- // Separate out the class or namespace part of the +- // function name. +- // +- +- std::string::size_type pos = name.find("__thiscall "); +- if (pos != std::string::npos) { +- name.erase(0, pos + sizeof("__thiscall ")-1); +- } +- pos = name.find("__cdecl "); +- if (pos != std::string::npos) { +- name.erase(0, pos + sizeof("__cdecl ")-1); +- } +- if (!strncmp(name.c_str(), "typeinfo for ", sizeof("typeinfo for ")-1)) { +- name.erase(0, sizeof("typeinfo for ")-1); +- } else if (!strncmp(name.c_str(), "vtable for ", sizeof("vtable for ")-1)) { +- name.erase(0, sizeof("vtable for ")-1); +- } else if (!strncmp(name.c_str(), "operator", sizeof("operator")-1) +- && !isalnum(name[sizeof("operator")])) { +- // operator...(A, B) - let's try with A! +- name.erase(0, sizeof("operator")-1); +- pos = name.rfind('('); +- if (pos != std::string::npos) { +- name.erase(0, pos + 1); +- pos = name.find(","); +- if (pos != std::string::npos) { +- // remove next arg up to end, leaving only the first argument type. +- name.erase(pos); +- } +- pos = name.rfind(" const"); +- if (pos != std::string::npos) { +- name.erase(pos, strlen(" const")); +- } +- while (!name.empty() && strchr("&*", name.back())) +- name.erase(name.length() - 1); +- } +- } else { +- TClassEdit::FunctionSplitInfo fsi; +- TClassEdit::SplitFunction(name, fsi); +- name = fsi.fScopeName; +- } +- //fprintf(stderr, "name: '%s'\n", name.c_str()); +- // Now we have the class or namespace name, so do the lookup. +- TString libs = GetClassSharedLibs(name.c_str()); +- if (libs.IsNull()) { +- // Not found in the map, all done. +- return 0; +- } +- //fprintf(stderr, "library: %s\n", iter->second.c_str()); +- // Now we have the name of the libraries to load, so load them. +- +- TString lib; +- Ssiz_t posLib = 0; +- while (libs.Tokenize(lib, posLib)) { +- if (gSystem->Load(lib, "", kFALSE /*system*/) < 0) { +- // The library load failed, all done. +- //fprintf(stderr, "load failed: %s\n", errmsg.c_str()); +- return 0; +- } +- } +- +- //fprintf(stderr, "load succeeded.\n"); +- // Get the address of the function being called. +- void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); +- //fprintf(stderr, "addr: %016lx\n", reinterpret_cast(addr)); +- return addr; + } + + //////////////////////////////////////////////////////////////////////////////// +-- +2.35.1 + diff --git a/root-memory-usage.patch b/root-memory-usage.patch index aad7f1c..713d565 100644 --- a/root-memory-usage.patch +++ b/root-memory-usage.patch @@ -1,43 +1,30 @@ -From 21395b23947df7e2b5e0c93626453aeacdee026c Mon Sep 17 00:00:00 2001 +From 5618a02bd7ca4107f545e07a19b8a0762f31e45a Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Tue, 16 Jan 2018 10:25:50 +0100 -Subject: [PATCH] Reduce the needed memory for compilation +Date: Mon, 16 Aug 2021 19:45:00 +0200 +Subject: [PATCH] Reduce memory usage for all builds - not only debug builds -The linking of rootcling_stage1 and libCling requires a lot of memory. -Since these are linked from mostly the same objects, the build is -ready to link them at the same time. If you make a parallel build this -means that the two targets that require the most amount of memory are -being linked in parallel. This exhausts the available memory, and the -computer starts swapping. - -This commit adds a dependency of one of the targets to the other. The -dependency is not really there since it is not needed for building, -but it prevents the two memory consuming targets to be built in -parallel. - -A similar dependency existed before the latest code changes (see -commit 2638f6fc7f54b0995f2f9d60363daaf8aae2386e), then between -rootcling and libCling. --- - core/metacling/src/CMakeLists.txt | 5 +++++ - 1 file changed, 5 insertions(+) + core/metacling/src/CMakeLists.txt | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt -index 2923345f7c..b44a4d4115 100644 +index 8cbbe4ba08..f205b24602 100644 --- a/core/metacling/src/CMakeLists.txt +++ b/core/metacling/src/CMakeLists.txt -@@ -114,6 +114,11 @@ ROOT_LINKER_LIBRARY(Cling +@@ -107,11 +107,8 @@ ROOT_LINKER_LIBRARY(Cling $ LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS}) -+# The dependency on rootcling_stage1 was added to prevent Cling (libCling) and -+# rootcling_stage1 from being linked in parallel. -+# This avoids doing two memory consuming operations in parallel. +-string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE) +-if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO) +- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. +- add_dependencies(Cling rootcling_stage1) +-endif() ++# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. +add_dependencies(Cling rootcling_stage1) -+ + if(MSVC) set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) - set(cling_exports -- -2.26.2 +2.35.1 diff --git a/root-missing-include.patch b/root-missing-include.patch new file mode 100644 index 0000000..8c6bc17 --- /dev/null +++ b/root-missing-include.patch @@ -0,0 +1,32 @@ +From 235e446b0ac14170e49c15d5725fbe6dd315351f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 15 Mar 2022 09:08:39 +0100 +Subject: [PATCH] Add #include for std::memcpy + +In file included from /builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/RModel.hxx:14, + from /builddir/build/BUILD/root-6.26.00/tmva/sofie/src/RModel.cxx:3: +/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx: In member function 'void TMVA::Experimental::SOFIE::InitializedTensor::CastPersistentToShared()': +/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx:75:12: error: 'memcpy' is not a member of 'std'; did you mean 'wmemcpy'? + 75 | std::memcpy(tData.get(), fPersistentData,fSize * sizeof(float)); + | ^~~~~~ + | wmemcpy +gmake[2]: *** [tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/build.make:79: tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/src/RModel.cxx.o] Error 1 +--- + tmva/sofie/inc/TMVA/SOFIE_common.hxx | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx +index a663855004..7876727eef 100644 +--- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx ++++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx +@@ -6,6 +6,7 @@ + + #include + #include ++#include + #include + #include + #include +-- +2.35.1 + diff --git a/root-move-private-decl.patch b/root-move-private-decl.patch new file mode 100644 index 0000000..aa81617 --- /dev/null +++ b/root-move-private-decl.patch @@ -0,0 +1,405 @@ +From 9cdd51029f54aba874608f34580ea0ba94b670c7 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +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::allocator >, TMVA::Experimental::SOFIE::ETensorType, std::hash, std::allocator > >, std::equal_to, std::allocator > >, std::allocator, std::allocator > 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 +-#include +-#include +-#include +- +-//forward delcaration +-namespace onnx{ +- class NodeProto; +- class GraphProto; +-} + + namespace TMVA{ + namespace Experimental{ + namespace SOFIE{ + +-namespace INTERNAL{ +- +-std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_BatchNormalization(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Add(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map &tensor_type); +-std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map &tensor_type); +-std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map &tensor_type); +-std::unique_ptr make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +- +- +-using factoryMethodMap = std::unordered_map (*)(const onnx::NodeProto&, const onnx::GraphProto&, std::unordered_map&)>; +-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 make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map& 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 ++#include + #include + #include ++#include + + namespace TMVA{ + namespace Experimental{ +@@ -11,7 +14,84 @@ namespace SOFIE{ + + namespace INTERNAL{ + +-std::unique_ptr make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Relu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Selu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Conv(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_RNN(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Pool(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Add(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_GRU(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++using factoryMethodMap = ++ std::unordered_map (*)(const onnx::NodeProto &, const onnx::GraphProto &, ++ std::unordered_map &)>; ++ ++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 make_ROperator(size_t idx, const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator(size_t idx, const onnx::GraphProto &graphproto, ++ std::unordered_map &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 make_ROperator(size_t idx, const onnx::GraphProto& gr + } + } + +-std::unique_ptr make_ROperator_Add(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Add(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type = ETensorType::UNDEFINED; + +@@ -59,7 +142,11 @@ std::unique_ptr make_ROperator_Add(const onnx::NodeProto& nodeproto, + + return op; + } +-std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto*/, std::unordered_map& tensor_type){ ++ ++static std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto*/, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -99,7 +186,10 @@ std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto& nodep + return op; + } + +-std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Relu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -131,7 +221,10 @@ std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Selu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -163,7 +256,10 @@ std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -195,7 +291,10 @@ std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodepro + return op; + } + +-std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -252,7 +351,11 @@ std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, + + return op; + } +-std::unique_ptr make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++ ++static std::unique_ptr make_ROperator_GRU(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -344,7 +447,10 @@ std::unique_ptr make_ROperator_GRU(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_Conv(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -408,7 +514,10 @@ std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_Pool(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -485,14 +594,13 @@ std::unique_ptr make_ROperator_Pool(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, +- const onnx::GraphProto & /*graphproto */, +- std::unordered_map &tensor_type) ++static std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &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 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 make_ROperator_Reshape(const onnx::NodeProto &nodepro + return op; + } + +-std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, +- const onnx::GraphProto & /*graphproto */, +- std::unordered_map &tensor_type) ++static std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) + { + // make Slice operator + ETensorType input_type = ETensorType::UNDEFINED; +@@ -634,7 +741,10 @@ std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto + return op; + } + +-std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_RNN(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -722,7 +832,10 @@ std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -825,9 +938,10 @@ std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto& nodeproto, + + return op; + } +-std::unique_ptr make_ROperator_BatchNormalization(const onnx::NodeProto &nodeproto, +- const onnx::GraphProto &/*graphproto*/, +- std::unordered_map &tensor_type) ++ ++static std::unique_ptr make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto*/, ++ std::unordered_map &tensor_type) + { + + ETensorType input_type; +@@ -843,8 +957,8 @@ std::unique_ptr make_ROperator_BatchNormalization(const onnx::NodePro + + std::unique_ptr 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-namespace-pymva.patch b/root-namespace-pymva.patch new file mode 100644 index 0000000..cd2fa57 --- /dev/null +++ b/root-namespace-pymva.patch @@ -0,0 +1,31 @@ +From 0a969f5376af248e76cbcee45c9bdb6463e18c05 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 21:20:07 +0100 +Subject: [PATCH 3/3] Add namespaces to LinkDef + +Fixes error: + +IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE7PyTorch5ParseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS9_ImSaImEESaISB_EE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'! +You are probably missing the definition of TMVA::Experimental::SOFIE::PyTorch::Parse(std::__cxx11::basic_string, std::allocator >, std::vector >, std::allocator > > >) +Maybe you need to load the corresponding shared library? +Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'? +--- + tmva/pymva/inc/LinkDef.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tmva/pymva/inc/LinkDef.h b/tmva/pymva/inc/LinkDef.h +index 92da99a4f7..83145077dd 100644 +--- a/tmva/pymva/inc/LinkDef.h ++++ b/tmva/pymva/inc/LinkDef.h +@@ -15,6 +15,8 @@ + #pragma link C++ class TMVA::MethodPyGTB+; + #pragma link C++ class TMVA::MethodPyKeras+; + #pragma link C++ class TMVA::MethodPyTorch+; ++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyKeras; + #pragma link C++ function TMVA::Experimental::SOFIE::PyKeras::Parse+; ++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyTorch; + #pragma link C++ function TMVA::Experimental::SOFIE::PyTorch::Parse+; + #endif +-- +2.35.1 + diff --git a/root-namespace-roofit.patch b/root-namespace-roofit.patch new file mode 100644 index 0000000..c8aa92e --- /dev/null +++ b/root-namespace-roofit.patch @@ -0,0 +1,43 @@ +From 4a4df0190ad24c0a3636994c2c23cb6c22e04589 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 15:41:33 +0100 +Subject: [PATCH 2/3] Remove namespace RooFit from libRooFitCore's LinkDef + +The namespace is listed in the LinkDef's for both libRooFit and libRooFitCore. + +ROOT only autoloads one of the libraries, for some reason usually +libRooFitCore. After this only symbols in the namespace from that +library are present. By removing the namespace from liRooFitCore's +LinkDef, only libRooFit can be chosen when autoloading. Since +libRooFit depends on libRooFitCore, both libraries are loaded, and the +symbols from the namespace in both libraries are available. + +Fixes error: + +IncrementalExecutor::executeFunction: symbol '_ZN6RooFit12bindFunctionEPKcPFddER10RooAbsReal' unresolved while linking function '_GLOBAL__sub_I_cling_module_217'! +You are probably missing the definition of RooFit::bindFunction(char const*, double (*)(double), RooAbsReal&) +Maybe you need to load the corresponding shared library? +Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'? +--- + roofit/roofitcore/inc/LinkDef.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/roofit/roofitcore/inc/LinkDef.h b/roofit/roofitcore/inc/LinkDef.h +index d421fd95cd..72c66db33b 100644 +--- a/roofit/roofitcore/inc/LinkDef.h ++++ b/roofit/roofitcore/inc/LinkDef.h +@@ -105,7 +105,10 @@ + + + // Old LinkDef2.h +-#pragma link C++ namespace RooFit ; ++ ++// "namespace RooFit" is in roofit/roofit/inc/Linkdef1.h ++// should not be in the dictionary for two different libraries ++// #pragma link C++ namespace RooFit ; + #pragma link C++ namespace RooFitShortHand ; + #pragma link C++ class RooDouble+ ; + #pragma link C++ class RooEffGenContext+ ; +-- +2.35.1 + diff --git a/root-namespace-sofie.patch b/root-namespace-sofie.patch new file mode 100644 index 0000000..a011634 --- /dev/null +++ b/root-namespace-sofie.patch @@ -0,0 +1,30 @@ +From c66ae9d9c035090584f465a41ce2e438e502be81 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 15:23:59 +0100 +Subject: [PATCH 1/3] Add namespace TMVA::Experimental::SOFIE to LinkDef + +Fixes error: + +IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE19ConvertTypeToStringB5cxx11ENS1_11ETensorTypeE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'! +You are probably missing the definition of TMVA::Experimental::SOFIE::ConvertTypeToString[abi:cxx11](TMVA::Experimental::SOFIE::ETensorType) +Maybe you need to load the corresponding shared library? +Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'? +--- + tmva/sofie/inc/LinkDef.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tmva/sofie/inc/LinkDef.h b/tmva/sofie/inc/LinkDef.h +index 715cf35560..3282ff22c1 100644 +--- a/tmva/sofie/inc/LinkDef.h ++++ b/tmva/sofie/inc/LinkDef.h +@@ -7,6 +7,7 @@ + + #pragma link C++ nestedclass; + ++#pragma link C++ namespace TMVA::Experimental::SOFIE; + #pragma link C++ class TMVA::Experimental::SOFIE::RModel-; + #pragma link C++ class TMVA::Experimental::SOFIE::ROperator+; + #pragma link C++ struct TMVA::Experimental::SOFIE::InitializedTensor+; +-- +2.35.1 + diff --git a/root-ntuplewait.patch b/root-ntuplewait.patch new file mode 100644 index 0000000..b464b69 --- /dev/null +++ b/root-ntuplewait.patch @@ -0,0 +1,39 @@ +From ad043f8e3304aab4f0ee3ad9e0cf8480c4bbadf0 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 16:10:22 +0100 +Subject: [PATCH] Always call WaitForInFlightClusters before checking cluster + IDs + +--- + tree/ntuple/v7/test/ntuple_cluster.cxx | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tree/ntuple/v7/test/ntuple_cluster.cxx b/tree/ntuple/v7/test/ntuple_cluster.cxx +index afc2fc32e9..0c299d97de 100644 +--- a/tree/ntuple/v7/test/ntuple_cluster.cxx ++++ b/tree/ntuple/v7/test/ntuple_cluster.cxx +@@ -213,6 +213,7 @@ TEST(ClusterPool, GetClusterBasics) + RPageSourceMock p1; + RClusterPool c1(p1, 1); + c1.GetCluster(3, {0}); ++ c1.WaitForInFlightClusters(); + ASSERT_EQ(2U, p1.fReqsClusterIds.size()); + EXPECT_EQ(3U, p1.fReqsClusterIds[0]); + EXPECT_EQ(4U, p1.fReqsClusterIds[1]); +@@ -267,11 +268,13 @@ TEST(ClusterPool, GetClusterIncrementally) + RPageSourceMock p1; + RClusterPool c1(p1, 1); + c1.GetCluster(3, {0}); ++ c1.WaitForInFlightClusters(); + ASSERT_EQ(2U, p1.fReqsClusterIds.size()); + EXPECT_EQ(3U, p1.fReqsClusterIds[0]); + EXPECT_EQ(RCluster::ColumnSet_t({0}), p1.fReqsColumns[0]); + + c1.GetCluster(3, {1}); ++ c1.WaitForInFlightClusters(); + ASSERT_EQ(4U, p1.fReqsClusterIds.size()); + EXPECT_EQ(3U, p1.fReqsClusterIds[2]); + EXPECT_EQ(RCluster::ColumnSet_t({1}), p1.fReqsColumns[2]); +-- +2.35.1 + diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch index bcba732..078a5f9 100644 --- a/root-old-gtest-compat.patch +++ b/root-old-gtest-compat.patch @@ -1,6 +1,39 @@ -diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hist/hist/test/test_THBinIterator.cxx ---- root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/hist/hist/test/test_THBinIterator.cxx 2021-08-06 22:59:45.039518775 +0200 +From 99e9ad9ea54369296537ceb012ccdcb333b5f513 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 26 Mar 2022 10:55:38 +0100 +Subject: [PATCH 2/2] Backward compatibility with older googletest versions in + EPEL + +--- + hist/hist/test/test_THBinIterator.cxx | 5 +++++ + math/mathcore/test/stress/testGenVector.cxx | 10 ++++++++++ + math/mathcore/test/stress/testSMatrix.cxx | 10 ++++++++++ + math/mathcore/test/stress/testVector.cxx | 10 ++++++++++ + math/mathcore/test/stress/testVector34.cxx | 10 ++++++++++ + math/mathcore/test/testGradient.cxx | 4 ++++ + math/mathcore/test/testGradientFitting.cxx | 10 ++++++++++ + math/mathmore/test/testStress.cxx | 10 ++++++++++ + roofit/histfactory/test/testHistFactory.cxx | 4 ++++ + roofit/multiprocess/test/test_Job.cxx | 5 +++++ + roofit/roofitZMQ/test/test_ZMQ.cpp | 4 ++++ + roofit/roofitcore/test/TestStatistics/RooRealL.cpp | 4 ++++ + .../test/TestStatistics/testLikelihoodGradientJob.cpp | 5 +++++ + roofit/roofitcore/test/testProxiesAndCategories.cxx | 3 +++ + roofit/roofitcore/test/testRooDataHist.cxx | 4 ++++ + roofit/roofitcore/test/testRooGradMinimizerFcn.cxx | 5 +++++ + tree/dataframe/test/dataframe_definepersample.cxx | 4 ++++ + tree/dataframe/test/dataframe_merge_results.cxx | 2 +- + tree/dataframe/test/dataframe_regression.cxx | 4 ++++ + tree/dataframe/test/dataframe_samplecallback.cxx | 4 ++++ + tree/dataframe/test/dataframe_simple.cxx | 5 +++++ + tree/dataframe/test/dataframe_vary.cxx | 4 ++++ + tree/tree/test/TOffsetGeneration.cxx | 4 ++++ + 23 files changed, 129 insertions(+), 1 deletion(-) + +diff --git a/hist/hist/test/test_THBinIterator.cxx b/hist/hist/test/test_THBinIterator.cxx +index e30585b8cb..04f1e1487b 100644 +--- a/hist/hist/test/test_THBinIterator.cxx ++++ b/hist/hist/test/test_THBinIterator.cxx @@ -1,5 +1,10 @@ #include "gtest/gtest.h" @@ -12,9 +45,10 @@ diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hi // test iterating histogram bins and using the new THistRange and // THBinIterator classes -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24.02/math/mathcore/test/stress/testGenVector.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testGenVector.cxx 2021-08-06 09:31:38.795835283 +0200 +diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx +index 93c0bb6aec..b3259158da 100644 +--- a/math/mathcore/test/stress/testGenVector.cxx ++++ b/math/mathcore/test/stress/testGenVector.cxx @@ -4,6 +4,16 @@ #include "gtest/gtest.h" @@ -32,9 +66,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24 #include "StatFunction.h" #include "TestHelper.h" #include "VectorTest.h" -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx 2021-08-06 09:31:38.796835286 +0200 +diff --git a/math/mathcore/test/stress/testSMatrix.cxx b/math/mathcore/test/stress/testSMatrix.cxx +index a4d7fc4cd5..a35d88b7c2 100644 +--- a/math/mathcore/test/stress/testSMatrix.cxx ++++ b/math/mathcore/test/stress/testSMatrix.cxx @@ -7,6 +7,16 @@ #include "TestHelper.h" #include "gtest/gtest.h" @@ -52,29 +87,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.0 #include "VectorTest.h" #include "TROOT.h" #include "TSystem.h" -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.02/math/mathcore/test/stress/testVector34.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testVector34.cxx 2021-08-06 09:31:38.796835286 +0200 -@@ -4,6 +4,16 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - #include "StatFunction.h" - #include "VectorTest.h" - -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02/math/mathcore/test/stress/testVector.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testVector.cxx 2021-08-06 09:31:38.796835286 +0200 +diff --git a/math/mathcore/test/stress/testVector.cxx b/math/mathcore/test/stress/testVector.cxx +index 72e933f0d5..938e27d83c 100644 +--- a/math/mathcore/test/stress/testVector.cxx ++++ b/math/mathcore/test/stress/testVector.cxx @@ -4,6 +4,16 @@ #include "gtest/gtest.h" @@ -92,9 +108,31 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02 #include "StatFunction.h" #include "TestHelper.h" #include "VectorTest.h" -diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math/mathcore/test/testGradient.cxx ---- root-6.24.02.orig/math/mathcore/test/testGradient.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/testGradient.cxx 2021-08-06 09:31:38.796835286 +0200 +diff --git a/math/mathcore/test/stress/testVector34.cxx b/math/mathcore/test/stress/testVector34.cxx +index 4b31184559..80d6dd6314 100644 +--- a/math/mathcore/test/stress/testVector34.cxx ++++ b/math/mathcore/test/stress/testVector34.cxx +@@ -4,6 +4,16 @@ + + #include "gtest/gtest.h" + ++#ifndef TYPED_TEST_SUITE_P ++#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P ++#endif ++#ifndef REGISTER_TYPED_TEST_SUITE_P ++#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P ++#endif ++#ifndef INSTANTIATE_TYPED_TEST_SUITE_P ++#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P ++#endif ++ + #include "StatFunction.h" + #include "VectorTest.h" + +diff --git a/math/mathcore/test/testGradient.cxx b/math/mathcore/test/testGradient.cxx +index 49a5391b7b..271e89e43c 100644 +--- a/math/mathcore/test/testGradient.cxx ++++ b/math/mathcore/test/testGradient.cxx @@ -22,6 +22,10 @@ #include "gtest/gtest.h" @@ -106,10 +144,11 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math #include #include #include -diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.02/math/mathcore/test/testGradientFitting.cxx ---- root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/testGradientFitting.cxx 2021-08-06 09:31:38.797835288 +0200 -@@ -12,6 +12,16 @@ +diff --git a/math/mathcore/test/testGradientFitting.cxx b/math/mathcore/test/testGradientFitting.cxx +index f85f826d9f..1818d1c22f 100644 +--- a/math/mathcore/test/testGradientFitting.cxx ++++ b/math/mathcore/test/testGradientFitting.cxx +@@ -13,6 +13,16 @@ #include "gtest/gtest.h" @@ -126,9 +165,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24. #include #include -diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/mathmore/test/testStress.cxx ---- root-6.24.02.orig/math/mathmore/test/testStress.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathmore/test/testStress.cxx 2021-08-06 09:31:38.797835288 +0200 +diff --git a/math/mathmore/test/testStress.cxx b/math/mathmore/test/testStress.cxx +index 47bcdd250f..5cf20e69a1 100644 +--- a/math/mathmore/test/testStress.cxx ++++ b/math/mathmore/test/testStress.cxx @@ -26,6 +26,16 @@ #include "gtest/gtest.h" @@ -146,9 +186,87 @@ diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/m using ::testing::TestWithParam; using ::testing::Values; -diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx ---- root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-08-06 09:31:38.798835290 +0200 +diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx +index 71d7b632d2..9063e51070 100644 +--- a/roofit/histfactory/test/testHistFactory.cxx ++++ b/roofit/histfactory/test/testHistFactory.cxx +@@ -22,6 +22,10 @@ + #include "TCanvas.h" + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + + using namespace RooStats; +diff --git a/roofit/multiprocess/test/test_Job.cxx b/roofit/multiprocess/test/test_Job.cxx +index 22e66fc73c..61cc11771d 100644 +--- a/roofit/multiprocess/test/test_Job.cxx ++++ b/roofit/multiprocess/test/test_Job.cxx +@@ -24,6 +24,11 @@ + #include "RooFit/MultiProcess/Queue.h" // ... JobManager::queue() + + #include "gtest/gtest.h" ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include "utils.h" + + class xSquaredPlusBVectorSerial { +diff --git a/roofit/roofitZMQ/test/test_ZMQ.cpp b/roofit/roofitZMQ/test/test_ZMQ.cpp +index 6dcceaff08..73e75be147 100644 +--- a/roofit/roofitZMQ/test/test_ZMQ.cpp ++++ b/roofit/roofitZMQ/test/test_ZMQ.cpp +@@ -16,6 +16,10 @@ + + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include // fork, usleep + + #include +diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp +index f8421613ac..3ae6285a12 100644 +--- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp ++++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp +@@ -34,6 +34,10 @@ + + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + class RooRealL + : public ::testing::TestWithParam> { + }; +diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp +index f4adf63eec..05164277f0 100644 +--- a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp ++++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp +@@ -33,6 +33,11 @@ + #include // runtime_error + + #include "gtest/gtest.h" ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include "../test_lib.h" // generate_1D_gaussian_pdf_nll + + using RooFit::TestStatistics::LikelihoodWrapper; +diff --git a/roofit/roofitcore/test/testProxiesAndCategories.cxx b/roofit/roofitcore/test/testProxiesAndCategories.cxx +index bed3c399bb..550e0c5ac9 100644 +--- a/roofit/roofitcore/test/testProxiesAndCategories.cxx ++++ b/roofit/roofitcore/test/testProxiesAndCategories.cxx @@ -16,6 +16,9 @@ #include "gtest/gtest.h" @@ -159,10 +277,42 @@ diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx r TEST(RooCategory, CategoryDefineMultiState) { RooCategory myCat("myCat", "A category", { {"0Lep", 0}, {"1Lep", 1}, {"2Lep", 2}, {"3Lep", 3} }); -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-08-06 09:31:38.801835298 +0200 -@@ -11,6 +11,10 @@ +diff --git a/roofit/roofitcore/test/testRooDataHist.cxx b/roofit/roofitcore/test/testRooDataHist.cxx +index 90782e0749..f6b5e087ae 100644 +--- a/roofit/roofitcore/test/testRooDataHist.cxx ++++ b/roofit/roofitcore/test/testRooDataHist.cxx +@@ -18,6 +18,10 @@ + + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + #include + +diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +index c1978ae47e..877ab1525f 100644 +--- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx ++++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +@@ -22,6 +22,11 @@ + #include // remove redundant workspace files + + #include "gtest/gtest.h" ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include "test_lib.h" + + #include +diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx +index 772b8baa70..37da9f3f95 100644 +--- a/tree/dataframe/test/dataframe_definepersample.cxx ++++ b/tree/dataframe/test/dataframe_definepersample.cxx +@@ -6,6 +6,10 @@ #include @@ -170,13 +320,14 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx r +#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P +#endif + - #include // std::min - #include // std::hardware_concurrency - -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx 2021-08-06 09:31:38.802835300 +0200 -@@ -308,7 +308,7 @@ + #include + #include + #include // std::thread::hardware_concurrency +diff --git a/tree/dataframe/test/dataframe_merge_results.cxx b/tree/dataframe/test/dataframe_merge_results.cxx +index 9354b75a39..ea439ea006 100644 +--- a/tree/dataframe/test/dataframe_merge_results.cxx ++++ b/tree/dataframe/test/dataframe_merge_results.cxx +@@ -340,7 +340,7 @@ TEST(RDataFrameMergeResults, Merge5Hists) EXPECT_FALSE(mh3); EXPECT_FALSE(mh4); EXPECT_FALSE(mh5); @@ -185,9 +336,10 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root- const auto &mh = mergedptr->GetValue(); -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.24.02/tree/dataframe/test/dataframe_regression.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_regression.cxx 2021-08-06 09:31:38.802835300 +0200 +diff --git a/tree/dataframe/test/dataframe_regression.cxx b/tree/dataframe/test/dataframe_regression.cxx +index 9801067cf4..8a991f40c5 100644 +--- a/tree/dataframe/test/dataframe_regression.cxx ++++ b/tree/dataframe/test/dataframe_regression.cxx @@ -9,6 +9,10 @@ #include "gtest/gtest.h" @@ -199,9 +351,25 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.2 // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially class RDFRegressionTests : public ::testing::TestWithParam { protected: -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02/tree/dataframe/test/dataframe_simple.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_simple.cxx 2021-08-06 09:31:38.803835303 +0200 +diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx +index 188d58dd31..7734586eb3 100644 +--- a/tree/dataframe/test/dataframe_samplecallback.cxx ++++ b/tree/dataframe/test/dataframe_samplecallback.cxx +@@ -11,6 +11,10 @@ + + #include + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include // std::min + #include + #include +diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx +index 6006f99017..b507edc13f 100644 +--- a/tree/dataframe/test/dataframe_simple.cxx ++++ b/tree/dataframe/test/dataframe_simple.cxx @@ -1,5 +1,10 @@ /****** Run RDataFrame tests both with and without IMT enabled *******/ #include @@ -213,3 +381,36 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02 #include #include #include +diff --git a/tree/dataframe/test/dataframe_vary.cxx b/tree/dataframe/test/dataframe_vary.cxx +index 2284b21f53..5a26c43cdc 100644 +--- a/tree/dataframe/test/dataframe_vary.cxx ++++ b/tree/dataframe/test/dataframe_vary.cxx +@@ -7,6 +7,10 @@ + + #include + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + using ROOT::RDF::Experimental::VariationsFor; + + class RDFVary : public ::testing::TestWithParam { +diff --git a/tree/tree/test/TOffsetGeneration.cxx b/tree/tree/test/TOffsetGeneration.cxx +index 7b6b7647aa..77f125ca60 100644 +--- a/tree/tree/test/TOffsetGeneration.cxx ++++ b/tree/tree/test/TOffsetGeneration.cxx +@@ -9,6 +9,10 @@ + #include "ROOTUnitTestSupport.h" + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define SetUpTestSuite SetUpTestCase ++#endif ++ + #include "ElementStruct.h" + + class TOffsetGeneration : public ::testing::Test { +-- +2.35.1 + diff --git a/root-ppc-codemodel.patch b/root-ppc-codemodel.patch deleted file mode 100644 index 223dc7c..0000000 --- a/root-ppc-codemodel.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 774ab9358d852e2c004564183de4a60eaaa5ac98 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 23 Apr 2021 21:40:14 +0200 -Subject: [PATCH 2/2] Actually request the use of the large code model for - ppc64/ppc64le - -Instead of erroring out with an assert. ---- - interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -index 46771aa8c0..93a48f31f3 100644 ---- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -@@ -73,14 +73,14 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) { - JTMB->getOptions().EmulatedTLS = false; - #endif // _WIN32 - -- std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); -- - #if defined(__powerpc64__) || defined(__PPC64__) - // We have to use large code model for PowerPC64 because TOC and text sections - // can be more than 2GB apart. -- assert(TM->getCodeModel() >= CodeModel::Large); -+ JTMB->setCodeModel(CodeModel::Large); - #endif - -+ std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); -+ - // Forcefully disable GlobalISel, it might be enabled on AArch64 without - // optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this - // new instruction selection framework emits branches / calls that expect all --- -2.30.2 - diff --git a/root-ppc-segfault-fix.patch b/root-ppc-segfault-fix.patch deleted file mode 100644 index b9cba0f..0000000 --- a/root-ppc-segfault-fix.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 55ae047b70e927de5c84cfa5ad42905cbd58d499 Mon Sep 17 00:00:00 2001 -From: Vassil Vassilev -Date: Sat, 4 Dec 2021 00:06:19 +0000 -Subject: [PATCH] [llvm] Restore the ppc64le support that we lost in llvm8. - -This patch is backported from https://reviews.llvm.org/D94183 - -For more discussion see https://github.com/numba/numba/issues/4026 - -Fixes root-project/root#8072 and root-project/root#9297 ---- - .../src/lib/Target/PowerPC/PPCISelLowering.cpp | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) - -diff --git a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp -index 24d50074860d..a922b40aa902 100644 ---- a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp -+++ b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp -@@ -4463,7 +4463,15 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, - if (!G) - return false; - -- const GlobalValue *GV = G->getGlobal(); -+ const GlobalValue *GV = G->getGlobal(); -+ -+ // If the GV is not a strong definition then we need to assume it can be -+ // replaced by another function at link time. The function that replaces -+ // it may not share the same TOC as the caller since the callee may be -+ // replaced by a PC Relative version of the same function. -+ if (!GV->isStrongDefinitionForLinker()) -+ return false; -+ - // The medium and large code models are expected to provide a sufficiently - // large TOC to provide all data addressing needs of a module with a - // single TOC. Since each module will be addressed with a single TOC then we -@@ -4472,13 +4480,6 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, - CodeModel::Large == TM.getCodeModel()) - return TM.shouldAssumeDSOLocal(*Caller->getParent(), GV); - -- // Otherwise we need to ensure callee and caller are in the same section, -- // since the linker may allocate multiple TOCs, and we don't know which -- // sections will belong to the same TOC base. -- -- if (!GV->isStrongDefinitionForLinker()) -- return false; -- - // Any explicitly-specified sections and section prefixes must also match. - // Also, if we're using -ffunction-sections, then each function is always in - // a different section (the same is true for COMDAT functions). diff --git a/root-ptr-is-null-RooFit-TMVA.patch b/root-ptr-is-null-RooFit-TMVA.patch deleted file mode 100644 index 3aa3acd..0000000 --- a/root-ptr-is-null-RooFit-TMVA.patch +++ /dev/null @@ -1,80 +0,0 @@ -From c65f3d96f3f4433bff9d40fa9cf1dec100867a07 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 8 Jun 2021 10:12:37 +0200 -Subject: [PATCH] Fix 'this' pointer is null warnings - -.../roofit/roofitcore/src/RooDataHist.cxx: In member function 'void RooDataHist::_adjustBinning(RooRealVar&, const TAxis&, RooRealVar*, Int_t*)': -.../roofit/roofitcore/src/RooDataHist.cxx:595:122: warning: 'this' pointer is null [-Wnonnull] - 595 | coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ; - | ^~~~~~~~~~~~~~~ - -.../roofit/roofitcore/src/RooRealSumFunc.cxx: In constructor 'RooRealSumFunc::RooRealSumFunc(const char*, const char*, const RooArgList&, const RooArgList&)': -.../roofit/roofitcore/src/RooRealSumFunc.cxx:156:35: warning: 'this' pointer is null [-Wnonnull] - 156 | << " is not of type RooAbsReal, fatal error" << endl; - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx: In member function 'void TMVA::DNN::TDataLoader >::CopyInput(TMatrixT&, TMVA::DNN::IndexIterator_t) [with AData = std::tuple >&, const TMVA::DataSetInfo&>; AReal = float]': -.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:131:34: warning: 'this' pointer is null [-Wnonnull] - 131 | Int_t n = event->GetNVariables(); - | ~~~~~~~~~~~~~~~~~~~~^~ -In file included from .../tmva/tmva/inc/TMVA/VariableTransformBase.h:48, - from .../tmva/tmva/inc/TMVA/Tools.h:58, - from .../tmva/tmva/inc/TMVA/DNN/GeneralLayer.h:36, - from .../tmva/tmva/inc/TMVA/DNN/CNN/ConvLayer.h:32, - from .../tmva/tmva/inc/TMVA/DNN/Architectures/Reference.h:24, - from .../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:17: -.../tmva/tmva/inc/TMVA/Event.h:88:16: note: in a call to non-static member function 'UInt_t TMVA::Event::GetNVariables() const' - 88 | UInt_t GetNVariables() const; - | ^~~~~~~~~~~~~ ---- - roofit/roofitcore/src/RooDataHist.cxx | 2 +- - roofit/roofitcore/src/RooRealSumFunc.cxx | 4 ++-- - tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx -index 84cf2c0f68..8dddb88e2b 100644 ---- a/roofit/roofitcore/src/RooDataHist.cxx -+++ b/roofit/roofitcore/src/RooDataHist.cxx -@@ -591,7 +591,7 @@ void RooDataHist::importDHistSet(const RooArgList& /*vars*/, RooCategory& indexC - void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis, - RooRealVar *ourVar, Int_t *offset) - { -- if (!dynamic_cast(ourVar)) { -+ if (!dynamic_cast(static_cast(ourVar))) { - coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ; - assert(0) ; - } -diff --git a/roofit/roofitcore/src/RooRealSumFunc.cxx b/roofit/roofitcore/src/RooRealSumFunc.cxx -index 3f78020acd..a1625d7e35 100644 ---- a/roofit/roofitcore/src/RooRealSumFunc.cxx -+++ b/roofit/roofitcore/src/RooRealSumFunc.cxx -@@ -149,10 +149,10 @@ RooRealSumFunc::RooRealSumFunc(const char *name, const char *title, const RooArg - _coefList.add(*coef); - } - -- func = (RooAbsReal *)funcIter->Next(); -+ func = (RooAbsArg *)funcIter->Next(); - if (func) { - if (!dynamic_cast(func)) { -- coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << coef->GetName() -+ coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << func->GetName() - << " is not of type RooAbsReal, fatal error" << endl; - assert(0); - } -diff --git a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx -index 2465abf308..24a09d1fc0 100644 ---- a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx -+++ b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx -@@ -128,7 +128,7 @@ void TDataLoader>::CopyInput(TMatrixT &m - Event *event = nullptr; - - Int_t m = matrix.GetNrows(); -- Int_t n = event->GetNVariables(); -+ Int_t n = matrix.GetNcols(); - - // Copy input variables. - --- -2.31.1 - diff --git a/root-ptr-is-null-TStreamerInfo.patch b/root-ptr-is-null-TStreamerInfo.patch deleted file mode 100644 index 869715c..0000000 --- a/root-ptr-is-null-TStreamerInfo.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 1ca221f010fdcfb6249ae7b1cac77fbe29b86214 Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Mon, 7 Jun 2021 11:02:48 +0200 -Subject: [PATCH] [io] Avoid nullptr deref when printing warning in - TStreamerInfo - ---- - io/io/src/TStreamerInfo.cxx | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx -index d545ab7be8..a026635890 100644 ---- a/io/io/src/TStreamerInfo.cxx -+++ b/io/io/src/TStreamerInfo.cxx -@@ -1109,12 +1109,12 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */) - fClassVersion, GetName(), GetName(), GetName(), fClassVersion); - } else { - Warning("BuildCheck", "\n\ -- The StreamerInfo from %s does not match existing one (%s:%d)\n\ -+ The StreamerInfo does not match existing one (%s:%d)\n\ - The existing one has not been used yet and will be discarded.\n\ - Reading should work properly, however writing object of\n\ - type %s will not work properly. Most likely the version number\n\ - of the class was not properly updated [See ClassDef(%s,%d)].", -- file->GetName(), GetName(), fClassVersion, GetName(), GetName(), fClassVersion); -+ GetName(), fClassVersion, GetName(), GetName(), fClassVersion); - } - } - } --- -2.31.1 - diff --git a/root-rcolor-static-init.patch b/root-rcolor-static-init.patch new file mode 100644 index 0000000..18e4299 --- /dev/null +++ b/root-rcolor-static-init.patch @@ -0,0 +1,42 @@ +From c4df90861879f45b281c2a8e55212b711cfdbfa0 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 29 Mar 2022 15:30:20 +0200 +Subject: [PATCH] Avoid crashes due to static initialization order + +Most commonly seen on ppc64le. Backtrace: + +=========================================================== +The lines below might hint at the cause of the crash. +You may get help by asking at the ROOT forum https://root.cern/forum +Only if you are really convinced it is a bug in ROOT then please submit a +report at https://root.cern/bugs Please post the ENTIRE stack trace +from above as an attachment in addition to anything else +that might help us fixing this issue. +=========================================================== + #11 ROOT::Experimental::RColor::toHex[abi:cxx11](unsigned char) (v=) at /usr/include/c++/11/ext/new_allocator.h:82 + #12 0x00007fff90c220ec in ROOT::Experimental::RColor::SetRGB (this=0x7fffeadf5d10, r=, g=, b=) at /usr/include/c++/11/ext/new_allocator.h:89 +--- + graf2d/gpadv7/src/RColor.cxx | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/graf2d/gpadv7/src/RColor.cxx b/graf2d/gpadv7/src/RColor.cxx +index de325f1ea3..6878360073 100644 +--- a/graf2d/gpadv7/src/RColor.cxx ++++ b/graf2d/gpadv7/src/RColor.cxx +@@ -232,10 +232,10 @@ std::vector RColor::AsRGBA() const + + std::string RColor::toHex(uint8_t v) + { +- static const char *digits = "0123456789ABCDEF"; ++ auto digits = [](auto d) { return d < 10 ? '0' + d : 'A' - 10 + d; }; + std::string res(2,'0'); +- res[0] = digits[v >> 4]; +- res[1] = digits[v & 0xf]; ++ res[0] = digits(v >> 4); ++ res[1] = digits(v & 0xf); + return res; + } + +-- +2.35.1 + diff --git a/root-roofit-overflow.patch b/root-roofit-overflow.patch new file mode 100644 index 0000000..e368aa9 --- /dev/null +++ b/root-roofit-overflow.patch @@ -0,0 +1,59 @@ +From 8b6a10aefa5ae660e9d13a8e55933125b257ab6c Mon Sep 17 00:00:00 2001 +From: moneta +Date: Fri, 25 Feb 2022 09:54:40 +0100 +Subject: [PATCH] Fix an array overflow in interpolating RooHistPdf when the + interpolation order is >= 10. + +--- + roofit/roofitcore/src/RooDataHist.cxx | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx +index c293a8fbb1..2159f73093 100644 +--- a/roofit/roofitcore/src/RooDataHist.cxx ++++ b/roofit/roofitcore/src/RooDataHist.cxx +@@ -1206,9 +1206,9 @@ double RooDataHist::weightInterpolated(const RooArgSet& bin, int intOrder, bool + + auto idxMultY = _idxMult[varInfo.realVarIdx2]; + auto offsetIdx = centralIdx - idxMultY * ybinC; +- +- double yarr[10] = {} ; +- double xarr[10] = {} ; ++ ++ std::vector yarr(intOrder+1); ++ std::vector xarr(intOrder+1); + for (int i=ybinLo ; i<=intOrder+ybinLo ; i++) { + int ibin ; + if (i>=0 && i yarr(intOrder+1) ; ++ std::vector xarr(intOrder+1); + for (int i=fbinLo ; i<=intOrder+fbinLo ; i++) { + int ibin ; + if (i>=0 && i +Date: Mon, 28 Mar 2022 09:32:24 +0200 +Subject: [PATCH] Use calls from Python directly + +The rf105_funcbinding.py tutorial used to trigger errors due to unknown +symbols. In particular the custum new and delete operators used in RooFit +were not autoloaded when needed. + +In the tutorial there was a workaround implemented to call ProcessLine +instead of making calls directly form Python, to make the autoloading +from the C++ side of ROOT instead. This did not quite fix the problem, +and the tutorial still randomly failed due to missing symbols. + +After changing the algorthm used for autoloading in commit +6ae602bba7d33c900a117c9de0187ab5a28e14b8 these problems were solved. + +After this fix using the direct calls from Python also works, so this +PR suggests updating the tutorial to do that. +--- + tutorials/roofit/rf105_funcbinding.py | 30 ++++++--------------------- + 1 file changed, 6 insertions(+), 24 deletions(-) + +diff --git a/tutorials/roofit/rf105_funcbinding.py b/tutorials/roofit/rf105_funcbinding.py +index 72d9cf62fc..b9de2a095a 100644 +--- a/tutorials/roofit/rf105_funcbinding.py ++++ b/tutorials/roofit/rf105_funcbinding.py +@@ -17,15 +17,8 @@ import ROOT + # --------------------------------------------------- + + # Bind one-dimensional ROOT.TMath.Erf function as ROOT.RooAbsReal function +-# Directly trying this in python doesn't work: +-# x = ROOT.RooRealVar("x", "x", -3, 3) +-# erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x) +-# Need to go through C interface +-ROOT.gInterpreter.ProcessLine( +- 'auto x = RooRealVar("x", "x", -3, 3); auto myerf = RooFit::bindFunction("erf", TMath::Erf, x)' +-) +-x = ROOT.x +-erf = ROOT.myerf ++x = ROOT.RooRealVar("x", "x", -3, 3) ++erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x) + + # Print erf definition + erf.Print() +@@ -38,21 +31,10 @@ erf.plotOn(frame1) + # ----------------------------------------------------------------------- + + # Bind pdf ROOT.Math.Beta with three variables as ROOT.RooAbsPdf function +-# As above, this does not work directly in python +-# x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999) +-# a = ROOT.RooRealVar("a", "a", 5, 0, 10) +-# b = ROOT.RooRealVar("b", "b", 2, 0, 10) +-# beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b) +-ROOT.gInterpreter.ProcessLine( +- 'auto x2 = RooRealVar("x2", "x2", 0, 0.999);\ +- auto a = RooRealVar("a", "a", 5, 0, 10);\ +- auto b = RooRealVar("b", "b", 5, 0, 10);\ +- auto beta = RooFit::bindPdf("beta", ROOT::Math::beta_pdf, x2, a, b)' +-) +-x2 = ROOT.x2 +-a = ROOT.a +-b = ROOT.b +-beta = ROOT.beta ++x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999) ++a = ROOT.RooRealVar("a", "a", 5, 0, 10) ++b = ROOT.RooRealVar("b", "b", 2, 0, 10) ++beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b) + + # Perf beta definition + beta.Print() +-- +2.35.1 + diff --git a/root-stress-s390x.patch b/root-stress-s390x.patch deleted file mode 100644 index b1d9b9d..0000000 --- a/root-stress-s390x.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 30cbc0d44364586ac64a3ac0fd6641e338549bbe Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 10 Aug 2021 06:33:17 +0200 -Subject: [PATCH] Adjust tests for s390x - ---- - math/mathcore/test/stress/testGenVector.cxx | 2 +- - test/stressMathCore.cxx | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx -index 8da429c395..df9061c88e 100644 ---- a/math/mathcore/test/stress/testGenVector.cxx -+++ b/math/mathcore/test/stress/testGenVector.cxx -@@ -79,7 +79,7 @@ TYPED_TEST_P(GenVectorTest, TestGenVectors) - scale = this->fDim * 20; - if (this->fDim == 3 && this->V2Name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi - if (this->fDim == 4 && ( this->V2Name() == "PtEtaPhiMVector" || this->V2Name() == "PxPyPzMVector")) { --#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__)) -+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__)) - scale *= 1.E7; - #else - scale *= 10; -diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx -index 4d4695a8a0..b6d2d2c9e7 100644 ---- a/test/stressMathCore.cxx -+++ b/test/stressMathCore.cxx -@@ -1120,7 +1120,7 @@ int testVector(int ngen, bool testio=false) { - scale = Dim*20; - if (Dim==3 && VecType::name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi - if (Dim==4 && ( VecType::name() == "PtEtaPhiMVector" || VecType::name() == "PxPyPzMVector")) { --#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__)) -+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__)) - scale *= 1.E7; - #else - scale *= 10; --- -2.31.1 - diff --git a/root-threadsh1-avoid-heap-use-after-free.patch b/root-threadsh1-avoid-heap-use-after-free.patch new file mode 100644 index 0000000..6111f2b --- /dev/null +++ b/root-threadsh1-avoid-heap-use-after-free.patch @@ -0,0 +1,48 @@ +From 493c4210168fa475aa4130c12e8fdff3b7d85c09 Mon Sep 17 00:00:00 2001 +From: Philippe Canal +Date: Mon, 7 Mar 2022 13:32:37 -0600 +Subject: [PATCH] threadsh1: Avoid heap-use-after-free. + +Previously, the Canvas `Close` signal which triggers a call to the local function `close` which +was unconditionally call `Kill` on its associated thread would call it on an already deleted +object if the `TThread` was deleted before the `TCanvas`. + +This fix #10015 (detected by using ASAN). +--- + tutorials/legacy/thread/threadsh1.C | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/tutorials/legacy/thread/threadsh1.C b/tutorials/legacy/thread/threadsh1.C +index b819f5d020..d6abc67e36 100644 +--- a/tutorials/legacy/thread/threadsh1.C ++++ b/tutorials/legacy/thread/threadsh1.C +@@ -67,7 +67,8 @@ void *joiner(void *) + void closed(Int_t id) + { + // kill the thread matching the canvas being closed +- t[id]->Kill(); ++ if (t[id]) ++ t[id]->Kill(); + // and set the canvas pointer to 0 + c[id] = 0; + } +@@ -142,11 +143,11 @@ void threadsh1() + t[4]->Join(); + TThread::Ps(); + +- delete t[0]; +- delete t[1]; +- delete t[2]; +- delete t[3]; +- delete t[4]; ++ delete t[0]; t[0] = nullptr; // Prevents after deletion access. ++ delete t[1]; t[1] = nullptr; ++ delete t[2]; t[2] = nullptr; ++ delete t[3]; t[3] = nullptr; ++ delete t[4]; t[4] = nullptr; + + delete rng[0]; + delete rng[1]; +-- +2.35.1 + diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch new file mode 100644 index 0000000..459062d --- /dev/null +++ b/root-tmva-threads.patch @@ -0,0 +1,62 @@ +From f525fe375840cda2bf5b51e018eab8ad74dcd736 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 30 Mar 2022 15:51:07 +0200 +Subject: [PATCH] Limit the number of threads in TMVA CNN/DNN test to save + memory + +Processing /builddir/build/BUILD/root-6.26.00/tutorials/tmva/TMVA_CNN_Classification.C... +Running with nthreads = 224 + +[ ... ] + +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation +--- + tutorials/tmva/TMVA_CNN_Classification.C | 2 +- + tutorials/tmva/TMVA_RNN_Classification.C | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C +index 3e590c5958..4abfc6a4d1 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.C ++++ b/tutorials/tmva/TMVA_CNN_Classification.C +@@ -125,7 +125,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + + bool writeOutputFile = true; + +- int num_threads = 0; // use default threads ++ int num_threads = 32; + + TMVA::Tools::Instance(); + +diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C +index 5be80824f9..791b9aecf5 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.C ++++ b/tutorials/tmva/TMVA_RNN_Classification.C +@@ -190,7 +190,7 @@ void TMVA_RNN_Classification(int use_type = 1) + useKeras = false; + #endif + +- int num_threads = 0; // use by default all threads ++ int num_threads = 32; + // do enable MT running + if (num_threads >= 0) { + ROOT::EnableImplicitMT(num_threads); +-- +2.35.1 + diff --git a/root-unbundle-gtest.patch b/root-unbundle-gtest.patch index ae180a2..1bdf869 100644 --- a/root-unbundle-gtest.patch +++ b/root-unbundle-gtest.patch @@ -1,111 +1,202 @@ -diff -ur root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake ---- root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake 2021-08-11 10:56:26.680731609 +0200 -@@ -1699,102 +1699,17 @@ +From 29884ae01fde27204d92f554da4e92227a2ed1e6 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 26 Mar 2022 10:22:07 +0100 +Subject: [PATCH 1/2] Implement builtin_gtest option + +By setting the option to OFF the system gtest and gmock are used. +This allows doing tests without network available, e.g. during a +package build for Fedora/EPEL. +--- + cmake/modules/FindGTest.cmake | 81 +++++++++++++++++++++ + cmake/modules/RootBuildOptions.cmake | 2 + + cmake/modules/RootMacros.cmake | 2 +- + cmake/modules/SearchInstalledSoftware.cmake | 44 ++++++++--- + 4 files changed, 118 insertions(+), 11 deletions(-) + create mode 100644 cmake/modules/FindGTest.cmake + +diff --git a/cmake/modules/FindGTest.cmake b/cmake/modules/FindGTest.cmake +new file mode 100644 +index 0000000000..438ec501c2 +--- /dev/null ++++ b/cmake/modules/FindGTest.cmake +@@ -0,0 +1,81 @@ ++# Find the gtest and gmock includes and library. ++# ++# This module defines ++# GTEST_LIBRARIES ++# GTEST_MAIN_LIBRARIES ++# GTEST_INCLUDE_DIRS ++# GMOCK_LIBRARIES ++# GMOCK_MAIN_LIBRARIES ++# GMOCK_INCLUDE_DIRS ++# ++# GTEST_FOUND true if all libraries present ++ ++find_package(Threads QUIET) ++ ++find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h) ++find_library(GTEST_LIBRARIES NAMES gtest) ++find_library(GTEST_MAIN_LIBRARIES NAMES gtest_main) ++ ++find_path(GMOCK_INCLUDE_DIRS NAMES gmock/gmock.h) ++find_library(GMOCK_LIBRARIES NAMES gmock) ++find_library(GMOCK_MAIN_LIBRARIES NAMES gmock_main) ++ ++# Special for EPEL 7's gmock ++if(NOT GMOCK_LIBRARIES) ++ find_path(GMOCK_SRC_DIR NAMES gmock-all.cc PATHS /usr/src/gmock) ++endif() ++ ++if(NOT GMOCK_MAIN_LIBRARIES) ++ find_path(GMOCK_MAIN_SRC_DIR NAMES gmock_main.cc PATHS /usr/src/gmock) ++endif() ++ ++if (GTEST_INCLUDE_DIRS AND ++ GTEST_LIBRARIES AND ++ GTEST_MAIN_LIBRARIES AND ++ GMOCK_INCLUDE_DIRS AND ++ (GMOCK_LIBRARIES OR GMOCK_SRC_DIR) AND ++ (GMOCK_MAIN_LIBRARIES OR GMOCK_MAIN_SRC_DIR)) ++ ++ add_library(gtest UNKNOWN IMPORTED) ++ set_target_properties(gtest PROPERTIES ++ IMPORTED_LOCATION ${GTEST_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS}) ++ target_link_libraries(gtest INTERFACE Threads::Threads) ++ ++ add_library(gtest_main UNKNOWN IMPORTED) ++ set_target_properties(gtest_main PROPERTIES ++ IMPORTED_LOCATION ${GTEST_MAIN_LIBRARIES}) ++ target_link_libraries(gtest_main INTERFACE gtest Threads::Threads) ++ ++ if(GMOCK_LIBRARIES) ++ add_library(gmock UNKNOWN IMPORTED) ++ set_target_properties(gmock PROPERTIES ++ IMPORTED_LOCATION ${GMOCK_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIRS}) ++ else() ++ add_library(gmock STATIC ${GMOCK_SRC_DIR}/gmock-all.cc) ++ target_include_directories(gmock PUBLIC ${GMOCK_INCLUDE_DIRS}) ++ set(GMOCK_LIBRARIES gmock) ++ endif() ++ target_link_libraries(gmock INTERFACE gtest Threads::Threads) ++ ++ if(GMOCK_MAIN_LIBRARIES) ++ add_library(gmock_main UNKNOWN IMPORTED) ++ set_target_properties(gmock_main PROPERTIES ++ IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARIES}) ++ else() ++ add_library(gmock_main STATIC ${GMOCK_MAIN_SRC_DIR}/gmock_main.cc) ++ set(GMOCK_MAIN_LIBRARIES gmock_main) ++ endif() ++ target_link_libraries(gmock_main INTERFACE gmock Threads::Threads) ++ ++endif() ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(GTest DEFAULT_MSG ++ GTEST_LIBRARIES ++ GTEST_MAIN_LIBRARIES ++ GTEST_INCLUDE_DIRS ++ GMOCK_LIBRARIES ++ GMOCK_MAIN_LIBRARIES ++ GMOCK_INCLUDE_DIRS) +diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake +index 7886c5f3e9..01108a18c9 100644 +--- a/cmake/modules/RootBuildOptions.cmake ++++ b/cmake/modules/RootBuildOptions.cmake +@@ -94,6 +94,7 @@ ROOT_BUILD_OPTION(builtin_ftgl OFF "Build bundled copy of FTGL") + ROOT_BUILD_OPTION(builtin_gl2ps OFF "Build bundled copy of gl2ps") + ROOT_BUILD_OPTION(builtin_glew OFF "Build bundled copy of GLEW") + ROOT_BUILD_OPTION(builtin_gsl OFF "Build GSL internally (requires network)") ++ROOT_BUILD_OPTION(builtin_gtest OFF "Build googletest internally (requires network)") + ROOT_BUILD_OPTION(builtin_llvm ON "Build bundled copy of LLVM") + ROOT_BUILD_OPTION(builtin_lz4 OFF "Build bundled copy of lz4") + ROOT_BUILD_OPTION(builtin_lzma OFF "Build bundled copy of lzma") +@@ -293,6 +294,7 @@ if(builtin_all) + set(builtin_gl2ps_defvalue ON) + set(builtin_glew_defvalue ON) + set(builtin_gsl_defvalue ON) ++ set(builtin_gtest_defvalue ON) + set(builtin_llvm_defvalue ON) + set(builtin_lz4_defvalue ON) + set(builtin_lzma_defvalue ON) +diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake +index cb75c0b1da..38fd5d6baf 100644 +--- a/cmake/modules/RootMacros.cmake ++++ b/cmake/modules/RootMacros.cmake +@@ -1671,7 +1671,7 @@ function(ROOT_ADD_TEST test) - #---Download googletest-------------------------------------------------------------- - if (testing) -- # FIXME: Remove our version of gtest in roottest. We can reuse this one. -- # Add googletest -- # http://stackoverflow.com/questions/9689183/cmake-googletest -+ # Workaround for missing libraries in Fedora's gmock packaging < 1.8.0 -+ if(EXISTS ${CMAKE_SOURCE_DIR}/googlemock) -+ set(_G_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/googlemock) + set_property(TEST ${test} APPEND PROPERTY ENVIRONMENT ROOT_HIST=0) -- set(_gtest_byproduct_binary_dir -- ${CMAKE_CURRENT_BINARY_DIR}/googletest-prefix/src/googletest-build) -- set(_gtest_byproducts -- ${_gtest_byproduct_binary_dir}/lib/libgtest.a -- ${_gtest_byproduct_binary_dir}/lib/libgtest_main.a -- ${_gtest_byproduct_binary_dir}/lib/libgmock.a -- ${_gtest_byproduct_binary_dir}/lib/libgmock_main.a -- ) -- -- if(MSVC) -- set(EXTRA_GTEST_OPTS -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -Dgtest_force_shared_crt=ON -- BUILD_COMMAND ${CMAKE_COMMAND} --build --config Release) -- endif() -- if(APPLE) -- set(EXTRA_GTEST_OPTS -- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}) -- endif() -- -- ExternalProject_Add( -- googletest -- GIT_REPOSITORY https://github.com/google/googletest.git -- GIT_SHALLOW 1 -- GIT_TAG release-1.10.0 -- UPDATE_COMMAND "" -- # TIMEOUT 10 -- # # Force separate output paths for debug and release builds to allow easy -- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands -- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs -- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs -- # -Dgtest_force_shared_crt=ON -- CMAKE_ARGS -G ${CMAKE_GENERATOR} -- -DCMAKE_BUILD_TYPE=Release -- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -- -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS} -- -DCMAKE_AR=${CMAKE_AR} -- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -- ${EXTRA_GTEST_OPTS} -- # Disable install step -- INSTALL_COMMAND "" -- BUILD_BYPRODUCTS ${_gtest_byproducts} -- # Wrap download, configure and build steps in a script to log output -- LOG_DOWNLOAD ON -- LOG_CONFIGURE ON -- LOG_BUILD ON -- TIMEOUT 600 -- ) -- -- # Specify include dirs for gtest and gmock -- ExternalProject_Get_Property(googletest source_dir) -- set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include) -- set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include) -- # Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052 -- file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR}) -- -- # Libraries -- ExternalProject_Get_Property(googletest binary_dir) -- set(_G_LIBRARY_PATH ${binary_dir}/lib/) -- -- # Use gmock_main instead of gtest_main because it initializes gtest as well. -- # Note: The libraries are listed in reverse order of their dependancies. -- foreach(lib gtest gtest_main gmock gmock_main) -+ foreach(lib gmock gmock_main) - add_library(${lib} IMPORTED STATIC GLOBAL) -- set_target_properties(${lib} PROPERTIES -- IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}" -- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}" -- ) -- add_dependencies(${lib} googletest) -- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND -- ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 9) -- target_compile_options(${lib} INTERFACE -Wno-deprecated-copy) -- endif() - endforeach() -- # Once we require at least cmake 3.11, target_include_directories will work for imported targets -- # Because of https://gitlab.kitware.com/cmake/cmake/-/merge_requests/1264 -- # We need this workaround: -- SET_PROPERTY(TARGET gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}) -- SET_PROPERTY(TARGET gmock APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}) -- #target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIR}) -- #target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIR}) -- -- set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}) -- set_property(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}) - set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}) - set_property(TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}) - -+ endif() +- #- Handle TIMOUT and DEPENDS arguments ++ #- Handle TIMEOUT and DEPENDS arguments + if(ARG_TIMEOUT) + set_property(TEST ${test} PROPERTY TIMEOUT ${ARG_TIMEOUT}) + endif() +diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake +index fe40898d12..b6a3cc4c76 100644 +--- a/cmake/modules/SearchInstalledSoftware.cmake ++++ b/cmake/modules/SearchInstalledSoftware.cmake +@@ -1860,15 +1860,6 @@ if (mpi) + endif() endif() - #------------------------------------------------------------------------------------ +-if(testing AND NO_CONNECTION) +- if(fail-on-missing) +- message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access") +- else() +- message(STATUS "No internet connection, disabling 'testing' option") +- set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) +- endif() +-endif() +- + #---Check for ZeroMQ when building RooFit::MultiProcess-------------------------------------------- + + if (roofit_multiprocess) +@@ -1942,8 +1933,41 @@ if (roofit_multiprocess) + target_compile_definitions(cppzmq INTERFACE ZMQ_NO_EXPORT) + endif (roofit_multiprocess) + +-#---Download googletest-------------------------------------------------------------- ++#---Check for googletest--------------------------------------------------------------- + if (testing) ++ if (NOT builtin_gtest) ++ if(fail-on-missing) ++ find_package(GTest REQUIRED) ++ else() ++ find_package(GTest) ++ if(NOT GTEST_FOUND) ++ if(NO_CONNECTION) ++ if(fail-on-missing) ++ message(FATAL_ERROR "No internet connection and GTest was not found. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access") ++ else() ++ message(STATUS "GTest not found, and no internet connection. Disabing the 'testing' option.") ++ set(testing OFF CACHE BOOL "Disabled because testing requested and GTest not found (${builtin_gtest_description}) and there is no internet connection" FORCE) ++ endif() ++ else() ++ message(STATUS "GTest not found, switching ON 'builtin_gtest' option.") ++ set(builtin_gtest ON CACHE BOOL "Enabled because testing requested and GTest not found (${builtin_gtest_description})" FORCE) ++ endif() ++ endif() ++ endif() ++ else() ++ if(NO_CONNECTION) ++ if(fail-on-missing) ++ message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'builtin_gtest' option or the 'fail-on-missing' option to automatically disable options requiring internet access") ++ else() ++ message(STATUS "No internet connection, disabling the 'testing' and 'builtin_gtest' options") ++ set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) ++ set(builtin_gtest OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) ++ endif() ++ endif() ++ endif() ++endif() ++ ++if (builtin_gtest) + # FIXME: Remove our version of gtest in roottest. We can reuse this one. + # Add googletest + # http://stackoverflow.com/questions/9689183/cmake-googletest +-- +2.35.1 + diff --git a/root-uring-warn.patch b/root-uring-warn.patch new file mode 100644 index 0000000..05cfd56 --- /dev/null +++ b/root-uring-warn.patch @@ -0,0 +1,43 @@ +From 580fcf8fe95c45e337d222a7fd2338fdef2f52c5 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 16:18:57 +0100 +Subject: [PATCH 1/2] Ignore warnings about uring failing during test + +--- + tree/ntuple/v7/test/ntuple_extended.cxx | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx +index 8e3998996c..98d65ef319 100644 +--- a/tree/ntuple/v7/test/ntuple_extended.cxx ++++ b/tree/ntuple/v7/test/ntuple_extended.cxx +@@ -4,6 +4,8 @@ + + #include "TROOT.h" + ++#include "ROOTUnitTestSupport.h" ++ + TEST(RNTuple, RealWorld1) + { + ROOT::EnableImplicitMT(); +@@ -111,6 +113,17 @@ TEST(RNTuple, RandomAccess) + #if !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS) + TEST(RNTuple, LargeFile) + { ++ ROOTUnitTestSupport::CheckDiagsRAII raii; ++ raii.optionalDiag(kWarning, "RIoUring", ++ "io_uring is unexpectedly not available because:", false); ++ raii.optionalDiag(kWarning, "RRawFileUnix", ++ "io_uring setup failed, falling back to blocking I/O in ReadV", true); ++ ++ raii.optionalDiag(kWarning, "ROOT.NTuple", ++ "The RNTuple file format will change. Do not store real data with this version of RNTuple!", true); ++ raii.optionalDiag(kWarning, "ROOT.NTuple", ++ "Pre-release format version: ", false); ++ + ROOT::EnableImplicitMT(); + FileRaii fileGuard("test_large_file.root"); + +-- +2.35.1 + diff --git a/root-uring.patch b/root-uring.patch deleted file mode 100644 index 129c38e..0000000 --- a/root-uring.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/io/io/src/RRawFileUnix.cxx b/io/io/src/RRawFileUnix.cxx -index 829c5e4cb6..417c3adf30 100644 ---- a/io/io/src/RRawFileUnix.cxx -+++ b/io/io/src/RRawFileUnix.cxx -@@ -115,26 +115,33 @@ void ROOT::Internal::RRawFileUnix::OpenImpl() - void ROOT::Internal::RRawFileUnix::ReadVImpl(RIOVec *ioVec, unsigned int nReq) - { - #ifdef R__HAS_URING -- if (RIoUring::IsAvailable()) { -- RIoUring ring; -- std::vector reads; -- reads.reserve(nReq); -- for (std::size_t i = 0; i < nReq; ++i) { -- RIoUring::RReadEvent ev; -- ev.fBuffer = ioVec[i].fBuffer; -- ev.fOffset = ioVec[i].fOffset; -- ev.fSize = ioVec[i].fSize; -- ev.fFileDes = fFileDes; -- reads.push_back(ev); -+ thread_local bool uring_failed = false; -+ if (!uring_failed) { -+ try { -+ RIoUring ring; // throws std::runtime_error -+ std::vector reads; -+ reads.reserve(nReq); -+ for (std::size_t i = 0; i < nReq; ++i) { -+ RIoUring::RReadEvent ev; -+ ev.fBuffer = ioVec[i].fBuffer; -+ ev.fOffset = ioVec[i].fOffset; -+ ev.fSize = ioVec[i].fSize; -+ ev.fFileDes = fFileDes; -+ reads.push_back(ev); -+ } -+ ring.SubmitReadsAndWait(reads.data(), nReq); -+ for (std::size_t i = 0; i < nReq; ++i) { -+ ioVec[i].fOutBytes = reads.at(i).fOutBytes; -+ } -+ return; - } -- ring.SubmitReadsAndWait(reads.data(), nReq); -- for (std::size_t i = 0; i < nReq; ++i) { -- ioVec[i].fOutBytes = reads.at(i).fOutBytes; -+ catch(const std::runtime_error &e) { -+ Warning("RIoUring", "io_uring is unexpectedly not available because:\n%s", e.what()); -+ Warning("RRawFileUnix", -+ "io_uring setup failed, falling back to blocking I/O in ReadV"); -+ uring_failed = true; - } -- return; - } -- Warning("RRawFileUnix", -- "io_uring setup failed, falling back to default ReadV implementation"); - #endif - RRawFile::ReadVImpl(ioVec, nReq); - } diff --git a/root-use-unique-filenames-in-fillrandom-tutorials.patch b/root-use-unique-filenames-in-fillrandom-tutorials.patch new file mode 100644 index 0000000..724eb79 --- /dev/null +++ b/root-use-unique-filenames-in-fillrandom-tutorials.patch @@ -0,0 +1,25 @@ +From b781f954ac80cc227777992dcb4fbe1837c7e351 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 29 Mar 2022 15:44:17 +0200 +Subject: [PATCH] Use unique filenames in fillrandom.py and fillrandom.C + +--- + tutorials/hist/fillrandom.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tutorials/hist/fillrandom.py b/tutorials/hist/fillrandom.py +index d5eb3f6f38..4b1a94a37e 100644 +--- a/tutorials/hist/fillrandom.py ++++ b/tutorials/hist/fillrandom.py +@@ -41,7 +41,7 @@ h1f.FillRandom("sqroot",10000) + h1f.Draw() + c1.Update() + +-f = ROOT.TFile("fillrandom.root","RECREATE") ++f = ROOT.TFile("fillrandom-py.root","RECREATE") + form1.Write() + sqroot.Write() + h1f.Write() +-- +2.35.1 + diff --git a/root.spec b/root.spec index 3a305ae..4fbd388 100644 --- a/root.spec +++ b/root.spec @@ -17,9 +17,9 @@ %endif %global python3_version_uscore %(tr . _ <<< "%{python3_version}") -%if %{?fedora}%{!?fedora:0} >= 24 || %{?rhel}%{!?rhel:0} >= 8 -# Building the experimental ROOT 7 classes requires c++-14. -# This is the default for gcc 6.1 and later. +%if %{?fedora}%{!?fedora:0} >= 34 || %{?rhel}%{!?rhel:0} >= 9 +# Building the experimental ROOT 7 classes requires c++-17. +# This is the default for gcc 11 and later. %global root7 1 %else %global root7 0 @@ -31,12 +31,27 @@ %global xrootd5 0 %endif -%if %{?fedora}%{!?fedora:0} >= 35 -# The required __malloc_hook was removed from glibc 2.33.9000-48 -# The memstat module is deprecated and will be removed in root 6.26 -%global memstat 0 +%global webgui 1 + +%if %{?rhel}%{!?rhel:0} == 9 +# GFAL2 not available in EPEL 9 +%global gfal2 0 %else -%global memstat 1 +%global gfal2 1 +%endif + +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +# The SOFIE parser requires protobuf 3.0 +%global tmvasofieparser 1 +%else +%global tmvasofieparser 0 +%endif + +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +# DistRDF requires Python 3.7+ +%global distrdf 1 +%else +%global distrdf 0 %endif %if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 @@ -53,18 +68,15 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.24.06 +Version: 6.26.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 6%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ URL: https://root.cern/ -# The upstream source is modified to exclude proprietary fonts: -# wget -N https://root.cern/download/root_v%%{version}.source.tar.gz -# tar -z -x -f root_v%%{version}.source.tar.gz -# find root-%%{version}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';' -# tar -J -c --group root --owner root -f root-%%{version}.tar.xz root-%%{version} +# The upstream source is modified to exclude proprietary fonts +# See Source8 for how to create Source0 Source0: %{name}-%{version}.tar.xz # Input data for the tests Source1: %{name}-testfiles.tar.xz @@ -79,94 +91,107 @@ Source6: application-x-root.png # Instructions for setting up a python virtual environment # for running the JupyROOT notebook on EPEL Source7: JupyROOT-on-EPEL +# Script to generate Source0 +Source8: %{name}-get-src.sh # Use system fonts Patch0: %{name}-fontconfig.patch # Revert the removal of DataFrame for 32 bit architectures +# https://github.com/root-project/root/pull/10300 Patch1: %{name}-32bit-dataframe.patch # Unbundle gtest +# Add builtin_gtest cmake option +# Compatibility with older gtest +# https://github.com/root-project/root/pull/10301 Patch2: %{name}-unbundle-gtest.patch +Patch3: %{name}-old-gtest-compat.patch # Reduce memory usage of build # Do not link rootcling_stage1 and libCling in parallel -Patch3: %{name}-memory-usage.patch +Patch4: %{name}-memory-usage.patch # Reduce memory usage during linking on ARM and x86 by generating -# smaller debuginfo for the llmv libraries. -# Fedora builders run out of memory with the default setting. -Patch4: %{name}-memory-arm-x86.patch +# smaller debuginfo for the llvm libraries +# Fedora builders run out of memory with the default setting +Patch5: %{name}-memory-arm-x86.patch # Don't install minicern static library -Patch5: %{name}-dont-install-minicern.patch +Patch6: %{name}-dont-install-minicern.patch # Do not export Python modules in CMake config -Patch6: %{name}-no-export-python-modules.patch -# Don't create documentation notebooks -Patch7: %{name}-doc-no-notebooks.patch -# Don't run tutorials that crash during doc generation -Patch8: %{name}-doxygen-crash.patch -# Compatibility with older gtest -Patch9: %{name}-old-gtest-compat.patch +Patch7: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled -Patch10: %{name}-32bit-tests.patch -# Workaround for initialization problems for PyROOT on -# EPEL7 ppc64le -# https://sft.its.cern.ch/jira/browse/ROOT-10622 -Patch11: %{name}-epel7-ppc64le-pyroot.patch +Patch8: %{name}-32bit-tests.patch # Use local static script and style files for JsMVA -Patch12: %{name}-jsmva-static.patch +Patch9: %{name}-jsmva-static.patch +# Fix python bytecode compilation on EPEL 7 # Compatibility with older python versions (no f-strings) -Patch13: %{name}-older-python.patch -# Fix multicore tests when running on machines with few cores -# https://github.com/root-project/root/pull/8068 -Patch14: %{name}-fix-multicore-tests-with-few-cores.patch -# Reapply altivec fix lost in the LLVM 9 upgrade -# https://github.com/root-project/root/pull/8069 -Patch15: %{name}-fix-ppc64le-compilation-with-gcc-10.patch -# Actually request the use of the large code model for ppc64le -# https://github.com/root-project/root/pull/8230 -Patch16: %{name}-ppc-codemodel.patch -# Fix segfaults on ppc64le when using the large code model -# PR by Vassil Vassilev based on upstream fix -# https://reviews.llvm.org/D91983 -# https://github.com/root-project/root/pull/9380 -Patch17: %{name}-ppc-segfault-fix.patch -# Fall back to blocking I/O if uring fails -# Backported -# - commit 691403b2cc504fd4e3e7227894023913014a61ff -# - commit 956951ee2af83426d73ad72b2d966f9f1acbea83 -# - commit 16e64da11edf91fcf31c2fc474f573fca2ee863c -# - commit 311a6822f9b0fd438c4210ed60617b45f2ddbe74 -Patch18: %{name}-uring.patch -# Add missing classes in LinkDef.h files -# Backported -Patch19: %{name}-add-TTreeProcessorMP-to-LinkDef-file.patch -Patch20: %{name}-add-RDisplay-to-LinkDef-file.patch -Patch21: %{name}-add-RCutFlowReport-to-LinkDef-file.patch -# Fix "pointer is null" warnings -# Backported -Patch22: %{name}-ptr-is-null-RooFit-TMVA.patch -Patch23: %{name}-ptr-is-null-TStreamerInfo.patch -# Fix two failing tests on s390x -# https://github.com/root-project/root/pull/8826 -Patch24: %{name}-stress-s390x.patch -# Doxygen warning fixes -# Backported from upstream -Patch25: root-doxygen-fix1.patch -# Doxygen warning fixes -# https://github.com/root-project/root/pull/9388 -Patch26: root-doxygen-fix2.patch -# Don't run tutorials that crash during doc generation -# EPEL 7 specific -Patch27: %{name}-doxygen-crash-el7.patch +Patch10: %{name}-older-python.patch # Backported fix from LLVM upstream -Patch28: %{name}-symbol-rewrite.patch +Patch11: %{name}-symbol-rewrite.patch # Backport gcc 12 fix from LLVM # https://github.com/root-project/root/pull/9586 -Patch29: %{name}-fix-compilation-with-gcc-12.patch +Patch12: %{name}-fix-compilation-with-gcc-12.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 -Patch30: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +# Add #include for std::memcpy +# https://github.com/root-project/root/pull/10116 +Patch14: %{name}-missing-include.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 +# Fix test when long is 32 bits +# https://github.com/root-project/root/pull/10302 +Patch17: %{name}-longlong.patch +# Ignore warnings (uring and RooNaNPacker) +# https://github.com/root-project/root/pull/10303 +Patch18: %{name}-uring-warn.patch +Patch19: %{name}-endian-warn.patch +# Always call WaitForInFlightClusters before checking cluster IDs +# https://github.com/root-project/root/pull/10304 +Patch20: %{name}-ntuplewait.patch +# NENTRIES is not always a multiple of the expected size +# https://github.com/root-project/root/pull/10305 +Patch21: %{name}-dataframe-callback.patch +# Add/remove namespaces from Linkdef +# https://github.com/root-project/root/pull/10306 +Patch22: %{name}-namespace-sofie.patch +Patch23: %{name}-namespace-roofit.patch +Patch24: %{name}-namespace-pymva.patch +# Use calls from Python directly in tutorial +# https://github.com/root-project/root/pull/10307 +Patch25: %{name}-roofit-tutorial.patch +# Byte swap values read from the protobuf raw data stream on +# big endian architectures +# https://github.com/root-project/root/pull/10308 +Patch26: %{name}-big-endian-byte-swap.patch +# Avoid crashes due to static initialization order +# https://github.com/root-project/root/pull/10309 +Patch27: %{name}-rcolor-static-init.patch +# Avoid deleting TFormulas twice +# https://github.com/root-project/root/pull/10310 +Patch28: %{name}-avoid-deleting-TFormulas-twice.patch +# Use unique filenames in fillrandom.py and fillrandom.C +# https://github.com/root-project/root/pull/10311 +Patch29: %{name}-use-unique-filenames-in-fillrandom-tutorials.patch +# Limit the number of threads in TMVA CNN/DNN test to save memory +# https://github.com/root-project/root/pull/10312 +Patch30: %{name}-tmva-threads.patch +# Fix library link order +# https://github.com/root-project/root/pull/10313 +Patch31: %{name}-core-base-test.patch +# Backports +Patch32: %{name}-roofit-overflow.patch +Patch33: %{name}-make-dyld-based-library-search-behavior-default.patch +Patch34: %{name}-fix-TMVA-tutorial-using-internally-python.patch +Patch35: %{name}-threadsh1-avoid-heap-use-after-free.patch -BuildRequires: make %if %{?rhel}%{!?rhel:0} == 7 +BuildRequires: devtoolset-8-toolchain BuildRequires: cmake3 >= 3.9 %else +BuildRequires: gcc-c++ +BuildRequires: gcc-gfortran +BuildRequires: make BuildRequires: cmake >= 3.9 %endif BuildRequires: libX11-devel @@ -177,8 +202,8 @@ BuildRequires: fontconfig-devel BuildRequires: freetype-devel BuildRequires: fcgi-devel BuildRequires: ftgl-devel -BuildRequires: glew-devel BuildRequires: gl2ps-devel +BuildRequires: glew-devel BuildRequires: pcre-devel BuildRequires: zlib-devel BuildRequires: xz-devel @@ -200,8 +225,8 @@ BuildRequires: mysql-devel %endif BuildRequires: sqlite-devel BuildRequires: unixODBC-devel -BuildRequires: mesa-libGL-devel -BuildRequires: mesa-libGLU-devel +BuildRequires: libGL-devel +BuildRequires: libGLU-devel %if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8 BuildRequires: libpq-devel %else @@ -215,7 +240,7 @@ BuildRequires: python2-numpy BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy -%if %{root7} +%if %{webgui} %ifarch %{qt5_qtwebengine_arches} BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtwebengine-devel @@ -232,22 +257,23 @@ BuildRequires: xrootd-client-devel >= 1:3.3.5 BuildRequires: xrootd-private-devel >= 1:3.3.5 %endif BuildRequires: cfitsio-devel -BuildRequires: davix-devel >= 0.2.8 +BuildRequires: davix-devel >= 0.6.4 +%if %{gfal2} BuildRequires: gfal2-devel +%endif BuildRequires: R-Rcpp-devel BuildRequires: R-RInside-devel BuildRequires: readline-devel %if %{tbb} BuildRequires: tbb-devel >= 2018 %endif +BuildRequires: libuuid-devel BuildRequires: emacs BuildRequires: emacs-el -BuildRequires: gcc-c++ -BuildRequires: gcc-gfortran BuildRequires: graphviz-devel BuildRequires: expat-devel BuildRequires: pythia8-devel >= 8.1.80 -%if %{?fedora}%{!?fedora:0} >= 33 +%if %{?fedora}%{!?fedora:0} >= 33 || %{?rhel}%{!?rhel:0} >= 9 BuildRequires: flexiblas-devel # Required for FlexiBLAS support in FindBLAS.cmake # (in cmake 3.19.0, backported to cmake 3.18.3-1 in Fedora) @@ -259,17 +285,16 @@ BuildRequires: json-devel %if %{?fedora}%{!?fedora:0} BuildRequires: liburing-devel %endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +%if %{tmvasofieparser} +BuildRequires: protobuf-devel >= 3.0 +%endif +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif -BuildRequires: doxygen -BuildRequires: graphviz BuildRequires: yuicompressor BuildRequires: perl-generators BuildRequires: gtest-devel BuildRequires: gmock-devel -# Some of the tests call lsb_release -BuildRequires: redhat-lsb-core # Fonts BuildRequires: font(freesans) BuildRequires: font(freeserif) @@ -340,16 +365,6 @@ Requires: %{name}-core = %{version}-%{release} This package contains fonts used by ROOT that are not available in Fedora. In particular it contains STIX version 0.9 that is used by TMathText. -%package doc -Summary: Documentation for the ROOT system -BuildArch: noarch -License: LGPLv2+ and GPLv2+ and BSD -Requires: mathjax - -%description doc -This package contains the automatically generated ROOT class -documentation. - %package tutorial Summary: ROOT tutorial scripts and test suite BuildArch: noarch @@ -422,8 +437,28 @@ Obsoletes: python%{?python3_other_pkgversion}-%{name} < 6.22.00 Obsoletes: python%{?python3_other_pkgversion}-jupyroot < 6.22.00 Obsoletes: python%{?python3_other_pkgversion}-jsmva < 6.22.00 %endif -%if ! %{memstat} -Obsoletes: %{name}-memstat < %{version}-%{release} +Obsoletes: %{name}-memstat < 6.26.00 +Obsoletes: %{name}-montecarlo-vmc < 6.26.00 +Obsoletes: %{name}-doc < 6.26.00 +%if %{?rhel}%{!?rhel:0} == 8 +# Obsolete the ROOT 7 packages in EPEL 8 +# Minimum C++ version changed from 14 to 17 +Obsoletes: %{name}-graf-gpadv7 < 6.26.00 +Obsoletes: %{name}-graf-primitives < 6.26.00 +Obsoletes: %{name}-graf3d-eve7 < 6.26.00 +Obsoletes: %{name}-gui-browsable < 6.26.00 +Obsoletes: %{name}-gui-browserv7 < 6.26.00 +Obsoletes: %{name}-gui-canvaspainter < 6.26.00 +Obsoletes: %{name}-gui-fitpanelv7 < 6.26.00 +Obsoletes: %{name}-histv7 < 6.26.00 +Obsoletes: %{name}-hist-draw < 6.26.00 +Obsoletes: %{name}-tree-ntuple < 6.26.00 +%endif +%if %{buildpy2} +Obsoletes: python2-distrdf < 6.26.00 +%endif +%if ! %{distrdf} +Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00 %endif %description core @@ -449,10 +484,14 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} # not work with the system libraries. The bundled llvm and # clang are compiled using -fvisibility=hidden, and are not # visible outside of the libCling module. -Requires: gcc-c++ -Requires: redhat-rpm-config Provides: bundled(clang-libs) Provides: bundled(llvm-libs) +%if %{?rhel}%{!?rhel:0} == 7 +Requires: devtoolset-8-toolchain +%else +Requires: gcc-c++ +%endif +Requires: redhat-rpm-config Obsoletes: %{name}-cint7 < 5.26.00c Obsoletes: %{name}-cint < 6.00.00 Obsoletes: %{name}-cintex < 6.00.00 @@ -516,17 +555,6 @@ Requires: %{name}-tmva = %{version}-%{release} %description -n python2-jsmva TMVA interface used by JupyROOT. - -%package -n python2-distrdf -Summary: Distributed RDataFrame -BuildArch: noarch -%{?python_provide:%python_provide python2-distrdf} -Requires: python2-%{name} = %{version}-%{release} -Requires: %{name}-tree-dataframe = %{version}-%{release} - -%description -n python2-distrdf -A layer on top of RDataFrame to enable distributed computations. It is -a port of the previously known PyRDF python package. %endif %package -n python%{python3_pkgversion}-%{name} @@ -573,6 +601,7 @@ Requires: %{name}-tmva = %{version}-%{release} %description -n python%{python3_pkgversion}-jsmva TMVA interface used by JupyROOT. +%if %{distrdf} %package -n python%{python3_pkgversion}-distrdf Summary: Distributed RDataFrame BuildArch: noarch @@ -583,6 +612,7 @@ Requires: %{name}-tree-dataframe = %{version}-%{release} %description -n python%{python3_pkgversion}-distrdf A layer on top of RDataFrame to enable distributed computations. It is a port of the previously known PyRDF python package. +%endif %package r Summary: R interface for ROOT @@ -956,6 +986,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} Requires: %{name}-roostats%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} @@ -988,6 +1019,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-dcache This package contains the dCache extension for ROOT. +%if %{gfal2} %package io-gfal Summary: Grid File Access Library input/output library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -995,6 +1027,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-gfal This package contains the Grid File Access Library extension for ROOT. +%endif %package io-sql Summary: SQL input/output library for ROOT @@ -1226,19 +1259,6 @@ Obsoletes: %{name}-tree-player < 6.14.00 %description vecops This package contains a vector operation extension for ROOT. -%if %{memstat} -%package memstat -Summary: Memory statistics tool for use with ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} - -%description memstat -This package contains the memory statistics tool for debugging memory -leaks and such. -%endif - %package montecarlo-eg Summary: Event generator library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1261,17 +1281,6 @@ package provide the ROOT user with transparent interface to the Pythia (version 8) event generators for hadronic interactions. If the term "hadronic" does not ring any bells, this package is not for you. -%package montecarlo-vmc -Summary: Virtual Monte-Carlo (simulation) library for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-geom%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release} -Requires: %{name}-physics%{?_isa} = %{version}-%{release} - -%description montecarlo-vmc -This package contains the VMC library for ROOT. - %package net Summary: Net library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1298,7 +1307,7 @@ This package contains the basic authentication algorithms used by ROOT. %package net-davix Summary: Davix extension for ROOT -Requires: davix-libs%{?_isa} >= 0.2.8 +Requires: davix-libs%{?_isa} >= 0.6.4 Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1456,6 +1465,26 @@ suitable for adoption in different disciplines as well. This package contains the RooFit toolkit classes. +%package roofit-common +Summary: ROOT extension for modeling expected distributions - common +License: BSD +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description roofit-common +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains the RooFit common classes. + %package roofit-core Summary: ROOT extension for modeling expected distributions - core License: BSD @@ -1467,7 +1496,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-minuit%{?_isa} = %{version}-%{release} +Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-common%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1516,8 +1547,9 @@ This package contains RooFit classes that use the mathmore library. %package roofit-batchcompute Summary: Optimized computation functions for PDFs Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description roofit-batchcompute While fitting, a significant amount of time and processing power is @@ -1532,6 +1564,43 @@ multiple times for different vector instuction set architectures and the optimal code is executed during runtime, as a result of an automatic hardware detection mechanism that this library contains. +%package roofit-dataframe-helpers +Summary: RooFit DaraFrame helpers +License: BSD +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description roofit-dataframe-helpers +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains DaraFrame helper classes for RooFit + +%package roofit-hs3 +Summary: RooFit HS3 +License: BSD +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description roofit-hs3 +When using RooFit, statistical models can be conveniently handled and +stored as a RooWorkspace. However, for the sake of interoperability +with other statistical frameworks, and also ease of manipulation, it +may be useful to store statistical models in text form. This library +sets out to achieve exactly that, exporting to and importing from JSON +and YML. + %package roostats Summary: Statistical tools built on top of RooFit License: BSD @@ -1639,6 +1708,7 @@ Summary: Toolkit for multivariate data analysis (Python) License: BSD Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-tmva%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} Requires: python%{python3_pkgversion}-numpy %description tmva-python @@ -1655,6 +1725,27 @@ Requires: %{name}-tmva%{?_isa} = %{version}-%{release} %description tmva-r R integration with TMVA. +%package tmva-sofie +Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description tmva-sofie +ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +generates C++ functions easily invokable for the fast inference of +trained neural network models. It takes ONNX model files as inputs and +produces C++ header files that can be included and utilized in a +"plug-and-go" style. + +%if %{tmvasofieparser} +%package tmva-sofie-parser +Summary: ROOT/TMVA SOFIE Parsers +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} + +%description tmva-sofie-parser +Parsers for ROOT/TMVA SOFIE +%endif + %package tmva-gui Summary: Toolkit for multivariate data analysis GUI License: BSD @@ -1692,6 +1783,7 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} %endif Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} +Requires: %{name}-vecops%{?_isa} = %{version}-%{release} # Library split (tree-dataframe and vecops from tree-player) Obsoletes: %{name}-tree-player < 6.14.00 @@ -1765,6 +1857,41 @@ Requires: jupyter-notebook %description notebook Javascript and style files for the Jupyter ROOT Notebook. +%if %{webgui} +%package gui-webdisplay +Summary: Web display (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} + +%description gui-webdisplay +This package contains a web display extension for ROOT 7. + +%ifarch %{qt5_qtwebengine_arches} +%package gui-qt5webdisplay +Summary: Qt5 Web display (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} + +%description gui-qt5webdisplay +This package contains a Qt5 web display extension for ROOT 7. +%endif + +%package gui-webgui6 +Summary: Web based GUI for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description gui-webgui6 +This package provides a Web based GUI for ROOT. +%endif + %if %{root7} %package graf-gpadv7 Summary: Canvas and pad library for ROOT (ROOT 7) @@ -1787,6 +1914,7 @@ Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browserv7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1808,6 +1936,7 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-hist-draw%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} %description gui-browsable This package contains GUI browsable components for ROOT 7. @@ -1815,9 +1944,9 @@ This package contains GUI browsable components for ROOT 7. %package gui-browserv7 Summary: Browser (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} -Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d-eve7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} @@ -1850,39 +1979,6 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} This package contains a library to show a pop-up dialog when fitting various kinds of data. -%ifarch %{qt5_qtwebengine_arches} -%package gui-qt5webdisplay -Summary: Qt5 Web display (ROOT 7) -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} -Requires: %{name}-net-http%{?_isa} = %{version}-%{release} - -%description gui-qt5webdisplay -This package contains a Qt5 web display extension for ROOT 7. -%endif - -%package gui-webdisplay -Summary: Web display (ROOT 7) -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-net-http%{?_isa} = %{version}-%{release} - -%description gui-webdisplay -This package contains a web display extension for ROOT 7. - -%package gui-webgui6 -Summary: Web based GUI for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-gui%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} - -%description gui-webgui6 -This package provides a Web based GUI for ROOT. - %package histv7 Summary: Histogram library for ROOT (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1902,6 +1998,7 @@ This package contains an histogram drawing extension for ROOT 7. Summary: Ntuple (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-vecops%{?_isa} = %{version}-%{release} %description tree-ntuple This package contains an ntuple extension for ROOT 7. @@ -1937,12 +2034,15 @@ This package contains an ntuple extension for ROOT 7. %patch24 -p1 %patch25 -p1 %patch26 -p1 -%if %{?rhel}%{!?rhel:0} == 7 %patch27 -p1 -%endif %patch28 -p1 %patch29 -p1 %patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 +%patch35 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1959,7 +2059,9 @@ rm -rf builtins/nlohmann rm -rf builtins/openssl rm -rf builtins/pcre rm -rf builtins/tbb +rm -rf builtins/xrootd rm -rf builtins/xxhash +rm -rf builtins/zeromq rm -rf builtins/zlib rm -rf builtins/zstd # * lzma @@ -1969,40 +2071,26 @@ rm graf3d/gl/src/gl2ps.cxx graf3d/gl/src/gl2ps/gl2ps.h # * unuran rm -rf math/unuran/src/*.tar.gz # * xrootd-private-devel headers -rm -rf proof/xrdinc +rm -rf proof/xrdinc/* # * x11 extension headers rm -rf graf2d/x11/inc/X11 # * mathjax rm -rf documentation/doxygen/mathjax.tar.gz -sed /mathjax.tar.gz/d -i documentation/doxygen/Makefile -%if %{root7} -# * string_view ( requires c++-14) -rm core/foundation/inc/ROOT/libcpp_string_view.h \ - core/foundation/inc/ROOT/RWrap_libcpp_string_view.h -sed /RWrap_libcpp_string_view.h/d -i build/unix/module.modulemap -%endif # * jsroot -rm -rf js/* +rm -rf js/[^f]* js/files/draw.htm js/files/online.htm # Remove unsupported man page macros sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* -# Work around missing libraries in Fedora's gmock packaging < 1.8.0 -if [ ! -r %{_libdir}/libgmock.so ] ; then -mkdir googlemock -pushd googlemock -g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock-all.o /usr/src/gmock/gmock-all.cc -ar rv libgmock.a gmock-all.o -g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock_main.o /usr/src/gmock/gmock_main.cc -ar rv libgmock_main.a gmock_main.o -popd -fi - # Remove pre-minified script and style files rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css %build +%if %{?rhel}%{!?rhel:0} == 7 +. /opt/rh/devtoolset-8/enable +%endif + # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO %define _lto_cflags %{nil} @@ -2033,6 +2121,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_cfitsio:BOOL=OFF \ -Dbuiltin_clang:BOOL=ON \ -Dbuiltin_cling:BOOL=ON \ + -Dbuiltin_cppzmq:BOOL=OFF \ -Dbuiltin_davix:BOOL=OFF \ -Dbuiltin_fftw3:BOOL=OFF \ -Dbuiltin_freetype:BOOL=OFF \ @@ -2040,6 +2129,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_gl2ps:BOOL=OFF \ -Dbuiltin_glew:BOOL=OFF \ -Dbuiltin_gsl:BOOL=OFF \ + -Dbuiltin_gtest:BOOL=OFF \ -Dbuiltin_llvm:BOOL=ON \ -Dbuiltin_lz4:BOOL=OFF \ -Dbuiltin_lzma:BOOL=OFF \ @@ -2054,6 +2144,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_veccore:BOOL=OFF \ -Dbuiltin_xrootd:BOOL=OFF \ -Dbuiltin_xxhash:BOOL=OFF \ + -Dbuiltin_zeromq:BOOL=OFF \ -Dbuiltin_zlib:BOOL=OFF \ -Dbuiltin_zstd:BOOL=OFF \ -Dalien:BOOL=OFF \ @@ -2065,14 +2156,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dclad:BOOL=OFF \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ -%if %{root7} - -Droot7:BOOL=ON \ - -Dwebgui:BOOL=ON \ -%else - -Droot7:BOOL=OFF \ - -Dwebgui:BOOL=OFF \ -%endif -Dcxxmodules:BOOL=OFF \ + -Ddaos:BOOL=OFF \ -Ddataframe:BOOL=ON \ -Ddavix:BOOL=ON \ -Ddcache:BOOL=ON \ @@ -2084,7 +2169,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dfitsio:BOOL=ON \ -Dfortran:BOOL=ON \ -Dgdml:BOOL=ON \ +%if %{gfal2} -Dgfal:BOOL=ON \ +%else + -Dgfal:BOOL=OFF \ +%endif -Dgsl_shared:BOOL=ON \ -Dgviz:BOOL=ON \ -Dhttp:BOOL=ON \ @@ -2097,11 +2186,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ -%if %{memstat} - -Dmemstat:BOOL=ON \ -%else - -Dmemstat:BOOL=OFF \ -%endif -Dminuit2:BOOL=ON \ -Dmlp:BOOL=ON \ -Dmonalisa:BOOL=OFF \ @@ -2120,8 +2204,16 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %else -Dqt5web:BOOL=OFF \ %endif + -Dqt6web:BOOL=OFF \ -Dr:BOOL=ON \ -Droofit:BOOL=ON \ + -Droofit_multiprocess:BOOL=OFF \ + -Droofit_hs3_ryml:BOOL=OFF \ +%if %{root7} + -Droot7:BOOL=ON \ +%else + -Droot7:BOOL=OFF \ +%endif -Drpath:BOOL=OFF \ -Druby:BOOL=OFF \ -Druntime_cxxmodules:BOOL=OFF \ @@ -2141,6 +2233,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva-gpu:BOOL=OFF \ -Dtmva-pymva:BOOL=ON \ -Dtmva-rmva:BOOL=ON \ +%if %{tmvasofieparser} + -Dtmva-sofie:BOOL=ON \ +%else + -Dtmva-sofie:BOOL=OFF \ +%endif -Dunuran:BOOL=ON \ %if %{?fedora}%{!?fedora:0} -During:BOOL=ON \ @@ -2151,7 +2248,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dvdt:BOOL=OFF \ -Dveccore:BOOL=OFF \ -Dvecgeom:BOOL=OFF \ - -Dvmc:BOOL=ON \ +%if %{webgui} + -Dwebgui:BOOL=ON \ +%else + -Dwebgui:BOOL=OFF \ +%endif -Dx11:BOOL=ON \ -Dxml:BOOL=ON \ -Dxrootd:BOOL=ON \ @@ -2162,6 +2263,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %endif -Dfail-on-missing:BOOL=ON \ -Dtesting:BOOL=ON \ + -Dtest_distrdf_pyspark:BOOL=OFF \ + -Dtest_distrdf_dask:BOOL=OFF \ -Dclingtest:BOOL=OFF \ -Dcoverage:BOOL=OFF \ -Droottest:BOOL=OFF \ @@ -2243,7 +2346,6 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so mkdir -p %{buildroot}%{python2_sitelib} cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib} -cp -pr %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python2_sitelib} # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2258,10 +2360,6 @@ echo 'Name: JsMVA' > \ %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info -echo 'Name: DistRDF' > \ - %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info %endif @@ -2290,7 +2388,9 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so mkdir -p %{buildroot}%{python3_sitelib} mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib} +%if %{distrdf} mv %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python3_sitelib} +%endif # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2305,10 +2405,12 @@ echo 'Name: JsMVA' > \ %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info +%if %{distrdf} echo 'Name: DistRDF' > \ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info +%endif # Put jupyter stuff in the right places mkdir -p %{buildroot}%{_datadir}/jupyter/kernels @@ -2398,11 +2500,14 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins rm TBrowserImp/P030_RWebBrowserImp.C %endif rm TDataSetManager/P020_TDataSetManagerAliEn.C +%if ! %{gfal2} +rm TFile/P050_TGFALFile.C +%endif rm TFile/P070_TAlienFile.C rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TGrid/P010_TAlien.C -%if ! %{root7} +%if ! %{webgui} rm TGuiFactory/P030_TWebGuiFactory.C %endif %if %{xrootd5} @@ -2429,9 +2534,10 @@ rmdir TSlave rmdir TVirtualGeoConverter popd -# Replace bundled jsroot with symlink to system version -rmdir %{buildroot}%{_datadir}/%{name}/js -ln -s /usr/share/javascript/jsroot %{buildroot}%{_datadir}/%{name}/js +# Replace bundled jsroot with symlinks to system version +for x in img libs scripts style files/draw.htm files/online.htm ; do + ln -s /usr/share/javascript/jsroot/$x %{buildroot}%{_datadir}/%{name}/js/$x +done # Create ldconfig configuration mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d @@ -2458,30 +2564,6 @@ cp -p interpreter/llvm/src/CREDITS.TXT interpreter/llvm/src/llvm-CREDITS.TXT cp -p interpreter/llvm/src/LICENSE.TXT interpreter/llvm/src/llvm-LICENSE.TXT cp -p interpreter/llvm/src/README.txt interpreter/llvm/src/llvm-README.txt -# Generate documentation -pushd documentation/doxygen -mkdir -p doc/html -ln -s /usr/share/javascript/mathjax doc/html/mathjax -ln -s ../../files files -for x in df014_CsvDataSource_MuRun2010B_cpp.csv \ - df014_CsvDataSource_MuRun2010B_py.csv \ - df015_CsvDataSource_MuRun2010B.csv ; do - ln -sf ../../files/tutorials/df014_CsvDataSource_MuRun2010B.csv $x -done -# Create the py-hsimple.root file in advance (needed as input) -ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \ - ROOTSYS=${PWD}/../../%{_vpath_builddir} \ - LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \ - PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \ - %{__python3} ../../tutorials/pyroot/hsimple.py -ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \ - ROOTSYS=${PWD}/../../%{_vpath_builddir} \ - LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \ - PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \ - make DOXYGEN_OUTPUT_DIRECTORY=${PWD}/doc PYTHON_EXECUTABLE=%{__python3} -mv doc/html %{buildroot}%{_pkgdocdir}/html -popd - # Create includelist files ... for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm/*'` ; do l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f` @@ -2507,6 +2589,10 @@ cat includelist-net-netx >> includelist-netx %endif %check +%if %{?rhel}%{!?rhel:0} == 7 +. /opt/rh/devtoolset-8/enable +%endif + pushd %{_vpath_builddir} pushd test ln -s ../../files files @@ -2525,6 +2611,15 @@ popd pushd tmva/tmva/test/envelope ln -s ../../../../../files files popd + +# Some of the tests call lsb_release -d -s +# Provide a replacement script instead of build requiring redhat-lsb-core +cat > bin/lsb_release << EOF +#! /bin/sh +cat /etc/redhat-release +EOF +chmod +x bin/lsb_release + # Exclude some tests that can not be run # # - test-stressIOPlugins-* @@ -2545,8 +2640,13 @@ popd # reads sqlite data over network: # http://root.cern.ch/files/root_download_stats.sqlite # -# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles +# - tutorial-dataframe-df033_Describe-py # - tutorial-dataframe-df102_NanoAODDimuonAnalysis(-py)? +# reads input data over network: +# root://eospublic.cern.ch//eos/opendata/cms/derived-data/ +# AOD2NanoAODOutreachTool/Run2012BC_DoubleMuParked_Muons.root +# +# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles # - tutorial-dataframe-df103_NanoAODHiggsAnalysis(-py)? # reads input data over network: # root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/ @@ -2555,12 +2655,14 @@ popd # - tutorial-dataframe-df105_WBosonAnalysis-py # - tutorial-dataframe-df106_HiggsToFourLeptons-py # - tutorial-dataframe-df107_SingleTopAnalysis-py +# - tutorial-rcanvas-df104-py +# - tutorial-rcanvas-df105-py # reads input data over network: # root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ # -# - tutorial-v7-climate-global_temperatures +# - tutorial-v7-global_temperatures.cxx # reads input data over network -# http://root.cern./files/tutorials/GlobalLandTemperaturesByCity.csv +# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv # # - tutorial-v7-ntuple-ntpl003_lhcbOpenData # reads input data over network @@ -2570,13 +2672,13 @@ popd # reads input data over network # http://root.cern.ch/files/NanoAOD_DoubleMuon_CMS2011OpenData.root (1.5 GB) # -# - tutorial-v7-line.cxx -# requires a web browser (and js-jsroot) to render javascript graphics -# # - gtest-net-davix-test-RRawFileDavix # reads input file over network # http://root.cern.ch/files/davix.test # +# - gtest-net-netxng-test-RRawFileNetXNG +# root://eospublic.cern.ch/eos/root-eos/xrootd.test +# # - gtest-tmva-tmva-test-rreader # - gtest-tmva-tmva-test-rstandardscaler # - tutorial-tmva-tmva003_RReader @@ -2593,6 +2695,9 @@ popd # - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py # these tests require the numba python module which is not available +# +# - test-webgui-ping +# error: Cannot display window in native excluded="\ test-stressIOPlugins|\ tutorial-dataframe-df101_h1Analysis|\ @@ -2603,18 +2708,21 @@ tutorial-multicore-mp104_processH1|\ tutorial-multicore-mp105_processEntryList|\ tutorial-multicore-imt101_parTreeProcessing|\ tutorial-dataframe-df..._SQlite|\ -gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\ +tutorial-dataframe-df033_Describe-py|\ tutorial-dataframe-df102_NanoAODDimuonAnalysis|\ +gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\ tutorial-dataframe-df103_NanoAODHiggsAnalysis|\ tutorial-dataframe-df104_HiggsToTwoPhotons-py|\ tutorial-dataframe-df105_WBosonAnalysis-py|\ tutorial-dataframe-df106_HiggsToFourLeptons-py|\ tutorial-dataframe-df107_SingleTopAnalysis-py|\ -tutorial-v7-climate-global_temperatures|\ +tutorial-rcanvas-df104-py|\ +tutorial-rcanvas-df105-py|\ +tutorial-v7-global_temperatures.cxx|\ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ -tutorial-v7-line.cxx|\ gtest-net-davix-test-RRawFileDavix|\ +gtest-net-netxng-test-RRawFileNetXNG|\ gtest-tmva-tmva-test-rreader|\ gtest-tmva-tmva-test-rstandardscaler|\ tutorial-tmva-tmva003_RReader|\ @@ -2623,107 +2731,31 @@ tutorial-tmva-tmva103_Application|\ pyunittests-pyroot-dependency-versions|\ pyunittests-pyroot-numbadeclare|\ test-import-numba|\ -tutorial-pyroot-pyroot004_NumbaDeclare-py" +tutorial-pyroot-pyroot004_NumbaDeclare-py|\ +test-webgui-ping" -# - tutorial-v7-concurrentfill.cxx -# - tutorial-v7-draw.cxx -# - tutorial-v7-draw_frame.cxx -# - tutorial-v7-draw_legend.cxx -# - tutorial-v7-draw_mt.cxx -# - tutorial-v7-draw_rh1.cxx -# - tutorial-v7-draw_rh1_large.cxx -# - tutorial-v7-draw_rh2.cxx -# - tutorial-v7-draw_rh2_colz.cxx -# - tutorial-v7-draw_rh2_large.cxx -# - tutorial-v7-draw_rh3.cxx -# - tutorial-v7-draw_rh3_large.cxx -# - tutorial-v7-draw_subpads.cxx -# - tutorial-v7-histops.cxx -# - tutorial-v7-perf.cxx -# - tutorial-v7-perfcomp.cxx -# - tutorial-v7-simple.cxx -# Fails with "already deserialized this template specialization" -# https://github.com/root-project/root/issues/8073 -excluded="${excluded}|\ -tutorial-v7-concurrentfill.cxx|\ -tutorial-v7-draw.cxx|\ -tutorial-v7-draw_frame.cxx|\ -tutorial-v7-draw_legend.cxx|\ -tutorial-v7-draw_mt.cxx|\ -tutorial-v7-draw_rh1.cxx|\ -tutorial-v7-draw_rh1_large.cxx|\ -tutorial-v7-draw_rh2.cxx|\ -tutorial-v7-draw_rh2_colz.cxx|\ -tutorial-v7-draw_rh2_large.cxx|\ -tutorial-v7-draw_rh3.cxx|\ -tutorial-v7-draw_rh3_large.cxx|\ -tutorial-v7-draw_subpads.cxx|\ -tutorial-v7-histops.cxx|\ -tutorial-v7-perf.cxx|\ -tutorial-v7-perfcomp.cxx|\ -tutorial-v7-simple.cxx" - -%if %{?rhel}%{!?rhel:0} == 7 +%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py +# - tutorial-roofit-rf409_NumPyPandasToRooFit-py # requires the pandas python module which is not available in EPEL 7 -# -# - tutorial-multicore-mp001_fillHistos -# - tutorial-multicore-mp101_fillNtuples -# - tutorial-multicore-mp102_readNtuplesFillHistosAndFit -# - tutorial-multicore-mp201_parallelHistoFill -# fails intermittently on EPEL 7 with the error -# symbol '_Z6MPRecvP7TSocket' unresolved while linking -# symbol '_Z6MPSendP7TSocketj' unresolved while linking +# or EPEL 9 excluded="${excluded}|\ test-import-pandas|\ tutorial-dataframe-df026_AsNumpyArrays-py|\ -tutorial-multicore-mp001_fillHistos|\ -tutorial-multicore-mp101_fillNtuples|\ -tutorial-multicore-mp102_readNtuplesFillHistosAndFit|\ -tutorial-multicore-mp201_parallelHistoFill" +tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif %ifarch %{ix86} %{arm} +%if %{?fedora}%{!?fedora:0} <= 35 # Tests failing on 32 bit architectures (dataframe) -# A bit random - not all the tests fail every time... -# - gtest-tree-dataframe-test-dataframe-cache -# - gtest-tree-dataframe-test-dataframe-callbacks -# - gtest-tree-dataframe-test-dataframe-colnames -# - gtest-tree-dataframe-test-dataframe-concurrency -# - gtest-tree-dataframe-test-dataframe-display -# - gtest-tree-dataframe-test-dataframe-friends -# - gtest-tree-dataframe-test-dataframe-helpers -# - gtest-tree-dataframe-test-dataframe-interface -# - gtest-tree-dataframe-test-dataframe-leaves -# - gtest-tree-dataframe-test-dataframe-ranges -# - gtest-tree-dataframe-test-dataframe-regression -# - gtest-tree-dataframe-test-dataframe-simple -# - gtest-tree-dataframe-test-dataframe-snapshot -# - gtest-tree-dataframe-test-dataframe-vecops -# - gtest-tree-dataframe-test-datasource-csv -# - gtest-tree-dataframe-test-datasource-more -# - gtest-tree-dataframe-test-datasource-sqlite -# - gtest-tree-dataframe-test-datasource-trivial +# +# - gtest-tree-dataframe-test-dataframe-* +# - gtest-tree-dataframe-test-datasource-* excluded="${excluded}|\ -gtest-tree-dataframe-test-dataframe-cache|\ -gtest-tree-dataframe-test-dataframe-callbacks|\ -gtest-tree-dataframe-test-dataframe-colnames|\ -gtest-tree-dataframe-test-dataframe-concurrency|\ -gtest-tree-dataframe-test-dataframe-display|\ -gtest-tree-dataframe-test-dataframe-friends|\ -gtest-tree-dataframe-test-dataframe-helpers|\ -gtest-tree-dataframe-test-dataframe-interface|\ -gtest-tree-dataframe-test-dataframe-leaves|\ -gtest-tree-dataframe-test-dataframe-ranges|\ -gtest-tree-dataframe-test-dataframe-regression|\ -gtest-tree-dataframe-test-dataframe-simple|\ -gtest-tree-dataframe-test-dataframe-snapshot|\ -gtest-tree-dataframe-test-dataframe-vecops|\ -gtest-tree-dataframe-test-datasource-csv|\ -gtest-tree-dataframe-test-datasource-more|\ -gtest-tree-dataframe-test-datasource-sqlite|\ -gtest-tree-dataframe-test-datasource-trivial" +gtest-tree-dataframe-test-dataframe|\ +gtest-tree-dataframe-test-datasource" +%endif %endif %ifarch %{arm} @@ -2731,82 +2763,17 @@ gtest-tree-dataframe-test-datasource-trivial" # # - gtest-tree-tree-test-testBulkApi # - gtest-tree-tree-test-testBulkApiSillyStruct -# segmentation fault - bus error -# -# - gtest-tree-dataframe-test-dataframe-histomodels -# - gtest-tree-ntuple-v7-test-ntuple-rdf -# - pyunittests-dataframe-cache -# - pyunittests-dataframe-histograms +# - gtest-tree-dataframe-test-dataframe-snapshot +# - gtest-tree-dataframe-test-dataframe-vary # - pyunittests-dataframe-merge-results -# - pyunittests-dataframe-misc -# - pyunittests-pyroot-pyz-rdataframe-makenumpy -# - pyunittests-pyroot-pyz-tf-pycallables -# - test-stressiterators-interpreted -# - tutorial-dataframe-df001_introduction(-py) -# - tutorial-dataframe-df002_dataModel(-py) -# - tutorial-dataframe-df003_profiles(-py) -# - tutorial-dataframe-df005_fillAnyObject -# - tutorial-dataframe-df006_ranges(-py) -# - tutorial-dataframe-df007_snapshot(-py) -# - tutorial-dataframe-df010_trivialDataSource(-py) -# - tutorial-dataframe-df012_DefinesAndFiltersAsStrings(-py) -# - tutorial-dataframe-df014_CSVDataSource(-py) -# - tutorial-dataframe-df015_LazyDataSource -# - tutorial-dataframe-df016_vecOps(-py) -# - tutorial-dataframe-df017_vecOpsHEP(-py) -# - tutorial-dataframe-df019_Cache(-py) -# - tutorial-dataframe-df020_helpers -# - tutorial-dataframe-df021_createTGraph(-py) -# - tutorial-dataframe-df022_useKahan -# - tutorial-dataframe-df025_RNode -# - tutorial-dataframe-df031_Stats(-py) -# - tutorial-hist-sparsehist -# - tutorial-r-example -# - tutorial-r-DataFrame -# - tutorial-r-Function -# - tutorial-r-Functor -# - tutorial-r-GlobalMinimization -# - tutorial-r-Integration -# - tutorial-r-Minimization -# Not implemented relocation type! +# - pyunittests-distrdf-unit-test-headnode excluded="${excluded}|\ gtest-tree-tree-test-testBulkApi\$\$|\ gtest-tree-tree-test-testBulkApiSillyStruct|\ -gtest-tree-dataframe-test-dataframe-histomodels|\ -gtest-tree-ntuple-v7-test-ntuple-rdf|\ -pyunittests-dataframe-cache|\ -pyunittests-dataframe-histograms|\ +gtest-tree-dataframe-test-dataframe-snapshot|\ +gtest-tree-dataframe-test-dataframe-vary|\ pyunittests-dataframe-merge-results|\ -pyunittests-dataframe-misc|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -pyunittests-pyroot-pyz-tf-pycallables|\ -test-stressiterators-interpreted|\ -tutorial-dataframe-df001_introduction|\ -tutorial-dataframe-df002_dataModel|\ -tutorial-dataframe-df003_profiles|\ -tutorial-dataframe-df005_fillAnyObject|\ -tutorial-dataframe-df006_ranges|\ -tutorial-dataframe-df007_snapshot|\ -tutorial-dataframe-df010_trivialDataSource|\ -tutorial-dataframe-df012_DefinesAndFiltersAsStrings|\ -tutorial-dataframe-df014_CSVDataSource|\ -tutorial-dataframe-df015_LazyDataSource|\ -tutorial-dataframe-df016_vecOps|\ -tutorial-dataframe-df017_vecOpsHEP|\ -tutorial-dataframe-df019_Cache|\ -tutorial-dataframe-df020_helpers|\ -tutorial-dataframe-df021_createTGraph|\ -tutorial-dataframe-df022_useKahan|\ -tutorial-dataframe-df025_RNode|\ -tutorial-dataframe-df031_Stats|\ -tutorial-hist-sparsehist|\ -tutorial-r-example|\ -tutorial-r-DataFrame|\ -tutorial-r-Function|\ -tutorial-r-Functor|\ -tutorial-r-GlobalMinimization|\ -tutorial-r-Integration|\ -tutorial-r-Minimization" +pyunittests-distrdf-unit-test-headnode" %endif %ifarch %{power64} aarch64 @@ -2823,16 +2790,66 @@ excluded="${excluded}|test-stresshistofit\$\$" # - test-stresshistogram-interpreted # - test-stressmathcore-interpreted # - test-stressroostats-interpreted +# +# Always timeout (hang?) +# - pyunittests-pyroot-pyz-rdataframe-makenumpy +# - tutorial-dataframe-df032_MakeNumpyDataFrame-py excluded="${excluded}|\ test-stresshistofit-interpreted|\ test-stresshistogram-interpreted|\ test-stressmathcore-interpreted|\ -test-stressroostats-interpreted" +test-stressroostats-interpreted|\ +pyunittests-pyroot-pyz-rdataframe-makenumpy|\ +tutorial-dataframe-df032_MakeNumpyDataFrame-py" + +%if %{?fedora}%{!?fedora:0} == 34 || %{?fedora}%{!?fedora:0} == 35 || %{?rhel}%{!?rhel:0} == 9 +# tmva/tmva/test/branchlessForest.cxx:215: Failure +# Expected equality of these values: +# predictions[1] +# Which is: -1 +# -1.0 + 2.0 +# Which is: 1 +# - gtest-tmva-tmva-test-branchlessForest +# +# Error in : bins must be in increasing order +# Error in : X must be in increasing order +# - tutorial-math-kdTreeBinning +# +# Segmentation violation - malloc(): unaligned tcache chunk detected +# - tutorial-unfold-testUnfold7c +# +# TFormula double free in Python +# - tutorial-hist-fillrandom-py +# - tutorial-pyroot-fillrandom-py +# - tutorial-pyroot-fit1-py (uses output of tutorial-pyroot-fillrandom-py) +# - tutorial-pyroot-formula1-py +excluded="${excluded}|\ +gtest-tmva-tmva-test-branchlessForest|\ +tutorial-gl-gltf3|\ +tutorial-math-kdTreeBinning|\ +tutorial-unfold-testUnfold7c|\ +tutorial-hist-fillrandom-py|\ +tutorial-pyroot-fillrandom-py|\ +tutorial-pyroot-fit1-py|\ +tutorial-pyroot-formula1-py" +%endif + +%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8 +# crash - free(): corrupted unsorted chunks +# - gtest-roofit-RDataFrameHelpers-test-testActionHelpers +# - gtest-tmva-tmva-test-rtensor-utils +# - gtest-tree-dataframe-test-dataframe-* +# - gtest-tree-dataframe-test-datasource-* +# - tutorial-dataframe-df004_cutFlowReport +excluded="${excluded}|\ +gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ +gtest-tmva-tmva-test-rtensor-utils|\ +gtest-tree-dataframe-test-dataframe|\ +gtest-tree-dataframe-test-datasource|\ +tutorial-dataframe-df004_cutFlowReport" +%endif %if %{?rhel}%{!?rhel:0} == 8 -# Random segmentation faults -# - gtest-tree-dataframe-test-dataframe-snapshot -# # Fails on ppc64le since RHEL 8.5 update # Exception: Found not whitelisted libraries after importing ROOT: # - libpthread-2.28 @@ -2840,16 +2857,16 @@ test-stressroostats-interpreted" # - libc-2.28 # - librt-2.28 # - pyunittests-pyroot-import-load-libs +# +# crash - double free or corruption (out) +# - tutorial-multicore-mt201_parallelHistoFill +# +# segmentation violation +# - tutorial-multicore-mt304_fillHistos excluded="${excluded}|\ -gtest-tree-dataframe-test-dataframe-snapshot|\ -pyunittests-pyroot-import-load-libs" -%endif - -%if %{?fedora}%{!?fedora:0} >= 36 -# Fails on Fedora 36 ppc64le -# - test-stressHistFactory(-interpreted) -excluded="${excluded}|\ -test-stressHistFactory" +pyunittests-pyroot-import-load-libs|\ +tutorial-multicore-mt201_parallelHistoFill|\ +tutorial-multicore-mt304_fillHistos" %endif %endif @@ -2857,28 +2874,36 @@ test-stressHistFactory" # s390x specific failures # # - gtest-roofit-roofitcore-test-testNaNPacker +# - gtest-roofit-roofitcore-test-testRooProdPdf +# - gtest-tree-dataframe-test-datasource-ntuple # - gtest-tree-ntuple-v7-test-ntuple-basics # - gtest-tree-ntuple-v7-test-ntuple-extended +# - gtest-tree-ntuple-v7-test-ntuple-merger # - gtest-tree-ntuple-v7-test-ntuple-minifile +# - gtest-tree-ntuple-v7-test-ntuple-serialize # - pyunittests-pyroot-pyz-rtensor -# - test-stresshistogram(-interpreted) +# - pyunittests-pyroot-pyz-stl-vector # - test-stresshistofit(-interpreted) +# - test-stresshistogram(-interpreted) # - tutorial-dataframe-df006_ranges-py -# - tutorial-roofit-rf203_ranges-py +# - tutorial-math-exampleFunction-py # - tutorial-roofit-rf612_recoverFromInvalidParameters -# - tutorial-roofit-rf902_numgenconfig-py excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker|\ +gtest-roofit-roofitcore-test-testRooProdPdf|\ +gtest-tree-dataframe-test-datasource-ntuple|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ +gtest-tree-ntuple-v7-test-ntuple-merger|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ +gtest-tree-ntuple-v7-test-ntuple-serialize|\ pyunittests-pyroot-pyz-rtensor|\ -test-stresshistogram|\ +pyunittests-pyroot-pyz-stl-vector|\ test-stresshistofit|\ +test-stresshistogram|\ tutorial-dataframe-df006_ranges-py|\ -tutorial-roofit-rf203_ranges-py|\ -tutorial-roofit-rf612_recoverFromInvalidParameters|\ -tutorial-roofit-rf902_numgenconfig-py" +tutorial-math-exampleFunction-py|\ +tutorial-roofit-rf612_recoverFromInvalidParameters" %if %{?rhel}%{!?rhel:0} == 8 # Issues with file sizes on EPEL 8 s390x @@ -2915,6 +2940,22 @@ update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : %endif +%pretrans net-http -p +path = "%{_datadir}/%{name}/js" +st = posix.stat(path) +if st and st.type == "link" then + os.remove(path) +end + +%post net-http +# Replace bundled jsroot with symlinks to system version +for x in img libs scripts style files/draw.htm files/online.htm ; do + ln -fs /usr/share/javascript/jsroot/$x %{_datadir}/%{name}/js/$x +done +%{?ldconfig} + +%ldconfig_postun net-http + %if %{buildpy2} %pre -n python2-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then @@ -2926,11 +2967,7 @@ fi %pre -n python%{python3_pkgversion}-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then -%if %{?rhel}%{!?rhel:0} == 7 - for alt in `grep python%{python3_version}/.*.so /var/lib/alternatives/libPyROOT.so` ; do -%else for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do -%endif %{_sbindir}/update-alternatives --remove libPyROOT.so $alt done fi @@ -3017,7 +3054,9 @@ fi %ldconfig_scriptlets html %ldconfig_scriptlets io %ldconfig_scriptlets io-dcache +%if %{gfal2} %ldconfig_scriptlets io-gfal +%endif %ldconfig_scriptlets io-sql %ldconfig_scriptlets io-xml %ldconfig_scriptlets io-xmlparser @@ -3037,17 +3076,12 @@ fi %ldconfig_scriptlets splot %ldconfig_scriptlets unuran %ldconfig_scriptlets vecops -%if %{memstat} -%ldconfig_scriptlets memstat -%endif %ldconfig_scriptlets montecarlo-eg %ldconfig_scriptlets montecarlo-pythia8 -%ldconfig_scriptlets montecarlo-vmc %ldconfig_scriptlets net %ldconfig_scriptlets net-rpdutils %ldconfig_scriptlets net-auth %ldconfig_scriptlets net-davix -%ldconfig_scriptlets net-http %ldconfig_scriptlets net-httpsniff %ldconfig_scriptlets netx %ldconfig_scriptlets proof @@ -3058,9 +3092,12 @@ fi %ldconfig_scriptlets xproof %endif %ldconfig_scriptlets roofit +%ldconfig_scriptlets roofit-common %ldconfig_scriptlets roofit-core %ldconfig_scriptlets roofit-more %ldconfig_scriptlets roofit-batchcompute +%ldconfig_scriptlets roofit-dataframe-helpers +%ldconfig_scriptlets roofit-hs3 %ldconfig_scriptlets roostats %ldconfig_scriptlets sql-mysql %ldconfig_scriptlets sql-odbc @@ -3069,12 +3106,23 @@ fi %ldconfig_scriptlets tmva %ldconfig_scriptlets tmva-python %ldconfig_scriptlets tmva-r +%ldconfig_scriptlets tmva-sofie +%if %{tmvasofieparser} +%ldconfig_scriptlets tmva-sofie-parser +%endif %ldconfig_scriptlets tmva-gui %ldconfig_scriptlets tree %ldconfig_scriptlets tree-dataframe %ldconfig_scriptlets tree-player %ldconfig_scriptlets tree-viewer %ldconfig_scriptlets unfold +%if %{webgui} +%ldconfig_scriptlets gui-webdisplay +%ifarch %{qt5_qtwebengine_arches} +%ldconfig_scriptlets gui-qt5webdisplay +%endif +%ldconfig_scriptlets gui-webgui6 +%endif %if %{root7} %ldconfig_scriptlets graf-gpadv7 %ldconfig_scriptlets graf-primitives @@ -3083,11 +3131,6 @@ fi %ldconfig_scriptlets gui-browserv7 %ldconfig_scriptlets gui-canvaspainter %ldconfig_scriptlets gui-fitpanelv7 -%ifarch %{qt5_qtwebengine_arches} -%ldconfig_scriptlets gui-qt5webdisplay -%endif -%ldconfig_scriptlets gui-webdisplay -%ldconfig_scriptlets gui-webgui6 %ldconfig_scriptlets histv7 %ldconfig_scriptlets hist-draw %ldconfig_scriptlets tree-ntuple @@ -3119,17 +3162,12 @@ fi %files fonts %{_datadir}/%{name}/fonts -%files doc -%doc %{_pkgdocdir}/html - %files tutorial %doc %{_pkgdocdir}/tutorials %files core -f includelist-core -%{_bindir}/memprobe %{_bindir}/rmkdepend %{_bindir}/root-config -%{_mandir}/man1/memprobe.1* %{_mandir}/man1/rmkdepend.1* %{_mandir}/man1/root-config.1* %dir %{_libdir}/%{name} @@ -3228,10 +3266,6 @@ fi %files -n python2-jsmva %{python2_sitelib}/JsMVA %{python2_sitelib}/JsMVA-*.egg-info - -%files -n python2-distrdf -%{python2_sitelib}/DistRDF -%{python2_sitelib}/DistRDF-*.egg-info %endif %files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot @@ -3257,9 +3291,11 @@ fi %{python3_sitelib}/JsMVA %{python3_sitelib}/JsMVA-*.egg-info +%if %{distrdf} %files -n python%{python3_pkgversion}-distrdf %{python3_sitelib}/DistRDF %{python3_sitelib}/DistRDF-*.egg-info +%endif %files r -f includelist-bindings-r %{_libdir}/%{name}/libRInterface.* @@ -3454,10 +3490,12 @@ fi %{_datadir}/%{name}/plugins/TFile/P040_TDCacheFile.C %{_datadir}/%{name}/plugins/TSystem/P020_TDCacheSystem.C +%if %{gfal2} %files io-gfal -f includelist-io-gfal %{_libdir}/%{name}/libGFAL.* %{_libdir}/%{name}/libGFAL_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P050_TGFALFile.C +%endif %files io-sql -f includelist-io-sql %{_libdir}/%{name}/libSQLIO.* @@ -3569,12 +3607,6 @@ fi %{_libdir}/%{name}/libROOTVecOps.* %{_libdir}/%{name}/libROOTVecOps_rdict.pcm -%if %{memstat} -%files memstat -f includelist-misc-memstat -%{_libdir}/%{name}/libMemStat.* -%{_libdir}/%{name}/libMemStat_rdict.pcm -%endif - %files montecarlo-eg -f includelist-montecarlo-eg %{_libdir}/%{name}/libEG.* %{_libdir}/%{name}/libEG_rdict.pcm @@ -3585,11 +3617,6 @@ fi %{_libdir}/%{name}/libEGPythia8.* %{_libdir}/%{name}/libEGPythia8_rdict.pcm -%files montecarlo-vmc -f includelist-montecarlo-vmc -%{_libdir}/%{name}/libVMC.* -%{_libdir}/%{name}/libVMC_rdict.pcm -%{_datadir}/%{name}/vmc - %files net -f includelist-net-net %{_libdir}/%{name}/libNet.* %{_libdir}/%{name}/libNet_rdict.pcm @@ -3622,7 +3649,17 @@ fi %files net-http -f includelist-net-http %{_libdir}/%{name}/libRHTTP.* %{_libdir}/%{name}/libRHTTP_rdict.pcm -%{_datadir}/%{name}/js +%dir %{_datadir}/%{name}/js +%dir %{_datadir}/%{name}/js/files +%{_datadir}/%{name}/js/files/canv_batch.htm +%{_datadir}/%{name}/js/files/web.config +%{_datadir}/%{name}/js/files/wslist.htm +%ghost %{_datadir}/%{name}/js/img +%ghost %{_datadir}/%{name}/js/libs +%ghost %{_datadir}/%{name}/js/scripts +%ghost %{_datadir}/%{name}/js/style +%ghost %{_datadir}/%{name}/js/files/draw.htm +%ghost %{_datadir}/%{name}/js/files/online.htm %doc net/http/README.txt net/http/civetweb/*.md %files net-httpsniff -f includelist-net-httpsniff @@ -3639,6 +3676,7 @@ fi %{_datadir}/%{name}/plugins/TFile/P100_TXNetFile.C %{_datadir}/%{name}/plugins/TFileStager/P010_TXNetFileStager.C %{_datadir}/%{name}/plugins/TSystem/P040_TXNetSystem.C +%{_datadir}/%{name}/plugins/ROOT@@Internal@@RRawFile/P020_RRawFileNetXNG.C %files proof -f includelist-proof-proof %{_bindir}/proofserv @@ -3699,6 +3737,9 @@ fi %{_libdir}/%{name}/libRooFit.* %{_libdir}/%{name}/libRooFit_rdict.pcm +%files roofit-common +%{_libdir}/%{name}/libRooFitCommon.* + %files roofit-core -f includelist-roofit-roofitcore %{_libdir}/%{name}/libRooFitCore.* %{_libdir}/%{name}/libRooFitCore_rdict.pcm @@ -3716,6 +3757,17 @@ fi %{_libdir}/%{name}/libRooBatchCompute_* %doc roofit/batchcompute/README.md +%files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers +%{_libdir}/%{name}/libRooFitRDataFrameHelpers.* +%{_libdir}/%{name}/libRooFitRDataFrameHelpers_rdict.pcm + +%files roofit-hs3 -f includelist-roofit-hs3 +%{_libdir}/%{name}/libRooFitHS3.* +%{_libdir}/%{name}/libRooFitHS3_rdict.pcm +%{_datadir}/%{name}/RooFitHS3_wsexportkeys.json +%{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json +%doc roofit/hs3/README.md + %files roostats -f includelist-roofit-roostats %{_libdir}/%{name}/libRooStats.* %{_libdir}/%{name}/libRooStats_rdict.pcm @@ -3761,6 +3813,17 @@ fi %{_libdir}/%{name}/libRMVA.* %{_libdir}/%{name}/libRMVA_rdict.pcm +%files tmva-sofie -f includelist-tmva-sofie +%{_libdir}/%{name}/libROOTTMVASofie.* +%{_libdir}/%{name}/libROOTTMVASofie_rdict.pcm +%doc tmva/sofie/README.md + +%if %{tmvasofieparser} +%files tmva-sofie-parser -f includelist-tmva-sofie_parsers +%{_libdir}/%{name}/libROOTTMVASofieParser.* +%{_libdir}/%{name}/libROOTTMVASofieParser_rdict.pcm +%endif + %files tmva-gui -f includelist-tmva-tmvagui %{_libdir}/%{name}/libTMVAGui.* %{_libdir}/%{name}/libTMVAGui_rdict.pcm @@ -3807,6 +3870,23 @@ fi %{_datadir}/%{name}/notebook %doc %{_pkgdocdir}/JupyROOT-on-EPEL +%if %{webgui} +%files gui-webdisplay -f includelist-gui-webdisplay +%{_libdir}/%{name}/libROOTWebDisplay.* +%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm +%{_datadir}/%{name}/ui5 + +%ifarch %{qt5_qtwebengine_arches} +%files gui-qt5webdisplay +%{_libdir}/%{name}/libROOTQt5WebDisplay.* +%endif + +%files gui-webgui6 -f includelist-gui-webgui6 +%{_libdir}/%{name}/libWebGui6.* +%{_libdir}/%{name}/libWebGui6_rdict.pcm +%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C +%endif + %if %{root7} %files graf-gpadv7 -f includelist-graf2d-gpadv7 %{_libdir}/%{name}/libROOTGpadv7.* @@ -3828,6 +3908,9 @@ fi %{_libdir}/%{name}/libROOTHistDrawProvider.* %{_libdir}/%{name}/libROOTLeafDraw6Provider.* %{_libdir}/%{name}/libROOTLeafDraw7Provider.* +%{_libdir}/%{name}/libROOTNTupleBrowseProvider.* +%{_libdir}/%{name}/libROOTNTupleDraw6Provider.* +%{_libdir}/%{name}/libROOTNTupleDraw7Provider.* %{_libdir}/%{name}/libROOTObjectDraw6Provider.* %{_libdir}/%{name}/libROOTObjectDraw7Provider.* @@ -3847,21 +3930,6 @@ fi %{_libdir}/%{name}/libROOTFitPanelv7.* %{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm -%ifarch %{qt5_qtwebengine_arches} -%files gui-qt5webdisplay -%{_libdir}/%{name}/libROOTQt5WebDisplay.* -%endif - -%files gui-webdisplay -f includelist-gui-webdisplay -%{_libdir}/%{name}/libROOTWebDisplay.* -%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm -%{_datadir}/%{name}/ui5 - -%files gui-webgui6 -f includelist-gui-webgui6 -%{_libdir}/%{name}/libWebGui6.* -%{_libdir}/%{name}/libWebGui6_rdict.pcm -%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C - %files histv7 -f includelist-hist-histv7 %{_libdir}/%{name}/libROOTHist.* %{_libdir}/%{name}/libROOTHist_rdict.pcm @@ -3876,13 +3944,23 @@ fi %endif %changelog +* Sat Mar 26 2022 Mattias Ellert - 6.26.00-1 +- Update to 6.24.04 +- New subpackages: root-roofit-common, root-roofit-dataframe-helpers, + root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser +- Removed subpackages: root-memstat and root-montecarlo-vmc +- Drop the doxygen generated root-doc package (doxygen runs out of memory) +- Dropped patches: 17 +- New patches: 22 +- Updated patches: 5 + * Thu Feb 10 2022 Orion Poplawski - 6.24.06-6 - Rebuild for glew 2.2 * Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 - Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) -# Disable package note flags +- Disable package note flags * Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index 31dae3c..31ddb3c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.24.06.tar.xz) = fe316283503dae60acb26d2ae3e838e6f9c01e1f89ff9973aa2b666a30c00f99f5e0df02b54e3744cd14a45a49ca2fc7d1f19fbac6b69071b9c9e0c98f2e0645 +SHA512 (root-6.26.00.tar.xz) = 0a98e973eeda98550200635d5d566fe4191aba953d3f993af750761a23e2b86caa5eb9674837bf1b070b9056b3a8ce7ee2d43295c56d22d120ca78edb97ea1c8 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 4a99ec915cc6fa5180a59dfd68402fd60d25f03a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 18 Apr 2022 04:04:24 +0200 Subject: [PATCH 008/112] Update to 6.26.02 Drop patch root-roofit-overflow.patch (previously backported) --- root-old-gtest-compat.patch | 27 +++++++++++++++++++++++++++ root.spec | 16 +++++++++------- sources | 2 +- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch index 078a5f9..e9f4140 100644 --- a/root-old-gtest-compat.patch +++ b/root-old-gtest-compat.patch @@ -414,3 +414,30 @@ index 7b6b7647aa..77f125ca60 100644 -- 2.35.1 +From 33e5da8c1f678382ab2fd65d000d388bb0dbf3ab Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 17 Apr 2022 22:17:56 +0200 +Subject: [PATCH] Backward compatibility with older googletest versions in EPEL + +--- + math/vecops/test/vecops_rvec.cxx | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx +index 7b513a858b..bea39636ce 100644 +--- a/math/vecops/test/vecops_rvec.cxx ++++ b/math/vecops/test/vecops_rvec.cxx +@@ -13,6 +13,10 @@ + #include + #include + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + using namespace ROOT; + using namespace ROOT::VecOps; + using namespace ROOT::Detail::VecOps; // for `IsSmall` and `IsAdopting` +-- +2.35.1 + diff --git a/root.spec b/root.spec index 4fbd388..54db8be 100644 --- a/root.spec +++ b/root.spec @@ -68,7 +68,7 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.26.00 +Version: 6.26.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -180,10 +180,9 @@ Patch30: %{name}-tmva-threads.patch # https://github.com/root-project/root/pull/10313 Patch31: %{name}-core-base-test.patch # Backports -Patch32: %{name}-roofit-overflow.patch -Patch33: %{name}-make-dyld-based-library-search-behavior-default.patch -Patch34: %{name}-fix-TMVA-tutorial-using-internally-python.patch -Patch35: %{name}-threadsh1-avoid-heap-use-after-free.patch +Patch32: %{name}-make-dyld-based-library-search-behavior-default.patch +Patch33: %{name}-fix-TMVA-tutorial-using-internally-python.patch +Patch34: %{name}-threadsh1-avoid-heap-use-after-free.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -2042,7 +2041,6 @@ This package contains an ntuple extension for ROOT 7. %patch32 -p1 %patch33 -p1 %patch34 -p1 -%patch35 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3944,8 +3942,12 @@ fi %endif %changelog +* Thu Apr 14 2022 Mattias Ellert - 6.26.02-1 +- Update to 6.26.02 +- Drop patch root-roofit-overflow.patch (previously backported) + * Sat Mar 26 2022 Mattias Ellert - 6.26.00-1 -- Update to 6.24.04 +- Update to 6.26.00 - New subpackages: root-roofit-common, root-roofit-dataframe-helpers, root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser - Removed subpackages: root-memstat and root-montecarlo-vmc diff --git a/sources b/sources index 31ddb3c..053a299 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.00.tar.xz) = 0a98e973eeda98550200635d5d566fe4191aba953d3f993af750761a23e2b86caa5eb9674837bf1b070b9056b3a8ce7ee2d43295c56d22d120ca78edb97ea1c8 +SHA512 (root-6.26.02.tar.xz) = 016b1176564ba31f9ac22c9b62cdd11ba9dda2e6d656c587d0b77e57c8a34d52343ba5da8ecf185c0a73ded80109a5cd28438611441ba5ee6ab14ba986ed3b94 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 51dd64e00251deee776c69216335a7d58672d71a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 29 Apr 2022 14:26:18 +0200 Subject: [PATCH 009/112] Rebuild for gcc 11.3 (Fedora 35) Use upstream's version of the dataframe-snapshot on 32 bit patch --- root-longlong.patch | 64 +++++++++++++++++++-------------------------- root.spec | 6 ++++- 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/root-longlong.patch b/root-longlong.patch index 856e015..3c43542 100644 --- a/root-longlong.patch +++ b/root-longlong.patch @@ -1,52 +1,42 @@ -From 7fe5ef049baf614626d985b05cb0b335f9764a3c Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 16:15:00 +0100 -Subject: [PATCH] Fix test when long is 32 bits +From 2aa02353663674a338c92fa4e72a0c0e529c410e Mon Sep 17 00:00:00 2001 +From: Enrico Guiraud +Date: Fri, 8 Apr 2022 17:52:18 +0200 +Subject: [PATCH] [DF] Fix long int + Snapshot test on 32 bit platforms -This test tests support for 64 bit values. But it uses a long type, -which fails on platforme where a long is 32 bits. - -This commit changes the test to use a long long type instead. +Co-authored-by: Mattias Ellert --- - tree/dataframe/test/dataframe_snapshot.cxx | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + tree/dataframe/test/dataframe_snapshot.cxx | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx -index 05354e83d5..a30440558e 100644 +index f41848e96a..ddbacaba0f 100644 --- a/tree/dataframe/test/dataframe_snapshot.cxx +++ b/tree/dataframe/test/dataframe_snapshot.cxx -@@ -470,11 +470,11 @@ void ReadWriteCarray(const char *outFileNameBase) - auto size = 0; - int v[maxArraySize]; - bool vb[maxArraySize]; -- long int vl[maxArraySize]; -+ long long int vl[maxArraySize]; - t.Branch("size", &size, "size/I"); - t.Branch("v", v, "v[size]/I"); +@@ -495,11 +495,14 @@ void ReadWriteCarray(const char *outFileNameBase) t.Branch("vb", vb, "vb[size]/O"); -- t.Branch("vl", vl, "vl[size]/G"); -+ t.Branch("vl", vl, "vl[size]/L"); + t.Branch("vl", vl, "vl[size]/G"); ++ // use 2**33 as a larger-than-int value on 64 bits, otherwise just something larger than short (2**30) ++ static constexpr long int longintTestValue = sizeof(long int) == 8 ? 8589934592 : 1073741824; ++ // Size 1 size = 1; -@@ -518,7 +518,7 @@ void ReadWriteCarray(const char *outFileNameBase) - TTreeReader r(treename, &f2); - TTreeReaderArray rv(r, "v"); - TTreeReaderArray rvb(r, "vb"); -- TTreeReaderArray rvl(r, "vl"); -+ TTreeReaderArray rvl(r, "vl"); + v[0] = 12; + vb[0] = true; +- vl[0] = 8589934592; // 2**33 ++ vl[0] = longintTestValue; + t.Fill(); - // Size 1 + // Size 0 (see ROOT-9860) +@@ -546,7 +549,7 @@ void ReadWriteCarray(const char *outFileNameBase) + EXPECT_EQ(rvb.GetSize(), 1u); + EXPECT_TRUE(rvb[0]); + EXPECT_EQ(rvl.GetSize(), 1u); +- EXPECT_EQ(rvl[0], 8589934592); ++ EXPECT_EQ(rvl[0], longintTestValue); + + // Size 0 EXPECT_TRUE(r.Next()); -@@ -571,7 +571,7 @@ void ReadWriteCarray(const char *outFileNameBase) - - const auto outfname2 = outFileNameBaseStr + "_out2.root"; - RDataFrame(treename, fname) -- .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); -+ .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); - outputChecker(outfname2.c_str()); - - gSystem->Unlink(fname.c_str()); -- 2.35.1 diff --git a/root.spec b/root.spec index 54db8be..5e7704d 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3942,6 +3942,10 @@ fi %endif %changelog +* Fri Apr 29 2022 Mattias Ellert - 6.26.02-2 +- Rebuild for gcc 11.3 (Fedora 35) +- Use upstream's version of the dataframe-snapshot on 32 bit patch + * Thu Apr 14 2022 Mattias Ellert - 6.26.02-1 - Update to 6.26.02 - Drop patch root-roofit-overflow.patch (previously backported) From 44203f1d1dd61c551b95fc241932681076e36c98 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 20 May 2022 14:43:55 +0200 Subject: [PATCH 010/112] Rebuild for gcc 12.1 (Fedora 36) Update the root-tmva-threads patch --- root-tmva-threads.patch | 33 +++++++++++++++++++++++++-------- root.spec | 6 +++++- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch index 459062d..7506abc 100644 --- a/root-tmva-threads.patch +++ b/root-tmva-threads.patch @@ -1,4 +1,4 @@ -From f525fe375840cda2bf5b51e018eab8ad74dcd736 Mon Sep 17 00:00:00 2001 +From 589ac491519446191b7d480a476ab831dc09b5f9 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 30 Mar 2022 15:51:07 +0200 Subject: [PATCH] Limit the number of threads in TMVA CNN/DNN test to save @@ -27,15 +27,15 @@ OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for t *** Break *** segmentation violation *** Break *** segmentation violation --- - tutorials/tmva/TMVA_CNN_Classification.C | 2 +- - tutorials/tmva/TMVA_RNN_Classification.C | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + tutorials/tmva/TMVA_CNN_Classification.C | 6 ++++-- + tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C -index 3e590c5958..4abfc6a4d1 100644 +index 3e590c5958..b748fcee6c 100644 --- a/tutorials/tmva/TMVA_CNN_Classification.C +++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -125,7 +125,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) +@@ -125,14 +125,16 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) bool writeOutputFile = true; @@ -44,11 +44,21 @@ index 3e590c5958..4abfc6a4d1 100644 TMVA::Tools::Instance(); + // do enable MT running + if (num_threads >= 0) { + ROOT::EnableImplicitMT(num_threads); +- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); ++ if (ROOT::GetThreadPoolSize() > 0) ++ gSystem->Setenv("OMP_NUM_THREADS", ++ TString::Format("%u", ROOT::GetThreadPoolSize())); + } + else + gSystem->Setenv("OMP_NUM_THREADS", "1"); diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C -index 5be80824f9..791b9aecf5 100644 +index 5be80824f9..f902025875 100644 --- a/tutorials/tmva/TMVA_RNN_Classification.C +++ b/tutorials/tmva/TMVA_RNN_Classification.C -@@ -190,7 +190,7 @@ void TMVA_RNN_Classification(int use_type = 1) +@@ -190,11 +190,13 @@ void TMVA_RNN_Classification(int use_type = 1) useKeras = false; #endif @@ -57,6 +67,13 @@ index 5be80824f9..791b9aecf5 100644 // do enable MT running if (num_threads >= 0) { ROOT::EnableImplicitMT(num_threads); +- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); ++ if (ROOT::GetThreadPoolSize() > 0) ++ gSystem->Setenv("OMP_NUM_THREADS", ++ TString::Format("%u", ROOT::GetThreadPoolSize())); + } + else + gSystem->Setenv("OMP_NUM_THREADS", "1"); -- 2.35.1 diff --git a/root.spec b/root.spec index 5e7704d..ce65428 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3942,6 +3942,10 @@ fi %endif %changelog +* Fri May 20 2022 Mattias Ellert - 6.26.02-3 +- Rebuild for gcc 12.1 (Fedora 36) +- Update the root-tmva-threads patch + * Fri Apr 29 2022 Mattias Ellert - 6.26.02-2 - Rebuild for gcc 11.3 (Fedora 35) - Use upstream's version of the dataframe-snapshot on 32 bit patch From a9b86f482f2392f4bfd413d08f24e2df52aeeb16 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 14 Jun 2022 16:02:47 +0200 Subject: [PATCH 011/112] Update to 6.26.04 Drop patch root-missing-include.patch (accepted upstream) --- root-missing-include.patch | 32 -------------------------------- root.spec | 12 ++++++------ sources | 2 +- 3 files changed, 7 insertions(+), 39 deletions(-) delete mode 100644 root-missing-include.patch diff --git a/root-missing-include.patch b/root-missing-include.patch deleted file mode 100644 index 8c6bc17..0000000 --- a/root-missing-include.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 235e446b0ac14170e49c15d5725fbe6dd315351f Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 15 Mar 2022 09:08:39 +0100 -Subject: [PATCH] Add #include for std::memcpy - -In file included from /builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/RModel.hxx:14, - from /builddir/build/BUILD/root-6.26.00/tmva/sofie/src/RModel.cxx:3: -/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx: In member function 'void TMVA::Experimental::SOFIE::InitializedTensor::CastPersistentToShared()': -/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx:75:12: error: 'memcpy' is not a member of 'std'; did you mean 'wmemcpy'? - 75 | std::memcpy(tData.get(), fPersistentData,fSize * sizeof(float)); - | ^~~~~~ - | wmemcpy -gmake[2]: *** [tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/build.make:79: tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/src/RModel.cxx.o] Error 1 ---- - tmva/sofie/inc/TMVA/SOFIE_common.hxx | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx -index a663855004..7876727eef 100644 ---- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx -+++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx -@@ -6,6 +6,7 @@ - - #include - #include -+#include - #include - #include - #include --- -2.35.1 - diff --git a/root.spec b/root.spec index ce65428..2130700 100644 --- a/root.spec +++ b/root.spec @@ -68,9 +68,9 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.26.02 +Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -130,9 +130,6 @@ Patch12: %{name}-fix-compilation-with-gcc-12.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch -# Add #include for std::memcpy -# https://github.com/root-project/root/pull/10116 -Patch14: %{name}-missing-include.patch # Fixes for tmva-sofie test compilation # https://github.com/root-project/root/pull/10117 Patch15: %{name}-blas-linking-and-ignore-prefix.patch @@ -2020,7 +2017,6 @@ This package contains an ntuple extension for ROOT 7. %patch11 -p1 %patch12 -p1 %patch13 -p1 -%patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 @@ -3942,6 +3938,10 @@ fi %endif %changelog +* Tue Jun 14 2022 Mattias Ellert - 6.26.04-1 +- Update to 6.26.04 +- Drop patch root-missing-include.patch (accepted upstream) + * Fri May 20 2022 Mattias Ellert - 6.26.02-3 - Rebuild for gcc 12.1 (Fedora 36) - Update the root-tmva-threads patch diff --git a/sources b/sources index 053a299..0ac5ec5 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.02.tar.xz) = 016b1176564ba31f9ac22c9b62cdd11ba9dda2e6d656c587d0b77e57c8a34d52343ba5da8ecf185c0a73ded80109a5cd28438611441ba5ee6ab14ba986ed3b94 +SHA512 (root-6.26.04.tar.xz) = 0ca0efa082cedce8017293d06ec92c76948f70b6b565efbc6cf4cc78da54017b5022d249dd69abd3588fb874942437318f9a136ed4b144adc820ff41fc1154ee SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 9505e4b28aa7d2da3dbeda88ccb75d33ae77503a Mon Sep 17 00:00:00 2001 From: Python Maint Date: Wed, 15 Jun 2022 14:00:40 +0200 Subject: [PATCH 012/112] Rebuilt for Python 3.11 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 2130700..ff143a3 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3938,6 +3938,9 @@ fi %endif %changelog +* Wed Jun 15 2022 Python Maint - 6.26.04-2 +- Rebuilt for Python 3.11 + * Tue Jun 14 2022 Mattias Ellert - 6.26.04-1 - Update to 6.26.04 - Drop patch root-missing-include.patch (accepted upstream) From dacf8d779ae7ee3db6d1ea09327963f857946c94 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 3 Jul 2022 10:21:52 +0200 Subject: [PATCH 013/112] Backport python 3.11 fixes from upstream Backport additional python 3.11 fixes from CPyCppyy upstream Exclude some failing tests on Fedora 37+ (segfaults during Python garbage collection with Python 3.11) Adjust some test timeouts --- ...ast-error-when-calling-PyTuple_SET_I.patch | 29 +++ ...ust-not-be-included-directly-in-3.11.patch | 34 +++ ....11-support-backported-from-CPyCppyy.patch | 220 ++++++++++++++++++ root-test-timeout.patch | 48 ++++ root.spec | 44 +++- 5 files changed, 374 insertions(+), 1 deletion(-) create mode 100644 root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch create mode 100644 root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch create mode 100644 root-Python-3.11-support-backported-from-CPyCppyy.patch create mode 100644 root-test-timeout.patch diff --git a/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch b/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch new file mode 100644 index 0000000..ca908b8 --- /dev/null +++ b/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch @@ -0,0 +1,29 @@ +From a12f3b736a9c69e0d69e7f483e50e7cdf59d9fd2 Mon Sep 17 00:00:00 2001 +From: Enric Tejedor Saavedra +Date: Fri, 10 Jun 2022 16:42:49 +0200 +Subject: [PATCH] [PyROOT] Prevent cast error when calling PyTuple_SET_ITEM in + 3.11 + +PyTuple_SET_ITEM ends up calling _PyObject_CAST(nullptr) which +causes "error: invalid cast from type 'std::nullptr_t' to type +'const PyObject*' {aka 'const _object*'} +--- + bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx +index 685ad3dc60..2189348594 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx +@@ -580,7 +580,7 @@ PyObject* CPyCppyy::CPPMethod::ProcessKeywords(PyObject* self, PyObject* args, P + // set all values to zero to be able to check them later (this also guarantees normal + // cleanup by the tuple deallocation) + for (Py_ssize_t i = 0; i < nArgs+nKeys; ++i) +- PyTuple_SET_ITEM(newArgs, i, nullptr); ++ PyTuple_SET_ITEM(newArgs, i, static_cast(nullptr)); + + // next, insert the keyword values + PyObject *key, *value; +-- +2.36.1 + diff --git a/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch b/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch new file mode 100644 index 0000000..a845fa4 --- /dev/null +++ b/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch @@ -0,0 +1,34 @@ +From 484deb056dacf768aba4954073b41105c431bffc Mon Sep 17 00:00:00 2001 +From: Enric Tejedor Saavedra +Date: Thu, 9 Jun 2022 12:24:07 +0200 +Subject: [PATCH] [PyROOT] code.h must not be included directly in 3.11 + +It has been moved to Include/cpython, and it is included by Python.h. + +See: +https://docs.python.org/3.11/whatsnew/3.11.html +--- + bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +index 59997e390d..28bbd635c2 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +@@ -1,10 +1,10 @@ + // Bindings + #include "CPyCppyy.h" + #include "structmember.h" // from Python +-#if PY_VERSION_HEX >= 0x02050000 +-#include "code.h" // from Python +-#else ++#if PY_VERSION_HEX < 0x02050000 + #include "compile.h" // from Python ++#elif PY_VERSION_HEX < 0x030b0000 ++#include "code.h" // from Python + #endif + #ifndef CO_NOFREE + // python2.2 does not have CO_NOFREE defined +-- +2.36.1 + diff --git a/root-Python-3.11-support-backported-from-CPyCppyy.patch b/root-Python-3.11-support-backported-from-CPyCppyy.patch new file mode 100644 index 0000000..734e22e --- /dev/null +++ b/root-Python-3.11-support-backported-from-CPyCppyy.patch @@ -0,0 +1,220 @@ +From 07693d05ad785d495a9c1d5af27399481b43c3f5 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 1 Jul 2022 06:50:31 +0200 +Subject: [PATCH] Python 3.11 support - backported from CPyCppyy + +--- + bindings/pyroot/cppyy/CPyCppyy/src/API.cxx | 11 ++++++++++- + .../pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx | 1 - + .../pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx | 8 +++++--- + bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h | 5 ++++- + .../cppyy/CPyCppyy/src/CPyCppyyModule.cxx | 19 +++++++++++++++++++ + .../cppyy/CPyCppyy/src/MemoryRegulator.cxx | 2 +- + .../pyroot/cppyy/CPyCppyy/src/Utility.cxx | 2 ++ + bindings/pyroot/cppyy/CPyCppyy/src/Utility.h | 2 ++ + 8 files changed, 43 insertions(+), 7 deletions(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx +index 0cc4c8247b..4c17f54bb0 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx +@@ -49,7 +49,14 @@ static bool Initialize() + #if PY_VERSION_HEX < 0x03020000 + PyEval_InitThreads(); + #endif ++#if PY_VERSION_HEX < 0x03080000 + Py_Initialize(); ++#else ++ PyConfig config; ++ PyConfig_InitPythonConfig(&config); ++ PyConfig_SetString(&config, &config.program_name, L"cppyy"); ++ Py_InitializeFromConfig(&config); ++#endif + #if PY_VERSION_HEX >= 0x03020000 + #if PY_VERSION_HEX < 0x03090000 + PyEval_InitThreads(); +@@ -66,10 +73,12 @@ static bool Initialize() + // set the command line arguments on python's sys.argv + #if PY_VERSION_HEX < 0x03000000 + char* argv[] = {const_cast("cppyy")}; +-#else ++#elif PY_VERSION_HEX < 0x03080000 + wchar_t* argv[] = {const_cast(L"cppyy")}; + #endif ++#if PY_VERSION_HEX < 0x03080000 + PySys_SetArgv(sizeof(argv)/sizeof(argv[0]), argv); ++#endif + + // force loading of the cppyy module + PyRun_SimpleString(const_cast("import cppyy")); +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx +index 73fb8099b5..f2eea396af 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx +@@ -764,7 +764,6 @@ PyTypeObject CPPInstance_Type = { + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE | +- Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_CHECKTYPES, // tp_flags + (char*)"cppyy object proxy (internal)", // tp_doc + 0, // tp_traverse +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +index 28bbd635c2..7eb2de8b01 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +@@ -1,11 +1,13 @@ + // Bindings + #include "CPyCppyy.h" + #include "structmember.h" // from Python +-#if PY_VERSION_HEX < 0x02050000 +-#include "compile.h" // from Python +-#elif PY_VERSION_HEX < 0x030b0000 ++#if PY_VERSION_HEX >= 0x02050000 ++#if PY_VERSION_HEX < 0x030b0000 + #include "code.h" // from Python + #endif ++#else ++#include "compile.h" // from Python ++#endif + #ifndef CO_NOFREE + // python2.2 does not have CO_NOFREE defined + #define CO_NOFREE 0x0040 +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h +index 11221cd7ef..35af3c8a56 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h +@@ -68,7 +68,10 @@ typedef dim_t* dims_t; + #if PY_VERSION_HEX < 0x03030000 + typedef PyDictEntry* (*dict_lookup_func)(PyDictObject*, PyObject*, long); + #else +-#if PY_VERSION_HEX >= 0x03060000 ++#if PY_VERSION_HEX >= 0x030b0000 ++ typedef Py_ssize_t (*dict_lookup_func)( ++ PyDictObject*, PyObject*, Py_hash_t, PyObject**); ++#elif PY_VERSION_HEX >= 0x03060000 + typedef Py_ssize_t (*dict_lookup_func)( + PyDictObject*, PyObject*, Py_hash_t, PyObject***, Py_ssize_t*); + #else +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx +index 411a57a862..7a32ab365f 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx +@@ -26,6 +26,11 @@ + #include + + ++// Note: as of py3.11, dictionary objects no longer carry a function pointer for ++// the lookup, so it can no longer be shimmed and "from cppyy.interactive import *" ++// thus no longer works. ++#if PY_VERSION_HEX < 0x030b0000 ++ + //- from Python's dictobject.c ------------------------------------------------- + #if PY_VERSION_HEX >= 0x03030000 + typedef struct PyDictKeyEntry { +@@ -65,6 +70,8 @@ + + #endif + ++#endif // PY_VERSION_HEX < 0x030b0000 ++ + //- data ----------------------------------------------------------------------- + static PyObject* nullptr_repr(PyObject*) + { +@@ -177,7 +184,9 @@ namespace { + + using namespace CPyCppyy; + ++ + //---------------------------------------------------------------------------- ++#if PY_VERSION_HEX < 0x030b0000 + namespace { + + class GblGetter { +@@ -330,9 +339,12 @@ PyDictEntry* CPyCppyyLookDictString(PyDictObject* mp, PyObject* key, long hash) + return ep; + } + ++#endif // PY_VERSION_HEX < 0x030b0000 ++ + //---------------------------------------------------------------------------- + static PyObject* SetCppLazyLookup(PyObject*, PyObject* args) + { ++#if PY_VERSION_HEX < 0x030b0000 + // Modify the given dictionary to install the lookup function that also + // tries the global C++ namespace before failing. Called on a module's dictionary, + // this allows for lazy lookups. This works fine for p3.2 and earlier, but should +@@ -343,6 +355,11 @@ static PyObject* SetCppLazyLookup(PyObject*, PyObject* args) + return nullptr; + + CPYCPPYY_GET_DICT_LOOKUP(dict) = CPyCppyyLookDictString; ++#else ++// As of py3.11, there is no longer a lookup function pointer in the dict object ++// to replace. Since this feature is not widely advertised, it's simply droped ++ PyErr_Warn(PyExc_RuntimeWarning, (char*)"lazy lookup is no longer supported"); ++#endif + + Py_RETURN_NONE; + } +@@ -813,6 +830,7 @@ LIBCPPYY_INIT_FUNCTION(extern "C" void initlibcppyy, PY_MAJOR_VERSION, _, PY_MIN + PyEval_InitThreads(); + #endif + ++#if PY_VERSION_HEX < 0x030b0000 + // prepare for lazyness (the insert is needed to capture the most generic lookup + // function, just in case ...) + PyObject* dict = PyDict_New(); +@@ -825,6 +843,7 @@ LIBCPPYY_INIT_FUNCTION(extern "C" void initlibcppyy, PY_MAJOR_VERSION, _, PY_MIN + gDictLookupOrg = (dict_lookup_func)((PyDictObject*)dict)->ma_lookup; + #endif + Py_DECREF(dict); ++#endif // PY_VERSION_HEX < 0x030b0000 + + // setup this module + #if PY_VERSION_HEX >= 0x03000000 +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx +index f9e92f9c8c..5da48364ac 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx +@@ -45,7 +45,7 @@ struct InitCPyCppyy_NoneType_t { + ((PyVarObject&)CPyCppyy_NoneType).ob_size = 0; + + CPyCppyy_NoneType.tp_name = const_cast("CPyCppyy_NoneType"); +- CPyCppyy_NoneType.tp_flags = Py_TPFLAGS_HAVE_RICHCOMPARE | Py_TPFLAGS_HAVE_GC; ++ CPyCppyy_NoneType.tp_flags = Py_TPFLAGS_HAVE_RICHCOMPARE; + + CPyCppyy_NoneType.tp_traverse = (traverseproc)0; + CPyCppyy_NoneType.tp_clear = (inquiry)0; +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx +index 14ea1b83e8..1cf8f89bd2 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx +@@ -24,8 +24,10 @@ + + + //- data _____________________________________________________________________ ++#if PY_VERSION_HEX < 0x030b0000 + dict_lookup_func CPyCppyy::gDictLookupOrg = 0; + bool CPyCppyy::gDictLookupActive = false; ++#endif + + typedef std::map TC2POperatorMapping_t; + static TC2POperatorMapping_t gC2POperatorMapping; +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h +index 6bc9314b99..2db76b31b0 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h +@@ -10,8 +10,10 @@ namespace CPyCppyy { + + class PyCallable; + ++#if PY_VERSION_HEX < 0x030b0000 + extern dict_lookup_func gDictLookupOrg; + extern bool gDictLookupActive; ++#endif + + // additional converter functions + unsigned long PyLongOrInt_AsULong(PyObject* pyobject); +-- +2.36.1 + diff --git a/root-test-timeout.patch b/root-test-timeout.patch new file mode 100644 index 0000000..acbedcc --- /dev/null +++ b/root-test-timeout.patch @@ -0,0 +1,48 @@ +From bfa7b7e59c3bcee4d6a5501c800b49334af326e5 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 3 Jul 2022 08:18:57 +0200 +Subject: [PATCH] Increase test timeout + +--- + tmva/tmva/test/DNN/CMakeLists.txt | 2 +- + tutorials/CMakeLists.txt | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tmva/tmva/test/DNN/CMakeLists.txt b/tmva/tmva/test/DNN/CMakeLists.txt +index a9233682f6..653540e9e3 100644 +--- a/tmva/tmva/test/DNN/CMakeLists.txt ++++ b/tmva/tmva/test/DNN/CMakeLists.txt +@@ -144,7 +144,7 @@ ROOT_ADD_TEST(TMVA-DNN-MethodDL-SGD-Optimization-Cpu COMMAND testMethodDLSGDOpti + + # DNN - MethodDL Adam Optimization CPU + ROOT_EXECUTABLE(testMethodDLAdamOptimizationCpu TestMethodDLAdamOptimizationCpu.cxx LIBRARIES ${Libraries}) +-ROOT_ADD_TEST(TMVA-DNN-MethodDL-Adam-Optimization-Cpu COMMAND testMethodDLAdamOptimizationCpu) ++ROOT_ADD_TEST(TMVA-DNN-MethodDL-Adam-Optimization-Cpu COMMAND testMethodDLAdamOptimizationCpu TIMEOUT 1800) + + # DNN - MethodDL Adagrad Optimization CPU + ROOT_EXECUTABLE(testMethodDLAdagradOptimizationCpu TestMethodDLAdagradOptimizationCpu.cxx LIBRARIES ${Libraries}) +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index 520d682d2d..a846e7552f 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -532,7 +532,7 @@ foreach(t ${tutorials}) + + # These tests on ARM64 need much more than 20 minutes - increase the timeout + if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) +- set(thisTestTimeout 2400) # 40m ++ set(thisTestTimeout 3000) # 50m + else() + set(thisTestTimeout 1200) # 20m + endif() +@@ -566,7 +566,7 @@ foreach(t ${mpi_tutorials}) + + # These tests on ARM64 need much more than 20 minutes - increase the timeout + if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) +- set(thisTestTimeout 2400) # 40m ++ set(thisTestTimeout 3000) # 50m + else() + set(thisTestTimeout 1200) # 20m + endif() +-- +2.36.1 + diff --git a/root.spec b/root.spec index ff143a3..b92f433 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -130,6 +130,9 @@ Patch12: %{name}-fix-compilation-with-gcc-12.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +# Adjust some test timeouts +# https://github.com/root-project/root/pull/10886 +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 @@ -180,6 +183,10 @@ Patch31: %{name}-core-base-test.patch Patch32: %{name}-make-dyld-based-library-search-behavior-default.patch Patch33: %{name}-fix-TMVA-tutorial-using-internally-python.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 +# Backport additional python 3.11 fixes from CPyCppyy upstream +Patch37: %{name}-Python-3.11-support-backported-from-CPyCppyy.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -2017,6 +2024,7 @@ This package contains an ntuple extension for ROOT 7. %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 @@ -2037,6 +2045,9 @@ This package contains an ntuple extension for ROOT 7. %patch32 -p1 %patch33 -p1 %patch34 -p1 +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2911,6 +2922,30 @@ test-stressgraphics" %endif %endif +%if %{?fedora}%{!?fedora:0} >= 37 +# Fails during garbage collection with Python 3.11 +# See: https://github.com/root-project/root/issues/10799 +excluded="${excluded}|\ +pyunittests-dataframe-histograms|\ +pyunittests-distrdf-unit-backend-test-dist|\ +pyunittests-distrdf-unit-test-buildranges|\ +pyunittests-distrdf-unit-test-friendinfo|\ +pyunittests-distrdf-unit-test-headnode|\ +pyunittests-pyroot-pyz-tfile-attrsyntax-get-writeobject-open|\ +pyunittests-pyroot-pyz-ttree-branch|\ +pyunittests-pyroot-pyz-ttree-branch-attr|\ +pyunittests-pyroot-pyz-ttree-iterable|\ +pyunittests-pyroot-pyz-ttree-setbranchaddress|\ +tutorial-dataframe-df014_CSVDataSource-py|\ +tutorial-dataframe-df017_vecOpsHEP-py|\ +tutorial-pyroot-h1ReadAndDraw-py|\ +tutorial-pyroot-hsimple-py|\ +tutorial-pyroot-ntuple1-py|\ +tutorial-pyroot-staff-py|\ +tutorial-pyroot-tornado-py|\ +tutorial-roofit-rf503_wspaceread-py" +%endif + # Filter out parts of tests that require remote network access GTEST_FILTER=-RCsvDS.Remote:RRawFile.Remote:RSqliteDS.Davix \ make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" @@ -3938,6 +3973,13 @@ fi %endif %changelog +* Sun Jul 03 2022 Mattias Ellert - 6.26.04-3 +- Backport python 3.11 fixes from upstream +- Backport additional python 3.11 fixes from CPyCppyy upstream +- Exclude some failing tests on Fedora 37+ + (segfaults during Python garbage collection with Python 3.11) +- Adjust some test timeouts + * Wed Jun 15 2022 Python Maint - 6.26.04-2 - Rebuilt for Python 3.11 From b2e4c897d28dee2ecfb4e35c14b58889dd699206 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 18 Jul 2022 23:37:13 +0200 Subject: [PATCH 014/112] Don't use yuicompressor on Fedora (Java no longer available on ix86) --- root.spec | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index b92f433..7f2fc8f 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -294,7 +294,12 @@ BuildRequires: protobuf-devel >= 3.0 %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif +%if %{?fedora}%{!?fedora:0} +BuildRequires: python3-rcssmin +BuildRequires: uglify-js +%else BuildRequires: yuicompressor +%endif BuildRequires: perl-generators BuildRequires: gtest-devel BuildRequires: gmock-devel @@ -2106,10 +2111,18 @@ unset QTINC # Minify script and style files for s in etc/notebook/JsMVA/js/*.js ; do +%if %{?fedora}%{!?fedora:0} + uglifyjs ${s} -c -m -o ${s%.js}.min.js +%else yuicompressor ${s} -o ${s%.js}.min.js +%endif done for s in etc/notebook/JsMVA/css/*.css ; do +%if %{?fedora}%{!?fedora:0} + python3 -m rcssmin < ${s} > ${s%.css}.min.css +%else yuicompressor ${s} -o ${s%.css}.min.css +%endif done # Avoid overlinking (this used to be the default with the old configure script) @@ -3973,6 +3986,9 @@ fi %endif %changelog +* Mon Jul 18 2022 Mattias Ellert - 6.26.04-4 +- Don't use yuicompressor on Fedora (Java no longer available on ix86) + * Sun Jul 03 2022 Mattias Ellert - 6.26.04-3 - Backport python 3.11 fixes from upstream - Backport additional python 3.11 fixes from CPyCppyy upstream From ddfa4e1c9bb29155f99efc17c568eebde31eb026 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 00:57:28 +0000 Subject: [PATCH 015/112] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 7f2fc8f..e548c21 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3986,6 +3986,9 @@ fi %endif %changelog +* Sat Jul 23 2022 Fedora Release Engineering - 6.26.04-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Mon Jul 18 2022 Mattias Ellert - 6.26.04-4 - Don't use yuicompressor on Fedora (Java no longer available on ix86) From 4a05ecac340abced89d52c6f4b54cc37e41f05ae Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 4 Aug 2022 05:35:58 +0200 Subject: [PATCH 016/112] Update to 6.26.06 --- root-get-rid-of-lsb_release.patch | 245 ++++++++++++++++++++++++++++++ root-old-gtest-compat.patch | 34 +++++ root.spec | 44 ++++-- sources | 2 +- 4 files changed, 311 insertions(+), 14 deletions(-) create mode 100644 root-get-rid-of-lsb_release.patch diff --git a/root-get-rid-of-lsb_release.patch b/root-get-rid-of-lsb_release.patch new file mode 100644 index 0000000..8dca2cc --- /dev/null +++ b/root-get-rid-of-lsb_release.patch @@ -0,0 +1,245 @@ +From 2dde3d060aa21ff9d4a0612b991bd300b7704bdc Mon Sep 17 00:00:00 2001 +From: Axel Naumann +Date: Fri, 22 Jul 2022 15:54:03 +0200 +Subject: [PATCH] [cmake,test] Get rid of `lsb_release`: + +It is available less and less often, and we do not actually +benefit a lot from printing the distro (stress) or we can get +the same info from /etc/os-release (cmake). +--- + cmake/modules/RootCPack.cmake | 11 +++++++++-- + math/mathcore/test/stressGoFTest.cxx | 4 ---- + test/bench.cxx | 4 ---- + test/stress.cxx | 4 ---- + test/stressFit.cxx | 4 ---- + test/stressGUI.cxx | 4 ---- + test/stressGeometry.cxx | 4 ---- + test/stressGraphics.cxx | 4 ---- + test/stressHepix.cxx | 4 ---- + test/stressHistFactory.cxx | 4 ---- + test/stressLinear.cxx | 4 ---- + test/stressRooFit.cxx | 4 ---- + test/stressRooStats.cxx | 4 ---- + test/stressTMVA.cxx | 4 ---- + 14 files changed, 9 insertions(+), 54 deletions(-) + +diff --git a/cmake/modules/RootCPack.cmake b/cmake/modules/RootCPack.cmake +index a960eb81fd..807eac6ef2 100644 +--- a/cmake/modules/RootCPack.cmake ++++ b/cmake/modules/RootCPack.cmake +@@ -107,8 +107,15 @@ elseif(WIN32) + set(OS_NAME_VERSION win32) + endif() + else() +- execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE osid OUTPUT_STRIP_TRAILING_WHITESPACE) +- execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE osvers OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(EXISTS "/etc/os-release") ++ file(STRINGS /etc/os-release osid REGEX "^NAME=") ++ string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" osid "${osid}") ++ file(STRINGS /etc/os-release osvers REGEX "^VERSION_ID=") ++ string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" osvers "${osvers}") ++ else() ++ execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE osid OUTPUT_STRIP_TRAILING_WHITESPACE) ++ execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE osvers OUTPUT_STRIP_TRAILING_WHITESPACE) ++ endif() + if(osid MATCHES Ubuntu) + string(REGEX REPLACE "([0-9]+)[.].*" "\\1" osvers "${osvers}") + set(OS_NAME_VERSION Linux-ubuntu${osvers}-${arch}) +diff --git a/math/mathcore/test/stressGoFTest.cxx b/math/mathcore/test/stressGoFTest.cxx +index a78ca99c90..5aa1b4ef70 100644 +--- a/math/mathcore/test/stressGoFTest.cxx ++++ b/math/mathcore/test/stressGoFTest.cxx +@@ -56,10 +56,6 @@ struct GoFTStress { + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/bench.cxx b/test/bench.cxx +index 82bc537e05..e89024e9d9 100644 +--- a/test/bench.cxx ++++ b/test/bench.cxx +@@ -295,10 +295,6 @@ int main(int argc, char **argv) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stress.cxx b/test/stress.cxx +index d3087fdd56..29dba1625d 100644 +--- a/test/stress.cxx ++++ b/test/stress.cxx +@@ -200,10 +200,6 @@ void stress(Int_t nevent, Int_t style = 1, + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressFit.cxx b/test/stressFit.cxx +index 667142eff9..80bbd0200f 100644 +--- a/test/stressFit.cxx ++++ b/test/stressFit.cxx +@@ -646,10 +646,6 @@ Int_t stressFit(const char *type, const char *algo, Int_t N) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressGUI.cxx b/test/stressGUI.cxx +index 1a92df5341..9daae5f5fe 100644 +--- a/test/stressGUI.cxx ++++ b/test/stressGUI.cxx +@@ -307,10 +307,6 @@ void stressGUI() + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx +index 5e81f5f2ca..2dc366cbf8 100644 +--- a/test/stressGeometry.cxx ++++ b/test/stressGeometry.cxx +@@ -295,10 +295,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressGraphics.cxx b/test/stressGraphics.cxx +index 5fe958774d..8b6aa9af9a 100644 +--- a/test/stressGraphics.cxx ++++ b/test/stressGraphics.cxx +@@ -419,10 +419,6 @@ void stressGraphics(Int_t verbose = 0) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressHepix.cxx b/test/stressHepix.cxx +index d8d2a65a64..01dfc67a54 100644 +--- a/test/stressHepix.cxx ++++ b/test/stressHepix.cxx +@@ -143,10 +143,6 @@ int main(int argc, char **argv) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressHistFactory.cxx b/test/stressHistFactory.cxx +index b84fa70f86..ec6deac031 100644 +--- a/test/stressHistFactory.cxx ++++ b/test/stressHistFactory.cxx +@@ -139,10 +139,6 @@ Int_t stressHistFactory(const char* refFile, Bool_t writeRef, Int_t verbose, Boo + if (UNIX) { + TString sp = gSystem->GetFromPipe("uname -a"); + cout << "* SYS: " << sp << endl; +- if (strstr(gSystem->GetBuildNode(), "Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- cout << "* SYS: " << sp << endl; +- } + if (strstr(gSystem->GetBuildNode(), "Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressLinear.cxx b/test/stressLinear.cxx +index ce2e1af23d..e34ddf85a2 100644 +--- a/test/stressLinear.cxx ++++ b/test/stressLinear.cxx +@@ -296,10 +296,6 @@ void stressLinear(Int_t maxSizeReq,Int_t verbose) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressRooFit.cxx b/test/stressRooFit.cxx +index 18e214ec0c..4f7c5a3d83 100644 +--- a/test/stressRooFit.cxx ++++ b/test/stressRooFit.cxx +@@ -197,10 +197,6 @@ Int_t stressRooFit(const char* refFile, Bool_t writeRef, Int_t doVerbose, Int_t + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressRooStats.cxx b/test/stressRooStats.cxx +index 35598b5919..adb3dc4cd8 100644 +--- a/test/stressRooStats.cxx ++++ b/test/stressRooStats.cxx +@@ -232,10 +232,6 @@ Int_t stressRooStats(const char* refFile, Bool_t writeRef, Int_t verbose, Bool_t + if (UNIX) { + TString sp = gSystem->GetFromPipe("uname -a"); + cout << "* SYS: " << sp << endl; +- if (strstr(gSystem->GetBuildNode(), "Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- cout << "* SYS: " << sp << endl; +- } + if (strstr(gSystem->GetBuildNode(), "Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressTMVA.cxx b/test/stressTMVA.cxx +index f7638a73f6..22e3feaf65 100644 +--- a/test/stressTMVA.cxx ++++ b/test/stressTMVA.cxx +@@ -3193,10 +3193,6 @@ int main(int argc, char **argv) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +-- +2.37.1 + diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch index e9f4140..7bce796 100644 --- a/root-old-gtest-compat.patch +++ b/root-old-gtest-compat.patch @@ -441,3 +441,37 @@ index 7b513a858b..bea39636ce 100644 -- 2.35.1 +From cae450e0210fe584ef30d155a4217cfe2f5aa358 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 30 Jul 2022 17:05:31 +0200 +Subject: [PATCH] Backward compatibility with older googletest versions in EPEL + +--- + tree/dataframe/test/dataframe_datasetspec.cxx | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/tree/dataframe/test/dataframe_datasetspec.cxx b/tree/dataframe/test/dataframe_datasetspec.cxx +index b422dcf28b..14329102af 100644 +--- a/tree/dataframe/test/dataframe_datasetspec.cxx ++++ b/tree/dataframe/test/dataframe_datasetspec.cxx +@@ -1,4 +1,9 @@ + #include ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + #include + #include +@@ -36,6 +41,7 @@ protected: + + ~RDatasetSpecTest() {} + ++public: + static void SetUpTestCase() + { + auto dfWriter0 = RDataFrame(5).Define("z", [](ULong64_t e) { return e + 100; }, {"rdfentry_"}); +-- +2.37.1 + diff --git a/root.spec b/root.spec index e548c21..89a6c6e 100644 --- a/root.spec +++ b/root.spec @@ -68,9 +68,9 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.26.04 +Version: 6.26.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -187,6 +187,8 @@ 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 # Backport additional python 3.11 fixes from CPyCppyy upstream Patch37: %{name}-Python-3.11-support-backported-from-CPyCppyy.patch +# Backport +Patch38: %{name}-get-rid-of-lsb_release.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -2053,6 +2055,7 @@ This package contains an ntuple extension for ROOT 7. %patch35 -p1 %patch36 -p1 %patch37 -p1 +%patch38 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2096,6 +2099,17 @@ sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* rm etc/notebook/JsMVA/js/*.min.js 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!' \ + -i cmake/modules/SearchInstalledSoftware.cmake +%endif + +%if %{?rhel}%{!?rhel:0} == 7 +# On EPEL 7 disable test that fails to compile +sed 's!.*dataframe_datasetspec!### &!' -i tree/dataframe/test/CMakeLists.txt +%endif + %build %if %{?rhel}%{!?rhel:0} == 7 . /opt/rh/devtoolset-8/enable @@ -2630,14 +2644,6 @@ pushd tmva/tmva/test/envelope ln -s ../../../../../files files popd -# Some of the tests call lsb_release -d -s -# Provide a replacement script instead of build requiring redhat-lsb-core -cat > bin/lsb_release << EOF -#! /bin/sh -cat /etc/redhat-release -EOF -chmod +x bin/lsb_release - # Exclude some tests that can not be run # # - test-stressIOPlugins-* @@ -2764,13 +2770,20 @@ 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" +%endif + %ifarch %{ix86} %{arm} %if %{?fedora}%{!?fedora:0} <= 35 # Tests failing on 32 bit architectures (dataframe) -# +# - gtest-roofit-RDataFrameHelpers-test-testActionHelpers # - gtest-tree-dataframe-test-dataframe-* # - gtest-tree-dataframe-test-datasource-* excluded="${excluded}|\ +gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ gtest-tree-dataframe-test-dataframe|\ gtest-tree-dataframe-test-datasource" %endif @@ -2843,7 +2856,6 @@ tutorial-dataframe-df032_MakeNumpyDataFrame-py" # - tutorial-pyroot-formula1-py excluded="${excluded}|\ gtest-tmva-tmva-test-branchlessForest|\ -tutorial-gl-gltf3|\ tutorial-math-kdTreeBinning|\ tutorial-unfold-testUnfold7c|\ tutorial-hist-fillrandom-py|\ @@ -2951,12 +2963,15 @@ pyunittests-pyroot-pyz-ttree-iterable|\ pyunittests-pyroot-pyz-ttree-setbranchaddress|\ tutorial-dataframe-df014_CSVDataSource-py|\ tutorial-dataframe-df017_vecOpsHEP-py|\ +tutorial-pyroot-fit1-py|\ tutorial-pyroot-h1ReadAndDraw-py|\ tutorial-pyroot-hsimple-py|\ +tutorial-pyroot-hsum-py|\ tutorial-pyroot-ntuple1-py|\ tutorial-pyroot-staff-py|\ tutorial-pyroot-tornado-py|\ -tutorial-roofit-rf503_wspaceread-py" +tutorial-roofit-rf503_wspaceread-py|\ +tutorial-roofit-rf512_wsfactory_oper-py" %endif # Filter out parts of tests that require remote network access @@ -3986,6 +4001,9 @@ fi %endif %changelog +* Sat Jul 30 2022 Mattias Ellert - 6.26.06-1 +- Update to 6.26.06 + * Sat Jul 23 2022 Fedora Release Engineering - 6.26.04-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/sources b/sources index 0ac5ec5..bd0e6ae 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.04.tar.xz) = 0ca0efa082cedce8017293d06ec92c76948f70b6b565efbc6cf4cc78da54017b5022d249dd69abd3588fb874942437318f9a136ed4b144adc820ff41fc1154ee +SHA512 (root-6.26.06.tar.xz) = 6002de6c8b1f43647356d008ca4ed369107ed67ba129271f01180544ad38120f0a26180cd297065fab3669e55671b7ceb53a5ead0c4f61b2ed31b68753bc8adb SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From ee45de2db7a5920c94903a76db4b879cba983b12 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 17 Aug 2022 23:19:25 +0200 Subject: [PATCH 017/112] Compatibility with nlohmann json 3.11+ Enable gfal support in EPEL 9 (gfal2 now available) --- root-json-3.11.patch | 181 ++++++++++++++++++ ...ct-against-empty-COMPILE_DEFINITIONS.patch | 63 ++++++ root-roofit-overflow.patch | 59 ------ root.spec | 17 +- 4 files changed, 255 insertions(+), 65 deletions(-) create mode 100644 root-json-3.11.patch create mode 100644 root-protect-against-empty-COMPILE_DEFINITIONS.patch delete mode 100644 root-roofit-overflow.patch diff --git a/root-json-3.11.patch b/root-json-3.11.patch new file mode 100644 index 0000000..359de6d --- /dev/null +++ b/root-json-3.11.patch @@ -0,0 +1,181 @@ +From 154f930e1f4f05a268782f67bb77c5fb327fd408 Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Wed, 17 Aug 2022 12:15:12 +0200 +Subject: [PATCH 1/4] [tmva][sofie] Add missing cassert includes + +--- + tmva/sofie/inc/TMVA/ROperator_Reshape.hxx | 1 + + tmva/sofie/inc/TMVA/ROperator_Slice.hxx | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx b/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx +index ab24d5bc169f..9ad9eff72189 100644 +--- a/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx ++++ b/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx +@@ -5,6 +5,7 @@ + #include "TMVA/ROperator.hxx" + #include "TMVA/RModel.hxx" + ++#include + #include + + namespace TMVA{ +diff --git a/tmva/sofie/inc/TMVA/ROperator_Slice.hxx b/tmva/sofie/inc/TMVA/ROperator_Slice.hxx +index c6496f291c2c..946523e0832f 100644 +--- a/tmva/sofie/inc/TMVA/ROperator_Slice.hxx ++++ b/tmva/sofie/inc/TMVA/ROperator_Slice.hxx +@@ -5,6 +5,7 @@ + #include "TMVA/ROperator.hxx" + #include "TMVA/RModel.hxx" + ++#include + #include + + namespace TMVA{ + +From 6fc3c85be94f9fe117c07301302dccd8b7554744 Mon Sep 17 00:00:00 2001 +From: Vassil Vassilev +Date: Fri, 5 Nov 2021 19:46:49 +0000 +Subject: [PATCH 2/4] [cxxmodules] Enable a module if json is present. + +(cherry picked from commit 0cdfa69f216854d7319a6a31a61021a1e5ac45de) +--- + core/clingutils/CMakeLists.txt | 4 +++- + graf3d/eve7/CMakeLists.txt | 2 ++ + interpreter/cling/include/cling/json.modulemap | 4 ++++ + interpreter/cling/lib/Interpreter/CIFactory.cpp | 6 ++++++ + 4 files changed, 15 insertions(+), 1 deletion(-) + create mode 100644 interpreter/cling/include/cling/json.modulemap + +diff --git a/core/clingutils/CMakeLists.txt b/core/clingutils/CMakeLists.txt +index f1573f31dfa7..13632a09dd3a 100644 +--- a/core/clingutils/CMakeLists.txt ++++ b/core/clingutils/CMakeLists.txt +@@ -108,7 +108,9 @@ set(clinginclude ${CMAKE_SOURCE_DIR}/interpreter/cling/include) + + set(custom_modulemaps) + if (runtime_cxxmodules) +- set(custom_modulemaps boost.modulemap tinyxml2.modulemap cuda.modulemap module.modulemap.build) ++ set(custom_modulemaps boost.modulemap tinyxml2.modulemap cuda.modulemap ++ module.modulemap.build ++ json.modulemap) + # FIXME: We should install vc.modulemap only when Vc is found (Vc_FOUND) but + # some systems install it under /usr/include/Vc/Vc which allows rootcling to + # discover it and assert that the modulemap is not found. +diff --git a/graf3d/eve7/CMakeLists.txt b/graf3d/eve7/CMakeLists.txt +index 0a87d4ecca62..332ce77eb8ae 100644 +--- a/graf3d/eve7/CMakeLists.txt ++++ b/graf3d/eve7/CMakeLists.txt +@@ -125,6 +125,8 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTEve + src/REveViewer.cxx + src/REveVSD.cxx + src/REveVSDStructs.cxx ++ DICTIONARY_OPTIONS ++ -mByproduct Json + DEPENDENCIES + Core + Geom +diff --git a/interpreter/cling/include/cling/json.modulemap b/interpreter/cling/include/cling/json.modulemap +new file mode 100644 +index 000000000000..758cf2d779e2 +--- /dev/null ++++ b/interpreter/cling/include/cling/json.modulemap +@@ -0,0 +1,4 @@ ++module Json { ++ header "nlohmann/json.hpp" ++ export * ++} +diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp +index 4ce0d75c92ed..a5cbea75fb57 100644 +--- a/interpreter/cling/lib/Interpreter/CIFactory.cpp ++++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp +@@ -581,6 +581,7 @@ namespace { + llvm::SmallString<256> tinyxml2IncLoc(getIncludePathForHeader(HS, "tinyxml2.h")); + llvm::SmallString<256> cudaIncLoc(getIncludePathForHeader(HS, "cuda.h")); + llvm::SmallString<256> vcVcIncLoc(getIncludePathForHeader(HS, "Vc/Vc")); ++ llvm::SmallString<256> jsonIncLoc(getIncludePathForHeader(HS, "nlohmann/json.hpp")); + llvm::SmallString<256> clingIncLoc(getIncludePathForHeader(HS, + "cling/Interpreter/RuntimeUniverse.h")); + +@@ -706,6 +707,11 @@ namespace { + clingIncLoc.str(), MOverlay, + /*RegisterModuleMap=*/ true, + /*AllowModulemapOverride=*/ false); ++ if (!jsonIncLoc.empty()) ++ maybeAppendOverlayEntry(jsonIncLoc.str(), "json.modulemap", ++ clingIncLoc.str(), MOverlay, ++ /*RegisterModuleMap=*/ true, ++ /*AllowModulemapOverride=*/ false); + if (!boostIncLoc.empty()) { + // Add the modulemap in the include/boost folder not in include. + llvm::sys::path::append(boostIncLoc, "boost"); + +From 853eab0c8acf6c689ed413bb02bc8492d95916dc Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Wed, 17 Aug 2022 11:39:56 +0200 +Subject: [PATCH 3/4] [eve7] Properly include nlohmann/json.hpp + +Now that we have a module, this should work. + +Fixes #11130 +--- + graf3d/eve7/inc/ROOT/REveElement.hxx | 18 ++---------------- + 1 file changed, 2 insertions(+), 16 deletions(-) + +diff --git a/graf3d/eve7/inc/ROOT/REveElement.hxx b/graf3d/eve7/inc/ROOT/REveElement.hxx +index 2a127888a2c5..4163129c77ce 100644 +--- a/graf3d/eve7/inc/ROOT/REveElement.hxx ++++ b/graf3d/eve7/inc/ROOT/REveElement.hxx +@@ -16,26 +16,12 @@ + #include + #include + +-#include ++#include ++ + #include + + class TGeoMatrix; + +-namespace nlohmann { +-template +-struct adl_serializer; +- +-template