diff --git a/root-32bit-dataframe.patch b/root-32bit-dataframe.patch deleted file mode 100644 index 89e3c95..0000000 --- a/root-32bit-dataframe.patch +++ /dev/null @@ -1,170 +0,0 @@ -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"] - -- if (sys.platform != 'win32' and sys.maxsize <= 2**32): # https://docs.python.org/3/library/platform.html#cross-platform -- PCHPatternsBlacklist.append("tree/dataframe") -- - accepted = isAnyPatternInString(PCHPatternsWhitelist,dirName) and \ - not isAnyPatternInString(PCHPatternsBlacklist,dirName) - -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) - - } - --#ifdef R__B64 -- - TEST(Cache, Regex) - { - -@@ -329,8 +327,6 @@ TEST(Cache, Carrays) - gSystem->Unlink(fileName); - } - --#endif // R__B64 -- - // ROOT-10563 - TEST(Cache, Alias) - { -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 - --#ifdef R__B64 -- - TEST(RArrowDS, FromARDF) - { - std::unique_ptr tds(new RArrowDS(createTestTable(), {})); -@@ -250,5 +248,3 @@ TEST(RArrowDS, FromARDFWithJittingMT) - } - - #endif // R__USE_IMT -- --#endif // R__B64 -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 - --#ifdef R__B64 -- - TEST(RCsvDS, FromARDF) - { - std::unique_ptr tds(new RCsvDS(fileName0)); -@@ -324,5 +322,3 @@ TEST(RCsvDS, ProgressiveReadingRDFMT) - } - - #endif // R__USE_IMT -- --#endif // R__B64 -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 - --#ifdef R__B64 -- - TEST(TRootTDS, FromARDF) - { - 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 --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); - } - --#ifdef R__B64 -- - TEST(RTrivialDS, FromARDFWithJitting) - { - std::unique_ptr tds(new RTrivialDS(32)); -@@ -245,5 +243,3 @@ TEST(RTrivialDS, SkipEntriesMT) - } - - #endif // R__USE_IMT -- --#endif // R__B64 -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() - --if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) -- set(bits32_veto dataframe/*.C graphs/timeSeriesFrom*.C v7/ntuple/ntpl004_dimuon.C) --endif() -- - 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} -- ${bits32_veto} - ${xrootd_veto} - ${mlp_veto} - ${spectrum_veto} --- -2.35.1 - 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 deleted file mode 100644 index ca908b8..0000000 --- a/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index a845fa4..0000000 --- a/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch +++ /dev/null @@ -1,34 +0,0 @@ -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-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch b/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch new file mode 100644 index 0000000..0ca4387 --- /dev/null +++ b/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch @@ -0,0 +1,117 @@ +From d759a42a33fe6a9195c3c79275fe05e4da2b4195 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Sat, 14 Jan 2023 12:25:20 +0100 +Subject: [PATCH] [PyROOT] Only build RooFit and TMVA pythonizations if needed + +Like this, we are polluting the build and install directories less with +unneeded files and it also speeds up the build process a bit if RooFit +and/or TMVA are disabled. Their pythonization files don't need to be +compiled to `.pyc` files. +--- + bindings/pyroot/pythonizations/CMakeLists.txt | 76 ++++++++++--------- + 1 file changed, 42 insertions(+), 34 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt +index 9e853d1885..8395785b24 100644 +--- a/bindings/pyroot/pythonizations/CMakeLists.txt ++++ b/bindings/pyroot/pythonizations/CMakeLists.txt +@@ -25,6 +25,48 @@ if(dataframe) + inc/RNumpyDS.hxx) + endif() + ++if(roofit) ++ list(APPEND PYROOT_EXTRA_PY2_PY3_SOURCE ++ ROOT/_pythonization/_roofit/__init__.py ++ ROOT/_pythonization/_roofit/_rooabscollection.py ++ ROOT/_pythonization/_roofit/_rooabsdata.py ++ ROOT/_pythonization/_roofit/_rooabspdf.py ++ ROOT/_pythonization/_roofit/_rooabsreallvalue.py ++ ROOT/_pythonization/_roofit/_rooabsreal.py ++ ROOT/_pythonization/_roofit/_rooarglist.py ++ ROOT/_pythonization/_roofit/_rooargset.py ++ ROOT/_pythonization/_roofit/_roocategory.py ++ ROOT/_pythonization/_roofit/_roochi2var.py ++ ROOT/_pythonization/_roofit/_roodatahist.py ++ ROOT/_pythonization/_roofit/_roodataset.py ++ ROOT/_pythonization/_roofit/_roodecays.py ++ ROOT/_pythonization/_roofit/_roogenfitstudy.py ++ ROOT/_pythonization/_roofit/_rooglobalfunc.py ++ ROOT/_pythonization/_roofit/_roojsonfactorywstool.py ++ ROOT/_pythonization/_roofit/_roomcstudy.py ++ ROOT/_pythonization/_roofit/_roomsgservice.py ++ ROOT/_pythonization/_roofit/_roonllvar.py ++ ROOT/_pythonization/_roofit/_rooprodpdf.py ++ ROOT/_pythonization/_roofit/_roorealvar.py ++ ROOT/_pythonization/_roofit/_roosimultaneous.py ++ ROOT/_pythonization/_roofit/_roosimwstool.py ++ ROOT/_pythonization/_roofit/_roovectordatastore.py ++ ROOT/_pythonization/_roofit/_rooworkspace.py ++ ROOT/_pythonization/_roofit/_utils.py) ++endif() ++ ++if(tmva) ++ list(APPEND PYROOT_EXTRA_PY2_PY3_SOURCE ++ ROOT/_pythonization/_tmva/_crossvalidation.py ++ ROOT/_pythonization/_tmva/_dataloader.py ++ ROOT/_pythonization/_tmva/_factory.py ++ ROOT/_pythonization/_tmva/__init__.py ++ ROOT/_pythonization/_tmva/_rbdt.py ++ ROOT/_pythonization/_tmva/_rtensor.py ++ ROOT/_pythonization/_tmva/_tree_inference.py ++ ROOT/_pythonization/_tmva/_utils.py) ++endif() ++ + list(APPEND PYROOT_EXTRA_HEADERS + inc/TPyDispatcher.h) + +@@ -39,32 +81,6 @@ set(py2_py3_sources + ROOT/_pythonization/_generic.py + ROOT/_pythonization/__init__.py + ROOT/_pythonization/_pyz_utils.py +- ROOT/_pythonization/_roofit/__init__.py +- ROOT/_pythonization/_roofit/_rooabscollection.py +- ROOT/_pythonization/_roofit/_rooabsdata.py +- ROOT/_pythonization/_roofit/_rooabspdf.py +- ROOT/_pythonization/_roofit/_rooabsreallvalue.py +- ROOT/_pythonization/_roofit/_rooabsreal.py +- ROOT/_pythonization/_roofit/_rooarglist.py +- ROOT/_pythonization/_roofit/_rooargset.py +- ROOT/_pythonization/_roofit/_roocategory.py +- ROOT/_pythonization/_roofit/_roochi2var.py +- ROOT/_pythonization/_roofit/_roodatahist.py +- ROOT/_pythonization/_roofit/_roodataset.py +- ROOT/_pythonization/_roofit/_roodecays.py +- ROOT/_pythonization/_roofit/_roogenfitstudy.py +- ROOT/_pythonization/_roofit/_rooglobalfunc.py +- ROOT/_pythonization/_roofit/_roojsonfactorywstool.py +- ROOT/_pythonization/_roofit/_roomcstudy.py +- ROOT/_pythonization/_roofit/_roomsgservice.py +- ROOT/_pythonization/_roofit/_roonllvar.py +- ROOT/_pythonization/_roofit/_rooprodpdf.py +- ROOT/_pythonization/_roofit/_roorealvar.py +- ROOT/_pythonization/_roofit/_roosimultaneous.py +- ROOT/_pythonization/_roofit/_roosimwstool.py +- ROOT/_pythonization/_roofit/_roovectordatastore.py +- ROOT/_pythonization/_roofit/_rooworkspace.py +- ROOT/_pythonization/_roofit/_utils.py + ROOT/_pythonization/_rvec.py + ROOT/_pythonization/_stl_vector.py + ROOT/_pythonization/_tarray.py +@@ -79,14 +95,6 @@ set(py2_py3_sources + ROOT/_pythonization/_tgraph.py + ROOT/_pythonization/_th1.py + ROOT/_pythonization/_titer.py +- ROOT/_pythonization/_tmva/_crossvalidation.py +- ROOT/_pythonization/_tmva/_dataloader.py +- ROOT/_pythonization/_tmva/_factory.py +- ROOT/_pythonization/_tmva/__init__.py +- ROOT/_pythonization/_tmva/_rbdt.py +- ROOT/_pythonization/_tmva/_rtensor.py +- ROOT/_pythonization/_tmva/_tree_inference.py +- ROOT/_pythonization/_tmva/_utils.py + ROOT/_pythonization/_tobject.py + ROOT/_pythonization/_tobjstring.py + ROOT/_pythonization/_tseqcollection.py +-- +2.39.2 + diff --git a/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch b/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch new file mode 100644 index 0000000..d295c53 --- /dev/null +++ b/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch @@ -0,0 +1,168 @@ +From c20004230608a5679ee6c0a7648af5f190c415c9 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Tue, 7 Mar 2023 11:53:01 +0100 +Subject: [PATCH] [RF] Rewrite `RooProdPdf.TestGetPartIntList` unit test + +In the ROOT 6.26 development cycle, the RooProdPdf was partially +rewritten in moden C++ with less manual memory allocation to improve +performance (PR #7907). + +In that PR, a unit test that verifies the RooProdPdf can correctly deal +with factorizing PDFs was implemented. However, that test used an +arbitrary PDF where the correct factorization was checked in a rather +crude way: check by hashing the content of the RooProdPdf cache element +for a given normalization set that said PR doesn't change any behavior +(the reference hash was hardcoded in the unit test). + +This commit suggests a better alternative for the unit test, checking +for a multidimensional product pdf of factorizing uniform pdfs that the +pdf values for differenc normalization sets is as expected. This should +cover the same functionality and is less fragile and implementation +dependend than hashing the cache elements. + +This closes GitHub issue #12430, as the rewritten test is not affected +anymore by the problem reported in that issue. +--- + roofit/roofitcore/inc/RooProdPdf.h | 2 - + roofit/roofitcore/src/RooProdPdf.cxx | 4 -- + roofit/roofitcore/test/testRooProdPdf.cxx | 88 +++++++---------------- + 3 files changed, 26 insertions(+), 68 deletions(-) + +diff --git a/roofit/roofitcore/inc/RooProdPdf.h b/roofit/roofitcore/inc/RooProdPdf.h +index 3d779a4901..0a76c839aa 100644 +--- a/roofit/roofitcore/inc/RooProdPdf.h ++++ b/roofit/roofitcore/inc/RooProdPdf.h +@@ -96,8 +96,6 @@ public: + + RooArgSet* findPdfNSet(RooAbsPdf const& pdf) const ; + +- void writeCacheToStream(std::ostream& os, RooArgSet const* nset) const; +- + std::unique_ptr compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext & ctx) const override; + + private: +diff --git a/roofit/roofitcore/src/RooProdPdf.cxx b/roofit/roofitcore/src/RooProdPdf.cxx +index 8c8c7e01c6..6af7279603 100644 +--- a/roofit/roofitcore/src/RooProdPdf.cxx ++++ b/roofit/roofitcore/src/RooProdPdf.cxx +@@ -2324,10 +2324,6 @@ void RooProdPdf::CacheElem::writeToStream(std::ostream& os) const { + } + } + +-void RooProdPdf::writeCacheToStream(std::ostream& os, RooArgSet const* nset) const { +- getCacheElem(nset)->writeToStream(os); +-} +- + std::unique_ptr RooProdPdf::fillNormSetForServer(RooArgSet const &normSet, RooAbsArg const &server) const + { + if (normSet.empty()) +diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx +index d794fb415a..ff334211d2 100644 +--- a/roofit/roofitcore/test/testRooProdPdf.cxx ++++ b/roofit/roofitcore/test/testRooProdPdf.cxx +@@ -74,76 +74,40 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, + return ss.str(); + }); + +-std::vector> allPossibleSubset(RooAbsCollection const &arr) ++TEST(RooProdPdf, TestGetPartIntList) + { +- std::vector> out; +- std::size_t n = arr.size(); +- +- std::size_t count = std::pow(2, n); +- for (std::size_t i = 0; i < count; i++) { +- out.emplace_back(); +- auto &back = out.back(); +- for (std::size_t j = 0; j < n; j++) { +- if ((i & (1 << j)) != 0) { +- back.push_back(arr[j]); +- } +- } +- } +- return out; +-} ++ RooHelpers::LocalChangeMsgLevel chmsglvl1{RooFit::ERROR, 0u, RooFit::InputArguments, true}; ++ RooHelpers::LocalChangeMsgLevel chmsglvl2{RooFit::WARNING, 0u, RooFit::NumIntegration, true}; + +-// Hash the integral configuration for all possible normalization sets. +-unsigned int hashRooProduct(RooProdPdf const &prod) +-{ +- RooArgSet params; +- prod.getParameters(nullptr, params); +- auto subsets = allPossibleSubset(params); ++ // This test checks if RooProdPdf::getPartIntList factorizes the integrals ++ // as expected, for the example of a three dimensional RooProdPdf. + +- std::stringstream ss; ++ RooWorkspace ws; + +- for (auto const &subset : subsets) { +- // this can't be on the stack, otherwise we will always get the same +- // address and therefore get wrong cache hits! +- auto nset = std::make_unique(subset.begin(), subset.end()); +- prod.writeCacheToStream(ss, nset.get()); +- } ++ double a = 10.; ++ double b = 4.; ++ double c = 2.5; + +- std::string s = ss.str(); +- return TString::Hash(s.c_str(), s.size()); +-} ++ auto &x = static_cast(*ws.factory("x[0, 0, " + std::to_string(a) + "]")); ++ auto &y = static_cast(*ws.factory("y[0, 0, " + std::to_string(b) + "]")); ++ auto &z = static_cast(*ws.factory("z[0, 0, " + std::to_string(c) + "]")); + +-TEST(RooProdPdf, TestGetPartIntList) +-{ +- // This test checks if RooProdPdf::getPartIntList factorizes the integrals +- // as expected. +- // Instead of trying to construct tests for all possible cases by hand, +- // this test creates a product where the factors have different patters of +- // overlapping parameters. To make sure all possible cases are covered, we +- // are using all possible subsets of the parameters one after the other to +- // create the reference test result. +- +- RooRealVar x{"x", "x", 1., 0, 10}; +- RooRealVar y{"y", "y", 1., 0, 10}; +- RooRealVar z{"z", "z", 1., 0, 10}; +- +- RooRealVar m1{"m1", "m1", 1., 0, 10}; +- RooRealVar m2{"m2", "m2", 1., 0, 10}; +- RooRealVar m3{"m3", "m3", 1., 0, 10}; +- +- RooGenericPdf gauss1{"gauss1", "gauss1", "x+m1", {x, m1}}; +- RooGenericPdf gauss2{"gauss2", "gauss2", "x+m2", {x, m2}}; +- RooGenericPdf gauss3{"gauss3", "gauss3", "y+m3", {y, m3}}; +- RooGenericPdf gauss4{"gauss4", "gauss4", "z+m1", {z, m1}}; +- RooGenericPdf gauss5{"gauss5", "gauss5", "x+m1", {x, m1}}; ++ // Factorize the product in one 1D and one 2D pdf to get a more complicated ++ // and complete test case. ++ ws.factory("Uniform::pdf1({x})"); ++ ws.factory("Uniform::pdf2({y, z})"); + + // Product of all the pdfs. +- RooProdPdf prod{"prod", "prod", RooArgList{gauss1, gauss2, gauss3, gauss4, gauss5}}; +- +- // We hash the string serializations of caches for all possible +- // normalization sets and compare it to the expected hash. +- // This value must be updated if the convention for integral names in +- // RooProdPdf changes. +- EXPECT_EQ(hashRooProduct(prod), 2448666198); ++ auto &prod = static_cast(*ws.factory("PROD::prod(pdf1, pdf2)")); ++ ++ EXPECT_DOUBLE_EQ(prod.getVal({}), 1.0); ++ EXPECT_DOUBLE_EQ(prod.getVal({x}), 1. / a); ++ EXPECT_DOUBLE_EQ(prod.getVal({y}), 1. / b); ++ EXPECT_DOUBLE_EQ(prod.getVal({z}), 1. / c); ++ EXPECT_DOUBLE_EQ(prod.getVal({x, y}), 1. / a / b); ++ EXPECT_DOUBLE_EQ(prod.getVal({x, z}), 1. / a / c); ++ EXPECT_DOUBLE_EQ(prod.getVal({y, z}), 1. / b / c); ++ EXPECT_DOUBLE_EQ(prod.getVal({x, y, z}), 1. / a / b / c); + } + + TEST(RooProdPdf, TestDepsAreCond) +-- +2.39.2 + diff --git a/root-Set-DataLayout-from-our-TargetMachine.patch b/root-Set-DataLayout-from-our-TargetMachine.patch new file mode 100644 index 0000000..d936302 --- /dev/null +++ b/root-Set-DataLayout-from-our-TargetMachine.patch @@ -0,0 +1,32 @@ +From d4c66a41ae50ecfb905ebe66eb296de4e5c146d7 Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Thu, 16 Feb 2023 16:40:16 +0100 +Subject: [PATCH 2/2] [cling] Set DataLayout from our TargetMachine + +Otherwise LLJIT's constructor will ask the LLJITBuilder's JTMB to +create a DataLayout. As we don't propagate the JTMB (yet -- we +probably should!), this will be wrong if target features influence +the DataLayout. + +This should fix #12293. + +(cherry picked from commit 254bac6cfad78ed671ec3af3d2001c52487b4c86) +--- + interpreter/cling/lib/Interpreter/IncrementalJIT.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +index 80b6761491..e1721a4d45 100644 +--- a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp ++++ b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +@@ -358,6 +358,7 @@ IncrementalJIT::IncrementalJIT( + ErrorAsOutParameter _(&Err); + + LLJITBuilder Builder; ++ Builder.setDataLayout(TM->createDataLayout()); + Builder.setExecutorProcessControl(std::move(EPC)); + + // Create ObjectLinkingLayer with our own MemoryManager. +-- +2.39.2 + diff --git a/root-Simplify-creation-of-TargetMachine.patch b/root-Simplify-creation-of-TargetMachine.patch new file mode 100644 index 0000000..8eaa5d8 --- /dev/null +++ b/root-Simplify-creation-of-TargetMachine.patch @@ -0,0 +1,94 @@ +From 63d16de24e695a847274fa3044127cefffc7b0b6 Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Fri, 3 Feb 2023 11:52:22 +0100 +Subject: [PATCH 1/2] [cling] Simplify creation of TargetMachine + +We know exactly which target triple and features the CompilerInstance +wants, we don't need to (and probably must not) second-guess that. This +brings us closer to upstream clang-repl and also includes the change of +https://reviews.llvm.org/D128853 which is crucial for RISC-V. + +(cherry picked from commit df0905c499a541eaac3be63c0455a07946022983) +--- + .../cling/lib/Interpreter/IncrementalJIT.cpp | 34 ++++++------------- + 1 file changed, 11 insertions(+), 23 deletions(-) + +diff --git a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +index 5342945ed1..80b6761491 100644 +--- a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp ++++ b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +@@ -15,6 +15,7 @@ + #include "cling/Utils/Output.h" + #include "cling/Utils/Utils.h" + ++#include + #include + #include + +@@ -292,45 +293,32 @@ Error RTDynamicLibrarySearchGenerator::tryToGenerate( + } + + static std::unique_ptr +-CreateHostTargetMachine(const clang::CompilerInstance& CI) { +- const clang::TargetOptions& TargetOpts = CI.getTargetOpts(); +- const clang::CodeGenOptions& CGOpt = CI.getCodeGenOpts(); +- const std::string& Triple = TargetOpts.Triple; +- +- std::string Error; +- const Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error); +- if (!TheTarget) { +- cling::errs() << "cling::IncrementalExecutor: unable to find target:\n" +- << Error; +- return std::unique_ptr(); +- } +- ++CreateTargetMachine(const clang::CompilerInstance& CI) { + CodeGenOpt::Level OptLevel = CodeGenOpt::Default; +- switch (CGOpt.OptimizationLevel) { ++ switch (CI.getCodeGenOpts().OptimizationLevel) { + case 0: OptLevel = CodeGenOpt::None; break; + case 1: OptLevel = CodeGenOpt::Less; break; + case 2: OptLevel = CodeGenOpt::Default; break; + case 3: OptLevel = CodeGenOpt::Aggressive; break; + default: OptLevel = CodeGenOpt::Default; + } ++ + using namespace llvm::orc; +- auto JTMB = JITTargetMachineBuilder::detectHost(); +- if (!JTMB) +- logAllUnhandledErrors(JTMB.takeError(), llvm::errs(), +- "Error detecting host"); ++ auto JTMB = JITTargetMachineBuilder(CI.getTarget().getTriple()); ++ JTMB.addFeatures(CI.getTargetOpts().Features); + +- JTMB->setCodeGenOptLevel(OptLevel); ++ JTMB.setCodeGenOptLevel(OptLevel); + #ifdef _WIN32 +- JTMB->getOptions().EmulatedTLS = false; ++ JTMB.getOptions().EmulatedTLS = false; + #endif // _WIN32 + + #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()); ++ 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 +@@ -365,7 +353,7 @@ IncrementalJIT::IncrementalJIT( + std::unique_ptr EPC, Error& Err, + void *ExtraLibHandle, bool Verbose) + : SkipHostProcessLookup(false), +- TM(CreateHostTargetMachine(CI)), ++ TM(CreateTargetMachine(CI)), + SingleThreadedContext(std::make_unique()) { + ErrorAsOutParameter _(&Err); + +-- +2.39.2 + diff --git a/root-add-missing-include-cstdint.patch b/root-add-missing-include-cstdint.patch index f86f0ee..0572ac3 100644 --- a/root-add-missing-include-cstdint.patch +++ b/root-add-missing-include-cstdint.patch @@ -1,4 +1,4 @@ -From cf6a925dfda2411b979da368e4cea769dbe6238a Mon Sep 17 00:00:00 2001 +From 87d302b9192538e18645f4c3efadc70e9a20a913 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 20 Jan 2023 06:34:11 +0100 Subject: [PATCH] Add missing #include @@ -14,8 +14,8 @@ index 69ee9ba99d..6367dfa93f 100644 --- a/tree/ntuple/v7/inc/ROOT/RDaos.hxx +++ b/tree/ntuple/v7/inc/ROOT/RDaos.hxx @@ -22,6 +22,7 @@ - // Also, this header file is known to provide macros that conflict with std::min()/std::max(). - extern "C" void d_rank_list_free(d_rank_list_t *rank_list); + + #include +#include #include @@ -31,8 +31,8 @@ index a975b5ce5d..be08eba924 100644 +#include #include + #include #include - -- -2.39.0 +2.39.1 diff --git a/root-avoid-deleting-TFormulas-twice.patch b/root-avoid-deleting-TFormulas-twice.patch deleted file mode 100644 index af758ed..0000000 --- a/root-avoid-deleting-TFormulas-twice.patch +++ /dev/null @@ -1,37 +0,0 @@ -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-avoid-deprecated-numpy.object.patch b/root-avoid-deprecated-numpy.object.patch deleted file mode 100644 index 9330bac..0000000 --- a/root-avoid-deprecated-numpy.object.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 1e7dc9fcd60133375c3b725d8317fab339c2bf38 Mon Sep 17 00:00:00 2001 -From: Vincenzo Eduardo Padulano -Date: Mon, 30 Jan 2023 10:31:29 +0100 -Subject: [PATCH] [DF][PyROOT] Avoid deprecated numpy.object - ---- - .../pythonizations/python/ROOT/_pythonization/_rdataframe.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -index 59cb0cd260dd..01cb08b0365f 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -@@ -287,7 +287,7 @@ def GetValue(self): - tmp = numpy.asarray(cpp_reference) # This adopts the memory of the C++ object. - self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) - else: -- tmp = numpy.empty(len(cpp_reference), dtype=numpy.object) -+ tmp = numpy.empty(len(cpp_reference), dtype=object) - for i, x in enumerate(cpp_reference): - tmp[i] = x # This creates only the wrapping of the objects and does not copy. - self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) diff --git a/root-avoid-race-condition-tutorial-roofit-rf512.patch b/root-avoid-race-condition-tutorial-roofit-rf512.patch deleted file mode 100644 index d0c40e8..0000000 --- a/root-avoid-race-condition-tutorial-roofit-rf512.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 91de99623d0e945610be46d46e84b54985415aeb Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 28 Oct 2022 06:27:10 +0200 -Subject: [PATCH] Avoid race condition between - tutorial/roofit/rf512_wsfactory_oper.C and - tutorial/roofit/rf512_wsfactory_oper.py - -When run in parallel they delete eachother's files: - -cc1plus: fatal error: /builddir/build/BUILD/root-6.26.08/redhat-linux-build/runtutorials/RooCFAuto000Pdf_cxx_ACLiC_dict.cxx: No such file or directory -compilation terminated. -/usr/bin/ld: cannot find /builddir/build/BUILD/root-6.26.08/redhat-linux-build/runtutorials/RooCFAuto000Pdf_cxx_ACLiC_dict.o: No such file or directory -collect2: error: ld returned 1 exit status ---- - tutorials/CMakeLists.txt | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index cfba4d3ed9..6ae9be5869 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -483,7 +483,7 @@ set(hist-hbars-depends tutorial-tree-cernbuild) - set(benchmarks-depends tutorial-hsimple - tutorial-fit-fit1 - tutorial-fit-myfit -- tutorial-hist-h1ReadAndDraw -+ tutorial-hist-h1ReadAndDraw - tutorial-hist-FirstContour - tutorial-geom-na49view - tutorial-tree-ntuple1 -@@ -731,7 +731,7 @@ if(ROOT_pyroot_FOUND) - set(pyroot-benchmarks-depends tutorial-pyroot-hsimple-py - tutorial-pyroot-fit1-py - tutorial-pyroot-na49view-py -- tutorial-pyroot-h1ReadAndDraw-py -+ tutorial-pyroot-h1ReadAndDraw-py - tutorial-pyroot-ntuple1-py) - set(pyroot-fit1-depends tutorial-pyroot-fillrandom-py) - set(pyroot-na49view-depends tutorial-pyroot-geometry-py) -@@ -739,6 +739,7 @@ if(ROOT_pyroot_FOUND) - - # Avoid a race condition: make sure Python tutorial is ran after C++ tutorial - set(roofit-rf104_classfactory-depends tutorial-roofit-rf104_classfactory) -+ set(roofit-rf512_wsfactory_oper-depends tutorial-roofit-rf512_wsfactory_oper) - - #---------------------------------------------------------------------- - # List requirements for python tutorials. --- -2.37.3 - diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch index 63490b5..caa3076 100644 --- a/root-big-endian-byte-swap.patch +++ b/root-big-endian-byte-swap.patch @@ -1,15 +1,15 @@ -From d9e03aad7a5132fe9db9992eecb47ee4e91c354c Mon Sep 17 00:00:00 2001 +From b32c7a1b080cb5d14f242070bf906ea6929d604d 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(-) + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 23 +++++++++++++++----- + 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -index 3b0a30cdb0..23e41d746f 100644 +index ab457dcddc..d701fb3299 100644 --- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx @@ -1,3 +1,4 @@ @@ -17,24 +17,42 @@ index 3b0a30cdb0..23e41d746f 100644 #include "TMVA/RModelParser_ONNX.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); +@@ -335,9 +336,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose) + case ETensorType::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()) { +- 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)); ++ 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]); ++ for (std::size_t k = 0; k < fLength; ++k) ++ (reinterpret_cast(data.get()))[k] = ++ Rbswap_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())); - } + } else { + tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), + static_cast(data.get())); +@@ -350,9 +356,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose) + case ETensorType::INT64: { + std::shared_ptr data(malloc(fLength * sizeof(int64_t)), 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(int64_t)); ++ if (!tensorproto->raw_data().empty()) { ++#ifdef R__BYTESWAP ++ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(int64_t)); ++#else ++ for (std::size_t k = 0; k < fLength; ++k) ++ (reinterpret_cast(data.get()))[k] = ++ Rbswap_64((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); ++#endif + } else { + tensorproto->mutable_int64_data()->ExtractSubrange(0, tensorproto->int64_data_size(), + static_cast(data.get())); -- -2.35.1 +2.39.2 diff --git a/root-cling-Disable-outline-atomics-on-AArch64.patch b/root-cling-Disable-outline-atomics-on-AArch64.patch new file mode 100644 index 0000000..ca00e5f --- /dev/null +++ b/root-cling-Disable-outline-atomics-on-AArch64.patch @@ -0,0 +1,35 @@ +From ddf9a8c3d113e3a3d48dbe13b6b4a6bf2338fb7a Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Mon, 20 Feb 2023 10:08:00 +0100 +Subject: [PATCH] [cling] Disable outline-atomics on AArch64 + +The routines __aarch64_* are defined in the static library libgcc.a +and not necessarily included in libCling or otherwise present in the +process, so the interpreter has a hard time finding them. + +Fixes #12294 +--- + interpreter/cling/lib/Interpreter/CIFactory.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp +index b135bf21aa..b5b5df2e8e 100644 +--- a/interpreter/cling/lib/Interpreter/CIFactory.cpp ++++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp +@@ -1254,6 +1254,13 @@ namespace { + #if __APPLE__ && __arm64__ + argvCompile.push_back("--target=arm64-apple-darwin20.3.0"); + #endif ++#if __aarch64__ ++ // Disable outline-atomics on AArch64; the routines __aarch64_* are defined ++ // in the static library libgcc.a and not necessarily included in libCling ++ // or otherwise present in the process, so the interpreter has a hard time ++ // finding them. ++ argvCompile.push_back("-mno-outline-atomics"); ++#endif + + // Variables for storing the memory of the C-string arguments. + // FIXME: We shouldn't use C-strings in the first place, but just use +-- +2.39.2 + diff --git a/root-core-base-test.patch b/root-core-base-test.patch deleted file mode 100644 index c268390..0000000 --- a/root-core-base-test.patch +++ /dev/null @@ -1,31 +0,0 @@ -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 deleted file mode 100644 index 57ffc08..0000000 --- a/root-dataframe-callback.patch +++ /dev/null @@ -1,45 +0,0 @@ -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-different-filename.patch b/root-different-filename.patch deleted file mode 100644 index ef42c3d..0000000 --- a/root-different-filename.patch +++ /dev/null @@ -1,48 +0,0 @@ -From a486081a8065154308b23381c3a77f3fdb73de97 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 16 Nov 2022 20:44:48 +0100 -Subject: [PATCH] Use different filename in loopdir.C and loopdir11.C to avoid - race condition - - Start 672: tutorial-io-loopdir - 690/1156 Test #666: tutorial-io-double32 ................................................ Passed 2.42 sec - Start 673: tutorial-io-loopdir11 - 691/1156 Test #673: tutorial-io-loopdir11 ............................................... Passed 0.76 sec - Start 674: tutorial-io-mergeSelective - 692/1156 Test #672: tutorial-io-loopdir .................................................***Failed Error regular expression found in output. Regex=[Error in <] 1.23 sec -Processing /builddir/build/BUILD/root-6.26.10/tutorials/io/loopdir.C... -Info in : ps file hsimple.ps has been created -Info in : Current canvas added to ps file hsimple.ps -Info in : Current canvas added to ps file hsimple.ps -Info in : Current canvas added to ps file hsimple.ps -Info in : ps file hsimple.ps has been closed -Error in : Cannot open temporary file: hsimple.ps_tmp_2089748 ---- - tutorials/io/loopdir11.C | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/tutorials/io/loopdir11.C b/tutorials/io/loopdir11.C -index b5f9f4719c..bf8c33b442 100644 ---- a/tutorials/io/loopdir11.C -+++ b/tutorials/io/loopdir11.C -@@ -12,14 +12,14 @@ - void loopdir11() { - TFile *f1 = TFile::Open("hsimple.root"); - TCanvas c1; -- c1.Print("hsimple.ps["); -+ c1.Print("hsimple11.ps["); - for(auto k : *f1->GetListOfKeys()) { - TKey *key = static_cast(k); - TClass *cl = gROOT->GetClass(key->GetClassName()); - if (!cl->InheritsFrom("TH1")) continue; - TH1 *h = key->ReadObject(); - h->Draw(); -- c1.Print("hsimple.ps"); -+ c1.Print("hsimple11.ps"); - } -- c1.Print("hsimple.ps]"); -+ c1.Print("hsimple11.ps]"); - } --- -2.38.1 - diff --git a/root-do-not-remove-Wp-before-D-and-U.patch b/root-do-not-remove-Wp-before-D-and-U.patch new file mode 100644 index 0000000..820b7af --- /dev/null +++ b/root-do-not-remove-Wp-before-D-and-U.patch @@ -0,0 +1,44 @@ +From 0191a987b7583c2aa84b1293105db353fee40b1d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 10 Mar 2023 20:49:02 +0100 +Subject: [PATCH] Do not remove -Wp, before -D and -U when recording used + compiler flags + +This breaks the pattern used when undefining and then defining a +variable in the same flag: + +$ echo | g++ -Wp,-UVAR,-DVAR=1 -c -x c++ - + +Here -Wp,-UVAR,-DVAR=1 will first undefine VAR and then define it to 1 + +If the -Wp, is dropped, this fails: +$ echo | g++ -UVAR,-DVAR=1 -c -x c++ - +: warning: extra tokens at end of #undef directive + +Now it will only undefine VAR, but not defin it. I.e. + +insted of + +you get + +which explains the rather cryptic warning about extra token after #undef. +--- + cmake/modules/RootConfiguration.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake +index 3d1ae9be53..042b43f039 100644 +--- a/cmake/modules/RootConfiguration.cmake ++++ b/cmake/modules/RootConfiguration.cmake +@@ -729,7 +729,7 @@ if (cxxmodules) + endif() + + string(REGEX REPLACE "(^|[ ]*)-W[^ ]*" "" __fflags "${CMAKE_Fortran_FLAGS}") +-string(REGEX MATCHALL "-(D|U)[^ ]*" __defs "${CMAKE_CXX_FLAGS}") ++string(REGEX MATCHALL "(-Wp,)?-(D|U)[^ ]*" __defs "${CMAKE_CXX_FLAGS}") + set(ROOT_COMPILER_FLAG_HINTS "# + set(ROOT_DEFINITIONS \"${__defs}\") + set(ROOT_CXX_FLAGS \"${__cxxflags}\") +-- +2.39.2 + diff --git a/root-dont-install-roofit-files-fix.patch b/root-dont-install-roofit-files-fix.patch new file mode 100644 index 0000000..295a4b7 --- /dev/null +++ b/root-dont-install-roofit-files-fix.patch @@ -0,0 +1,26 @@ +From 74aaf99530443a712f9b0577d8edde615ea8902d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 4 Mar 2023 21:27:35 +0100 +Subject: [PATCH] Use FILTER instead of REMOVE_ITEM since GLOB returns absolute + paths + +--- + build/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index e964b5e255..2b24b1d6e6 100644 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -30,7 +30,7 @@ ROOT_EXECUTABLE(rmkdepend + if(NOT MSVC AND _BUILD_TYPE_UPPER MATCHES "DEBUG|RELWITHDEBINFO") + file(GLOB PRETTY_PRINTERS "gdbPrinters/*.so-gdb.py") + if(NOT roofit) +- list(REMOVE_ITEM PRETTY_PRINTERS gdbPrinters/libRooFitCore.so-gdb.py) ++ list(FILTER PRETTY_PRINTERS EXCLUDE REGEX libRooFitCore.so-gdb.py) + endif() + set(PRETTY_PRINTER_DESTS) + foreach(PRETTY_PRINTER ${PRETTY_PRINTERS}) +-- +2.39.2 + diff --git a/root-dont-install-roofit-files-when-roofit-is-disabled.patch b/root-dont-install-roofit-files-when-roofit-is-disabled.patch new file mode 100644 index 0000000..7b4881d --- /dev/null +++ b/root-dont-install-roofit-files-when-roofit-is-disabled.patch @@ -0,0 +1,75 @@ +From df636dcc05d0284f39427ea5be1d72e7faca90d8 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 1 Mar 2023 18:30:35 +0100 +Subject: [PATCH] Don't install roofit files when roofit is disabled + +--- + CMakeLists.txt | 14 ++++++++++++-- + build/CMakeLists.txt | 3 +++ + core/base/CMakeLists.txt | 2 ++ + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e1d998fde2..7992e27b64 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -591,7 +591,14 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_INSTALL_PREFIX) + else() + install(DIRECTORY README DESTINATION ${CMAKE_INSTALL_DOCDIR}) + endif() ++ set(ETC_PATT_EXCL) ++ if(NOT roofit) ++ list(APPEND ETC_PATT_EXCL PATTERN HistFactorySchema.dtd EXCLUDE) ++ list(APPEND ETC_PATT_EXCL PATTERN RooFitHS3_wsexportkeys.json EXCLUDE) ++ list(APPEND ETC_PATT_EXCL PATTERN RooFitHS3_wsfactoryexpressions.json EXCLUDE) ++ endif() + install(DIRECTORY etc/ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR} USE_SOURCE_PERMISSIONS ++ ${ETC_PATT_EXCL} + PATTERN "system.rootrc" EXCLUDE + PATTERN "system.rootauthrc" EXCLUDE + PATTERN "system.rootdaemonrc" EXCLUDE +@@ -612,8 +619,11 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_INSTALL_PREFIX) + set(MAN_PATT_EXCL PATTERN xproofd.1 EXCLUDE) + endif() + if(NOT fortran OR NOT CMAKE_Fortran_COMPILER) +- set(MAN_PATT_EXCL ${MAN_PATT_EXCL} PATTERN h2root.1 EXCLUDE) +- set(MAN_PATT_EXCL ${MAN_PATT_EXCL} PATTERN g2root.1 EXCLUDE) ++ list(APPEND MAN_PATT_EXCL PATTERN h2root.1 EXCLUDE) ++ list(APPEND MAN_PATT_EXCL PATTERN g2root.1 EXCLUDE) ++ endif() ++ if(NOT roofit) ++ list(APPEND MAN_PATT_EXCL PATTERN prepareHistFactory.1 EXCLUDE) + endif() + install(DIRECTORY man/ DESTINATION ${CMAKE_INSTALL_MANDIR} ${MAN_PATT_EXCL}) + install(DIRECTORY tutorials/ DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests) +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index 9f60c813ac..e964b5e255 100644 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -29,6 +29,9 @@ ROOT_EXECUTABLE(rmkdepend + + if(NOT MSVC AND _BUILD_TYPE_UPPER MATCHES "DEBUG|RELWITHDEBINFO") + file(GLOB PRETTY_PRINTERS "gdbPrinters/*.so-gdb.py") ++ if(NOT roofit) ++ list(REMOVE_ITEM PRETTY_PRINTERS gdbPrinters/libRooFitCore.so-gdb.py) ++ endif() + set(PRETTY_PRINTER_DESTS) + foreach(PRETTY_PRINTER ${PRETTY_PRINTERS}) + get_filename_component(PRETTY_PRINTER_DEST ${PRETTY_PRINTER} NAME) +diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt +index 0c9df7c896..df701fedea 100644 +--- a/core/base/CMakeLists.txt ++++ b/core/base/CMakeLists.txt +@@ -224,7 +224,9 @@ if(NOT MSVC) + #---addRootC++CmdMan------------------------------------------------------------------------- + generateManual(rootMan ${CMAKE_CURRENT_SOURCE_DIR}/src/root-argparse.py ${CMAKE_BINARY_DIR}/man/root.1) + generateManual(haddMan ${CMAKE_SOURCE_DIR}/main/src/hadd-argparse.py ${CMAKE_BINARY_DIR}/man/hadd.1) ++if (roofit) + generateManual(hist2workspaceMan ${CMAKE_SOURCE_DIR}/roofit/histfactory/src/hist2workspace-argparse.py ${CMAKE_BINARY_DIR}/man/hist2workspace.1) ++endif() + generateManual(rootclingMan ${CMAKE_SOURCE_DIR}/core/dictgen/src/rootcling-argparse.py ${CMAKE_BINARY_DIR}/man/rootcling.1) + + #---addRootPyCmdMan--------------------------------------------------------------------------- +-- +2.39.2 + diff --git a/root-endian-warn.patch b/root-endian-warn.patch deleted file mode 100644 index 77cd6b9..0000000 --- a/root-endian-warn.patch +++ /dev/null @@ -1,33 +0,0 @@ -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-fix-compilation-with-gcc-12.patch b/root-fix-compilation-with-gcc-12.patch deleted file mode 100644 index 2c34516..0000000 --- a/root-fix-compilation-with-gcc-12.patch +++ /dev/null @@ -1,63 +0,0 @@ -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-compilation-with-gcc13.patch b/root-fix-compilation-with-gcc13.patch deleted file mode 100644 index bf411a8..0000000 --- a/root-fix-compilation-with-gcc13.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 37ac6654194f90db625e760dcb2d48fd7938ba6d Mon Sep 17 00:00:00 2001 -From: scott snyder -Date: Tue, 29 Nov 2022 22:05:39 -0500 -Subject: [PATCH] Fix compilation with gcc13. - -Missing #include . ---- - math/mathcore/inc/Math/Random.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/math/mathcore/inc/Math/Random.h b/math/mathcore/inc/Math/Random.h -index 87eaaee5af..23bfabc4a1 100644 ---- a/math/mathcore/inc/Math/Random.h -+++ b/math/mathcore/inc/Math/Random.h -@@ -25,6 +25,7 @@ - - #include - #include -+#include - - - namespace ROOT { --- -2.39.0 - 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 index 007c3cd..274aa66 100644 --- 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 @@ -1,6 +1,6 @@ -From ddc155795baa9d4690717c204e54a7fd4600c688 Mon Sep 17 00:00:00 2001 +From 15f50c71b4d89bfbf06ce817dee38e843f0f55cd Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Mon, 17 Jan 2022 18:49:30 +0100 +Date: Mon, 17 Jan 2022 23:50:47 +0100 Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12 .../hist/hist/test/test_tprofile2poly.cxx:61: Failure @@ -14,19 +14,19 @@ 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(-) + hist/hist/test/test_tprofile2poly.cxx | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx -index 40cb3052a2..5150da0bea 100644 +index 40cb3052a2..ecf559a4b3 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) { +@@ -58,15 +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); ++ ASSERT_NEAR(cont1, cont2, 2 * delta); } } @@ -34,10 +34,11 @@ index 40cb3052a2..5150da0bea 100644 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); - +- ++ ASSERT_NEAR(cont1, cont2, 2 * delta); } + void binErrorCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { -- -2.34.1 +2.39.2 diff --git a/root-fixes-for-32bit-builds.patch b/root-fixes-for-32bit-builds.patch new file mode 100644 index 0000000..bcff78d --- /dev/null +++ b/root-fixes-for-32bit-builds.patch @@ -0,0 +1,185 @@ +From 6f69a59010a60c949b1955e52275137e39a85b82 Mon Sep 17 00:00:00 2001 +From: Jakob Blomer +Date: Thu, 9 Mar 2023 15:14:22 +0100 +Subject: [PATCH] [ntuple] fixes for 32bit / non-x86_64 builds + +--- + tree/dataframe/src/RNTupleDS.cxx | 1 + + tree/ntuple/v7/inc/ROOT/RField.hxx | 21 +++++++++++++++++++-- + tree/ntuple/v7/test/ntuple_extended.cxx | 8 ++++---- + 3 files changed, 24 insertions(+), 6 deletions(-) + +diff --git a/tree/dataframe/src/RNTupleDS.cxx b/tree/dataframe/src/RNTupleDS.cxx +index f7eb0ab5f284..aaea6df81622 100644 +--- a/tree/dataframe/src/RNTupleDS.cxx ++++ b/tree/dataframe/src/RNTupleDS.cxx +@@ -94,6 +94,7 @@ class RRDFCardinalityField : public ROOT::Experimental::Detail::RFieldBase { + return ROOT::Experimental::Detail::RFieldValue(true /* captureFlag */, this, where); + } + size_t GetValueSize() const final { return sizeof(std::size_t); } ++ size_t GetAlignment() const final { return alignof(std::size_t); } + + /// Get the number of elements of the collection identified by globalIndex + void +diff --git a/tree/ntuple/v7/inc/ROOT/RField.hxx b/tree/ntuple/v7/inc/ROOT/RField.hxx +index b05267d16030..9a85368a94e3 100644 +--- a/tree/ntuple/v7/inc/ROOT/RField.hxx ++++ b/tree/ntuple/v7/inc/ROOT/RField.hxx +@@ -270,8 +270,9 @@ public: + virtual std::vector SplitValue(const RFieldValue &value) const; + /// The number of bytes taken by a value of the appropriate type + virtual size_t GetValueSize() const = 0; +- /// For many types, the alignment requirement is equal to the size; otherwise override. +- virtual size_t GetAlignment() const { return GetValueSize(); } ++ /// As a rule of thumb, the alignment is equal to the size of the type. There are, however, various exceptions ++ /// to this rule depending on OS and CPU architecture. So enforce the alignment to be explicitly spelled out. ++ virtual size_t GetAlignment() const = 0; + int GetTraits() const { return fTraits; } + bool HasReadCallbacks() const { return !fReadCallbacks.empty(); } + +@@ -383,6 +384,7 @@ public: + Detail::RFieldValue GenerateValue(void*) override { return Detail::RFieldValue(); } + Detail::RFieldValue CaptureValue(void*) final { return Detail::RFieldValue(); } + size_t GetValueSize() const final { return 0; } ++ size_t GetAlignment() const final { return 0; } + + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; +@@ -889,6 +891,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(ClusterSize_t); } ++ size_t GetAlignment() const final { return alignof(ClusterSize_t); } + void CommitCluster() final; + }; + +@@ -990,6 +993,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(ClusterSize_t); } ++ size_t GetAlignment() const final { return alignof(ClusterSize_t); } + + /// Special help for offset fields + void GetCollectionInfo(NTupleSize_t globalIndex, RClusterIndex *collectionStart, ClusterSize_t *size) { +@@ -1110,6 +1115,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(bool); } ++ size_t GetAlignment() const final { return alignof(bool); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1162,6 +1168,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(float); } ++ size_t GetAlignment() const final { return alignof(float); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1215,6 +1222,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(double); } ++ size_t GetAlignment() const final { return alignof(double); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1267,6 +1275,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(char); } ++ size_t GetAlignment() const final { return alignof(char); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1319,6 +1328,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int8_t); } ++ size_t GetAlignment() const final { return alignof(std::int8_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1371,6 +1381,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint8_t); } ++ size_t GetAlignment() const final { return alignof(std::uint8_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1423,6 +1434,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int16_t); } ++ size_t GetAlignment() const final { return alignof(std::int16_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1475,6 +1487,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint16_t); } ++ size_t GetAlignment() const final { return alignof(std::uint16_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1527,6 +1540,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int32_t); } ++ size_t GetAlignment() const final { return alignof(std::int32_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1579,6 +1593,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint32_t); } ++ size_t GetAlignment() const final { return alignof(std::uint32_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1631,6 +1646,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint64_t); } ++ size_t GetAlignment() const final { return alignof(std::uint64_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1683,6 +1699,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int64_t); } ++ size_t GetAlignment() const final { return alignof(std::int64_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx +index 91871e288e98..d3b6ee466359 100644 +--- a/tree/ntuple/v7/test/ntuple_extended.cxx ++++ b/tree/ntuple/v7/test/ntuple_extended.cxx +@@ -123,8 +123,8 @@ TEST(RNTuple, LargeFile1) + RNTupleWriteOptions options; + options.SetCompression(0); + auto ntuple = RNTupleWriter::Recreate(std::move(modelWrite), "myNTuple", fileGuard.GetPath(), options); +- constexpr unsigned long nEvents = 1024 * 1024 * 256; // Exceed 2GB file size +- for (unsigned int i = 0; i < nEvents; ++i) { ++ constexpr std::uint64_t nEvents = 1024 * 1024 * 256; // Exceed 2GB file size ++ for (std::uint64_t i = 0; i < nEvents; ++i) { + wrEnergy = rnd.Rndm(); + chksumWrite += wrEnergy; + ntuple->Fill(); +@@ -195,8 +195,8 @@ TEST(RNTuple, LargeFile2) + + TRandom3 rnd(42); + double chksumWrite = 0.0; +- constexpr unsigned long nEvents = 1024 * 1024 * 256; // Exceed 2GB file size +- for (unsigned int i = 0; i < nEvents; ++i) { ++ constexpr std::uint64_t nEvents = 1024 * 1024 * 256; // Exceed 2GB file size ++ for (std::uint64_t i = 0; i < nEvents; ++i) { + *E = rnd.Rndm(); + chksumWrite += *E; + writer->Fill(); diff --git a/root-fontconfig.patch b/root-fontconfig.patch index 35705a4..e19c4b4 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,38 +1,38 @@ -diff -ur root-6.24.02.orig/core/base/src/TApplication.cxx root-6.24.02/core/base/src/TApplication.cxx ---- root-6.24.02.orig/core/base/src/TApplication.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/core/base/src/TApplication.cxx 2021-08-11 10:49:08.583579248 +0200 -@@ -265,18 +265,11 @@ - LoadGraphicsLibs(); +diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base/src/TApplication.cxx +--- root-6.28.00.orig/core/base/src/TApplication.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/core/base/src/TApplication.cxx 2023-02-04 12:47:19.757759982 +0100 +@@ -251,18 +251,11 @@ + LoadGraphicsLibs(); - // Try to load TrueType font renderer. Only try to load if not in batch -- // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently -+ // mode and Root.UseTTFonts is true. Abort silently - // if libttf or libGX11TTF are not found in $ROOTSYS/lib or $ROOTSYS/ttf/lib. -- const char *ttpath = gEnv->GetValue("Root.TTFontPath", -- TROOT::GetTTFFontDir()); -- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); -- // Check for use of DFSG - fonts -- if (!ttfont) -- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); + // Try to load TrueType font renderer. Only try to load if not in batch +- // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently ++ // mode and Root.UseTTFonts is true. Abort silently + // if libttf or libGX11TTF are not found in $ROOTSYS/lib or $ROOTSYS/ttf/lib. +- const char *ttpath = gEnv->GetValue("Root.TTFontPath", +- TROOT::GetTTFFontDir()); +- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); +- // Check for use of DFSG - fonts +- if (!ttfont) +- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); - - #if !defined(R__WIN32) - if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") && -- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { -+ gEnv->GetValue("Root.UseTTFonts", 1)) { - if (gClassTable->GetDict("TGX11TTF")) { - // in principle we should not have linked anything against libGX11TTF - // but with ACLiC this can happen, initialize TGX11TTF by hand -@@ -290,7 +283,6 @@ + #if !defined(R__WIN32) + if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") && +- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { ++ gEnv->GetValue("Root.UseTTFonts", 1)) { + if (gClassTable->GetDict("TGX11TTF")) { + // in principle we should not have linked anything against libGX11TTF + // but with ACLiC this can happen, initialize TGX11TTF by hand +@@ -276,7 +269,6 @@ + } } + #endif +- delete [] ttfont; } - #endif -- delete [] ttfont; - // Create WM dependent application environment - if (fAppImp) -diff -ur root-6.24.02.orig/graf2d/asimage/CMakeLists.txt root-6.24.02/graf2d/asimage/CMakeLists.txt ---- root-6.24.02.orig/graf2d/asimage/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/asimage/CMakeLists.txt 2021-08-11 10:49:08.583579248 +0200 + if (!only_web || !fAppImp) { +diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asimage/CMakeLists.txt +--- root-6.28.00.orig/graf2d/asimage/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/asimage/CMakeLists.txt 2023-02-04 12:47:19.757759982 +0100 @@ -30,6 +30,7 @@ ${FREETYPE_LIBRARIES} ${X11_LIBRARIES} @@ -41,10 +41,10 @@ diff -ur root-6.24.02.orig/graf2d/asimage/CMakeLists.txt root-6.24.02/graf2d/asi DEPENDENCIES Core Graf -diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/asimage/src/TASImage.cxx ---- root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/asimage/src/TASImage.cxx 2021-08-11 10:49:08.585579253 +0200 -@@ -112,6 +112,8 @@ +diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/asimage/src/TASImage.cxx +--- root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/asimage/src/TASImage.cxx 2023-02-04 12:47:19.760759989 +0100 +@@ -115,6 +115,8 @@ # include } @@ -53,7 +53,7 @@ diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/a // auxiliary functions for general polygon filling #include "TASPolyUtils.c" -@@ -2595,14 +2597,120 @@ +@@ -2590,14 +2592,120 @@ TString fn = font_name; fn.Strip(); @@ -181,7 +181,7 @@ diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/a if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) { ttfont = kTRUE; -@@ -2626,14 +2734,11 @@ +@@ -2621,14 +2729,11 @@ return; } @@ -199,9 +199,9 @@ diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/a } get_text_size(text, font, (ASText3DType)type, &width, &height); -diff -ur root-6.24.02.orig/graf2d/graf/CMakeLists.txt root-6.24.02/graf2d/graf/CMakeLists.txt ---- root-6.24.02.orig/graf2d/graf/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/graf/CMakeLists.txt 2021-08-11 10:49:08.586579256 +0200 +diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/CMakeLists.txt +--- root-6.28.00.orig/graf2d/graf/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/graf/CMakeLists.txt 2023-02-04 12:47:19.861760233 +0100 @@ -91,6 +91,7 @@ ${FREETYPE_LIBRARIES} ZLIB::ZLIB @@ -210,9 +210,9 @@ diff -ur root-6.24.02.orig/graf2d/graf/CMakeLists.txt root-6.24.02/graf2d/graf/C DEPENDENCIES Hist Matrix -diff -ur root-6.24.02.orig/graf2d/graf/inc/TTF.h root-6.24.02/graf2d/graf/inc/TTF.h ---- root-6.24.02.orig/graf2d/graf/inc/TTF.h 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/graf/inc/TTF.h 2021-08-11 10:49:08.586579256 +0200 +diff -ur root-6.28.00.orig/graf2d/graf/inc/TTF.h root-6.28.00/graf2d/graf/inc/TTF.h +--- root-6.28.00.orig/graf2d/graf/inc/TTF.h 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/graf/inc/TTF.h 2023-02-04 12:47:19.862760235 +0100 @@ -76,9 +76,8 @@ static FT_BBox fgCBox; ///< string control box static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map @@ -224,9 +224,9 @@ diff -ur root-6.24.02.orig/graf2d/graf/inc/TTF.h root-6.24.02/graf2d/graf/inc/TT static FT_Face fgFace[kTTMaxFonts]; ///< font face static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs static Bool_t fgHinting; ///< use hinting (true by default) -diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/TTF.cxx ---- root-6.24.02.orig/graf2d/graf/src/TTF.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/graf/src/TTF.cxx 2021-08-11 10:49:08.587579259 +0200 +diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/TTF.cxx +--- root-6.28.00.orig/graf2d/graf/src/TTF.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/graf/src/TTF.cxx 2023-02-04 12:47:19.863760238 +0100 @@ -25,6 +25,8 @@ #include "TMath.h" #include "TError.h" @@ -654,7 +654,7 @@ diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/ + FcPatternDestroy (pat); + if (set) FcCharSetDestroy (set); + - FT_Face tface = 0; + FT_Face tface = (FT_Face) 0; - if (FT_New_Face(fgLibrary, ttfont, 0, &tface)) { + if (FT_New_Face(fgLibrary, ttfont, ttindex, &tface)) { @@ -679,7 +679,7 @@ diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/ + fgFontID[fgFontCount] = fontid; fgCurFontIdx = fgFontCount; fgFace[fgCurFontIdx] = tface; - fgCharMap[fgCurFontIdx] = 0; + fgCharMap[fgCurFontIdx] = (FT_CharMap) 0; fgFontCount++; if (italic) { @@ -787,9 +787,9 @@ diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/ } //////////////////////////////////////////////////////////////////////////////// -diff -ur root-6.24.02.orig/graf2d/postscript/CMakeLists.txt root-6.24.02/graf2d/postscript/CMakeLists.txt ---- root-6.24.02.orig/graf2d/postscript/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/postscript/CMakeLists.txt 2021-08-11 10:49:08.587579259 +0200 +diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/postscript/CMakeLists.txt +--- root-6.28.00.orig/graf2d/postscript/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/postscript/CMakeLists.txt 2023-02-04 12:47:19.863760238 +0100 @@ -27,6 +27,7 @@ LIBRARIES ZLIB::ZLIB @@ -798,9 +798,9 @@ diff -ur root-6.24.02.orig/graf2d/postscript/CMakeLists.txt root-6.24.02/graf2d/ DEPENDENCIES Graf ) -diff -ur root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.24.02/graf2d/postscript/src/TPostScript.cxx ---- root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/postscript/src/TPostScript.cxx 2021-08-11 10:49:08.588579261 +0200 +diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/graf2d/postscript/src/TPostScript.cxx +--- root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/postscript/src/TPostScript.cxx 2023-02-04 12:47:19.864760240 +0100 @@ -234,6 +234,7 @@ #include #include @@ -1060,9 +1060,9 @@ diff -ur root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.24.02/gr { "Root.PSFont.STIXGen", "/STIXGeneral" }, { "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" }, { "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" }, -diff -ur root-6.24.02.orig/graf3d/gl/CMakeLists.txt root-6.24.02/graf3d/gl/CMakeLists.txt ---- root-6.24.02.orig/graf3d/gl/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf3d/gl/CMakeLists.txt 2021-08-11 10:49:08.589579264 +0200 +diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMakeLists.txt +--- root-6.28.00.orig/graf3d/gl/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf3d/gl/CMakeLists.txt 2023-02-04 12:47:19.867760247 +0100 @@ -208,6 +208,7 @@ ${GL2PS_LIBRARIES} ${X11_LIBRARIES} @@ -1071,9 +1071,9 @@ diff -ur root-6.24.02.orig/graf3d/gl/CMakeLists.txt root-6.24.02/graf3d/gl/CMake DEPENDENCIES Hist Gui -diff -ur root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.24.02/graf3d/gl/src/TGLFontManager.cxx ---- root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf3d/gl/src/TGLFontManager.cxx 2021-08-11 10:49:08.589579264 +0200 +diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/gl/src/TGLFontManager.cxx +--- root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf3d/gl/src/TGLFontManager.cxx 2023-02-04 12:47:19.867760247 +0100 @@ -36,6 +36,7 @@ # include "FTGLBitmapFont.h" #endif @@ -1329,9 +1329,9 @@ diff -ur root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.24.02/graf3d/ fgFontFileArray.Add(new TObjString("STIXGeneral.otf")); // 200 fgFontFileArray.Add(new TObjString("STIXGeneralItalic.otf")); // 210 fgFontFileArray.Add(new TObjString("STIXGeneralBol.otf")); // 220 -diff -ur root-6.24.02.orig/graf3d/gl/src/TGLText.cxx root-6.24.02/graf3d/gl/src/TGLText.cxx ---- root-6.24.02.orig/graf3d/gl/src/TGLText.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf3d/gl/src/TGLText.cxx 2021-08-11 10:49:08.590579267 +0200 +diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/TGLText.cxx +--- root-6.28.00.orig/graf3d/gl/src/TGLText.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf3d/gl/src/TGLText.cxx 2023-02-04 12:47:19.868760250 +0100 @@ -32,6 +32,8 @@ # include "FTGLBitmapFont.h" #endif @@ -1466,10 +1466,10 @@ diff -ur root-6.24.02.orig/graf3d/gl/src/TGLText.cxx root-6.24.02/graf3d/gl/src/ Error("SetGLTextFont","Cannot set FTGL::FaceSize"); - delete [] ttfont; } -diff -ur root-6.24.02.orig/gui/gui/src/TGApplication.cxx root-6.24.02/gui/gui/src/TGApplication.cxx ---- root-6.24.02.orig/gui/gui/src/TGApplication.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/gui/gui/src/TGApplication.cxx 2021-08-11 10:49:08.590579267 +0200 -@@ -80,20 +80,12 @@ +diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/src/TGApplication.cxx +--- root-6.28.00.orig/gui/gui/src/TGApplication.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/gui/gui/src/TGApplication.cxx 2023-02-04 12:47:19.868760250 +0100 +@@ -81,20 +81,12 @@ gROOT->SetBatch(kFALSE); if (strcmp(appClassName, "proofserv")) { diff --git a/root-get-rid-of-lsb_release.patch b/root-get-rid-of-lsb_release.patch deleted file mode 100644 index 8dca2cc..0000000 --- a/root-get-rid-of-lsb_release.patch +++ /dev/null @@ -1,245 +0,0 @@ -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-gtest-compat.patch b/root-gtest-compat.patch new file mode 100644 index 0000000..4dd4b58 --- /dev/null +++ b/root-gtest-compat.patch @@ -0,0 +1,85 @@ +From 922290ebdc5e3363adfa82dd45208862bb01630a Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 8 Feb 2023 09:50:00 +0100 +Subject: [PATCH] Fix build with -Dbuiltin_gtest:BOOL=OFF on EPEL 8 + +--- + roofit/roofitcore/test/testRooBinSamplingPdf.cxx | 7 ++++++- + roofit/roofitcore/test/testRooProdPdf.cxx | 5 +++++ + roofit/roofitcore/test/testRooRealIntegral.cxx | 5 +++++ + roofit/roofitcore/test/testTestStatistics.cxx | 2 +- + 4 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/roofit/roofitcore/test/testRooBinSamplingPdf.cxx b/roofit/roofitcore/test/testRooBinSamplingPdf.cxx +index 823fef712f..116000f9f8 100644 +--- a/roofit/roofitcore/test/testRooBinSamplingPdf.cxx ++++ b/roofit/roofitcore/test/testRooBinSamplingPdf.cxx +@@ -13,6 +13,11 @@ + + #include + ++// Backward compatibility for gtest version < 1.10.0 ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + + class ParamTest : public testing::TestWithParam> { +@@ -123,7 +128,7 @@ TEST(RooBinSamplingPdf, CheckConsistentNormalization) + EXPECT_FLOAT_EQ(int2->getVal(), int3->getVal()); + } + +-INSTANTIATE_TEST_SUITE_P(RooBinSamplingPdf, ParamTest, testing::Combine(testing::Values("Off", "Cpu")), ++INSTANTIATE_TEST_SUITE_P(RooBinSamplingPdf, ParamTest, testing::Values("Off", "Cpu"), + [](testing::TestParamInfo const ¶mInfo) { + std::stringstream ss; + ss << "BatchMode" << std::get<0>(paramInfo.param); +diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx +index 86bcf6eb48..d794fb415a 100644 +--- a/roofit/roofitcore/test/testRooProdPdf.cxx ++++ b/roofit/roofitcore/test/testRooProdPdf.cxx +@@ -16,6 +16,11 @@ + + #include + ++// Backward compatibility for gtest version < 1.10.0 ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + #include + #include +diff --git a/roofit/roofitcore/test/testRooRealIntegral.cxx b/roofit/roofitcore/test/testRooRealIntegral.cxx +index c33c6ae138..0ab6ab973f 100644 +--- a/roofit/roofitcore/test/testRooRealIntegral.cxx ++++ b/roofit/roofitcore/test/testRooRealIntegral.cxx +@@ -20,6 +20,11 @@ + + #include + ++// Backward compatibility for gtest version < 1.10.0 ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + + namespace { +diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx +index dc20b4e1c9..1623637653 100644 +--- a/roofit/roofitcore/test/testTestStatistics.cxx ++++ b/roofit/roofitcore/test/testTestStatistics.cxx +@@ -490,7 +490,7 @@ TEST_P(OffsetBinTest, CrossCheck) + EXPECT_NEAR(nllVal1, 0.0, 1e-8) << "NLL with bin offsetting is " << nllVal1 << ", and " << nllVal0 << " without it."; + } + +-INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Combine(testing::Values("Off", "Cpu")), ++INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values("Off", "Cpu"), + [](testing::TestParamInfo const ¶mInfo) { + std::stringstream ss; + ss << "BatchMode" << std::get<0>(paramInfo.param); +-- +2.39.1 + diff --git a/root-ignore-prefix.patch b/root-ignore-prefix.patch deleted file mode 100644 index 5b9918a..0000000 --- a/root-ignore-prefix.patch +++ /dev/null @@ -1,36 +0,0 @@ -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 -@@ -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() -@@ -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() --- -2.35.1 - diff --git a/root-longlong.patch b/root-longlong.patch deleted file mode 100644 index 3c43542..0000000 --- a/root-longlong.patch +++ /dev/null @@ -1,42 +0,0 @@ -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 - -Co-authored-by: Mattias Ellert ---- - 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 f41848e96a..ddbacaba0f 100644 ---- a/tree/dataframe/test/dataframe_snapshot.cxx -+++ b/tree/dataframe/test/dataframe_snapshot.cxx -@@ -495,11 +495,14 @@ void ReadWriteCarray(const char *outFileNameBase) - t.Branch("vb", vb, "vb[size]/O"); - 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; - v[0] = 12; - vb[0] = true; -- vl[0] = 8589934592; // 2**33 -+ vl[0] = longintTestValue; - t.Fill(); - - // 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()); --- -2.35.1 - diff --git a/root-make-DistRDF-optional.patch b/root-make-DistRDF-optional.patch new file mode 100644 index 0000000..653e14e --- /dev/null +++ b/root-make-DistRDF-optional.patch @@ -0,0 +1,32 @@ +From 90e7f868bc115da821c0f04dbafd80ef72e7490a Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 2 Mar 2023 08:31:29 +0100 +Subject: [PATCH 2/2] Missing experimental add-on module + ROOT.RDF.Experimental.Distributed (DistRDF) should not fail the loading of + the rest of the ROOT.RDF namespace. + +--- + bindings/pyroot/pythonizations/python/ROOT/_facade.py | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_facade.py b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +index 865321e713..69046fc71c 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_facade.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +@@ -336,8 +336,11 @@ class ROOTFacade(types.ModuleType): + ns.FromNumpy = MakeNumpyDataFrame + + if sys.version_info >= (3, 8): +- # Inject Experimental.Distributed package into namespace RDF +- ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) ++ try: ++ # Inject Experimental.Distributed package into namespace RDF if available ++ ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) ++ except ImportError: ++ pass + except: + raise Exception('Failed to pythonize the namespace RDF') + del type(self).RDF +-- +2.39.2 + diff --git a/root-make-dyld-based-library-search-behavior-default.patch b/root-make-dyld-based-library-search-behavior-default.patch deleted file mode 100644 index 9b88576..0000000 --- a/root-make-dyld-based-library-search-behavior-default.patch +++ /dev/null @@ -1,147 +0,0 @@ -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-namespace-pymva.patch b/root-namespace-pymva.patch deleted file mode 100644 index cd2fa57..0000000 --- a/root-namespace-pymva.patch +++ /dev/null @@ -1,31 +0,0 @@ -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 deleted file mode 100644 index c8aa92e..0000000 --- a/root-namespace-roofit.patch +++ /dev/null @@ -1,43 +0,0 @@ -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 deleted file mode 100644 index a011634..0000000 --- a/root-namespace-sofie.patch +++ /dev/null @@ -1,30 +0,0 @@ -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-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch b/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch new file mode 100644 index 0000000..c833930 --- /dev/null +++ b/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch @@ -0,0 +1,30 @@ +From 4ab2a1695a3f6350b454203c044db5d6f0c75dd2 Mon Sep 17 00:00:00 2001 +From: Javier Lopez-Gomez +Date: Mon, 13 Feb 2023 15:05:39 +0100 +Subject: [PATCH] [ntuple] RPageSinkBuf: add missing call to ReleasePage() + +--- + tree/ntuple/v7/src/RPageSinkBuf.cxx | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/tree/ntuple/v7/src/RPageSinkBuf.cxx b/tree/ntuple/v7/src/RPageSinkBuf.cxx +index b22ef705ef..88babb456f 100644 +--- a/tree/ntuple/v7/src/RPageSinkBuf.cxx ++++ b/tree/ntuple/v7/src/RPageSinkBuf.cxx +@@ -106,8 +106,11 @@ ROOT::Experimental::Detail::RPageSinkBuf::CommitClusterImpl(ROOT::Experimental:: + } + fInnerSink->CommitSealedPageV(toCommit); + +- for (auto &bufColumn : fBufferedColumns) +- bufColumn.DrainBufferedPages(); ++ for (auto &bufColumn : fBufferedColumns) { ++ auto drained = bufColumn.DrainBufferedPages(); ++ for (auto &bufPage : std::get>(drained)) ++ ReleasePage(bufPage.fPage); ++ } + return fInnerSink->CommitCluster(nEntries); + } + +-- +2.39.2 + diff --git a/root-ntuplewait.patch b/root-ntuplewait.patch deleted file mode 100644 index b464b69..0000000 --- a/root-ntuplewait.patch +++ /dev/null @@ -1,39 +0,0 @@ -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 deleted file mode 100644 index 7bce796..0000000 --- a/root-old-gtest-compat.patch +++ /dev/null @@ -1,477 +0,0 @@ -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" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define SetUpTestSuite SetUpTestCase -+#define TearDownTestSuite TearDownTestCase -+#endif -+ - // test iterating histogram bins and using the new THistRange and - // THBinIterator classes - -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" - -+#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 "TestHelper.h" - #include "VectorTest.h" -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" - -+#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 "VectorTest.h" - #include "TROOT.h" - #include "TSystem.h" -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" - -+#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 "TestHelper.h" - #include "VectorTest.h" -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" - -+#ifndef TYPED_TEST_SUITE -+#define TYPED_TEST_SUITE TYPED_TEST_CASE -+#endif -+ - #include - #include - #include -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" - -+#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 - #include - -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" - -+#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 -+ - using ::testing::TestWithParam; - using ::testing::Values; - -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" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif - - TEST(RooCategory, CategoryDefineMultiState) { - RooCategory myCat("myCat", "A category", { {"0Lep", 0}, {"1Lep", 1}, {"2Lep", 2}, {"3Lep", 3} }); -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 - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #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); -- EXPECT_TRUE(mergedptr); -+ EXPECT_TRUE(!!mergedptr); - - const auto &mh = mergedptr->GetValue(); - -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" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - // 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 --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 -+ -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #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 - -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 - -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-older-python.patch b/root-older-python.patch deleted file mode 100644 index fa6a05a..0000000 --- a/root-older-python.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 61116151cce8fe5b397555a65f7b55001b8e416b Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 23 Apr 2021 21:39:17 +0200 -Subject: [PATCH] Compat with no f-strings - ---- - tutorials/tmva/PyTorch_Generate_CNN_Model.py | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/tutorials/tmva/PyTorch_Generate_CNN_Model.py b/tutorials/tmva/PyTorch_Generate_CNN_Model.py -index 7024112f03..5a314f86dd 100644 ---- a/tutorials/tmva/PyTorch_Generate_CNN_Model.py -+++ b/tutorials/tmva/PyTorch_Generate_CNN_Model.py -@@ -56,7 +56,7 @@ def fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, crit - # print train statistics - running_train_loss += train_loss.item() - if i % 4 == 3: # print every 4 mini-batches -- print(f"[{epoch+1}, {i+1}] train loss: {running_train_loss / 4 :.3f}") -+ print("[{}, {}] train loss: {:.3f}".format(epoch+1, i+1, running_train_loss / 4)) - running_train_loss = 0.0 - - if schedule: -@@ -75,15 +75,15 @@ def fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, crit - - curr_val = running_val_loss / len(val_loader) - if save_best: -- if best_val==None: -- best_val = curr_val -- best_val = save_best(model, curr_val, best_val) -+ if best_val is None: -+ best_val = curr_val -+ best_val = save_best(model, curr_val, best_val) - - # print val statistics per epoch -- print(f"[{epoch+1}] val loss: {curr_val :.3f}") -+ print("[{}] val loss: {:.3f}".format(epoch+1, curr_val)) - running_val_loss = 0.0 - -- print(f"Finished Training on {epoch+1} Epochs!") -+ print("Finished Training on {} Epochs!".format(epoch+1)) - - return model - --- -2.30.2 - diff --git a/root-rcolor-static-init.patch b/root-rcolor-static-init.patch deleted file mode 100644 index 18e4299..0000000 --- a/root-rcolor-static-init.patch +++ /dev/null @@ -1,42 +0,0 @@ -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-tutorial.patch b/root-roofit-tutorial.patch deleted file mode 100644 index 9d73e11..0000000 --- a/root-roofit-tutorial.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 914e46f1c591f8b9b34115863ff31e42e19bfb97 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -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-stressvector-test-fails-on-ix86.patch b/root-stressvector-test-fails-on-ix86.patch new file mode 100644 index 0000000..ca3f212 --- /dev/null +++ b/root-stressvector-test-fails-on-ix86.patch @@ -0,0 +1,37 @@ +From df2902f6c970aa903200a272fd6a79788da3df4f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 28 Feb 2023 11:33:28 +0100 +Subject: [PATCH] The stressVector test fails on ix86 due to too strict check: + +DeltaR TLorentzVector time = 0.2610929 (sec) +DeltaR XYZTVector time = 0.22973299 (sec) +DeltaR PtEtaPhiEVector time = 0.0016570091 (sec) +-12823.3585955796 -12823.35859557827 -12823.35859557827 +Test DeltaR failed !! + +The new value for the scale parameter (50) was calculated from the +above values: + +root [2] (-12823.3585955796 - (-12823.35859557827)) / -12823.3585955796 / std::numeric_limits::epsilon() / 10 +(double) 46.762663 +--- + test/stressVector.cxx | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/test/stressVector.cxx b/test/stressVector.cxx +index 83b86fb2b4..18dc97d421 100644 +--- a/test/stressVector.cxx ++++ b/test/stressVector.cxx +@@ -540,8 +540,7 @@ int main(int argc,const char *argv[]) { + s1=a.testDeltaR (v1, t, t1, "DeltaR TLorentzVector " ); + s2=a.testDeltaR (v2, t, t2, "DeltaR XYZTVector " ); + s3=a.testDeltaR (v3, t, t3, "DeltaR PtEtaPhiEVector " ); +- a.check("DeltaR",s1,s2,s3,15); +- ++ a.check("DeltaR", s1, s2, s3, 50); + + int n1, n2, n3; + n1 = a.testAnalysis (v1, t, t1, "Analysis1 TLorentzVector " ); +-- +2.39.2 + diff --git a/root-symbol-rewrite.patch b/root-symbol-rewrite.patch deleted file mode 100644 index c91bbe6..0000000 --- a/root-symbol-rewrite.patch +++ /dev/null @@ -1,31 +0,0 @@ -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-test-timeout.patch b/root-test-timeout.patch deleted file mode 100644 index a07aa39..0000000 --- a/root-test-timeout.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 4d09235937ea29913cbf9a9b5bcd002b52557c0e Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 3 Jul 2022 08:18:57 +0200 -Subject: [PATCH] Increase test timeout - ---- - cmake/modules/RootMacros.cmake | 14 +++++++------- - tmva/tmva/test/DNN/CMakeLists.txt | 2 +- - tree/tree/test/CMakeLists.txt | 2 +- - tutorials/CMakeLists.txt | 4 ++-- - 4 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake -index cc61f4bbad..3e4559fc19 100644 ---- a/cmake/modules/RootMacros.cmake -+++ b/cmake/modules/RootMacros.cmake -@@ -1779,6 +1779,7 @@ endfunction() - #---------------------------------------------------------------------------- - # function ROOT_ADD_GTEST( source1 source2... - # [WILLFAIL] Negate output of test -+# [TIMEOUT seconds] - # [COPY_TO_BUILDDIR file1 file2] Copy listed files when ctest invokes the test. - # [LIBRARIES lib1 lib2...] -- Libraries to link against - # [LABELS label1 label2...] -- Labels to annotate the test -@@ -1790,7 +1791,7 @@ endfunction() - function(ROOT_ADD_GTEST test_suite) - cmake_parse_arguments(ARG - "WILLFAIL" -- "REPEATS;FAILREGEX" -+ "TIMEOUT;REPEATS;FAILREGEX" - "COPY_TO_BUILDDIR;LIBRARIES;LABELS;INCLUDE_DIRS" ${ARGN}) - - ROOT_GET_SOURCES(source_files . ${ARG_UNPARSED_ARGUMENTS}) -@@ -1821,9 +1822,7 @@ function(ROOT_ADD_GTEST test_suite) - if(ARG_WILLFAIL) - set(willfail WILLFAIL) - endif() -- if(ARG_LABELS) -- set(labels "LABELS ${ARG_LABELS}") -- endif() -+ - if(ARG_REPEATS) - set(extra_command --gtest_repeat=${ARG_REPEATS} --gtest_break_on_failure) - endif() -@@ -1833,10 +1832,11 @@ function(ROOT_ADD_GTEST test_suite) - gtest${mangled_name} - COMMAND ${test_suite} ${extra_command} - WORKING_DIR ${CMAKE_CURRENT_BINARY_DIR} -- COPY_TO_BUILDDIR ${ARG_COPY_TO_BUILDDIR} -+ COPY_TO_BUILDDIR "${ARG_COPY_TO_BUILDDIR}" - ${willfail} -- ${labels} -- FAILREGEX ${ARG_FAILREGEX} -+ TIMEOUT "${ARG_TIMEOUT}" -+ LABELS "${ARG_LABELS}" -+ FAILREGEX "${ARG_FAILREGEX}" - ) - endfunction() - -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/tree/tree/test/CMakeLists.txt b/tree/tree/test/CMakeLists.txt -index dbe664f8a0..6284e3c4c5 100644 ---- a/tree/tree/test/CMakeLists.txt -+++ b/tree/tree/test/CMakeLists.txt -@@ -20,7 +20,7 @@ ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer) - target_include_directories(testTOffsetGeneration PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - ROOT_STANDARD_LIBRARY_PACKAGE(SillyStruct NO_INSTALL_HEADERS HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/SillyStruct.h SOURCES SillyStruct.cxx LINKDEF SillyStructLinkDef.h DEPENDENCIES RIO) - ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer) --ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer) -+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000) - ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer) - ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct) - ROOT_ADD_GTEST(testTBasket TBasket.cxx LIBRARIES RIO Tree) -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index 6ae9be5869..982432fe15 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.38.1 - diff --git a/root-testRooAbsL-test-compares-two-doubles-and-fails.patch b/root-testRooAbsL-test-compares-two-doubles-and-fails.patch new file mode 100644 index 0000000..24a4148 --- /dev/null +++ b/root-testRooAbsL-test-compares-two-doubles-and-fails.patch @@ -0,0 +1,49 @@ +From d6a11ace0d3d25c96dd20cef1436642b5caa102e Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 28 Feb 2023 11:02:03 +0100 +Subject: [PATCH] The testRooAbsL test compares two doubles and fails due to + rounding errors. The failure happens on ppc64le and aarch64. + +This PR changes EXPECT_EQ to EXPECT_DOUBLE_EQ in the affected test. + +[ RUN ] SimBinnedConstrainedTest.SubEventSections +/builddir/build/BUILD/root-6.28.00/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx:293: Failure +Expected equality of these values: + whole.Sum() + Which is: -1263.796050661927 + N_events_total_parts.Sum() + Which is: -1263.7960506619268 +/builddir/build/BUILD/root-6.28.00/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx:303: Failure +Expected equality of these values: + whole.Sum() + Which is: -1263.796050661927 + thrice_N_events_total_parts.Sum() + Which is: -1263.7960506619268 +[ FAILED ] SimBinnedConstrainedTest.SubEventSections (199 ms) +--- + roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx +index 600f4da7be..05dcd6a241 100644 +--- a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx ++++ b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx +@@ -293,7 +293,7 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) + {static_cast(ix) / N_events_total, static_cast(ix + 1) / N_events_total}, 0, + likelihood->getNComponents()); + } +- EXPECT_EQ(whole.Sum(), N_events_total_parts.Sum()); ++ EXPECT_DOUBLE_EQ(whole.Sum(), N_events_total_parts.Sum()); + + // now let's do it again over a number of sections 3 times the number of events + ROOT::Math::KahanSum thrice_N_events_total_parts; +@@ -303,5 +303,5 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) + {static_cast(ix) / (3 * N_events_total), static_cast(ix + 1) / (3 * N_events_total)}, 0, + likelihood->getNComponents()); + } +- EXPECT_EQ(whole.Sum(), thrice_N_events_total_parts.Sum()); ++ EXPECT_DOUBLE_EQ(whole.Sum(), thrice_N_events_total_parts.Sum()); + } +-- +2.39.2 + diff --git a/root-threadsh1-avoid-heap-use-after-free.patch b/root-threadsh1-avoid-heap-use-after-free.patch deleted file mode 100644 index 6111f2b..0000000 --- a/root-threadsh1-avoid-heap-use-after-free.patch +++ /dev/null @@ -1,48 +0,0 @@ -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-Speed-up-TMVA-CNN-and-RNN-tutorials.patch b/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch new file mode 100644 index 0000000..6a719c5 --- /dev/null +++ b/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch @@ -0,0 +1,239 @@ +From 54a05a995bef827413d69b63559494a78ed56946 Mon Sep 17 00:00:00 2001 +From: moneta +Date: Tue, 14 Feb 2023 11:00:44 +0100 +Subject: [PATCH] [tmva] Speed up TMVA CNN and RNN tutorials + +Run tutorials with a amximum of 4 threads to avoid MT problems on some machines. +Disable also OpenMP when running in MT in ROOT + +Reduce also by a factor of 5 the number of input events +--- + tutorials/tmva/TMVA_CNN_Classification.C | 25 +++++++++++++++------- + tutorials/tmva/TMVA_CNN_Classification.py | 12 +++++------ + tutorials/tmva/TMVA_RNN_Classification.C | 11 +++++----- + tutorials/tmva/TMVA_RNN_Classification.py | 26 ++++++++++------------- + 4 files changed, 39 insertions(+), 35 deletions(-) + +diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C +index 0966017ae2..cc6829a24d 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.C ++++ b/tutorials/tmva/TMVA_CNN_Classification.C +@@ -107,7 +107,16 @@ void MakeImagesTree(int n, int nh, int nw) + f.Close(); + } + +-void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) ++/// @brief Run the TMVA CNN Classification example ++/// @param nevts : number of signal/background events. Use by default a low value (1000) ++/// but increase to at least 5000 to get a good result ++/// @param opt : vector of bool with method used (default all on if available). The order is: ++/// - TMVA CNN ++/// - Keras CNN ++/// - TMVA DNN ++/// - TMVA BDT ++/// - PyTorch CNN ++void TMVA_CNN_Classification(int nevts = 1000, std::vector opt = {1, 1, 1, 1, 1}) + { + + bool useTMVACNN = (opt.size() > 0) ? opt[0] : false; +@@ -125,17 +134,17 @@ 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 = 4; // use by default 4 threads if value is not set before ++ // switch off MT in OpenBLAS to avoid conflict with tbb ++ gSystem->Setenv("OMP_NUM_THREADS", "1"); + + 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)); + } +- else +- gSystem->Setenv("OMP_NUM_THREADS", "1"); ++ + + std::cout << "Running with nthreads = " << ROOT::GetThreadPoolSize() << std::endl; + +@@ -161,7 +170,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + The factory is the major TMVA object you have to interact with. Here is the list of parameters you need to pass + + - The first argument is the base of the name of all the output +- weightfiles in the directory weight/ that will be created with the ++ weight files in the directory weight/ that will be created with the + method parameters + + - The second argument is the output file for the training results +@@ -208,7 +217,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + + // if file does not exists create it + if (!fileExist) { +- MakeImagesTree(5000, 16, 16); ++ MakeImagesTree(nevts, 16, 16); + } + + // TString inputFileName = "tmva_class_example.root"; +@@ -289,7 +298,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + // Boosted Decision Trees + if (useTMVABDT) { + factory.BookMethod(loader, TMVA::Types::kBDT, "BDT", +- "!V:NTrees=400:MinNodeSize=2.5%:MaxDepth=2:BoostType=AdaBoost:AdaBoostBeta=0.5:" ++ "!V:NTrees=200:MinNodeSize=2.5%:MaxDepth=2:BoostType=AdaBoost:AdaBoostBeta=0.5:" + "UseBaggedBoost:BaggedSampleFraction=0.5:SeparationType=GiniIndex:nCuts=20"); + } + /** +diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py +index 0760bacfd9..85fde20763 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.py ++++ b/tutorials/tmva/TMVA_CNN_Classification.py +@@ -25,6 +25,9 @@ + + import ROOT + ++#switch off MT in OpenMP (BLAS) ++ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") ++ + TMVA = ROOT.TMVA + TFile = ROOT.TFile + +@@ -105,6 +108,7 @@ def MakeImagesTree(n, nh, nw): + hasGPU = ROOT.gSystem.GetFromPipe("root-config --has-tmva-gpu") == "yes" + hasCPU = ROOT.gSystem.GetFromPipe("root-config --has-tmva-cpu") == "yes" + ++nevt = 1000 # use a larger value to get better results + opt = [1, 1, 1, 1, 1] + useTMVACNN = opt[0] if len(opt) > 0 else False + useKerasCNN = opt[1] if len(opt) > 1 else False +@@ -141,17 +145,13 @@ if not useTMVACNN: + + writeOutputFile = True + +-num_threads = 0 # use default threads ++num_threads = 4 # use default threads + max_epochs = 10 # maximum number of epochs used for training + + + # do enable MT running + if num_threads >= 0: + ROOT.EnableImplicitMT(num_threads) +- if (num_threads > 0) : +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", str(num_threads)) +-else: +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") + + print("Running with nthreads = ", ROOT.GetThreadPoolSize()) + +@@ -218,7 +218,7 @@ inputFileName = "images_data_16x16.root" + + # if the input file does not exist create it + if ROOT.gSystem.AccessPathName(inputFileName): +- MakeImagesTree(5000, 16, 16) ++ MakeImagesTree(nevt, 16, 16) + + inputFile = TFile.Open(inputFileName) + if inputFile is None: +diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C +index 2711673ec9..8701ba6c19 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.C ++++ b/tutorials/tmva/TMVA_RNN_Classification.C +@@ -136,13 +136,14 @@ void MakeTimeData(int n, int ntime, int ndim ) + } + } + /// macro for performing a classification using a Recurrent Neural Network ++/// @param nevts = 2000 Number of events used. (increase for better classification results) + /// @param use_type + /// use_type = 0 use Simple RNN network + /// use_type = 1 use LSTM network + /// use_type = 2 use GRU + /// use_type = 3 build 3 different networks with RNN, LSTM and GRU + +-void TMVA_RNN_Classification(int use_type = 1) ++void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1) + { + + const int ninput = 30; +@@ -150,7 +151,7 @@ void TMVA_RNN_Classification(int use_type = 1) + const int batchSize = 100; + const int maxepochs = 20; + +- int nTotEvts = 10000; // total events to be generated for signal or background ++ int nTotEvts = nevts; // total events to be generated for signal or background + + bool useKeras = true; + +@@ -190,14 +191,12 @@ void TMVA_RNN_Classification(int use_type = 1) + useKeras = false; + #endif + +- int num_threads = 0; // use by default all threads ++ int num_threads = 4; // use by default all threads ++ gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS + // 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)); + } +- else +- gSystem->Setenv("OMP_NUM_THREADS", "1"); + + TMVA::Config::Instance(); + +diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py +index 88280a5849..625a120b3d 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.py ++++ b/tutorials/tmva/TMVA_RNN_Classification.py +@@ -22,6 +22,16 @@ + + import ROOT + ++num_threads = 4 # use max 4 threads ++# do enable MT running ++if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": ++ ROOT.EnableImplicitMT(num_threads) ++ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS ++ print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) ++else: ++ print("Running in serail mode since ROOT does not support MT") ++ ++ + TMVA = ROOT.TMVA + TFile = ROOT.TFile + +@@ -141,7 +151,7 @@ ntime = 10 + batchSize = 100 + maxepochs = 10 + +-nTotEvts = 10000 # total events to be generated for signal or background ++nTotEvts = 2000 # total events to be generated for signal or background + + useKeras = True + +@@ -184,22 +194,8 @@ if ROOT.gSystem.GetFromPipe("root-config --has-tmva-pymva") == "yes": + else: + useKeras = False + +-num_threads = 0 # use by default all threads +-# do enable MT running +-if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": +- if num_threads >= 0: +- ROOT.EnableImplicitMT(num_threads) +- if num_threads > 0: +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", str(num_threads)) +- else: +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") + + +- print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) +- +-else: +- print("Running in serail mode since ROOT does not support MT") +- + inputFileName = "time_data_t10_d30.root" + + fileDoesNotExist = ROOT.gSystem.AccessPathName(inputFileName) +-- +2.39.2 + diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch deleted file mode 100644 index 7506abc..0000000 --- a/root-tmva-threads.patch +++ /dev/null @@ -1,79 +0,0 @@ -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 - 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 | 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..b748fcee6c 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.C -+++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -125,14 +125,16 @@ 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(); - - // 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..f902025875 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.C -+++ b/tutorials/tmva/TMVA_RNN_Classification.C -@@ -190,11 +190,13 @@ 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); -- 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-unbundle-gtest.patch b/root-unbundle-gtest.patch deleted file mode 100644 index 1bdf869..0000000 --- a/root-unbundle-gtest.patch +++ /dev/null @@ -1,202 +0,0 @@ -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) - - set_property(TEST ${test} APPEND PROPERTY ENVIRONMENT ROOT_HIST=0) - -- #- 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 deleted file mode 100644 index 05cfd56..0000000 --- a/root-uring-warn.patch +++ /dev/null @@ -1,43 +0,0 @@ -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-use-consistent-minimum-python-version-for-DistRDF.patch b/root-use-consistent-minimum-python-version-for-DistRDF.patch new file mode 100644 index 0000000..23e9e5c --- /dev/null +++ b/root-use-consistent-minimum-python-version-for-DistRDF.patch @@ -0,0 +1,27 @@ +From 8624d1c7eb4f532d6843118251d9564650f89924 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 2 Mar 2023 08:25:36 +0100 +Subject: [PATCH 1/2] Use consistent minimum Python version for DistRDF The + minimum version was changed in bindings/CMakeLists.txt but not in the check + in the code. + +--- + bindings/pyroot/pythonizations/python/ROOT/_facade.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_facade.py b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +index 7370a234d1..865321e713 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_facade.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +@@ -335,7 +335,7 @@ class ROOTFacade(types.ModuleType): + ns.MakeNumpyDataFrame = DeprecatedMakeNumpy + ns.FromNumpy = MakeNumpyDataFrame + +- if sys.version_info >= (3, 7): ++ if sys.version_info >= (3, 8): + # Inject Experimental.Distributed package into namespace RDF + ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) + except: +-- +2.39.2 + diff --git a/root-use-unique-filenames-in-fillrandom-tutorials.patch b/root-use-unique-filenames-in-fillrandom-tutorials.patch deleted file mode 100644 index 724eb79..0000000 --- a/root-use-unique-filenames-in-fillrandom-tutorials.patch +++ /dev/null @@ -1,25 +0,0 @@ -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-veto-tests-using-clad-when-clad-is-disabled.patch b/root-veto-tests-using-clad-when-clad-is-disabled.patch new file mode 100644 index 0000000..d201fdb --- /dev/null +++ b/root-veto-tests-using-clad-when-clad-is-disabled.patch @@ -0,0 +1,66 @@ +From 6583668f3e5f1b4e1d219a5a92a19da31d8d5494 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 1 Mar 2023 18:32:45 +0100 +Subject: [PATCH] Veto tests using clad when clad is disabled + +--- + math/minuit2/test/CMakeLists.txt | 8 ++++---- + tutorials/CMakeLists.txt | 9 ++++++--- + 2 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/math/minuit2/test/CMakeLists.txt b/math/minuit2/test/CMakeLists.txt +index 7ecf30350c..8951ac0a84 100644 +--- a/math/minuit2/test/CMakeLists.txt ++++ b/math/minuit2/test/CMakeLists.txt +@@ -11,10 +11,10 @@ if(NOT DEFINED ROOT_SOURCE_DIR) + include(${ROOT_USE_FILE}) + endif() + +-set(TestSource +- testMinimizer.cxx +- testADMinim.cxx +-) ++set(TestSource testMinimizer.cxx) ++if (clad) ++ list(APPEND TestSource testADMinim.cxx) ++endif() + + set(TestSourceMnTutorial + MnTutorial/Quad1FMain.cxx +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index bf7c1d4089..deb5f67d23 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -65,16 +65,18 @@ endfunction() + + #---Tutorials disabled depending on the build components------------- + if(NOT ROOT_minuit2_FOUND) +- set(minuit2_veto fit/fit2dHist.C fit/fit2dHist.C +- fit/fitCircle.C fit/minuit2FitBench2D.C ++ set(minuit2_veto fit/fit2dHist.C fit/fitCircle.C + fit/minuit2FitBench2D.C fit/minuit2FitBench.C +- fit/minuit2FitBench.C fit/minuit2GausFit.C + fit/minuit2GausFit.C fit/NumericalMinimization.C + fit/combinedFit.C fit/TestBinomial.C + fit/fitNormSum.C fit/vectorizedFit.C + tutorials/roostats/rs_bernsteinCorrection.C) + endif() + ++if(NOT clad) ++ set(clad_veto fit/minuit2GausFit.C) ++endif() ++ + if (NOT dataframe) + # RDataFrame + list(APPEND dataframe_veto dataframe/*.C dataframe/*.py) +@@ -457,6 +459,7 @@ set(all_veto hsimple.C + ${spectrum_veto} + ${dataframe_veto} + ${macm1_veto} ++ ${clad_veto} + ) + + file(GLOB_RECURSE tutorials RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.C) +-- +2.39.2 + diff --git a/root.spec b/root.spec index 7b8e3be..eb06a82 100644 --- a/root.spec +++ b/root.spec @@ -1,23 +1,13 @@ +# Needed for EPEL 8 %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 -%else -%global buildpy2 1 -%endif - -%if %{buildpy2} -%global python2_version_uscore %(tr . _ <<< "%{python2_version}") -%endif %global python3_version_uscore %(tr . _ <<< "%{python3_version}") -%if %{?fedora}%{!?fedora:0} >= 34 || %{?rhel}%{!?rhel:0} >= 9 +%if %{?fedora}%{!?fedora:0} || %{?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 @@ -25,46 +15,41 @@ %global root7 0 %endif -%global xrootd5 1 - -%global webgui 1 - -%global gfal2 1 - -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 -# The SOFIE parser requires protobuf 3.0 -%global tmvasofieparser 1 -%else +%if %{?rhel}%{!?rhel:0} == 8 +%ifarch %{power64} +# These modules cause "pure virtual method called" errors +# https://github.com/root-project/root/issues/12372 +%global dataframe 0 +%global roofit 0 %global tmvasofieparser 0 +%else +%global dataframe 1 +%global roofit 1 +%global tmvasofieparser 1 +%endif +%else +%global dataframe 1 +%global roofit 1 +%global tmvasofieparser 1 %endif %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -# DistRDF requires Python 3.7+ -%global distrdf 1 +# DistRDF requires Python 3.8+ +%global distrdf %{dataframe} %else %global distrdf 0 %endif -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 -# Multi-threading support requires TBB version >= 2018 -%global tbb 1 -%else -%global tbb 0 -%endif - -# Do not create .orig files when patching source -%global _default_patch_flags --no-backup-if-mismatch - # Do not generate autoprovides for Python modules -%global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ +%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.26.10 +Version: 6.28.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework -License: LGPLv2+ +License: LGPL-2.1-or-later URL: https://root.cern/ # The upstream source is modified to exclude proprietary fonts # See Source8 for how to create Source0 @@ -86,118 +71,75 @@ Source7: JupyROOT-on-EPEL 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 -Patch4: %{name}-memory-usage.patch +Patch1: %{name}-memory-usage.patch # Reduce memory usage during linking on ARM and x86 by generating # smaller debuginfo for the llvm libraries # Fedora builders run out of memory with the default setting -Patch5: %{name}-memory-arm-x86.patch +Patch2: %{name}-memory-arm-x86.patch # Don't install minicern static library -Patch6: %{name}-dont-install-minicern.patch +Patch3: %{name}-dont-install-minicern.patch # Do not export Python modules in CMake config -Patch7: %{name}-no-export-python-modules.patch +Patch4: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled -Patch8: %{name}-32bit-tests.patch +Patch5: %{name}-32bit-tests.patch # Use local static script and style files for JsMVA -Patch9: %{name}-jsmva-static.patch -# Fix python bytecode compilation on EPEL 7 -# Compatibility with older python versions (no f-strings) -Patch10: %{name}-older-python.patch -# Backported fix from LLVM upstream -Patch11: %{name}-symbol-rewrite.patch -# Backport gcc 12 fix from LLVM -# https://github.com/root-project/root/pull/9586 -Patch12: %{name}-fix-compilation-with-gcc-12.patch +Patch6: %{name}-jsmva-static.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}-ignore-prefix.patch -# Use different filenames in io/loopdir tests -# https://github.com/root-project/root/pull/11725 -Patch16: %{name}-different-filename.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 +Patch7: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.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}-make-dyld-based-library-search-behavior-default.patch -Patch33: %{name}-get-rid-of-lsb_release.patch -Patch34: %{name}-threadsh1-avoid-heap-use-after-free.patch -Patch35: %{name}-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch -Patch36: %{name}-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch -# Avoid race condition between C++ an Python version of test -# https://github.com/root-project/root/pull/11643 -Patch37: %{name}-avoid-race-condition-tutorial-roofit-rf512.patch +Patch8: %{name}-big-endian-byte-swap.patch # Add missing #include # https://github.com/root-project/root/pull/12065 -Patch38: %{name}-add-missing-include-cstdint.patch -# Backport from upstream -Patch39: %{name}-fix-compilation-with-gcc13.patch -# numpy.object obsolete since numpy 1.20 and removed since 1.24 -# https://github.com/root-project/root/issues/12148 -# https://github.com/root-project/root/pull/12159 -Patch40: %{name}-avoid-deprecated-numpy.object.patch +Patch9: %{name}-add-missing-include-cstdint.patch +# https://github.com/root-project/root/pull/12218 +Patch10: %{name}-Simplify-creation-of-TargetMachine.patch +# Fix build with -Dbuiltin_gtest:BOOL=OFF on EPEL 8 +# https://github.com/root-project/root/pull/12250 +Patch11: %{name}-gtest-compat.patch +# Limit the number of threads in TMVA CNN/DNN test to save memory +# https://github.com/root-project/root/pull/12310 +Patch12: %{name}-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch +# https://github.com/root-project/root/issues/12293 +# https://github.com/root-project/root/pull/12335 +Patch13: %{name}-Set-DataLayout-from-our-TargetMachine.patch +# https://github.com/root-project/root/issues/12294 +# https://github.com/root-project/root/pull/12353 +Patch14: %{name}-cling-Disable-outline-atomics-on-AArch64.patch +# https://github.com/root-project/root/pull/12385 +Patch15: %{name}-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch +# https://github.com/root-project/root/pull/12389 +Patch16: %{name}-testRooAbsL-test-compares-two-doubles-and-fails.patch +# https://github.com/root-project/root/pull/12390 +Patch17: %{name}-stressvector-test-fails-on-ix86.patch +# https://github.com/root-project/root/pull/12402 +Patch18: %{name}-dont-install-roofit-files-when-roofit-is-disabled.patch +# https://github.com/root-project/root/pull/12403 +Patch19: %{name}-veto-tests-using-clad-when-clad-is-disabled.patch +# https://github.com/root-project/root/pull/12407 +Patch20: %{name}-use-consistent-minimum-python-version-for-DistRDF.patch +Patch21: %{name}-make-DistRDF-optional.patch +# https://github.com/root-project/root/pull/12423 +Patch22: %{name}-dont-install-roofit-files-fix.patch +# https://github.com/root-project/root/issues/12430 +# https://github.com/root-project/root/pull/12447 +Patch23: %{name}-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch +# https://github.com/root-project/root/issues/12427 +# https://github.com/root-project/root/pull/12468 +Patch24: %{name}-fixes-for-32bit-builds.patch +# https://github.com/root-project/root/pull/12476 +Patch25: %{name}-do-not-remove-Wp-before-D-and-U.patch +# Backport (fixes a failing test on ix86) +Patch26: %{name}-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch -%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: cmake >= 3.16 BuildRequires: libX11-devel BuildRequires: libXpm-devel BuildRequires: libXft-devel @@ -222,62 +164,38 @@ BuildRequires: libxml2-devel BuildRequires: fftw-devel BuildRequires: gsl-devel BuildRequires: unuran-devel -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 BuildRequires: mariadb-connector-c-devel -%else -BuildRequires: mysql-devel -%endif BuildRequires: sqlite-devel BuildRequires: unixODBC-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel -%if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8 BuildRequires: libpq-devel -%else -BuildRequires: postgresql-devel -%endif -%if %{buildpy2} -BuildRequires: python2-devel -BuildRequires: python2-setuptools -BuildRequires: python2-numpy -%endif BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy -%if %{webgui} %ifarch %{qt5_qtwebengine_arches} BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtwebengine-devel %endif -%endif BuildRequires: openssl-devel BuildRequires: libtool-ltdl-devel BuildRequires: desktop-file-utils BuildRequires: dcap-devel -%if %{xrootd5} BuildRequires: xrootd-client-devel >= 1:5.0.0 -%else -BuildRequires: xrootd-client-devel >= 1:3.3.5 -BuildRequires: xrootd-private-devel >= 1:3.3.5 -%endif BuildRequires: cfitsio-devel 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: graphviz-devel BuildRequires: expat-devel BuildRequires: pythia8-devel >= 8.1.80 -%if %{?fedora}%{!?fedora:0} >= 33 || %{?rhel}%{!?rhel:0} >= 9 +%if %{?fedora}%{!?fedora:0} || %{?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) @@ -286,7 +204,9 @@ BuildRequires: cmake-data >= 3.18.3-1 BuildRequires: openblas-devel %endif BuildRequires: json-devel -%if %{?fedora}%{!?fedora:0} +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +# Disable uring in EPEL 8 (liburing is available, but uring not +# supported by the kernel) BuildRequires: liburing-devel %endif %if %{tmvasofieparser} @@ -310,12 +230,15 @@ BuildRequires: font(z003) BuildRequires: font(droidsansfallback) # With gdb installed test failures will show backtraces BuildRequires: gdb +# Defines _jsdir +BuildRequires: web-assets-devel Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: hicolor-icon-theme Requires: emacs-filesystem >= %{_emacs_version} Provides: emacs-%{name} = %{version}-%{release} @@ -363,7 +286,7 @@ This package contains icons used by the ROOT GUI. Summary: ROOT font collection BuildArch: noarch # STIX version 0.9 only -License: OFL +License: OFL-1.1 Requires: %{name}-core = %{version}-%{release} %description fonts @@ -380,7 +303,7 @@ This package contains the tutorial scripts and test suite for ROOT. %package core Summary: ROOT core libraries -License: LGPLv2+ and BSD +License: LGPL-2.1-or-later AND LGPL-2.0-or-later AND ISC AND MIT AND NCSA Requires: %{name}-fonts = %{version}-%{release} Requires: %{name}-icons = %{version}-%{release} # Dynamic dependencies @@ -402,7 +325,9 @@ Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-physics%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +%if %{dataframe} Requires: %{name}-tree-dataframe%{?_isa} = %{version}-%{release} +%endif Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: %{name}-vecops%{?_isa} = %{version}-%{release} # To resolve dependency in installed ROOTConfig.cmake @@ -431,17 +356,6 @@ Obsoletes: %{name}-net-globus < 6.18.00 Obsoletes: %{name}-net-ldap < 6.18.00 Obsoletes: %{name}-net-krb5 < 6.18.00 Obsoletes: %{name}-table < 6.18.00 -%if ! %{buildpy2} -Obsoletes: python2-%{name} < %{version}-%{release} -Obsoletes: python2-jupyroot < %{version}-%{release} -Obsoletes: python2-jsmva < %{version}-%{release} -Obsoletes: %{name}-rootaas < 6.08.00 -%endif -%if %{?rhel}%{!?rhel:0} == 7 -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 Obsoletes: %{name}-memstat < 6.26.00 Obsoletes: %{name}-montecarlo-vmc < 6.26.00 Obsoletes: %{name}-doc < 6.26.00 @@ -458,12 +372,24 @@ 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} +# Obsolete the DistRDF package in EPEL 8 +# Minimum Python version requirement introduced Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00 +%ifarch %{power64} +# Obsolete for ppc64le in EPEL 8 +# These modules cause "pure virtual method called" errors +Obsoletes: %{name}-tree-dataframe < 6.28.00 +Obsoletes: %{name}-roofit < 6.28.00 +Obsoletes: %{name}-roofit-common < 6.28.00 +Obsoletes: %{name}-roofit-core < 6.28.00 +Obsoletes: %{name}-roofit-more < 6.28.00 +Obsoletes: %{name}-roofit-batchcompute < 6.28.00 +Obsoletes: %{name}-roofit-dataframe-helpers < 6.28.00 +Obsoletes: %{name}-roofit-hs3 < 6.28.00 +Obsoletes: %{name}-roostats < 6.28.00 +Obsoletes: %{name}-hist-factory < 6.28.00 +Obsoletes: %{name}-tmva-sofie-parser < 6.28.00 +%endif %endif %description core @@ -481,7 +407,7 @@ This package provides ROOT's multi-processor support library: libMultiProc. %package cling Summary: Cling C++ interpreter -License: NCSA and (NCSA or LGPLv2+) +License: (NCSA OR LGPL-2.1-only) AND (Apache-2.0 WITH LLVM-exception OR NCSA) AND BSD-2-Clause AND BSD-3-Clause AND MIT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} # Root's cling interpreter uses a particular git commit of @@ -491,11 +417,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} # visible outside of the libCling module. 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 @@ -506,6 +428,13 @@ Obsoletes: %{name}-reflex < 6.00.00 Cling is an interactive C++ interpreter, built on top of Clang and LLVM compiler infrastructure. +%package testsupport +Summary: Unit test support library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description testsupport +This package contains the unit test support library for ROOT. + %package tpython Summary: ROOT's TPython interface Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -517,51 +446,6 @@ Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00 This package contains ROOT's TPython interface. It makes it possible to call Python from ROOT. -%if %{buildpy2} -%package -n python2-%{name} -Summary: Python extension for ROOT -%py_provides python2-%{name} -Provides: %{name}-python = %{version}-%{release} -Obsoletes: %{name}-python < 6.08.00 -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} - -%description -n python2-%{name} -This package contains the Python extension for ROOT. It makes it -possible to use ROOT classes in Python. - -%package -n python2-jupyroot -Summary: ROOT Jupyter kernel -%py_provides python2-jupyroot -Requires: python2-%{name}%{?_isa} = %{version}-%{release} -Requires: python2-jsmva = %{version}-%{release} -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-notebook = %{version}-%{release} -%if %{?fedora}%{!?fedora:0} >= 26 -# python-metakernel for python2 not available in -# Fedora <= 25 or RHEL/EPEL - some functionality missing -Requires: python2-ipython -Requires: python2-metakernel -%endif -%if %{?fedora}%{!?fedora:0} >= 28 -Requires: python-jupyter-filesystem -%endif -Obsoletes: %{name}-rootaas < 6.08.00 - -%description -n python2-jupyroot -The Jupyter kernel for the ROOT notebook. - -%package -n python2-jsmva -Summary: TMVA interface used by JupyROOT -BuildArch: noarch -%py_provides python2-jsmva -Requires: %{name}-tmva = %{version}-%{release} - -%description -n python2-jsmva -TMVA interface used by JupyROOT. -%endif - %package -n python%{python3_pkgversion}-%{name} Summary: Python extension for ROOT %py_provides python%{python3_pkgversion}-%{name} @@ -584,13 +468,11 @@ Requires: python%{python3_pkgversion}-%{name}%{?_isa} = %{version}-%{release} Requires: python%{python3_pkgversion}-jsmva = %{version}-%{release} Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-notebook = %{version}-%{release} -%if %{?fedora}%{!?fedora:0} >= 26 -# python-metakernel for python3 not available in -# Fedora <= 25 or RHEL/EPEL - some functionality missing +%if %{?fedora}%{!?fedora:0} +# python-metakernel not available in RHEL/EPEL +# some functionality missing Requires: python%{python3_pkgversion}-ipython Requires: python%{python3_pkgversion}-metakernel -%endif -%if %{?fedora}%{!?fedora:0} >= 28 Requires: python-jupyter-filesystem %endif @@ -658,17 +540,41 @@ This package contains a genetic minimizer module for ROOT. %package geom Summary: Geometry library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 + +%description geom +This package contains a library for defining geometries in ROOT. + +%package geom-builder +Summary: Geometry builder library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 + +%description geom-builder +This package contains a library for building geometries in ROOT. + +%package geom-painter +Summary: Geometry painter library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 -%description geom -This package contains a library for defining geometries in ROOT. +%description geom-painter +This package contains a library for drawing geometries in ROOT. %package gdml Summary: GDML import/export for ROOT geometries @@ -724,6 +630,7 @@ Summary: Canvas and pad library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} # Dynamic dependency Requires: %{name}-graf-postscript%{?_isa} = %{version}-%{release} @@ -981,24 +888,6 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} %description spectrum-painter This package contains a painter of spectra for ROOT. -%package hist-factory -Summary: RooFit PDFs from ROOT histograms -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -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} - -%description hist-factory -Create RooFit probability density functions from ROOT histograms. - %package html Summary: HTML documentation generator for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1024,7 +913,6 @@ 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} @@ -1032,7 +920,6 @@ 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 @@ -1079,7 +966,7 @@ easier to use for the average user. %package fftw Summary: FFTW library for ROOT -License: GPLv2+ +License: GPL-2.0-or-later Requires: %{name}-core%{?_isa} = %{version}-%{release} %description fftw @@ -1116,7 +1003,7 @@ This package contains the MathCore library for ROOT. %package mathmore Summary: GSL interface library for ROOT -License: GPLv2+ +License: GPL-2.0-or-later Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} @@ -1235,7 +1122,7 @@ discriminating variables. %package unuran Summary: Random number generator library -License: GPLv2+ +License: GPL-2.0-or-later Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} @@ -1324,7 +1211,7 @@ access to http based storage such as webdav and S3. Summary: HTTP server extension for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: js-jsroot >= 6 +Requires: js-jsroot >= 7 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -1356,8 +1243,7 @@ Requires: %{name}-net%{?_isa} = %{version}-%{release} %description netx This package contains the NetX extension for ROOT, i.e. a client for -the xrootd server. Both the old (NetX) and the new (NetXNG) version are -provided. +the xrootd server. Only the new (NetXNG) version is provided. %package proof Summary: PROOF extension for ROOT @@ -1371,9 +1257,7 @@ Obsoletes: %{name}-peac < 5.34.01 # Package split (proof-player from proof) Obsoletes: %{name}-proof < 6.14.00 Obsoletes: %{name}-proofd < 6.16.00 -%if %{xrootd5} -Obsoletes: %{name}-xproof < %{version}-%{release} -%endif +Obsoletes: %{name}-xproof < 6.22.08-2 %description proof This package contains the proof extension for ROOT. This provides a @@ -1425,25 +1309,10 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} This package contains a library for browsing an interactive PROOF session in ROOT. -%if ! %{xrootd5} -%package xproof -Summary: XPROOF extension for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} -Requires: %{name}-proof%{?_isa} = %{version}-%{release} -# Dynamic dependency -Requires: %{name}-net-rpdutils%{?_isa} = %{version}-%{release} -Requires: xrootd-server%{?_isa} - -%description xproof -This package contains the xproof extension for ROOT. This provides a -client to be used in a PROOF environment. -%endif - +%if %{roofit} %package roofit Summary: ROOT extension for modeling expected distributions - toolkit -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1472,7 +1341,7 @@ This package contains the RooFit toolkit classes. %package roofit-common Summary: ROOT extension for modeling expected distributions - common -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} %description roofit-common @@ -1492,7 +1361,7 @@ This package contains the RooFit common classes. %package roofit-core Summary: ROOT extension for modeling expected distributions - core -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-foam%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} @@ -1501,7 +1370,6 @@ 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} @@ -1525,11 +1393,10 @@ This package contains the core RooFit classes. %package roofit-more Summary: ROOT extension for modeling expected distributions - more -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-mathmore%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1551,6 +1418,7 @@ This package contains RooFit classes that use the mathmore library. %package roofit-batchcompute Summary: Optimized computation functions for PDFs +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} @@ -1569,9 +1437,10 @@ 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. +%if %{dataframe} %package roofit-dataframe-helpers Summary: RooFit DaraFrame helpers -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} %description roofit-dataframe-helpers @@ -1588,14 +1457,16 @@ 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 +%endif %package roofit-hs3 Summary: RooFit HS3 -License: BSD +License: BSD-2-Clause 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}-roofit-jsoninterface%{?_isa} = %{version}-%{release} Requires: %{name}-roostats%{?_isa} = %{version}-%{release} %description roofit-hs3 @@ -1606,9 +1477,28 @@ 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 roofit-jsoninterface +Summary: JSON interface to RooFit +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description roofit-jsoninterface +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 JSON interface to RooFit. + %package roostats Summary: Statistical tools built on top of RooFit -License: BSD Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} @@ -1627,6 +1517,22 @@ Obsoletes: %{name}-roofit < 6.20.00 RooStats is a package containing statistical tools built on top of RooFit. +%package hist-factory +Summary: RooFit PDFs from ROOT histograms +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description hist-factory +Create RooFit probability density functions from ROOT histograms. +%endif + %package sql-mysql Summary: MySQL client plugin for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1672,7 +1578,7 @@ ROOT environment. %package tmva Summary: Toolkit for multivariate data analysis -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} @@ -1710,7 +1616,7 @@ compared. %package tmva-python Summary: Toolkit for multivariate data analysis (Python) -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-tmva%{?_isa} = %{version}-%{release} Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} @@ -1721,7 +1627,7 @@ Python integration with TMVA. %package tmva-r Summary: Toolkit for multivariate data analysis (R) -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-r%{?_isa} = %{version}-%{release} @@ -1732,6 +1638,7 @@ R integration with TMVA. %package tmva-sofie Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} %description tmva-sofie @@ -1744,6 +1651,7 @@ produces C++ header files that can be included and utilized in a %if %{tmvasofieparser} %package tmva-sofie-parser Summary: ROOT/TMVA SOFIE Parsers +License: BSD-3-Clause AND MIT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} @@ -1753,7 +1661,7 @@ Parsers for ROOT/TMVA SOFIE %package tmva-gui Summary: Toolkit for multivariate data analysis GUI -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} @@ -1777,6 +1685,7 @@ Requires: %{name}-net%{?_isa} = %{version}-%{release} %description tree This package contains the Tree library for ROOT. +%if %{dataframe} %package tree-dataframe Summary: A high level interface to ROOT trees Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1794,6 +1703,7 @@ Obsoletes: %{name}-tree-player < 6.14.00 %description tree-dataframe This package contains a high level interface to ROOT trees. +%endif %package tree-player Summary: Library to loop over a ROOT tree @@ -1829,6 +1739,17 @@ Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description tree-viewer This package contains a plugin for browsing a ROOT tree in ROOT. +%package tree-webviewer +Summary: ROOT tree web viewer library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} + +%description tree-webviewer +This package contains a plugin for browsing a ROOT tree in a web GUI. + %package unfold Summary: Distribution unfolding Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1853,34 +1774,34 @@ Summary: Static files for the Jupyter ROOT Notebook BuildArch: noarch Requires: %{name}-core = %{version}-%{release} Requires: js-jsroot >= 6 -%if %{?fedora}%{!?fedora:0} >= 26 -# jupyter-notebook not available in -# Fedora <= 25 or RHEL/EPEL - some functionality missing +%if %{?fedora}%{!?fedora:0} +# jupyter-notebook not available in RHEL/EPEL +# some functionality missing Requires: jupyter-notebook %endif %description notebook Javascript and style files for the Jupyter ROOT Notebook. -%if %{webgui} %package gui-webdisplay -Summary: Web display (ROOT 7) +Summary: Web display for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-net-http%{?_isa} = %{version}-%{release} %description gui-webdisplay -This package contains a web display extension for ROOT 7. +This package contains a web display extension for ROOT. %ifarch %{qt5_qtwebengine_arches} %package gui-qt5webdisplay -Summary: Qt5 Web display (ROOT 7) +Summary: Qt5 Web display 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. +This package contains a Qt5 web display extension for ROOT. %endif %package gui-webgui6 @@ -1888,16 +1809,25 @@ 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 geom-webviewer +Summary: Geometry web viewer library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description geom-webviewer +This package contains a library for viewing geometries in a web GUI. + %package graf-gpadv7 Summary: Canvas and pad library for ROOT (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1950,13 +1880,15 @@ This package contains GUI browsable components for ROOT 7. Summary: Browser (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-webviewer%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} -Requires: %{name}-graf3d-eve7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webgui6%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-webviewer%{?_isa} = %{version}-%{release} %description gui-browserv7 This package contains a file browser for ROOT 7. @@ -2003,10 +1935,52 @@ 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. + +%package tree-ntuple-utils +Summary: Ntuple utility library (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} + +%description tree-ntuple-utils +This package contains utility functions for ntuples. + +%if %{roofit} +%package xroofit +Summary: Extra tools for RooFit projects +License: BSD-2-Clause +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-ged%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-hs3%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description xroofit +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 extra tools for RooFit projects. +%endif %endif %prep @@ -2039,20 +2013,6 @@ This package contains an ntuple extension for ROOT 7. %patch24 -p1 %patch25 -p1 %patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2089,30 +2049,17 @@ rm -rf documentation/doxygen/mathjax.tar.gz # * jsroot 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/* - # Remove pre-minified script and style files 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 +%if %{?rhel}%{!?rhel:0} == 8 +# Allow older json on EPEL 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 -# Brace initialization list is ambiguous with old compiler -sed 's!.*dataframe_datasetspec!### &!' -i tree/dataframe/test/CMakeLists.txt -%endif - %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} @@ -2129,12 +2076,15 @@ for s in etc/notebook/JsMVA/css/*.css ; do python3 -m rcssmin < ${s} > ${s%.css}.min.css done -# Avoid overlinking (this used to be the default with the old configure script) +# Avoid overlinking (this is the default on Fedora and EPEL 9) +%if %{?rhel}%{!?rhel:0} == 8 LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" +%endif -%cmake3 \ +%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir}/%{name} \ + -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ -DCMAKE_INSTALL_ELISPDIR:PATH=%{_emacs_sitelispdir}/%{name} \ @@ -2180,7 +2130,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dcuda:BOOL=OFF \ -Dcxxmodules:BOOL=OFF \ -Ddaos:BOOL=OFF \ +%if %{dataframe} -Ddataframe:BOOL=ON \ +%else + -Ddataframe:BOOL=OFF \ +%endif -Ddavix:BOOL=ON \ -Ddcache:BOOL=ON \ -Ddev:BOOL=OFF \ @@ -2191,24 +2145,18 @@ 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 \ -%if %{tbb} -Dimt:BOOL=ON \ -%else - -Dimt:BOOL=OFF \ -%endif -Djemalloc:BOOL=OFF \ -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ -Dminuit2:BOOL=ON \ + -Dminuit2_mpi:BOOL=OFF \ + -Dminuit2_omp:BOOL=OFF \ -Dmlp:BOOL=ON \ -Dmonalisa:BOOL=OFF \ -Dmpi:BOOL=OFF \ @@ -2228,7 +2176,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %endif -Dqt6web:BOOL=OFF \ -Dr:BOOL=ON \ +%if %{roofit} -Droofit:BOOL=ON \ +%else + -Droofit:BOOL=OFF \ +%endif -Droofit_multiprocess:BOOL=OFF \ -Droofit_hs3_ryml:BOOL=OFF \ %if %{root7} @@ -2247,11 +2199,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dssl:BOOL=ON \ -Dtcmalloc:BOOL=OFF \ -Dtmva:BOOL=ON \ -%if %{tbb} -Dtmva-cpu:BOOL=ON \ -%else - -Dtmva-cpu:BOOL=OFF \ -%endif -Dtmva-gpu:BOOL=OFF \ -Dtmva-pymva:BOOL=ON \ -Dtmva-rmva:BOOL=ON \ @@ -2261,7 +2209,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva-sofie:BOOL=OFF \ %endif -Dunuran:BOOL=ON \ -%if %{?fedora}%{!?fedora:0} +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -During:BOOL=ON \ %else -During:BOOL=OFF \ @@ -2270,19 +2218,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dvdt:BOOL=OFF \ -Dveccore:BOOL=OFF \ -Dvecgeom:BOOL=OFF \ -%if %{webgui} -Dwebgui:BOOL=ON \ -%else - -Dwebgui:BOOL=OFF \ -%endif -Dx11:BOOL=ON \ -Dxml:BOOL=ON \ -Dxrootd:BOOL=ON \ -%if %{xrootd5} -Dxproofd:BOOL=OFF \ -%else - -Dxproofd:BOOL=ON \ -%endif -Dfail-on-missing:BOOL=ON \ -Dtesting:BOOL=ON \ -Dtest_distrdf_pyspark:BOOL=OFF \ @@ -2292,10 +2232,10 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Droottest:BOOL=OFF \ -Drootbench:BOOL=OFF \ -Dasan:BOOL=OFF -%cmake3_build +%cmake_build %install -%cmake3_install +%cmake_install # Do emacs byte compilation emacs -batch -no-site-file -f batch-byte-compile \ @@ -2319,100 +2259,41 @@ install -p -m 644 %{SOURCE7} %{buildroot}%{_pkgdocdir} # Move python cli helper to its own directory mkdir -p %{buildroot}%{_datadir}/%{name}/cli -mv %{buildroot}%{_libdir}/%{name}/cmdLineUtils.py* \ +mv %{buildroot}%{python3_sitearch}/cmdLineUtils.py \ %{buildroot}%{_datadir}/%{name}/cli -rm %{buildroot}%{_libdir}/%{name}/__pycache__/cmdLineUtils.* sed -e '/^\#!/d' -i %{buildroot}%{_datadir}/%{name}/cli/cmdLineUtils.py # Install GDB pretty printers to auto load safe path -# These are installed (in libdir) by "make install" if CMAKE_BUILD_TYPE -# matches Debug or RelWithDebInfo mkdir -p %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} -install -p -m 644 build/gdbPrinters/libCore.so-gdb.py \ - %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name}/libCore.so.%{version}-gdb.py -install -p -m 644 build/gdbPrinters/libRooFitCore.so-gdb.py \ - %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name}/libRooFitCore.so.%{version}-gdb.py +mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ + %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} + +# Let rpm redo the python byte compilation +find %{buildroot}%{python3_sitearch} -depth -type d -name __pycache__ -exec rm -r {} ';' # Do python byte compilation (for non-standard paths) -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 -# This is the default for Fedora 30+, set it for Fedora 28-29 -%global _python_bytecompile_extra 0 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/%{name}/cli %py_byte_compile %{__python3} %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} -%endif -%if %{buildpy2} - -# Move the python modules to sitearch/sitelib -mkdir -p %{buildroot}%{python2_sitearch} - -cp -pr %{buildroot}%{_libdir}/%{name}/cppyy %{buildroot}%{python2_sitearch} -ln -s ../../root/libcppyy%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libcppyy%{python2_version_uscore}.so - -cp -pr %{buildroot}%{_libdir}/%{name}/cppyy_backend %{buildroot}%{python2_sitearch} -ln -s ../../root/libcppyy_backend%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libcppyy_backend%{python2_version_uscore}.so - -cp -pr %{buildroot}%{_libdir}/%{name}/ROOT %{buildroot}%{python2_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libROOTPythonizations%{python2_version_uscore}.so -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python2_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python2_version_uscore}.so - -cp -pr %{buildroot}%{_libdir}/%{name}/JupyROOT %{buildroot}%{python2_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libJupyROOT%{python2_version_uscore}.so -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so - -mkdir -p %{buildroot}%{python2_sitelib} -cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib} - -# Create .egg-info files so that rpm auto-generates provides -echo 'Name: ROOT' > \ - %{buildroot}%{python2_sitearch}/ROOT-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitearch}/ROOT-%{version}.egg-info -echo 'Name: JupyROOT' > \ - %{buildroot}%{python2_sitearch}/JupyROOT-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitearch}/JupyROOT-%{version}.egg-info -echo 'Name: JsMVA' > \ - %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info - -%endif - -# Move the python modules to sitearch/sitelib -mkdir -p %{buildroot}%{python3_sitearch} - -mv %{buildroot}%{_libdir}/%{name}/cppyy %{buildroot}%{python3_sitearch} -ln -s ../../root/libcppyy%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libcppyy%{python3_version_uscore}%{python3_ext_suffix} - -mv %{buildroot}%{_libdir}/%{name}/cppyy_backend %{buildroot}%{python3_sitearch} -ln -s ../../root/libcppyy_backend%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so - -mv %{buildroot}%{_libdir}/%{name}/ROOT %{buildroot}%{python3_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \ +# Fix python extension suffix +mv %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \ %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion} +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so -mv %{buildroot}%{_libdir}/%{name}/JupyROOT %{buildroot}%{python3_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so.%{version} \ +mv %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{version} \ %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so +rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{libversion} +rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so +# Move noarch python modules to sitelib +if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then mkdir -p %{buildroot}%{python3_sitelib} -mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib} +mv %{buildroot}%{python3_sitearch}/JsMVA %{buildroot}%{python3_sitelib} %if %{distrdf} -mv %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python3_sitelib} +mv %{buildroot}%{python3_sitearch}/DistRDF %{buildroot}%{python3_sitelib} %endif +fi # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2437,16 +2318,6 @@ echo 'Version: %{version}' >> \ # Put jupyter stuff in the right places mkdir -p %{buildroot}%{_datadir}/jupyter/kernels -%if %{buildpy2} -cp -pr %{buildroot}%{_datadir}/%{name}/notebook/kernels/root \ - %{buildroot}%{_datadir}/jupyter/kernels/python2-jupyroot -sed -e 's/ROOT C++/& (Python 2)/' \ - -e 's!python[0-9]*\.[0-9]*!%{__python2}!' \ - -i %{buildroot}%{_datadir}/jupyter/kernels/python2-jupyroot/kernel.json -sed -e '/^\#!/d' \ - -i %{buildroot}%{python2_sitearch}/JupyROOT/kernel/rootkernel.py -%endif - cp -pr %{buildroot}%{_datadir}/%{name}/notebook/kernels/root \ %{buildroot}%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot sed -e 's/ROOT C++/& (Python 3)/' \ @@ -2522,43 +2393,34 @@ 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 ! %{webgui} -rm TGuiFactory/P030_TWebGuiFactory.C -%endif -%if %{xrootd5} rm TProofMgr/P010_TXProofMgr.C rm TProofServ/P010_TXProofServ.C rm TSlave/P010_TXSlave.C -%endif rm TSQLServer/P040_TOracleServer.C rm TSystem/P030_TAlienSystem.C rm TVirtualGeoConverter/P010_TGeoVGConverter.C %if ! %{root7} -rm TVirtualGeoPainter/P020_REveGeoPainter.C +rm TVirtualGeoPainter/P020_RGeoPainter.C %endif rm TVirtualGLImp/P020_TGWin32GL.C rm TVirtualMonitoringWriter/P010_TMonaLisaWriter.C rm TVirtualX/P030_TGWin32.C rm TVirtualX/P050_TGQuartz.C rmdir TGrid -%if %{xrootd5} rmdir TProofMgr rmdir TProofServ rmdir TSlave -%endif rmdir TVirtualGeoConverter popd # 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 +for x in build img modules scripts files/draw.htm files/online.htm ; do + ln -nrs %{buildroot}%{_jsdir}/jsroot/$x \ + %{buildroot}%{_datadir}/%{name}/js/$x done # Create ldconfig configuration @@ -2568,17 +2430,13 @@ echo %{_libdir}/%{name} > \ # Make ROOTConfig-targets.cmake not error on missing files to work better with # subpackages -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 -%global pkgmgr dnf -%else -%global pkgmgr yum -%endif -sed -e '/FATAL.*import/i\ message(WARNING "The imported target \\"\${target}\\" references the file\ - \\"\${file}\\"\ -but this file does not exist. If this target is used you need to install the package that provides this file\ - %{pkgmgr} install \${file}\ +sed -e 's/FATAL_ERROR \(.*imported\)/WARNING \1/' \ + -e '/Possible reasons include/i\ +but this file does not exist.\ +If this target is used you need to install the package that provides this\ +file using \\"dnf install\\".\ If this target is not used this warning can be ignored.")' \ - -e '/FATAL.*import/,/)/d' \ + -e '/Possible reasons include/,/)/d' \ -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets.cmake # Rename to avoid name clashes @@ -2591,30 +2449,17 @@ for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f` l=`tr / - <<< $l` tmpdir=`mktemp -d` -%if %{?rhel}%{!?rhel:0} == 7 - DESTDIR=$tmpdir cmake3 -DCMAKE_INSTALL_COMPONENT=headers -P $f > /dev/null -%else DESTDIR=$tmpdir cmake -DCMAKE_INSTALL_COMPONENT=headers -P $f > /dev/null -%endif ( cd $tmpdir ; find . -type f) | sort | sed 's!^\.!!' > $l rm -rf $tmpdir done # ... and merge some of them cat includelist-core-{[^mw],m[^au]}* > includelist-core -cat includelist-geom-geom* > includelist-geom cat includelist-graf2d-x11ttf >> includelist-graf2d-x11 cat includelist-graf3d-rglew >> includelist-graf3d-gl -cat includelist-net-netxng > includelist-netx -%if ! %{xrootd5} -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 @@ -2704,8 +2549,6 @@ popd # reads input data over network # http://root.cern/files/tmva101.root # -# - pyunittests-pyroot-dependency-versions -# - pyunittests-pyroot-numbadeclare # - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py # these tests require the numba python module which is not available @@ -2742,8 +2585,6 @@ gtest-tmva-tmva-test-rstandardscaler|\ tutorial-tmva-tmva003_RReader|\ tutorial-tmva-tmva004_RStandardScaler|\ tutorial-tmva-tmva103_Application|\ -pyunittests-pyroot-dependency-versions|\ -pyunittests-pyroot-numbadeclare|\ test-import-numba|\ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ test-webgui-ping" @@ -2752,29 +2593,25 @@ test-webgui-ping" # - 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 -# or EPEL 9 +# Requires the pandas python module not (yet) available in RHEL/EPEL 9 excluded="${excluded}|\ test-import-pandas|\ tutorial-dataframe-df026_AsNumpyArrays-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif -%if %{?rhel}%{!?rhel:0} == 7 -# - pyunittests-pyroot-roofit-roodataset-numpy -# AttributeError: module 'numpy' has no attribute 'isin' -excluded="${excluded}|\ -pyunittests-pyroot-roofit-roodataset-numpy" -%endif - %if %{?fedora}%{!?fedora:0} >= 38 -# Failures with Fedora 38 (GCC 13 related?) +# - pyunittests-dataframe-histograms +# - tutorial-legacy-rootenv +# Failures with Fedora 38 (GCC 13 related?) excluded="${excluded}|\ pyunittests-dataframe-histograms|\ tutorial-legacy-rootenv" %ifarch %{ix86} -# Failures with Fedora 38 i686 (after numpy 1.24 update) +# - pyunittests-pyroot-roofit-roodataset-numpy +# Failures with Fedora 38 i686 (after numpy 1.24 update) +# https://github.com/root-project/root/issues/12162 excluded="${excluded}|\ pyunittests-pyroot-roofit-roodataset-numpy" %endif @@ -2782,7 +2619,6 @@ pyunittests-pyroot-roofit-roodataset-numpy" %ifarch %{arm} # 32 bit arm specific failures -# # - gtest-tree-tree-test-testBulkApi # - gtest-tree-tree-test-testBulkApiSillyStruct # - gtest-tree-dataframe-test-dataframe-snapshot @@ -2799,76 +2635,34 @@ pyunittests-distrdf-unit-test-headnode" %endif %ifarch %{power64} aarch64 -# This test fails on ppc64le and aarch64 (but not on x86_64) -# The interpreted version works though, only compiled version fails # - test-stresshistofit -excluded="${excluded}|test-stresshistofit\$\$" +# - test-stressroofit +# - test-stressroofit-batchmode-cpu +# - test-stressroofit-interpreted +excluded="${excluded}|\ +test-stresshistofit\$\$|\ +test-stressroofit\$\$|\ +test-stressroofit-batchmode-cpu|\ +test-stressroofit-interpreted" %endif %ifarch %{power64} # PPC64LE specific failures -# # - test-stresshistofit-interpreted # - test-stresshistogram-interpreted # - test-stressmathcore-interpreted # - test-stressroostats-interpreted # # Always timeout (hang?) -# - pyunittests-pyroot-pyz-rdataframe-makenumpy -# - tutorial-dataframe-df032_MakeNumpyDataFrame-py +# - test-stressinterpreter +# - tutorial-unuran-unuranFoamTest excluded="${excluded}|\ test-stresshistofit-interpreted|\ test-stresshistogram-interpreted|\ test-stressmathcore-interpreted|\ test-stressroostats-interpreted|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -tutorial-dataframe-df032_MakeNumpyDataFrame-py" - -%if %{?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-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 +test-stressinterpreter|\ +tutorial-unuran-unuranFoamTest" %if %{?rhel}%{!?rhel:0} == 8 # Fails on ppc64le since RHEL 8.5 update @@ -2879,115 +2673,121 @@ tutorial-dataframe-df004_cutFlowReport" # - librt-2.28 # - pyunittests-pyroot-import-load-libs # -# crash - double free or corruption (out) +# - tutorial-fit-combinedFit(-py) +# - tutorial-fit-exampleFit3D +# - tutorial-fit-fit2dHist +# - tutorial-fit-fitCircle +# - tutorial-fit-line3Dfit +# - tutorial-multicore-mt103_fillNtupleFromMultipleThreads # - tutorial-multicore-mt201_parallelHistoFill -# -# segmentation violation # - tutorial-multicore-mt304_fillHistos +# - tutorial-multicore-mtbb001_fillHistos +# - tutorial-multicore-mtbb101_fillNtuples +# - tutorial-multicore-mtbb201_parallelHistoFill excluded="${excluded}|\ pyunittests-pyroot-import-load-libs|\ +tutorial-fit-combinedFit|\ +tutorial-fit-exampleFit3D|\ +tutorial-fit-fit2dHist|\ +tutorial-fit-fitCircle|\ +tutorial-fit-line3Dfit|\ +tutorial-multicore-mt103_fillNtupleFromMultipleThreads|\ tutorial-multicore-mt201_parallelHistoFill|\ -tutorial-multicore-mt304_fillHistos" +tutorial-multicore-mt304_fillHistos|\ +tutorial-multicore-mtbb001_fillHistos|\ +tutorial-multicore-mtbb101_fillNtuples|\ +tutorial-multicore-mtbb201_parallelHistoFill" %endif %endif %ifarch s390x -# 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 -# - pyunittests-pyroot-pyz-stl-vector -# - test-stresshistofit(-interpreted) -# - test-stresshistogram(-interpreted) -# - tutorial-dataframe-df006_ranges-py -# - tutorial-math-exampleFunction-py # - tutorial-roofit-rf612_recoverFromInvalidParameters +# Uses "Packed NaN" feature, not implemented for big endian. excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker|\ -gtest-roofit-roofitcore-test-testRooProdPdf|\ -gtest-tree-dataframe-test-datasource-ntuple|\ +tutorial-roofit-rf612_recoverFromInvalidParameters" + +# - gtest-tree-ntuple-v7-test-ntuple-basics +# - gtest-tree-ntuple-v7-test-ntuple-endian +# - gtest-tree-ntuple-v7-test-ntuple-extended +# - gtest-tree-ntuple-v7-test-ntuple-minifile +# - gtest-tree-ntuple-v7-test-ntuple-rdf +# - gtest-tree-ntuple-v7-test-ntuple-serialize +# - gtest-tree-ntuple-v7-test-ntuple-types +# https://github.com/root-project/root/issues/12426 +# +# - pyunittests-pyroot-pyz-rtensor +# - pyunittests-pyroot-pyz-stl-vector +# - tutorial-dataframe-df006_ranges-py +# - tutorial-fit-combinedFit-py +# - tutorial-math-exampleFunction-py +# - tutorial-tmva-TMVA_CNN_Classification-py +# - tutorial-tmva-TMVA_Higgs_Classification-py +# - tutorial-tmva-TMVA_RNN_Classification-py +# https://github.com/root-project/root/issues/12429 +# +# - tutorial-tree-drawsparse +# https://github.com/root-project/root/issues/12431 +# +# - test-stresshistofit +# - test-stresshistofit-interpreted +# - test-stresshistogram +# - test-stresshistogram-interpreted +# - test-stressroofit +# - test-stressroofit-batchmode-cpu +# - test-stressroofit-interpreted +excluded="${excluded}|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ +gtest-tree-ntuple-v7-test-ntuple-endian|\ 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-rdf|\ gtest-tree-ntuple-v7-test-ntuple-serialize|\ +gtest-tree-ntuple-v7-test-ntuple-types|\ pyunittests-pyroot-pyz-rtensor|\ pyunittests-pyroot-pyz-stl-vector|\ -test-stresshistofit|\ -test-stresshistogram|\ tutorial-dataframe-df006_ranges-py|\ +tutorial-fit-combinedFit-py|\ tutorial-math-exampleFunction-py|\ -tutorial-roofit-rf612_recoverFromInvalidParameters" +tutorial-tmva-TMVA_CNN_Classification-py|\ +tutorial-tmva-TMVA_Higgs_Classification-py|\ +tutorial-tmva-TMVA_RNN_Classification-py|\ +tutorial-tree-drawsparse|\ +test-stresshistofit\$\$|\ +test-stresshistofit-interpreted|\ +test-stresshistogram\$\$|\ +test-stresshistogram-interpreted|\ +test-stressroofit\$\$|\ +test-stressroofit-batchmode-cpu|\ +test-stressroofit-interpreted" %if %{?rhel}%{!?rhel:0} == 8 # Issues with file sizes on EPEL 8 s390x +# - gtest-tree-readspeed-test-readspeed-general # - gtest-tree-tree-test-testTBranch # - test-stress # - test-stressgraphics(-interpreted) excluded="${excluded}|\ +gtest-tree-readspeed-test-readspeed-general|\ gtest-tree-tree-test-testTBranch|\ test-stress\$\$|\ test-stressgraphics" %endif - -%if %{?fedora}%{!?fedora:0} >= 38 -# Segmentation faults and invalid pointers -# Mainly related to DataFrame -excluded="${excluded}|\ -pyunittests-dataframe|\ -pyunittests-distrdf-unit-backend-test-dist|\ -pyunittests-distrdf-unit-test-headnode|\ -pyunittests-pyroot-pyz-rdataframe-asnumpy|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -pyunittests-pyroot-rdfdescription|\ -gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ -gtest-tree-dataframe-test-dataframe|\ -gtest-tree-dataframe-test-datasource|\ -gtest-tree-ntuple-v7-test-ntuple-rdf|\ -tutorial-dataframe-df|\ -tutorial-graphs-timeSeriesFromCSV_TDF|\ -tutorial-multicore-mt304_fillHistos|\ -tutorial-rcanvas|\ -tutorial-roofit-rf408_RDataFrameToRooFit-py|\ -tutorial-roofit-rf508_listsetmanip-py|\ -tutorial-tmva-tmva002_RDataFrameAsTensor|\ -tutorial-v7-concurrentfill.cxx|\ -tutorial-v7-histops.cxx|\ -tutorial-v7-perf.cxx|\ -tutorial-v7-perfcomp.cxx|\ -tutorial-v7-simple.cxx" -%endif %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}\"" -popd - -%if %{?rhel}%{!?rhel:0} == 7 -%post -touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1 || : -update-desktop-database >/dev/null 2>&1 || : -update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : - -%postun -if [ $1 -eq 0 ] ; then - touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1 - gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : -fi -update-desktop-database >/dev/null 2>&1 || : -update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : - -%posttrans -gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : +# RNTuple.TClassEBO seg fault +# https://github.com/root-project/root/issues/12428 +GTEST_FILTER=-RCsvDS.Remote:RRawFile.Remote:RSqliteDS.Davix:TFile.ReadWithoutGlobalRegistrationWeb:TFile.ReadWithoutGlobalRegistrationNet:RNTuple.TClassEBO \ +%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) +ROOTTEST_IGNORE_PANDAS_PY3=1 \ %endif +ROOTTEST_IGNORE_NUMBA_PY3=1 \ +ROOTTEST_IGNORE_JUPYTER_PY3=1 \ +make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" + +popd %pretrans net-http -p path = "%{_datadir}/%{name}/js" @@ -2998,22 +2798,13 @@ 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 +for x in build img modules scripts files/draw.htm files/online.htm ; do + ln -fnrs %{_jsdir}/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 - for alt in `grep python2.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do - %{_sbindir}/update-alternatives --remove libPyROOT.so $alt - done -fi -%endif - %pre -n python%{python3_pkgversion}-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do @@ -3028,7 +2819,7 @@ if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then fi cat << EOF >> /etc/jupyter/jupyter_notebook_config.py # Extra static path for JupyROOT - start - do not remove this line -c.NotebookApp.extra_static_paths.append('%{_datadir}/javascript/jsroot') +c.NotebookApp.extra_static_paths.append('%{_jsdir}/jsroot') c.NotebookApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') # Extra static path for JupyROOT - end - do not remove this line EOF @@ -3037,7 +2828,7 @@ if [ -e /etc/jupyter/jupyter_server_config.py ] ; then fi cat << EOF >> /etc/jupyter/jupyter_server_config.py # Extra static path for JupyROOT - start - do not remove this line -c.ServerApp.extra_static_paths.append('%{_datadir}/javascript/jsroot') +c.ServerApp.extra_static_paths.append('%{_jsdir}/jsroot') c.ServerApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') # Extra static path for JupyROOT - end - do not remove this line EOF @@ -3066,14 +2857,13 @@ fi %ldconfig_scriptlets multiproc %ldconfig_scriptlets cling %ldconfig_scriptlets tpython -%if %{buildpy2} -%ldconfig_scriptlets -n python2-%{name} -%endif %ldconfig_scriptlets -n python%{python3_pkgversion}-%{name} %ldconfig_scriptlets r %ldconfig_scriptlets r-tools %ldconfig_scriptlets genetic %ldconfig_scriptlets geom +%ldconfig_scriptlets geom-builder +%ldconfig_scriptlets geom-painter %ldconfig_scriptlets gdml %ldconfig_scriptlets graf %ldconfig_scriptlets graf-asimage @@ -3099,13 +2889,10 @@ fi %ldconfig_scriptlets hist-painter %ldconfig_scriptlets spectrum %ldconfig_scriptlets spectrum-painter -%ldconfig_scriptlets hist-factory %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 @@ -3137,17 +2924,20 @@ fi %ldconfig_scriptlets proof-bench %ldconfig_scriptlets proof-player %ldconfig_scriptlets proof-sessionviewer -%if ! %{xrootd5} -%ldconfig_scriptlets xproof -%endif +%if %{roofit} %ldconfig_scriptlets roofit %ldconfig_scriptlets roofit-common %ldconfig_scriptlets roofit-core %ldconfig_scriptlets roofit-more %ldconfig_scriptlets roofit-batchcompute +%if %{dataframe} %ldconfig_scriptlets roofit-dataframe-helpers +%endif +%ldconfig_scriptlets roofit-jsoninterface %ldconfig_scriptlets roofit-hs3 %ldconfig_scriptlets roostats +%ldconfig_scriptlets hist-factory +%endif %ldconfig_scriptlets sql-mysql %ldconfig_scriptlets sql-odbc %ldconfig_scriptlets sql-sqlite @@ -3161,18 +2951,20 @@ fi %endif %ldconfig_scriptlets tmva-gui %ldconfig_scriptlets tree +%if %{dataframe} %ldconfig_scriptlets tree-dataframe +%endif %ldconfig_scriptlets tree-player %ldconfig_scriptlets tree-viewer +%ldconfig_scriptlets tree-webviewer %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 geom-webviewer %ldconfig_scriptlets graf-gpadv7 %ldconfig_scriptlets graf-primitives %ldconfig_scriptlets graf3d-eve7 @@ -3183,6 +2975,10 @@ fi %ldconfig_scriptlets histv7 %ldconfig_scriptlets hist-draw %ldconfig_scriptlets tree-ntuple +%ldconfig_scriptlets tree-ntuple-utils +%if %{roofit} +%ldconfig_scriptlets xroofit +%endif %endif %files @@ -3190,8 +2986,10 @@ fi %{_bindir}/root %{_bindir}/root.exe %{_bindir}/rootn.exe +%{_bindir}/rootreadspeed %{_bindir}/roots %{_bindir}/roots.exe +%{_bindir}/rootssh %{_mandir}/man1/hadd.1* %{_mandir}/man1/root.1* %{_mandir}/man1/root.exe.1* @@ -3228,10 +3026,8 @@ fi %{_libdir}/%{name}/lib*Dict.* %dir %{_datadir}/gdb/auto-load%{_libdir}/%{name} %{_datadir}/gdb/auto-load%{_libdir}/%{name}/libCore.* -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 %dir %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__ %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__/libCore.* -%endif %dir %{_datadir}/%{name} %{_datadir}/%{name}/allDict.cxx.pch %{_datadir}/%{name}/class.rules @@ -3288,41 +3084,21 @@ fi %doc interpreter/llvm/src/llvm-README.txt %license interpreter/llvm/src/llvm-LICENSE.TXT +%files testsupport +%{_includedir}/%{name}/ROOT/TestSupport.hxx +%{_libdir}/%{name}/libTestSupport.a +%doc core/testsupport/README.md + %files tpython -f includelist-bindings-tpython %{_libdir}/%{name}/libROOTTPython.* %{_libdir}/%{name}/libROOTTPython_rdict.pcm -%if %{buildpy2} -%files -n python2-%{name} -f includelist-bindings-pyroot -%{python2_sitearch}/cppyy -%{python2_sitearch}/cppyy_backend -%{python2_sitearch}/ROOT -%{python2_sitearch}/ROOT-*.egg-info -%{python2_sitearch}/libcppyy%{python2_version_uscore}.so -%{python2_sitearch}/libcppyy_backend%{python2_version_uscore}.so -%{python2_sitearch}/libROOTPythonizations%{python2_version_uscore}.so -%{_libdir}/%{name}/libcppyy%{python2_version_uscore}.* -%{_libdir}/%{name}/libcppyy_backend%{python2_version_uscore}.* -%dir %{_includedir}/%{name}/CPyCppyy - -%files -n python2-jupyroot -%{python2_sitearch}/JupyROOT -%{python2_sitearch}/JupyROOT-*.egg-info -%{python2_sitearch}/libJupyROOT%{python2_version_uscore}.so -%{_datadir}/jupyter/kernels/python2-jupyroot -%doc bindings/jupyroot/README.md - -%files -n python2-jsmva -%{python2_sitelib}/JsMVA -%{python2_sitelib}/JsMVA-*.egg-info -%endif - %files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot %{python3_sitearch}/cppyy %{python3_sitearch}/cppyy_backend %{python3_sitearch}/ROOT %{python3_sitearch}/ROOT-*.egg-info -%{python3_sitearch}/libcppyy%{python3_version_uscore}%{python3_ext_suffix} +%{python3_sitearch}/libcppyy%{python3_version_uscore}.so %{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so %{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} %{_libdir}/%{name}/libcppyy%{python3_version_uscore}.* @@ -3361,16 +3137,20 @@ fi %{_libdir}/%{name}/libGenetic_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P080_GeneticMinimizer.C -%files geom -f includelist-geom +%files geom -f includelist-geom-geom %{_libdir}/%{name}/libGeom.* %{_libdir}/%{name}/libGeom_rdict.pcm +%{_datadir}/%{name}/RadioNuclides.txt + +%files geom-builder -f includelist-geom-geombuilder %{_libdir}/%{name}/libGeomBuilder.* %{_libdir}/%{name}/libGeomBuilder_rdict.pcm +%{_datadir}/%{name}/plugins/TGeoManagerEditor/P010_TGeoManagerEditor.C + +%files geom-painter -f includelist-geom-geompainter %{_libdir}/%{name}/libGeomPainter.* %{_libdir}/%{name}/libGeomPainter_rdict.pcm -%{_datadir}/%{name}/plugins/TGeoManagerEditor/P010_TGeoManagerEditor.C %{_datadir}/%{name}/plugins/TVirtualGeoPainter/P010_TGeoPainter.C -%{_datadir}/%{name}/RadioNuclides.txt %files gdml -f includelist-geom-gdml %{_libdir}/%{name}/libGdml.* @@ -3512,17 +3292,6 @@ fi %{_libdir}/%{name}/libSpectrumPainter.* %{_libdir}/%{name}/libSpectrumPainter_rdict.pcm -%files hist-factory -f includelist-roofit-histfactory -%{_bindir}/hist2workspace -%{_bindir}/prepareHistFactory -%{_mandir}/man1/hist2workspace.1* -%{_mandir}/man1/prepareHistFactory.1* -%{_libdir}/%{name}/libHistFactory.* -%{_libdir}/%{name}/libHistFactory_rdict.pcm -%{_datadir}/%{name}/HistFactorySchema.dtd -%dir %{_includedir}/%{name}/RooStats/HistFactory -%doc roofit/histfactory/doc/README - %files html -f includelist-html %{_libdir}/%{name}/libHtml.* %{_libdir}/%{name}/libHtml_rdict.pcm @@ -3539,12 +3308,10 @@ 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.* @@ -3701,12 +3468,13 @@ fi %dir %{_datadir}/%{name}/js %dir %{_datadir}/%{name}/js/files %{_datadir}/%{name}/js/files/canv_batch.htm +%{_datadir}/%{name}/js/files/geom_batch.htm %{_datadir}/%{name}/js/files/web.config %{_datadir}/%{name}/js/files/wslist.htm +%ghost %{_datadir}/%{name}/js/build %ghost %{_datadir}/%{name}/js/img -%ghost %{_datadir}/%{name}/js/libs +%ghost %{_datadir}/%{name}/js/modules %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 @@ -3715,11 +3483,7 @@ fi %{_libdir}/%{name}/libRHTTPSniff.* %{_libdir}/%{name}/libRHTTPSniff_rdict.pcm -%files netx -f includelist-netx -%if ! %{xrootd5} -%{_libdir}/%{name}/libNetx.* -%{_libdir}/%{name}/libNetx_rdict.pcm -%endif +%files netx -f includelist-net-netxng %{_libdir}/%{name}/libNetxNG.* %{_libdir}/%{name}/libNetxNG_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P100_TXNetFile.C @@ -3769,19 +3533,7 @@ fi %{_datadir}/%{name}/plugins/TProofProgressLog/P010_TProofProgressLog.C %{_datadir}/%{name}/plugins/TSessionViewer/P010_TSessionViewer.C -%if ! %{xrootd5} -%files xproof -f includelist-proof-proofx -%{_bindir}/proofexecv -%{_bindir}/xproofd -%{_mandir}/man1/xproofd.1* -%{_libdir}/%{name}/libProofx.* -%{_libdir}/%{name}/libProofx_rdict.pcm -%{_libdir}/%{name}/libXrdProofd.* -%{_datadir}/%{name}/plugins/TProofMgr/P010_TXProofMgr.C -%{_datadir}/%{name}/plugins/TProofServ/P010_TXProofServ.C -%{_datadir}/%{name}/plugins/TSlave/P010_TXSlave.C -%endif - +%if %{roofit} %files roofit -f includelist-roofit-roofit %{_libdir}/%{name}/libRooFit.* %{_libdir}/%{name}/libRooFit_rdict.pcm @@ -3793,9 +3545,7 @@ fi %{_libdir}/%{name}/libRooFitCore.* %{_libdir}/%{name}/libRooFitCore_rdict.pcm %{_datadir}/gdb/auto-load%{_libdir}/%{name}/libRooFitCore.* -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__/libRooFitCore.* -%endif %files roofit-more -f includelist-roofit-roofitmore %{_libdir}/%{name}/libRooFitMore.* @@ -3806,9 +3556,11 @@ fi %{_libdir}/%{name}/libRooBatchCompute_* %doc roofit/batchcompute/README.md +%if %{dataframe} %files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers %{_libdir}/%{name}/libRooFitRDataFrameHelpers.* %{_libdir}/%{name}/libRooFitRDataFrameHelpers_rdict.pcm +%endif %files roofit-hs3 -f includelist-roofit-hs3 %{_libdir}/%{name}/libRooFitHS3.* @@ -3817,11 +3569,27 @@ fi %{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json %doc roofit/hs3/README.md +%files roofit-jsoninterface -f includelist-roofit-jsoninterface +%{_libdir}/%{name}/libRooFitJSONInterface.* +%{_libdir}/%{name}/libRooFitJSONInterface_rdict.pcm + %files roostats -f includelist-roofit-roostats %{_libdir}/%{name}/libRooStats.* %{_libdir}/%{name}/libRooStats_rdict.pcm %dir %{_includedir}/%{name}/RooStats +%files hist-factory -f includelist-roofit-histfactory +%{_bindir}/hist2workspace +%{_bindir}/prepareHistFactory +%{_mandir}/man1/hist2workspace.1* +%{_mandir}/man1/prepareHistFactory.1* +%{_libdir}/%{name}/libHistFactory.* +%{_libdir}/%{name}/libHistFactory_rdict.pcm +%{_datadir}/%{name}/HistFactorySchema.dtd +%dir %{_includedir}/%{name}/RooStats/HistFactory +%doc roofit/histfactory/doc/README +%endif + %files sql-mysql -f includelist-sql-mysql %{_libdir}/%{name}/libRMySQL.* %{_libdir}/%{name}/libRMySQL_rdict.pcm @@ -3848,9 +3616,7 @@ fi %dir %{_includedir}/%{name}/TMVA %dir %{_includedir}/%{name}/TMVA/DNN %dir %{_includedir}/%{name}/TMVA/DNN/Architectures -%if %{tbb} %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Cpu -%endif %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Reference %license tmva/doc/LICENSE @@ -3882,9 +3648,11 @@ fi %{_libdir}/%{name}/libTree_rdict.pcm %doc %{_pkgdocdir}/README.SELECTOR +%if %{dataframe} %files tree-dataframe -f includelist-tree-dataframe %{_libdir}/%{name}/libROOTDataFrame.* %{_libdir}/%{name}/libROOTDataFrame_rdict.pcm +%endif %files tree-player -f includelist-tree-treeplayer %{_libdir}/%{name}/libTreePlayer.* @@ -3897,6 +3665,11 @@ fi %{_libdir}/%{name}/libTreeViewer_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualTreeViewer/P010_TTreeViewer.C +%files tree-webviewer -f includelist-tree-webviewer +%{_libdir}/%{name}/libROOTTreeViewer.* +%{_libdir}/%{name}/libROOTTreeViewer_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualTreeViewer/P020_RTreeViewer.C + %files unfold -f includelist-hist-unfold %{_libdir}/%{name}/libUnfold.* %{_libdir}/%{name}/libUnfold_rdict.pcm @@ -3919,7 +3692,6 @@ 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 @@ -3933,10 +3705,15 @@ fi %files gui-webgui6 -f includelist-gui-webgui6 %{_libdir}/%{name}/libWebGui6.* %{_libdir}/%{name}/libWebGui6_rdict.pcm -%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C -%endif +%{_datadir}/%{name}/plugins/TCanvasImp/P010_TWebCanvas.C +%{_datadir}/%{name}/plugins/TControlBarImp/P010_TWebControlBar.C %if %{root7} +%files geom-webviewer -f includelist-geom-webviewer +%{_libdir}/%{name}/libROOTGeomViewer.* +%{_libdir}/%{name}/libROOTGeomViewer_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualGeoPainter/P020_RGeoPainter.C + %files graf-gpadv7 -f includelist-graf2d-gpadv7 %{_libdir}/%{name}/libROOTGpadv7.* %{_libdir}/%{name}/libROOTGpadv7_rdict.pcm @@ -3948,7 +3725,6 @@ fi %files graf3d-eve7 -f includelist-graf3d-eve7 %{_libdir}/%{name}/libROOTEve.* %{_libdir}/%{name}/libROOTEve_rdict.pcm -%{_datadir}/%{name}/plugins/TVirtualGeoPainter/P020_REveGeoPainter.C %files gui-browsable -f includelist-gui-browsable %{_libdir}/%{name}/libROOTBrowsable.* @@ -3969,6 +3745,7 @@ fi %{_libdir}/%{name}/libROOTBrowserGeomWidget.* %{_libdir}/%{name}/libROOTBrowserRCanvasWidget.* %{_libdir}/%{name}/libROOTBrowserTCanvasWidget.* +%{_libdir}/%{name}/libROOTBrowserTreeWidget.* %{_libdir}/%{name}/libROOTBrowserWidgets.* %{_datadir}/%{name}/plugins/TBrowserImp/P030_RWebBrowserImp.C @@ -3990,9 +3767,34 @@ fi %files tree-ntuple -f includelist-tree-ntuple %{_libdir}/%{name}/libROOTNTuple.* %{_libdir}/%{name}/libROOTNTuple_rdict.pcm + +%files tree-ntuple-utils -f includelist-tree-ntupleutil +%{_libdir}/%{name}/libROOTNTupleUtil.* +%{_libdir}/%{name}/libROOTNTupleUtil_rdict.pcm + +%if %{roofit} +%files xroofit -f includelist-roofit-xroofit +%{_libdir}/%{name}/libRooFitXRooFit.* +%{_libdir}/%{name}/libRooFitXRooFit_rdict.pcm +%endif %endif %changelog +* Sat Mar 18 2023 Mattias Ellert - 6.28.00-1 +- Update to 6.28.00 +- ROOT now uses llvm/clang version 13 (updated from version 9) +- Clean up specfile by removing EPEL 7 conditionals +- Drop dataframe, roofit and tmva-sofieparser on EPEL 8 ppc64le due to + "pure virtual method called" errors +- Split the root-geom sub-package into three separate sub-packages: + root-geom, root-geom-builder and root-geom-painter +- Enable uring support in EPEL 9 (liburing now available) +- New sub-packages: root-geom-webviewer, root-roofit-jsoninterface, + root-testsupport, root-tree-ntuple-utils, root-tree-webviewer, root-xroofit +- Dropped patches: 31 +- New patches: 17 +- Updated patches: 4 + * Mon Jan 30 2023 Mattias Ellert - 6.26.10-5 - Adapt to numpy 1.24 diff --git a/sources b/sources index ef0a91f..e37c144 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.10.tar.xz) = 896727ce6da68871a52894a0a3c1b749fece9f08c8cefe62f5beac505710d579c41b84832a727a2ba39dab09e4456773c05b5b23a0fd859ace8062470653bbdb +SHA512 (root-6.28.00.tar.xz) = 57e5e111e41d3942b63a9e038198e6cc91457d7724cc9dcf9673679b12b13acb6980e7786828a8527a292c018bd13af51854e83f99301f6bc5e4455cdc23c30e SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f