diff --git a/root-32bit-tests.patch b/root-32bit-tests.patch index ea926b4..ae15a5d 100644 --- a/root-32bit-tests.patch +++ b/root-32bit-tests.patch @@ -1,7 +1,7 @@ -From 70d941cd6ebbc3726e08ef7f52d0135453f0b840 Mon Sep 17 00:00:00 2001 +From 55446dcd6eabc1fff218f266c11f31697fe99f09 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 13 Mar 2020 16:21:55 +0100 -Subject: [PATCH 2/3] Run tests on 32 bit +Subject: [PATCH] Run tests on 32 bit --- test/stressGeometry.cxx | 8 -------- @@ -9,7 +9,7 @@ Subject: [PATCH 2/3] Run tests on 32 bit 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx -index 5e81f5f2ca..18e41a6f45 100644 +index f8d78f4f54..617b9e1644 100644 --- a/test/stressGeometry.cxx +++ b/test/stressGeometry.cxx @@ -257,14 +257,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg @@ -28,26 +28,26 @@ index 5e81f5f2ca..18e41a6f45 100644 TString fname; for (i=0; i -Date: Fri, 17 Nov 2023 17:15:15 +0100 -Subject: [PATCH] Avoid out of memory during linking regardless of build type - ---- - core/metacling/src/CMakeLists.txt | 7 ++----- - 1 file changed, 2 insertions(+), 5 deletions(-) - -diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt -index e750480eb3..dd50793d29 100644 ---- a/core/metacling/src/CMakeLists.txt -+++ b/core/metacling/src/CMakeLists.txt -@@ -111,11 +111,8 @@ ROOT_LINKER_LIBRARY(Cling - $ - LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS}) - --string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE) --if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO) -- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. -- add_dependencies(Cling rootcling_stage1) --endif() -+# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. -+add_dependencies(Cling rootcling_stage1) - - if(MSVC) - set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) --- -2.43.0 - diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch deleted file mode 100644 index caa3076..0000000 --- a/root-big-endian-byte-swap.patch +++ /dev/null @@ -1,58 +0,0 @@ -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 | 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 ab457dcddc..d701fb3299 100644 ---- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -+++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -@@ -1,3 +1,4 @@ -+#include "Byteswap.h" - #include "TMVA/RModelParser_ONNX.hxx" - #include "onnx_proto3.pb.h" - -@@ -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()) { -+#ifdef R__BYTESWAP -+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float)); -+#else -+ for (std::size_t k = 0; k < fLength; ++k) -+ (reinterpret_cast(data.get()))[k] = -+ 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())); -@@ -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.39.2 - diff --git a/root-clad.patch b/root-clad.patch deleted file mode 100644 index 139775e..0000000 --- a/root-clad.patch +++ /dev/null @@ -1,26 +0,0 @@ -From fae9b92742c5e991ad33769d1357a721838e93f9 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 11:37:23 +0100 -Subject: [PATCH 1/3] Add fit/exampleFit3D.C to clad veto - ---- - tutorials/CMakeLists.txt | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index 5cba95407b..81f6539f03 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -74,7 +74,8 @@ if(NOT ROOT_minuit2_FOUND) - #---Tutorials disabled depending on the build components------------- - - if(NOT clad) -- set(clad_veto fit/minuit2GausFit.C) -+ set(clad_veto fit/minuit2GausFit.C -+ fit/exampleFit3D.C) - endif() - - # RBatchGenerator tutorials need Python 3.8+. --- -2.42.0 - diff --git a/root-failure-on-ppc64le-and-s390x.patch b/root-failure-on-ppc64le-and-s390x.patch new file mode 100644 index 0000000..787eab5 --- /dev/null +++ b/root-failure-on-ppc64le-and-s390x.patch @@ -0,0 +1,35 @@ +From d3b5ef223500c69efadb9b8c4735247d9ba5c5ea Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 2 Jun 2024 07:03:42 +0200 +Subject: [PATCH] Fix test failure on ppc64le and s390x + +--- + hist/hist/test/test_tprofile2poly.cxx | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx +index 26b9801593..1dfa93259c 100644 +--- a/hist/hist/test/test_tprofile2poly.cxx ++++ b/hist/hist/test/test_tprofile2poly.cxx +@@ -25,10 +25,16 @@ void FillForTest(TProfile2D* tp2d, TProfile2Poly* tpp, TRandom& ran) { + } + + void globalStatsCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { ++ const double relTol = 1e-12; ++ double cont1, cont2; + for(Int_t c=1; c<=3; ++c) { + ASSERT_DOUBLE_EQ(tp2d->GetMean(c), tpp->GetMean(c)); +- ASSERT_DOUBLE_EQ(tp2d->GetMeanError(c), tpp->GetMeanError(c)); +- ASSERT_DOUBLE_EQ(tp2d->GetStdDev(c), tpp->GetStdDev(c)); ++ cont1 = tp2d->GetMeanError(c); ++ cont2 = tpp->GetMeanError(c); ++ ASSERT_NEAR(cont1, cont2, relTol * cont2); ++ cont1 = tp2d->GetStdDev(c); ++ cont2 = tpp->GetStdDev(c); ++ ASSERT_NEAR(cont1, cont2, relTol * cont2); + } + } + +-- +2.45.1 + diff --git a/root-fix-one-more-broken-import-in-JsMVA.patch b/root-fix-one-more-broken-import-in-JsMVA.patch new file mode 100644 index 0000000..0393bdc --- /dev/null +++ b/root-fix-one-more-broken-import-in-JsMVA.patch @@ -0,0 +1,25 @@ +From de85dbd3344709d1c5ca87e93c87cdbce147ce5b Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 5 Jun 2024 08:49:14 +0200 +Subject: [PATCH] Fix one more broken import in JsMVA + +--- + bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py +index 57358765e4..7f56cd6dd5 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py +@@ -23,7 +23,7 @@ class JsMVAMagic(Magics): + @magic_arguments() + @argument("arg", nargs="?", default="on", help="Enable/Disable JavaScript visualisation for TMVA") + def jsmva(self, line): +- from JsMVA.JPyInterface import functions ++ from .JPyInterface import functions + + args = parse_argstring(self.jsmva, line) + if args.arg == "on": +-- +2.45.1 + diff --git a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch deleted file mode 100644 index 274aa66..0000000 --- a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 15f50c71b4d89bfbf06ce817dee38e843f0f55cd Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -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 -The difference between cont1 and cont2 is 1.4551915228366852e-11, which exceeds delta, where -cont1 evaluates to 54886.064319363642, -cont2 evaluates to 54886.064319363628, and -delta evaluates to 9.999999960041972e-12. -.../hist/hist/test/test_tprofile2poly.cxx:61: Failure -The difference between cont1 and cont2 is 1.4551915228366852e-11, where -cont1 evaluates to 109868.61342004745, -cont2 evaluates to 109868.61342004743. -The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead. ---- - hist/hist/test/test_tprofile2poly.cxx | 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..ecf559a4b3 100644 ---- a/hist/hist/test/test_tprofile2poly.cxx -+++ b/hist/hist/test/test_tprofile2poly.cxx -@@ -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); - } - - } - // test overflow - cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11)); - cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11)); -- ASSERT_NEAR(cont1, cont2, delta); -- -+ ASSERT_NEAR(cont1, cont2, 2 * delta); - } - - void binErrorCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { --- -2.39.2 - diff --git a/root-fontconfig.patch b/root-fontconfig.patch index d0f38b1..185b1c4 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -490,10 +490,10 @@ index ca38ed1f9c..8f1d62686b 100644 - { "Root.TTFont.1", "FreeSerifItalic.otf" }, - { "Root.TTFont.2", "FreeSerifBold.otf" }, - { "Root.TTFont.3", "FreeSerifBoldItalic.otf" }, -- { "Root.TTFont.4", "FreeSans.otf" }, -- { "Root.TTFont.5", "FreeSansOblique.otf" }, -- { "Root.TTFont.6", "FreeSansBold.otf" }, -- { "Root.TTFont.7", "FreeSansBoldOblique.otf" }, +- { "Root.TTFont.4", "texgyreheros-regular.otf" }, +- { "Root.TTFont.5", "texgyreheros-italic.otf" }, +- { "Root.TTFont.6", "texgyreheros-bold.otf" }, +- { "Root.TTFont.7", "texgyreheros-bolditalic.otf" }, - { "Root.TTFont.8", "FreeMono.otf" }, - { "Root.TTFont.9", "FreeMonoOblique.otf" }, - { "Root.TTFont.10", "FreeMonoBold.otf" }, diff --git a/root-format-warnings-32-bit.patch b/root-format-warnings-32-bit.patch new file mode 100644 index 0000000..3583398 --- /dev/null +++ b/root-format-warnings-32-bit.patch @@ -0,0 +1,73 @@ +From 8592c5e065b8cf46480f5a1efe0363fcf2150551 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 4 Jun 2024 08:47:04 +0200 +Subject: [PATCH] Correct format - warnings seen on 32 bit architectures + +--- + core/clib/src/mmapsup.c | 2 +- + roofit/xroofit/src/xRooNode.cxx | 2 +- + tree/dataframe/src/RDFDisplay.cxx | 4 ++-- + tree/dataframe/src/RDFHelpers.cxx | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/core/clib/src/mmapsup.c b/core/clib/src/mmapsup.c +index 81f68a2059..da46dc7ba5 100644 +--- a/core/clib/src/mmapsup.c ++++ b/core/clib/src/mmapsup.c +@@ -174,7 +174,7 @@ PTR __mmalloc_mmap_morecore(struct mdesc *mdp, int size) + if (mdp -> top != PAGE_ALIGN(mdp -> top)) { + fprintf(stderr, + "mmap_morecore error: base memory location (%p) is not aligned with %zu as required.\n", +- mdp -> top, (long)pagesize); ++ mdp -> top, pagesize); + return result; + } + mapto = mmap (mdp -> top, mapbytes, PROT_READ | PROT_WRITE, +diff --git a/roofit/xroofit/src/xRooNode.cxx b/roofit/xroofit/src/xRooNode.cxx +index f8c96fbf62..852e6997c0 100644 +--- a/roofit/xroofit/src/xRooNode.cxx ++++ b/roofit/xroofit/src/xRooNode.cxx +@@ -11075,7 +11075,7 @@ std::string cling::printValue(const xRooNode *v) + out += "{"; + out += n->GetName(); + if (out.length() > 100 && left > 0) { +- out += TString::Format(",... and %lu more", left); ++ out += TString::Format(",... and %zu more", left); + break; + } + } +diff --git a/tree/dataframe/src/RDFDisplay.cxx b/tree/dataframe/src/RDFDisplay.cxx +index 9dc555fc1d..2ef7de7ddc 100644 +--- a/tree/dataframe/src/RDFDisplay.cxx ++++ b/tree/dataframe/src/RDFDisplay.cxx +@@ -232,12 +232,12 @@ void RDisplay::Print() const + // Thus, the first column is only the Row column and the actual first column is printed + columnsToPrint = 2; + } +- Info("Print", "Only showing %lu columns out of %lu\n", columnsToPrint, fNColumns); ++ Info("Print", "Only showing %zu columns out of %zu\n", columnsToPrint, fNColumns); + allColumnsFit = false; + } + + if (fNMaxCollectionElements < 1) +- Info("Print", "No collections shown since fNMaxCollectionElements is %lu\n", fNMaxCollectionElements); ++ Info("Print", "No collections shown since fNMaxCollectionElements is %zu\n", fNMaxCollectionElements); + + auto nrRows = fTable.size(); + std::cout << DashesBetweenLines(columnsToPrint, allColumnsFit); // Print dashes in the top of the table +diff --git a/tree/dataframe/src/RDFHelpers.cxx b/tree/dataframe/src/RDFHelpers.cxx +index 4891454cc0..3490901b5d 100644 +--- a/tree/dataframe/src/RDFHelpers.cxx ++++ b/tree/dataframe/src/RDFHelpers.cxx +@@ -74,7 +74,7 @@ unsigned int ROOT::RDF::RunGraphs(std::vector handles) + const unsigned int nToRun = + std::count_if(handles.begin(), handles.end(), [](const auto &h) { return !h.IsReady(); }); + if (nToRun < handles.size()) { +- Warning("RunGraphs", "Got %lu handles from which %lu link to results which are already ready.", handles.size(), ++ Warning("RunGraphs", "Got %zu handles from which %zu link to results which are already ready.", handles.size(), + handles.size() - nToRun); + } + if (nToRun == 0u) +-- +2.45.1 + diff --git a/root-gtest-back.patch b/root-gtest-back.patch deleted file mode 100644 index 1624451..0000000 --- a/root-gtest-back.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1942f5569b1d101f2c89341765ea37850e3de669 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 11:43:46 +0100 -Subject: [PATCH 2/3] Add old gtest compat for SetUpTestSuite/TearDownTestSuite - ---- - tree/tree/test/friendinfo.cxx | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/tree/tree/test/friendinfo.cxx b/tree/tree/test/friendinfo.cxx -index 141a495052..6e94056946 100644 ---- a/tree/tree/test/friendinfo.cxx -+++ b/tree/tree/test/friendinfo.cxx -@@ -14,6 +14,8 @@ - // Backward compatibility for gtest version < 1.10.0 - #ifndef INSTANTIATE_TEST_SUITE_P - #define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#define SetUpTestSuite SetUpTestCase -+#define TearDownTestSuite TearDownTestCase - #endif - - namespace { --- -2.42.0 - diff --git a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch b/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch deleted file mode 100644 index 20e2ee5..0000000 --- a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.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] 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. ---- - core/testsupport/src/TestSupport.cxx | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx -index 259ab4e09c..79cd476950 100644 ---- a/core/testsupport/src/TestSupport.cxx -+++ b/core/testsupport/src/TestSupport.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.42.0 - diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch deleted file mode 100644 index 2550f4d..0000000 --- a/root-jsmva-static.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -ur root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py ---- root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-08-11 09:06:21.894746090 +0200 -@@ -188,7 +188,7 @@ - ## Class for creating the output scripts and inserting them to cell output - class JsDraw: - ## Base repository -- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest" -+ __jsMVARepo = "/static/JsMVA" - - ## String containing the link to JavaScript files - __jsMVASourceDir = __jsMVARepo + "/js" -diff -ur root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py ---- root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-08-11 09:06:21.925746168 +0200 -@@ -188,7 +188,7 @@ - ## Class for creating the output scripts and inserting them to cell output - class JsDraw: - ## Base repository -- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest" -+ __jsMVARepo = "/static/JsMVA" - - ## String containing the link to JavaScript files - __jsMVASourceDir = __jsMVARepo + "/js" -diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js ---- root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js 2021-08-11 09:10:45.638410266 +0200 -@@ -16,7 +16,7 @@ - - (function(factory){ - -- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/"; -+ var JSROOT_source_dir = "/static/scripts/"; - - var url = ""; - if (requirejs.s.contexts.hasOwnProperty("_")) { diff --git a/root-new-zlib.patch b/root-new-zlib.patch deleted file mode 100644 index f12eef7..0000000 --- a/root-new-zlib.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 260fc202a1387cfc3f3ef756f584923ab5b0a198 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 21 Dec 2023 17:58:49 +0100 -Subject: [PATCH] Adapt tests to work with zlib-ng - -Fedora 40 has replaced zlib with a zlib compatible version of zlib-ng ---- - test/stress.cxx | 2 +- - test/stressGraphics.ref | 28 ++++++++++++++-------------- - 2 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/test/stress.cxx b/test/stress.cxx -index de8061a9fc..77f48d43b8 100644 ---- a/test/stress.cxx -+++ b/test/stress.cxx -@@ -406,7 +406,7 @@ void stress3() - #else - constexpr Long64_t lastgood = 52090; - #endif -- constexpr Long64_t tolerance = 150; -+ constexpr Long64_t tolerance = 300; - #ifdef R__HAS_DEFAULT_LZ4 - constexpr Long64_t difflastgoodlz4 = 5500; - if (last < lastgood - tolerance || last > lastgood + difflastgoodlz4 + tolerance || comp < 1.5 || comp > 2.1) -diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref -index 16d06e33fa..a21068927d 100644 ---- a/test/stressGraphics.ref -+++ b/test/stressGraphics.ref -@@ -2,12 +2,12 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN - 1 529 50 12767 50 23848 3700 3937 100 569 60 - 2 4627 600 14506 100 13368 7900 9208 3000 4690 600 - 3 452 50 12694 50 11232 4200 3796 10700 492 50 -- 4 23617 1500 19386 100 143320 123000 45665 11000 24908 1500 -+ 4 23617 1500 19386 200 143320 123000 45665 11000 24908 1500 - 5 1025 150 12802 200 33468 9900 30846 5000 1072 200 - 6 430 50 12669 50 9558 100 5325 700 471 50 - 7 4980 50 13893 50 16143 1300 12230 500 5011 70 - 8 5442 80 13473 50 18430 700 12398 300 5469 80 -- 9 9253 100 14377 50 19851 2400 12199 900 9449 100 -+ 9 9253 100 14377 100 19851 2400 12199 900 9449 100 - 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 - 11 12971 100 14444 50 34063 2000 32033 1200 12864 150 - 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 -@@ -15,30 +15,30 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN - 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 - 15 15690 5000 17179 200 23076 9500 15202 900 10437 5000 - 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 -- 17 20444 400 21520 100 27511 11000 16867 600 20721 400 -- 18 15894 100 19305 100 27187 10300 15925 350 15925 100 -- 19 22521 300 42926 150 43868 17000 19232 11000 22729 300 -+ 17 20444 400 21520 150 27511 11000 16867 600 20721 400 -+ 18 15894 100 19305 200 27187 10300 15925 350 15925 100 -+ 19 22521 300 42926 200 43868 17000 19232 11000 22729 300 - 20 3664 600 14437 100 19824 6300 10396 900 4220 600 - 21 17608 600 13900 150 49440 6300 37586 9000 5938 600 - 22 4866 600 14162 100 30889 10050 21311 1800 4845 600 -- 23 4131 40 15272 50 34038 2500 12258 1400 4162 40 -+ 23 4131 40 15272 100 34038 2500 12258 1400 4162 40 - 24 7813 300 23739 100 11085 6000 6973 3100 8081 300 - 25 28422 150 29391 300 14104 14800 7386 2800 14493 150 - 26 4545 150 14541 100 27602 14800 13094 2800 4467 150 - 27 6141 200 15967 100 39594 21600 19331 7000 6596 500 - 28 9110 500 16584 200 21346 21600 10645 7000 8869 500 - 29 7419 500 15112 200 18872 21600 7928 7000 7296 500 -- 30 17016 5500 18198 100 32434 17400 22157 5000 20823 5500 -- 31 30615 8200 27176 150 50520 18200 35724 5400 36690 8200 -- 32 3304592 100 712308 500 62688 19000 123056 7000 0 0 -+ 30 17016 5500 18198 250 32434 17400 22157 5000 20823 5500 -+ 31 30615 8200 27176 200 50520 18200 35724 5400 36690 8200 -+ 32 3304592 100 712308 3000 62688 19000 123056 7000 0 0 - 33 89233 500 47975 300 65532 27800 37314 12000 90600 500 - 34 36514 300 16815 200 47408 12700 33739 3700 36399 300 -- 35 207729 750 87126 100 76094 38000 54717 11000 210497 800 -- 36 401670 6500 156361 500 62719 34100 45592 14000 410114 6500 -- 37 566142 5000 225206 750 65828 31800 53934 6500 573396 5000 -- 38 3738751 35000 1292739 8000 60580 9900 133547 3500 3783013 35000 -+ 35 207729 750 87126 750 76094 38000 54717 11000 210497 800 -+ 36 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500 -+ 37 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000 -+ 38 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000 - 39 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500 -- 40 38312 200 56877 250 36524 11800 119641 8000 38121 200 -+ 40 38312 200 56877 750 36524 11800 119641 8000 38121 200 - 41 15025 3000 29289 500 42525 11300 33336 3900 14787 4000 - 42 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000 - 43 4846 150 14075 150 33239 600 25303 300 4877 150 --- -2.43.0 - diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch index aa7604d..be22620 100644 --- a/root-no-export-python-modules.patch +++ b/root-no-export-python-modules.patch @@ -1,30 +1,16 @@ -diff -ur root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt root-6.24.02/bindings/jupyroot/CMakeLists.txt ---- root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/jupyroot/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200 -@@ -70,8 +70,7 @@ - endforeach() +--- root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-28 06:06:46.000000000 +0200 ++++ root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-29 09:47:08.960324940 +0200 +@@ -189,11 +189,10 @@ + # Create meta-target PyROOT3 (INTERFACE library) + # Export of targets are not supported for custom targets(add_custom_targets()) + add_library(PyROOT INTERFACE) +-target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations) ++target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy) - # Install library -- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries -+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) - -diff -ur root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt ---- root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200 -@@ -137,11 +137,10 @@ - # Create meta-target PyROOT2 and PyROOT3 (INTERFACE library) - # Export of targets are not supported for custom targets(add_custom_targets()) - add_library(PyROOT${python_major_version_string} INTERFACE) -- target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string} ROOTPythonizations${python_under_version_string}) -+ target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string}) - - # Install library -- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries -+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) + # Install library +-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries ++install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries + LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) diff --git a/root-np32.patch b/root-np32.patch deleted file mode 100644 index 832f6c7..0000000 --- a/root-np32.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 42b9c691fdd2d0001c61f78cc8adfbb9c994f6b4 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 11:46:14 +0100 -Subject: [PATCH 3/3] Fix pythonizations test errors on ix86 Linux - -====================================================================== -ERROR: test_sliced_array (rdataframe_makenumpy.DataFrameFromNumpy.test_sliced_array) -Test correct reading of a sliced numpy array (#13690) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py", line 153, in test_sliced_array - x_col = df.Take['Long64_t']("x") - ^^^^^^^^^^^^^^^^^^^^^^^^ -cppyy.gbl.std.runtime_error: Could not instantiate Take: - ROOT::RDF::RResultPtr > ROOT::RDF::RInterface::Take(basic_string_view > column = "") => - runtime_error: Column x has type int while the id specified is associated to type Long64_t ----------------------------------------------------------------------- - -====================================================================== -ERROR: test_dtypes (rtensor.AsRTensor.test_dtypes) -Test adoption of numpy arrays with different data types ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rtensor.py", line 45, in test_dtypes - root_obj = ROOT.TMVA.Experimental.RTensor(self.cpptypes[i])(np_obj) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/builddir/build/BUILD/root-6.30.00/redhat-linux-build/lib/ROOT/_pythonization/_tmva/_rtensor.py", line 131, in RTensorInit - return self._original_init_(data,shape,layout) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -TypeError: none of the 6 overloaded methods succeeded. Full details: - RTensor >::RTensor >(TMVA::Experimental::RTensor >&&) => - TypeError: takes at most 1 arguments (3 given) - RTensor >::RTensor >(const TMVA::Experimental::RTensor >&) => - TypeError: takes at most 1 arguments (3 given) - RTensor >::RTensor >(shared_ptr > container, vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: could not convert argument 1 - RTensor >::RTensor >(vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: takes at most 2 arguments (3 given) - RTensor >::RTensor >(long* data, vector shape, vector strides, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr) - RTensor >::RTensor >(long* data, vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr) ----------------------------------------------------------------------- ---- - .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 8 ++++---- - bindings/pyroot/pythonizations/test/rtensor.py | 8 +------- - 2 files changed, 5 insertions(+), 11 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -index cd2ebc9b5b..cc46f5bea1 100644 ---- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -@@ -142,19 +142,19 @@ class DataFrameFromNumpy(unittest.TestCase): - gc.collect() - ref4 = sys.getrefcount(x) - self.assertEqual(ref1, ref4) -- -+ - def test_sliced_array(self): - """ - Test correct reading of a sliced numpy array (#13690) - """ -- table = np.array([[1,2], [3,4]]) -+ table = np.array([[1,2], [3,4]], dtype="int64") - columns = {'x': table[:,0], 'y': table[:,1]} - df = ROOT.RDF.FromNumpy(columns) - x_col = df.Take['Long64_t']("x") - y_col = df.Take['Long64_t']("y") -- self.assertEqual(list(x_col.GetValue()), [1,3]) -+ self.assertEqual(list(x_col.GetValue()), [1,3]) - self.assertEqual(list(y_col.GetValue()), [2,4]) -- -+ - - if __name__ == '__main__': - unittest.main() -diff --git a/bindings/pyroot/pythonizations/test/rtensor.py b/bindings/pyroot/pythonizations/test/rtensor.py -index 99b458cfa9..ca119f0b41 100644 ---- a/bindings/pyroot/pythonizations/test/rtensor.py -+++ b/bindings/pyroot/pythonizations/test/rtensor.py -@@ -2,7 +2,6 @@ import unittest - import ROOT - RTensor = ROOT.TMVA.Experimental.RTensor - import numpy as np --import platform - - - def check_shape(root_obj, np_obj): -@@ -21,18 +20,13 @@ class AsRTensor(unittest.TestCase): - dtypes = [ - "int32", "int64", "uint32", "uint64", "float32", "float64" - ] -- cpptypes = ["int", "long", "unsigned int", "unsigned long", "float", "double"] -+ cpptypes = ["int32_t", "int64_t", "uint32_t", "uint64_t", "float", "double"] - - # Tests - def test_dtypes(self): - """ - Test adoption of numpy arrays with different data types - """ -- #using long long on Linux does not work although it is same size as long -- if (platform.system() == "Windows") : -- self.cpptypes[1] = "long long" -- self.cpptypes[3] = "unsigned long long" -- - i = 0 - for dtype in self.dtypes: - np_obj = np.array([[1, 2], [3, 4], [5, 6]], dtype=dtype) --- -2.43.0 - diff --git a/root-old-gtest.patch b/root-old-gtest.patch deleted file mode 100644 index 87b6fe4..0000000 --- a/root-old-gtest.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 8b7369a527aa52204e1ce529c8cb206cfee4c61b Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 16:18:12 +0100 -Subject: [PATCH] Disable tests that don't compile with old gtest (EPEL 8) - ---- - core/metacling/test/TClingLoadUnloadFileTests.cxx | 2 ++ - roofit/histfactory/test/testHistFactory.cxx | 2 ++ - roofit/roofitcore/test/testRooProdPdf.cxx | 2 ++ - roofit/roofitcore/test/testTestStatistics.cxx | 2 ++ - 4 files changed, 8 insertions(+) - -diff --git a/core/metacling/test/TClingLoadUnloadFileTests.cxx b/core/metacling/test/TClingLoadUnloadFileTests.cxx -index 7f97f3f441..d1b7a65fbc 100644 ---- a/core/metacling/test/TClingLoadUnloadFileTests.cxx -+++ b/core/metacling/test/TClingLoadUnloadFileTests.cxx -@@ -73,6 +73,7 @@ void remove_n_library_artifacts(const std::string &basename, unsigned int n) - } - } - -+/* - TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadSameLib) - { - GTEST_SKIP() << "fails sporadically, see " -@@ -125,3 +126,4 @@ TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadOneLibPerThread) - - remove_n_library_artifacts(basename, n_libraries); - } -+*/ -diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx -index 7553ba4e4a..fefdca8e97 100644 ---- a/roofit/histfactory/test/testHistFactory.cxx -+++ b/roofit/histfactory/test/testHistFactory.cxx -@@ -752,6 +752,7 @@ std::string getNameFromInfo(testing::TestParamInfo const & - return getName(paramInfo.param, false); - } - -+/* - INSTANTIATE_TEST_SUITE_P( - HistFactory, HFFixture, - testing::Combine(testing::Values(MakeModelMode::OverallSyst, MakeModelMode::HistoSyst, MakeModelMode::StatSyst, -@@ -784,3 +785,4 @@ INSTANTIATE_TEST_SUITE_P(HistFactoryCodeGen, HFFixtureFit, - testing::Values(RooFit::EvalBackend::Codegen())), - getNameFromInfo); - #endif -+*/ -diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx -index 34fb559cd1..09734f5c5d 100644 ---- a/roofit/roofitcore/test/testRooProdPdf.cxx -+++ b/roofit/roofitcore/test/testRooProdPdf.cxx -@@ -64,6 +64,7 @@ TEST_P(TestProdPdf, CachingOpt) - << "b=" << b.getVal() << " +- " << b.getError() << " doesn't match truth value with O" << _optimize << "."; - } - -+/* - INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, - testing::Combine(testing::Values(0, 1, 2), - testing::Values(ROOFIT_EVAL_BACKENDS)), -@@ -72,6 +73,7 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, - ss << "opt" << std::get<0>(paramInfo.param) << std::get<1>(paramInfo.param).name(); - return ss.str(); - }); -+*/ - - TEST(RooProdPdf, TestGetPartIntList) - { -diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx -index 3099d82060..5846353043 100644 ---- a/roofit/roofitcore/test/testTestStatistics.cxx -+++ b/roofit/roofitcore/test/testTestStatistics.cxx -@@ -585,6 +585,7 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values(ROOFIT_EV - return ss.str(); - }); - -+/* - INSTANTIATE_TEST_SUITE_P(RooNLLVar, OffsetBinTest, - testing::Combine(testing::Values(ROOFIT_EVAL_BACKENDS), // EvalBackend - testing::Values(false, true), // unbinned or binned -@@ -622,3 +623,4 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVarBinnedL, OffsetBinTest, - ss << (std::get<5>(paramInfo.param) ? "BinnedL" : ""); - return ss.str(); - }); -+*/ diff --git a/root-out-of-bounds.patch b/root-out-of-bounds.patch new file mode 100644 index 0000000..fbae2ea --- /dev/null +++ b/root-out-of-bounds.patch @@ -0,0 +1,26 @@ +From 069359fe9e6c36a4287a64d3356246d516409149 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Tue, 4 Jun 2024 12:53:53 +0200 +Subject: [PATCH] [RF] Set size of offsets vector in LikelihoodJob correctly + +When `std::copy`ing into a vector, it needs to have the right size +before. Doing only `std::reserve` is not enough. + +Fixes #15730. +--- + roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx +index 85c3d02c02ccf..42d191833d14c 100644 +--- a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx ++++ b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx +@@ -93,7 +93,7 @@ void LikelihoodJob::update_state() + assert(!more); + auto offsets_message_begin = offsets_message.data>(); + std::size_t N_offsets = offsets_message.size() / sizeof(ROOT::Math::KahanSum); +- shared_offset_.offsets().reserve(N_offsets); ++ shared_offset_.offsets().resize(N_offsets); + auto offsets_message_end = offsets_message_begin + N_offsets; + std::copy(offsets_message_begin, offsets_message_end, shared_offset_.offsets().begin()); + } diff --git a/root-pcre2.patch b/root-pcre2.patch deleted file mode 100644 index 359acc2..0000000 --- a/root-pcre2.patch +++ /dev/null @@ -1,456 +0,0 @@ -From f89fc640f9ca1b2cccf0dc496b0b7ea434b53fad Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 2 Oct 2023 09:25:13 +0200 -Subject: [PATCH] Support PCRE2 - ---- - .../pythonizations/test/import_load_libs.py | 1 + - cmake/modules/FindPCRE2.cmake | 106 ++++++++++++++++++ - cmake/modules/SearchInstalledSoftware.cmake | 17 +-- - core/base/CMakeLists.txt | 9 +- - core/base/src/TPRegexp.cxx | 99 +++++++++++++++- - tutorials/legacy/regexp/regexp.C | 6 +- - 6 files changed, 223 insertions(+), 15 deletions(-) - create mode 100644 cmake/modules/FindPCRE2.cmake - -diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py -index 087db7da5c..179c76f6fd 100644 ---- a/bindings/pyroot/pythonizations/test/import_load_libs.py -+++ b/bindings/pyroot/pythonizations/test/import_load_libs.py -@@ -23,6 +23,7 @@ class ImportLoadLibs(unittest.TestCase): - 'libc', - 'libdl', - 'libpcre', -+ 'libpcre2-8', - # libCling and dependencies - 'libCling.*', - 'librt', -diff --git a/cmake/modules/FindPCRE2.cmake b/cmake/modules/FindPCRE2.cmake -new file mode 100644 -index 0000000000..2417453e8b ---- /dev/null -+++ b/cmake/modules/FindPCRE2.cmake -@@ -0,0 +1,106 @@ -+# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. -+# All rights reserved. -+# -+# For the licensing terms see $ROOTSYS/LICENSE. -+# For the list of contributors see $ROOTSYS/README/CREDITS. -+ -+#.rst: -+# FindPCRE2 -+# -------- -+# -+# Find PCRE2 library -+# -+# Imported Targets -+# ^^^^^^^^^^^^^^^^ -+# -+# This module defines :prop_tgt:`IMPORTED` target: -+# -+# ``PCRE2::PCRE2`` -+# The pcre2 library, if found. -+# -+# Result Variables -+# ^^^^^^^^^^^^^^^^ -+# This module will set the following variables in your project: -+# -+# ``PCRE2_FOUND`` -+# True if PCRE2 has been found. -+# ``PCRE2_INCLUDE_DIRS`` -+# Where to find pcre2.h -+# ``PCRE2_LIBRARIES`` -+# The libraries to link against to use PCRE2. -+# ``PCRE2_VERSION`` -+# The version of the PCRE2 found (e.g. 10.42) -+# -+# Obsolete variables -+# ^^^^^^^^^^^^^^^^^^ -+# -+# The following variables may also be set, for backwards compatibility: -+# -+# ``PCRE2_PCRE2_LIBRARY`` -+# where to find the PCRE2_PCRE2 library. -+# ``PCRE2_INCLUDE_DIR`` -+# where to find the pcre2.h header (same as PCRE2_INCLUDE_DIRS) -+# -+ -+foreach(var PCRE2_FOUND PCRE2_INCLUDE_DIR PCRE2_PCRE2_LIBRARY PCRE2_LIBRARIES) -+ unset(${var} CACHE) -+endforeach() -+ -+find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h PATH_SUFFIXES include) -+mark_as_advanced(PCRE2_INCLUDE_DIR) -+ -+if (PCRE2_INCLUDE_DIR AND EXISTS "${PCRE2_INCLUDE_DIR}/pcre2.h") -+ file(STRINGS "${PCRE2_INCLUDE_DIR}/pcre2.h" PCRE2_H REGEX "^#define PCRE2_(MAJOR|MINOR).*$") -+ string(REGEX REPLACE "^.*PCRE2_MAJOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MAJOR "${PCRE2_H}") -+ string(REGEX REPLACE "^.*PCRE2_MINOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MINOR "${PCRE2_H}") -+ set(PCRE2_VERSION "${PCRE2_VERSION_MAJOR}.${PCRE2_VERSION_MINOR}") -+endif() -+ -+if(NOT PCRE2_PCRE2_LIBRARY) -+ find_library(PCRE2_PCRE2_LIBRARY_RELEASE NAMES pcre2-8) -+ find_library(PCRE2_PCRE2_LIBRARY_DEBUG NAMES pcre2-8${CMAKE_DEBUG_POSTFIX} pcre2-8d) -+ include(SelectLibraryConfigurations) -+ select_library_configurations(PCRE2_PCRE2) -+endif() -+ -+include(FindPackageHandleStandardArgs) -+find_package_handle_standard_args(PCRE2 -+ REQUIRED_VARS -+ PCRE2_INCLUDE_DIR -+ PCRE2_PCRE2_LIBRARY -+ VERSION_VAR -+ PCRE2_VERSION -+) -+ -+if(PCRE2_FOUND) -+ set(PCRE2_INCLUDE_DIRS "${PCRE2_INCLUDE_DIR}") -+ -+ if (NOT PCRE2_LIBRARIES) -+ set(PCRE2_LIBRARIES "${PCRE2_PCRE2_LIBRARY}") -+ endif() -+ -+ if(NOT TARGET PCRE2::PCRE2) -+ add_library(PCRE2::PCRE2 UNKNOWN IMPORTED) -+ set_target_properties(PCRE2::PCRE2 PROPERTIES -+ INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIRS}") -+ -+ if(PCRE2_PCRE2_LIBRARY_DEBUG) -+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS DEBUG) -+ set_target_properties(PCRE2::PCRE2 PROPERTIES -+ IMPORTED_LOCATION_DEBUG "${PCRE2_PCRE2_LIBRARY_DEBUG}") -+ endif() -+ -+ if(PCRE2_PCRE2_LIBRARY_RELEASE) -+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS RELEASE) -+ set_target_properties(PCRE2::PCRE2 PROPERTIES -+ IMPORTED_LOCATION_RELEASE "${PCRE2_PCRE2_LIBRARY_RELEASE}") -+ endif() -+ -+ if(NOT PCRE2_PCRE2_LIBRARY_DEBUG AND NOT PCRE2_PCRE2_LIBRARY_RELEASE) -+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY -+ IMPORTED_LOCATION "${PCRE2_PCRE2_LIBRARY}") -+ endif() -+ endif() -+endif() -diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake -index 464155fd50..252aa56737 100644 ---- a/cmake/modules/SearchInstalledSoftware.cmake -+++ b/cmake/modules/SearchInstalledSoftware.cmake -@@ -204,13 +204,16 @@ if(NOT builtin_pcre) - foreach(suffix FOUND INCLUDE_DIR PCRE_LIBRARY) - unset(PCRE_${suffix} CACHE) - endforeach() -- if(fail-on-missing) -- find_package(PCRE REQUIRED) -- else() -- find_package(PCRE) -- if(NOT PCRE_FOUND) -- message(STATUS "PCRE not found. Switching on builtin_pcre option") -- set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE) -+ find_package(PCRE2) -+ if(NOT PCRE2_FOUND) -+ if(fail-on-missing) -+ find_package(PCRE REQUIRED) -+ else() -+ find_package(PCRE) -+ if(NOT PCRE_FOUND) -+ message(STATUS "PCRE not found. Switching on builtin_pcre option") -+ set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE) -+ endif() - endif() - endif() - endif() -diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt -index df701fedea..5798c93775 100644 ---- a/core/base/CMakeLists.txt -+++ b/core/base/CMakeLists.txt -@@ -214,7 +214,14 @@ target_include_directories(Core PUBLIC - $ - ) - --target_link_libraries(Core PRIVATE PCRE::PCRE) -+if(PCRE2_FOUND) -+ target_link_libraries(Core PRIVATE PCRE2::PCRE2) -+ set_source_files_properties(src/TPRegexp.cxx -+ TARGET_DIRECTORY Core -+ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2) -+else() -+ target_link_libraries(Core PRIVATE PCRE::PCRE) -+endif() - - ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS}) - -diff --git a/core/base/src/TPRegexp.cxx b/core/base/src/TPRegexp.cxx -index 949b8cc8e9..d70f3e5b8b 100644 ---- a/core/base/src/TPRegexp.cxx -+++ b/core/base/src/TPRegexp.cxx -@@ -25,19 +25,36 @@ found at : http://perldoc.perl.org/perlre.html - #include "TObjString.h" - #include "TError.h" - -+#ifdef USE_PCRE2 -+#ifdef R__WIN32 -+#define PCRE2_STATIC -+#endif -+#define PCRE2_CODE_UNIT_WIDTH 8 -+#include -+#define PCRE_CASELESS PCRE2_CASELESS -+#define PCRE_MULTILINE PCRE2_MULTILINE -+#define PCRE_DOTALL PCRE2_DOTALL -+#define PCRE_EXTENDED PCRE2_EXTENDED -+#define PCRE_ERROR_NOMATCH PCRE2_ERROR_NOMATCH -+#else - #ifdef R__WIN32 - #define PCRE_STATIC - #endif - #include -+#endif - - #include - #include - - struct PCREPriv_t { -+#ifdef USE_PCRE2 -+ pcre2_code *fPCRE; -+ PCREPriv_t() { fPCRE = nullptr; } -+#else - pcre *fPCRE; - pcre_extra *fPCREExtra; -- - PCREPriv_t() { fPCRE = nullptr; fPCREExtra = nullptr; } -+#endif - }; - - -@@ -79,10 +96,15 @@ TPRegexp::TPRegexp(const TPRegexp &p) - - TPRegexp::~TPRegexp() - { -+#ifdef USE_PCRE2 -+ if (fPriv->fPCRE) -+ pcre2_code_free(fPriv->fPCRE); -+#else - if (fPriv->fPCRE) - pcre_free(fPriv->fPCRE); - if (fPriv->fPCREExtra) - pcre_free(fPriv->fPCREExtra); -+#endif - delete fPriv; - } - -@@ -93,12 +115,18 @@ TPRegexp &TPRegexp::operator=(const TPRegexp &p) - { - if (this != &p) { - fPattern = p.fPattern; -+#ifdef USE_PCRE2 -+ if (fPriv->fPCRE) -+ pcre2_code_free(fPriv->fPCRE); -+ fPriv->fPCRE = nullptr; -+#else - if (fPriv->fPCRE) - pcre_free(fPriv->fPCRE); - fPriv->fPCRE = nullptr; - if (fPriv->fPCREExtra) - pcre_free(fPriv->fPCREExtra); - fPriv->fPCREExtra = nullptr; -+#endif - fPCREOpts = p.fPCREOpts; - } - return *this; -@@ -197,31 +225,50 @@ TString TPRegexp::GetModifiers() const - - void TPRegexp::Compile() - { -+#ifdef USE_PCRE2 -+ if (fPriv->fPCRE) -+ pcre2_code_free(fPriv->fPCRE); -+#else - if (fPriv->fPCRE) - pcre_free(fPriv->fPCRE); -+#endif - - if (fPCREOpts & kPCRE_DEBUG_MSGS) - Info("Compile", "PREGEX compiling %s", fPattern.Data()); - -+#ifdef USE_PCRE2 -+ int errcode; -+ PCRE2_SIZE patIndex; -+ fPriv->fPCRE = pcre2_compile((PCRE2_SPTR)fPattern.Data(), fPattern.Length(), -+ fPCREOpts & kPCRE_INTMASK, -+ &errcode, &patIndex, nullptr); -+#else - const char *errstr; - Int_t patIndex; - fPriv->fPCRE = pcre_compile(fPattern.Data(), fPCREOpts & kPCRE_INTMASK, - &errstr, &patIndex, nullptr); -+#endif - - if (!fPriv->fPCRE) { -+#ifdef USE_PCRE2 -+ PCRE2_UCHAR errstr[256]; -+ pcre2_get_error_message(errcode, errstr, 256); -+#endif - if (fgThrowAtCompileError) { - throw std::runtime_error - (TString::Format("TPRegexp::Compile() compilation of TPRegexp(%s) failed at: %d because %s", -- fPattern.Data(), patIndex, errstr).Data()); -+ fPattern.Data(), (int)patIndex, errstr).Data()); - } else { - Error("Compile", "compilation of TPRegexp(%s) failed at: %d because %s", -- fPattern.Data(), patIndex, errstr); -+ fPattern.Data(), (int)patIndex, errstr); - return; - } - } - -+#ifndef USE_PCRE2 - if (fPriv->fPCREExtra || (fPCREOpts & kPCRE_OPTIMIZE)) - Optimize(); -+#endif - } - - //////////////////////////////////////////////////////////////////////////////// -@@ -229,6 +276,7 @@ void TPRegexp::Compile() - - void TPRegexp::Optimize() - { -+#ifndef USE_PCRE2 - if (fPriv->fPCREExtra) - pcre_free(fPriv->fPCREExtra); - -@@ -243,6 +291,7 @@ void TPRegexp::Optimize() - Error("Optimize", "Optimization of TPRegexp(%s) failed: %s", - fPattern.Data(), errstr); - } -+#endif - } - - //////////////////////////////////////////////////////////////////////////////// -@@ -308,21 +357,43 @@ Int_t TPRegexp::MatchInternal(const TString &s, Int_t start, - Int_t nMaxMatch, TArrayI *pos) const - { - Int_t *offVec = new Int_t[3*nMaxMatch]; -+ -+#ifdef USE_PCRE2 -+ pcre2_match_data *match_data; -+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr); -+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR8)s.Data(), -+ s.Length(), start, 0, -+ match_data, nullptr); -+#else - // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS. - Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(), - s.Length(), start, 0, - offVec, 3*nMaxMatch); -+#endif - - if (nrMatch == PCRE_ERROR_NOMATCH) - nrMatch = 0; - else if (nrMatch <= 0) { - Error("Match","pcre_exec error = %d", nrMatch); -+#ifdef USE_PCRE2 -+ pcre2_match_data_free(match_data); -+#endif - delete [] offVec; - return 0; - } - -- if (pos) -+ if (pos) { -+#ifdef USE_PCRE2 -+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data); -+ for (int i = 0; i < 2 * nrMatch; ++i) -+ offVec[i] = oVec[i]; -+#endif - pos->Set(2*nrMatch, offVec); -+ } -+ -+#ifdef USE_PCRE2 -+ pcre2_match_data_free(match_data); -+#endif - delete [] offVec; - - return nrMatch; -@@ -404,13 +475,24 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, - Int_t offset = start; - Int_t last = 0; - -+#ifdef USE_PCRE2 -+ pcre2_match_data *match_data; -+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr); -+#endif -+ - while (kTRUE) { - - // find next matching subs - // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS. -+#ifdef USE_PCRE2 -+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR)s.Data(), -+ s.Length(), offset, 0, -+ match_data, nullptr); -+#else - Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(), - s.Length(), offset, 0, - offVec, 3*nMaxMatch); -+#endif - - if (nrMatch == PCRE_ERROR_NOMATCH) { - break; -@@ -419,6 +501,12 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, - break; - } - -+#ifdef USE_PCRE2 -+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data); -+ for (int i = 0; i < 2 * nrMatch; ++i) -+ offVec[i] = oVec[i]; -+#endif -+ - // append anything previously unmatched, but not substituted - if (last <= offVec[0]) { - fin += s(last,offVec[0]-last); -@@ -446,6 +534,9 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, - } - } - -+#ifdef USE_PCRE2 -+ pcre2_match_data_free(match_data); -+#endif - delete [] offVec; - - fin += s(last,s.Length()-last); -diff --git a/tutorials/legacy/regexp/regexp.C b/tutorials/legacy/regexp/regexp.C -index 995b823bce..f38ed6799e 100644 ---- a/tutorials/legacy/regexp/regexp.C -+++ b/tutorials/legacy/regexp/regexp.C -@@ -94,11 +94,11 @@ void regexp() - // criteria: - // 1) It should be of the form string1@string2 . The "^" and "$" ensure that we compare the complete - // email string -- // 2) ([\\w-\\.]+) : -+ // 2) ([\\w\\-\\.]+) : - // string1 is only allowed to be composed out of the alphanumeric characters, "-" and "." . - // The "+" ensures that string1 can not be empty . - // 3) string2 is matched against three different parts : -- // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+)) : -+ // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+)) : - // This regular expression ensures that EITHER the string starts with "[" followed by three groups - // of numbers, separated by "." , where each group has 1 to 3 numbers, OR alphanumeric strings, - // possibly containing "-" characters, separated by "." . -@@ -108,7 +108,7 @@ void regexp() - // At most one "]" character . - - TString s5("fons.rademakers@cern.ch"); -- TPRegexp r5("^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); -+ TPRegexp r5("^([\\w\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); - cout << "Check if the email address \"" << s5 << "\" is valid: " << (r5.MatchB(s5) ? "TRUE" : "FALSE") << endl; - - // Substitute Example with pattern modifier : --- -2.41.0 - diff --git a/root-stress.patch b/root-stress.patch new file mode 100644 index 0000000..bf7f468 --- /dev/null +++ b/root-stress.patch @@ -0,0 +1,32 @@ +From 706c94ca916387287f7459c984d61439e52c1aba Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 2 Jun 2024 06:19:43 +0200 +Subject: [PATCH] Adjust stressGraphics.ref + +--- + test/stressGraphics.ref | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref +index 37077a2fb9..9d5cd0352d 100644 +--- a/test/stressGraphics.ref ++++ b/test/stressGraphics.ref +@@ -7,13 +7,13 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 6 430 50 12669 50 9558 100 5325 700 471 50 + 7 4980 50 13893 50 16143 1300 12230 500 5011 70 + 8 5442 80 13473 50 18430 700 12398 300 5469 80 +- 9 9253 100 14377 100 19851 2400 12199 900 9283 100 ++ 9 9253 100 14377 150 19851 2400 12199 900 9283 100 + 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 + 11 12971 100 14444 50 34063 2000 32033 1200 12864 150 + 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 + 13 5600 400 13242 300 16881 400 15063 800 5638 400 + 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 +- 15 15690 5000 17179 200 23076 9500 14232 1000 10437 5000 ++ 15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000 + 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 + 17 20444 400 21520 150 27511 11000 16867 600 20721 400 + 18 15894 100 19305 200 27187 10300 15925 350 15925 100 +-- +2.45.1 + diff --git a/root-use-consistent-wording-in-tmva-test-comments.patch b/root-use-consistent-wording-in-tmva-test-comments.patch deleted file mode 100644 index 1d3e52a..0000000 --- a/root-use-consistent-wording-in-tmva-test-comments.patch +++ /dev/null @@ -1,86 +0,0 @@ -From e6928c405fe1647a0ee6ea32543b18ebc3828227 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 23 Feb 2023 22:10:46 +0100 -Subject: [PATCH] Use consistent wording of the comments in the different TMVA - classification tests to avoid confusion. - ---- - tutorials/tmva/TMVA_CNN_Classification.C | 2 +- - tutorials/tmva/TMVA_CNN_Classification.py | 4 ++-- - tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++-- - tutorials/tmva/TMVA_RNN_Classification.py | 5 +++-- - 4 files changed, 10 insertions(+), 7 deletions(-) - -diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C -index cc6829a24d..db5af784d4 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.C -+++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -134,7 +134,7 @@ void TMVA_CNN_Classification(int nevts = 1000, std::vector opt = {1, 1, 1, - - bool writeOutputFile = true; - -- int num_threads = 4; // use by default 4 threads if value is not set before -+ int num_threads = 4; // use max 4 threads - // switch off MT in OpenBLAS to avoid conflict with tbb - gSystem->Setenv("OMP_NUM_THREADS", "1"); - -diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py -index 85fde20763..5d3c6e7220 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.py -+++ b/tutorials/tmva/TMVA_CNN_Classification.py -@@ -25,7 +25,7 @@ - - import ROOT - --#switch off MT in OpenMP (BLAS) -+# switch off MT in OpenBLAS to avoid conflict with tbb - ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") - - TMVA = ROOT.TMVA -@@ -145,7 +145,7 @@ if not useTMVACNN: - - writeOutputFile = True - --num_threads = 4 # use default threads -+num_threads = 4 # use max 4 threads - max_epochs = 10 # maximum number of epochs used for training - - -diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C -index 8701ba6c19..d4bb7a4e4a 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.C -+++ b/tutorials/tmva/TMVA_RNN_Classification.C -@@ -191,8 +191,10 @@ void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1) - useKeras = false; - #endif - -- int num_threads = 4; // use by default all threads -- gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS -+ int num_threads = 4; // use max 4 threads -+ // switch off MT in OpenBLAS to avoid conflict with tbb -+ gSystem->Setenv("OMP_NUM_THREADS", "1"); -+ - // do enable MT running - if (num_threads >= 0) { - ROOT::EnableImplicitMT(num_threads); -diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py -index 625a120b3d..65aa83c070 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.py -+++ b/tutorials/tmva/TMVA_RNN_Classification.py -@@ -26,10 +26,11 @@ 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 -+ # switch off MT in OpenBLAS to avoid conflict with tbb -+ 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") -+ print("Running in serial mode since ROOT does not support MT") - - - TMVA = ROOT.TMVA --- -2.39.2 - diff --git a/root-write-array.patch b/root-write-array.patch new file mode 100644 index 0000000..30b5945 --- /dev/null +++ b/root-write-array.patch @@ -0,0 +1,125 @@ +From a7be6f726b13a7ccf1c46dec35f53520781159df Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 7 Jun 2024 06:49:39 +0200 +Subject: [PATCH] Put back check for n = 0 + +--- + io/io/src/TBufferFile.cxx | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx +index 81e0f95e02..b5b7ef9831 100644 +--- a/io/io/src/TBufferFile.cxx ++++ b/io/io/src/TBufferFile.cxx +@@ -1948,6 +1948,8 @@ void TBufferFile::WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElemen + + void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(UChar_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -1974,6 +1976,8 @@ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n) + + void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Char_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -1995,6 +1999,8 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n) + + void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Char_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2023,6 +2029,8 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n) + + void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Short_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2054,7 +2062,8 @@ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n) + + void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n) + { +- ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = 4; + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2086,6 +2095,8 @@ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n) + + void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = 8; + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2108,6 +2119,8 @@ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n) + + void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = 8; + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2128,6 +2141,8 @@ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n) + + void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Long64_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2154,6 +2169,8 @@ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n) + + void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2185,6 +2202,8 @@ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n) + + void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Double_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2212,6 +2231,8 @@ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n) + + void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2270,6 +2291,8 @@ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerE + + void TBufferFile::WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +-- +2.45.2 + diff --git a/root.spec b/root.spec index bfe8824..c39adee 100644 --- a/root.spec +++ b/root.spec @@ -1,47 +1,16 @@ -# Needed for EPEL 8 -%undefine __cmake_in_source_build - # Disable package note flags, since root saves the compiler/linker flags # used during the build %undefine _package_note_flags -%global python3_version_uscore %(tr . _ <<< "%{python3_version}") - %global root7 1 - -%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 %{?rhel}%{!?rhel:0} == 8 -# DistRDF requires Python 3.8 or later, RHEL 8 has version 3.6 -%global distrdf 0 -%else %global distrdf %{dataframe} -%endif -%if %{?rhel}%{!?rhel:0} == 8 -# Requires nlohmann json version 3.9 or later, RHEL 8 has version 3.6 -%global bundlejson 1 -%else %global bundlejson 0 -%endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 +%if %{?fedora}%{!?fedora:0} %ifarch %{ix86} %{arm} %global pandas 0 %else @@ -55,9 +24,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.30.06 +Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -92,39 +61,33 @@ Patch2: %{name}-dont-install-minicern.patch Patch3: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled Patch4: %{name}-32bit-tests.patch -# Use local static script and style files for JsMVA -Patch5: %{name}-jsmva-static.patch -# Fix test failure on ppc64le and aarch64 with gcc 12 -# https://github.com/root-project/root/pull/9601 -Patch6: %{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 -Patch7: %{name}-big-endian-byte-swap.patch -# https://github.com/root-project/root/pull/12375 -Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch -# https://github.com/root-project/root/pull/10303 -Patch9: %{name}-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch -# Port to pcre2 -# https://github.com/root-project/root/issues/11395 -# https://github.com/root-project/root/pull/13771 -Patch10: %{name}-pcre2.patch -# https://github.com/root-project/root/pull/14111 -Patch11: %{name}-avoid-out-of-memory-during-linking.patch -# https://github.com/root-project/root/pull/14112 -Patch12: %{name}-clad.patch -Patch13: %{name}-gtest-back.patch -Patch14: %{name}-np32.patch -# Adjust tests for zlib-ng -# https://github.com/root-project/root/pull/14295 -Patch15: %{name}-new-zlib.patch -# Only for EPEL 8 - disable tests not working with old gtest -Patch16: %{name}-old-gtest.patch +# Adjust stress graphics reference +# https://github.com/root-project/root/pull/15735 +Patch5: %{name}-stress.patch +# Avoid segmentation fault on ix86 +# https://github.com/root-project/root/issues/15738 +# https://github.com/root-project/root/pull/15780 +Patch6: %{name}-write-array.patch +# Adjust test limit +# https://github.com/root-project/root/pull/15734 +Patch7: %{name}-failure-on-ppc64le-and-s390x.patch +# Correct format warnings seen on 32 bit architectures +# https://github.com/root-project/root/pull/15732 +Patch8: %{name}-format-warnings-32-bit.patch +# Out-of-bounds vector access +# https://github.com/root-project/root/issues/15730 +# https://github.com/root-project/root/pull/15739 +Patch9: %{name}-out-of-bounds.patch +# Fix one more broken import in JsMVA +# https://github.com/root-project/root/pull/15752 +Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: make -BuildRequires: cmake >= 3.16 +# root on Linux requires cmake 3.16 +# but 3.19 is needed for flexiblas support +BuildRequires: cmake >= 3.19 BuildRequires: libX11-devel BuildRequires: libXpm-devel BuildRequires: libXft-devel @@ -141,9 +104,10 @@ BuildRequires: xz-devel BuildRequires: lz4-devel BuildRequires: xxhash-devel BuildRequires: libzstd-devel -# Require a version of libAfterImage that is properly linked to -# its dependencies -BuildRequires: libAfterImage-devel >= 1.20-21 +BuildRequires: libtiff-devel +BuildRequires: libpng-devel +BuildRequires: giflib-devel +BuildRequires: libjpeg-devel BuildRequires: ncurses-devel BuildRequires: libxml2-devel BuildRequires: fftw-devel @@ -155,7 +119,7 @@ BuildRequires: unixODBC-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel BuildRequires: libpq-devel -BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-devel >= 3.7 BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy %ifarch %{qt5_qtwebengine_arches} @@ -172,23 +136,17 @@ BuildRequires: desktop-file-utils BuildRequires: dcap-devel BuildRequires: xrootd-client-devel >= 1:5.0.0 BuildRequires: cfitsio-devel -BuildRequires: davix-devel >= 0.6.4 +# Davix version >= 0.6.4, but not between 0.6.8 and 0.7.0 +BuildRequires: davix-devel >= 0.7.1 BuildRequires: R-Rcpp-devel BuildRequires: R-RInside-devel BuildRequires: readline-devel -BuildRequires: tbb-devel >= 2018 +BuildRequires: tbb-devel >= 2020 BuildRequires: libuuid-devel BuildRequires: graphviz-devel BuildRequires: expat-devel BuildRequires: pythia8-devel >= 8.1.80 -%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) -BuildRequires: cmake-data >= 3.18.3-1 -%else -BuildRequires: openblas-devel -%endif %if ! %{bundlejson} BuildRequires: json-devel >= 3.9 %endif @@ -361,26 +319,6 @@ Obsoletes: %{name}-montecarlo-vmc < 6.26.00 Obsoletes: %{name}-doc < 6.26.00 Obsoletes: %{name}-io-gfal < 6.30.00 Obsoletes: %{name}-roofit-common < 6.30.00 -%if %{?rhel}%{!?rhel:0} == 8 -# 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 This package contains the core libraries used by ROOT: libCore, libNew, @@ -446,6 +384,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split (tpython from Python bindings) Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00 +# JsMVA python module is now a submodule of ROOT python module +Provides: python%{python3_pkgversion}-jsmva = %{version}-%{release} +Obsoletes: python%{python3_pkgversion}-jsmva < 6.32.00 %description -n python%{python3_pkgversion}-%{name} This package contains the Python extension for ROOT. It makes it @@ -453,12 +394,18 @@ possible to use ROOT classes in Python. %package -n python%{python3_pkgversion}-jupyroot Summary: ROOT Jupyter kernel +BuildArch: noarch %py_provides python%{python3_pkgversion}-jupyroot -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} +Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} +Requires: %{name}-core = %{version}-%{release} +# notebook package was merged with JupyROOT package +Provides: %{name}-notebook = %{version}-%{release} +Obsoletes: %{name}-notebook < 6.32.00 +Requires: js-jsroot >= 7.5 %if %{?fedora}%{!?fedora:0} +# jupyter-notebook not available in RHEL/EPEL +# some functionality missing +Requires: jupyter-notebook # python-metakernel not available in RHEL/EPEL # some functionality missing Requires: python%{python3_pkgversion}-ipython @@ -469,15 +416,6 @@ Requires: python-jupyter-filesystem %description -n python%{python3_pkgversion}-jupyroot The Jupyter kernel for the ROOT notebook. -%package -n python%{python3_pkgversion}-jsmva -Summary: TMVA interface used by JupyROOT -BuildArch: noarch -%py_provides python%{python3_pkgversion}-jsmva -Requires: %{name}-tmva = %{version}-%{release} - -%description -n python%{python3_pkgversion}-jsmva -TMVA interface used by JupyROOT. - %if %{distrdf} %package -n python%{python3_pkgversion}-distrdf Summary: Distributed RDataFrame @@ -594,9 +532,6 @@ Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -# Require a version of libAfterImage that is properly linked to -# its dependencies -Requires: libAfterImage >= 1.20-21 %description graf-asimage This package contains the AfterImage renderer for ROOT, which allows @@ -1801,20 +1736,6 @@ Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} The ROOT command line utilities is a set of scripts for common tasks written in python. -%package notebook -Summary: Static files for the Jupyter ROOT Notebook -BuildArch: noarch -Requires: %{name}-core = %{version}-%{release} -Requires: js-jsroot >= 7.5 -%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. - %package gui-webdisplay Summary: Web display for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1994,46 +1915,34 @@ This package contains utility functions for ntuples. %prep %setup -q -a 1 -%patch -P 0 -p1 -%patch -P 1 -p1 -%patch -P 2 -p1 -%patch -P 3 -p1 -%patch -P 4 -p1 -%patch -P 5 -p1 -%patch -P 6 -p1 -%patch -P 7 -p1 -%patch -P 8 -p1 -%patch -P 9 -p1 -%patch -P 10 -p1 -%patch -P 11 -p1 -%patch -P 12 -p1 -%patch -P 13 -p1 -%patch -P 14 -p1 -%patch -P 15 -p1 -%if %{?rhel}%{!?rhel:0} == 8 -%patch -P 16 -p1 -%endif +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 +%patch -P3 -p1 +%patch -P4 -p1 +%patch -P5 -p1 +%patch -P6 -p1 +%patch -P7 -p1 +%patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage -rm -rf graf2d/asimage/src/libAfterImage +rm -rf graf2d/asimage/src/libAfterImage/{libjpeg,libpng,libungif,zlib} +sed '/zlib\/zlib.h/d' -i graf2d/asimage/src/libAfterImage/.depend # * ftgl rm -rf graf3d/ftgl/src graf3d/ftgl/inc # * freetype rm -rf graf2d/freetype/src -# * davix, glew, lz4, nlohmann, openssl, pcre, tbb, xxhash, zlib, zstd -rm -rf builtins/davix +# * glew, lz4, nlohmann, pcre, xxhash, zlib, zstd rm -rf builtins/glew rm -rf builtins/lz4 %if ! %{bundlejson} rm -rf builtins/nlohmann %endif -rm -rf builtins/openssl rm -rf builtins/pcre -rm -rf builtins/tbb -rm -rf builtins/xrootd rm -rf builtins/xxhash -rm -rf builtins/zeromq rm -rf builtins/zlib rm -rf builtins/zstd # * lzma @@ -2053,6 +1962,9 @@ rm -rf js/[^f]* js/files/draw.htm js/files/online.htm rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css +# Additional documentation +install -p -m 644 %{SOURCE7} bindings/jupyroot + %build # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO @@ -2070,20 +1982,15 @@ for s in etc/notebook/JsMVA/css/*.css ; do python3 -m rcssmin < ${s} > ${s%.css}.min.css done -# Avoid overlinking (this is the default on Fedora and EPEL 9) -%if %{?rhel}%{!?rhel:0} == 8 -LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -%endif - %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} \ - -DPYTHON_EXECUTABLE=%{__python3} \ + -DPython3_EXECUTABLE=%{__python3} \ -Dgnuinstall:BOOL=ON \ - -Dbuiltin_afterimage:BOOL=OFF \ + -Dbuiltin_afterimage:BOOL=ON \ -Dbuiltin_cfitsio:BOOL=OFF \ -Dbuiltin_clang:BOOL=ON \ -Dbuiltin_cling:BOOL=ON \ @@ -2129,6 +2036,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dclad:BOOL=OFF \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ + -Dcudnn:BOOL=OFF \ -Dcxxmodules:BOOL=OFF \ -Ddaos:BOOL=OFF \ %if %{dataframe} @@ -2139,7 +2047,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Ddavix:BOOL=ON \ -Ddcache:BOOL=ON \ -Ddev:BOOL=OFF \ - -Dexceptions:BOOL=ON \ -Dfcgi:BOOL=ON \ -Dfftw3:BOOL=ON \ -DFIREFOX_EXECUTABLE:PATH=/usr/bin/firefox \ @@ -2152,20 +2059,15 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ - -Dminuit2:BOOL=ON \ -Dminuit2_mpi:BOOL=OFF \ -Dminuit2_omp:BOOL=OFF \ - -Dmlp:BOOL=ON \ -Dmpi:BOOL=OFF \ -Dmysql:BOOL=ON \ -Dodbc:BOOL=ON \ -Dopengl:BOOL=ON \ - -Doracle:BOOL=OFF \ -Dpgsql:BOOL=ON \ -Dproof:BOOL=ON \ -Dpyroot:BOOL=ON \ - -Dpyroot-python2:BOOL=OFF \ - -Dpythia6:BOOL=OFF \ -Dpythia8:BOOL=ON \ %ifarch %{qt5_qtwebengine_arches} -Dqt5web:BOOL=ON \ @@ -2259,9 +2161,6 @@ install -p -m 644 %{SOURCE5} %{buildroot}%{_datadir}/mime/packages install -p -m 644 %{SOURCE6} \ %{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes -# Additional documentation -install -p -m 644 %{SOURCE7} %{buildroot}%{_pkgdocdir} - # Move python cli helper to its own directory mkdir -p %{buildroot}%{_datadir}/%{name}/cli mv %{buildroot}%{python3_sitearch}/cmdLineUtils.py \ @@ -2274,43 +2173,37 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} # 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}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so - -mv %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} -rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so +mv %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{version} \ + %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix} +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{libversion} +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so # Move noarch python modules to sitelib if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then mkdir -p %{buildroot}%{python3_sitelib} -mv %{buildroot}%{python3_sitearch}/JsMVA %{buildroot}%{python3_sitelib} +mv %{buildroot}%{python3_sitearch}/JupyROOT %{buildroot}%{python3_sitelib} %if %{distrdf} mv %{buildroot}%{python3_sitearch}/DistRDF %{buildroot}%{python3_sitelib} %endif fi -# Create .egg-info files so that rpm auto-generates provides +# Create .dist-info files so that rpm auto-generates provides +mkdir %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info echo 'Name: ROOT' > \ - %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info + %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info + %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA +mkdir %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info echo 'Name: JupyROOT' > \ - %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info + %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info -echo 'Name: JsMVA' > \ - %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info + %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA %if %{distrdf} +mkdir %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info echo 'Name: DistRDF' > \ - %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info + %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info + %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA %endif # Put jupyter stuff in the right places @@ -2322,7 +2215,7 @@ sed -e 's/ROOT C++/& (Python 3)/' \ -e 's!python[0-9]*\.[0-9]*!%{__python3}!' \ -i %{buildroot}%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot/kernel.json sed -e '/^\#!/d' \ - -i %{buildroot}%{python3_sitearch}/JupyROOT/kernel/rootkernel.py + -i %{buildroot}%{python3_sitelib}/JupyROOT/kernel/rootkernel.py rm -rf %{buildroot}%{_datadir}/%{name}/notebook/custom rm -rf %{buildroot}%{_datadir}/%{name}/notebook/html @@ -2391,10 +2284,10 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins %if ! %{root7} rm TBrowserImp/P030_RWebBrowserImp.C %endif -rm TFile/P050_TGFALFile.C rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TProofMgr/P010_TXProofMgr.C +rm TProofMonSender/P010_TProofMonSenderML.C rm TProofServ/P010_TXProofServ.C rm TSlave/P010_TXSlave.C rm TSQLServer/P040_TOracleServer.C @@ -2516,10 +2409,6 @@ popd # reads input data over network: # root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ # -# - tutorial-v7-global_temperatures.cxx -# reads input data over network -# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv -# # - tutorial-v7-ntuple-ntpl003_lhcbOpenData # reads input data over network # http://root.cern.ch/files/LHCb/lhcb_B2HHH_MagnetUp.root (425 MB) @@ -2532,6 +2421,10 @@ popd # reads input data over network # http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root (20 MB) # +# - tutorial-v7-ntuple-ntpl011_global_temperatures +# reads input data over network +# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv +# # - gtest-net-davix-test-RRawFileDavix # reads input file over network # http://root.cern.ch/files/davix.test @@ -2586,10 +2479,10 @@ tutorial-dataframe-df106_HiggsToFourLeptons|\ tutorial-dataframe-df107_SingleTopAnalysis-py|\ tutorial-rcanvas-df104-py|\ tutorial-rcanvas-df105-py|\ -tutorial-v7-global_temperatures.cxx|\ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ tutorial-v7-ntuple-ntpl008_import|\ +tutorial-v7-ntuple-ntpl011_global_temperatures|\ gtest-net-davix-test-RRawFileDavix|\ gtest-net-netxng-test-RRawFileNetXNG|\ gtest-net-netxng-test-TNetXNGFileTest|\ @@ -2607,87 +2500,36 @@ test-webgui-ping" %if ! %{pandas} # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py +# - tutorial-dataframe-df035_RDFFromPandas-py # - tutorial-roofit-rf409_NumPyPandasToRooFit-py # Requires the pandas python module not (yet) available in RHEL/EPEL 9 excluded="${excluded}|\ test-import-pandas|\ tutorial-dataframe-df026_AsNumpyArrays-py|\ +tutorial-dataframe-df035_RDFFromPandas-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif %ifarch %{ix86} # - gtest-tree-dataframe-test-dataframe-concurrency # "There's already an active task arena." +# +# - gtest-tree-dataframe-test-dataframe-simple +# free(): invalid pointer excluded="${excluded}|\ -gtest-tree-dataframe-test-dataframe-concurrency" +gtest-tree-dataframe-test-dataframe-concurrency|\ +gtest-tree-dataframe-test-dataframe-simple" %endif %ifarch %{power64} -# PPC64LE specific failures -# - test-stresshistofit-interpreted -# - test-stresshistogram-interpreted -# - test-stressmathcore-interpreted +# - test-stressgraphics(-interpreted) +# *** stack smashing detected ***: terminated # -# Always timeout (hang?) -# - test-stressinterpreter -# - tutorial-unuran-unuranFoamTest +# - tutorial-roostats-IntervalExamples-py +# *** Break *** segmentation violation excluded="${excluded}|\ -test-stresshistofit-interpreted|\ -test-stresshistogram-interpreted|\ -test-stressmathcore-interpreted|\ -test-stressinterpreter|\ -tutorial-unuran-unuranFoamTest" - -%if %{?rhel}%{!?rhel:0} == 8 -# Fails on ppc64le since RHEL 8.5 update -# Exception: Found not whitelisted libraries after importing ROOT: -# - libpthread-2.28 -# - libm-2.28 -# - libc-2.28 -# - librt-2.28 -# - pyunittests-pyroot-import-load-libs -# -# - tutorial-fit-combinedFit(-py) -# - tutorial-fit-fit2dHist -# - tutorial-fit-fitCircle -# - tutorial-fit-line3Dfit -# - tutorial-math-exampleFunction-py -# - tutorial-multicore-mt103_fillNtupleFromMultipleThreads -# - tutorial-multicore-mt201_parallelHistoFill -# - tutorial-multicore-mt304_fillHistos -# - tutorial-multicore-mtbb001_fillHistos -# - tutorial-multicore-mtbb101_fillNtuples -# - tutorial-multicore-mtbb201_parallelHistoFill -# - tutorial-rcanvas-* -# - tutorial-v7-concurrentfill.cxx -# - tutorial-v7-ntuple-ntpl001_staff -# - tutorial-v7-ntuple-ntpl002_vector -# - tutorial-v7-ntuple-ntpl005_introspection -# - tutorial-v7-ntuple-ntpl006_friends -# - tutorial-v7-ntuple-ntpl007_mtFill -# - tutorial-v7-simple.cxx -excluded="${excluded}|\ -pyunittests-pyroot-import-load-libs|\ -tutorial-fit-combinedFit|\ -tutorial-fit-fit2dHist|\ -tutorial-fit-fitCircle|\ -tutorial-fit-line3Dfit|\ -tutorial-math-exampleFunction-py|\ -tutorial-multicore-mt103_fillNtupleFromMultipleThreads|\ -tutorial-multicore-mt201_parallelHistoFill|\ -tutorial-multicore-mt304_fillHistos|\ -tutorial-multicore-mtbb001_fillHistos|\ -tutorial-multicore-mtbb101_fillNtuples|\ -tutorial-multicore-mtbb201_parallelHistoFill|\ -tutorial-rcanvas|\ -tutorial-v7-concurrentfill.cxx|\ -tutorial-v7-ntuple-ntpl001_staff|\ -tutorial-v7-ntuple-ntpl002_vector|\ -tutorial-v7-ntuple-ntpl005_introspection|\ -tutorial-v7-ntuple-ntpl006_friends|\ -tutorial-v7-ntuple-ntpl007_mtFill|\ -tutorial-v7-simple.cxx" -%endif +test-stressgraphics|\ +tutorial-roostats-IntervalExamples-py" %endif %ifarch s390x @@ -2696,19 +2538,21 @@ tutorial-v7-simple.cxx" excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker" -# - gtest-core-base-test-CoreBaseTests # - gtest-core-dictgen-test-dictgen-base -# - gtest-core-meta-test-testTDataType +# - gtest-tree-dataframe-test-dataframe-unified-constructor # # - gtest-tree-dataframe-test-datasource-ntuple # - gtest-tree-ntuple-v7-test-ntuple-basics # - gtest-tree-ntuple-v7-test-ntuple-bulk +# - gtest-tree-ntuple-v7-test-ntuple-compat # - gtest-tree-ntuple-v7-test-ntuple-endian # - gtest-tree-ntuple-v7-test-ntuple-extended # - gtest-tree-ntuple-v7-test-ntuple-friends +# - gtest-tree-ntuple-v7-test-ntuple-merger # - gtest-tree-ntuple-v7-test-ntuple-minifile # - gtest-tree-ntuple-v7-test-ntuple-modelext # - gtest-tree-ntuple-v7-test-ntuple-packing +# - gtest-tree-ntuple-v7-test-ntuple-parallel-writer # - gtest-tree-ntuple-v7-test-ntuple-project # - gtest-tree-ntuple-v7-test-ntuple-serialize # - gtest-tree-ntuple-v7-test-ntuple-show @@ -2716,6 +2560,8 @@ gtest-roofit-roofitcore-test-testNaNPacker" # - gtest-tree-ntuple-v7-test-ntuple-storage-daos # - gtest-tree-ntuple-v7-test-ntuple-types # - gtest-tree-ntuple-v7-test-ntuple-view +# - gtest-tree-ntuple-v7-test-rfield-class +# - gtest-tree-ntuple-v7-test-rfield-variant # - gtest-tree-ntuple-v7-test-rfield-vector # - gtest-tree-ntupleutil-v7-test-ntuple-importer # - gtest-tree-ntupleutil-v7-test-ntuple-inspector @@ -2726,18 +2572,9 @@ gtest-roofit-roofitcore-test-testNaNPacker" # - pyunittests-pyroot-pyz-stl-vector # - tutorial-dataframe-df006_ranges-py # - tutorial-fit-combinedFit-py -# - tutorial-fit-fitcont # - tutorial-fit-NumericalMinimization-py # - tutorial-math-exampleFunction-py # - tutorial-rcanvas-rbox-py -# - tutorial-roofit-rf108_plotbinning-py -# - tutorial-roofit-rf306_condpereventerrors-py -# - tutorial-roofit-rf307_fullpereventerrors-py -# - tutorial-roofit-rf310_sliceplot-py -# - tutorial-roofit-rf708_bphysics-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 @@ -2748,18 +2585,20 @@ gtest-roofit-roofitcore-test-testNaNPacker" # - test-stresshistogram # - test-stresshistogram-interpreted excluded="${excluded}|\ -gtest-core-base-test-CoreBaseTests|\ gtest-core-dictgen-test-dictgen-base|\ -gtest-core-meta-test-testTDataType|\ +gtest-tree-dataframe-test-dataframe-unified-constructor|\ gtest-tree-dataframe-test-datasource-ntuple|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ gtest-tree-ntuple-v7-test-ntuple-bulk|\ +gtest-tree-ntuple-v7-test-ntuple-compat|\ gtest-tree-ntuple-v7-test-ntuple-endian|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ gtest-tree-ntuple-v7-test-ntuple-friends|\ +gtest-tree-ntuple-v7-test-ntuple-merger|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ gtest-tree-ntuple-v7-test-ntuple-modelext|\ gtest-tree-ntuple-v7-test-ntuple-packing|\ +gtest-tree-ntuple-v7-test-ntuple-parallel-writer|\ gtest-tree-ntuple-v7-test-ntuple-project|\ gtest-tree-ntuple-v7-test-ntuple-serialize|\ gtest-tree-ntuple-v7-test-ntuple-show|\ @@ -2767,6 +2606,8 @@ gtest-tree-ntuple-v7-test-ntuple-storage|\ gtest-tree-ntuple-v7-test-ntuple-storage-daos|\ gtest-tree-ntuple-v7-test-ntuple-types|\ gtest-tree-ntuple-v7-test-ntuple-view|\ +gtest-tree-ntuple-v7-test-rfield-class|\ +gtest-tree-ntuple-v7-test-rfield-variant|\ gtest-tree-ntuple-v7-test-rfield-vector|\ gtest-tree-ntupleutil-v7-test-ntuple-importer|\ gtest-tree-ntupleutil-v7-test-ntuple-inspector|\ @@ -2775,36 +2616,14 @@ pyunittests-pyroot-pyz-rtensor|\ pyunittests-pyroot-pyz-stl-vector|\ tutorial-dataframe-df006_ranges-py|\ tutorial-fit-combinedFit-py|\ -tutorial-fit-fitcont|\ tutorial-fit-NumericalMinimization-py|\ tutorial-math-exampleFunction-py|\ tutorial-rcanvas-rbox-py|\ -tutorial-roofit-rf108_plotbinning-py|\ -tutorial-roofit-rf306_condpereventerrors-py|\ -tutorial-roofit-rf307_fullpereventerrors-py|\ -tutorial-roofit-rf310_sliceplot-py|\ -tutorial-roofit-rf708_bphysics-py|\ -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" - -%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 %endif %if %{?fedora}%{!?fedora:0} >= 40 @@ -2818,15 +2637,21 @@ gtest-math-matrix-test-testMatrixTSparse" %endif # Filter out parts of tests that require remote network access +# RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) # TClingDataMemberInfo.Offset fails on s390x # https://github.com/root-project/root/issues/14512 GTEST_FILTER=-\ +%ifarch %{ix86} +RNTuple.StdAtomic:\ +%endif %ifarch s390x TClingDataMemberInfo.Offset:\ %endif RCsvDS.Remote:\ +RNTuple.OpenHTTP:\ RRawFile.Remote:\ RSqliteDS.Davix:\ +TChainParsing.DoubleSlash:\ TChainParsing.RemoteGlob:\ TFile.ReadWithoutGlobalRegistrationNet:\ TFile.ReadWithoutGlobalRegistrationWeb \ @@ -2859,38 +2684,36 @@ if [ -r /var/lib/alternatives/libPyROOT.so ] ; then done fi -%post notebook +%post -n python%{python3_pkgversion}-jupyroot mkdir -p /etc/jupyter if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py fi cat << EOF >> /etc/jupyter/jupyter_notebook_config.py -# Extra static path for JupyROOT - start - do not remove this line +# Extra static paths for JupyROOT - start - do not remove this line 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 +# Extra static paths for JupyROOT - end - do not remove this line EOF if [ -e /etc/jupyter/jupyter_server_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py fi cat << EOF >> /etc/jupyter/jupyter_server_config.py -# Extra static path for JupyROOT - start - do not remove this line +# Extra static paths for JupyROOT - start - do not remove this line 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 +# Extra static paths for JupyROOT - end - do not remove this line EOF -%postun notebook +%postun -n python%{python3_pkgversion}-jupyroot if [ $1 -eq 0 ] ; then if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py if [ ! -s /etc/jupyter/jupyter_notebook_config.py ] ; then rm /etc/jupyter/jupyter_notebook_config.py rmdir /etc/jupyter 2>/dev/null || : fi fi if [ -e /etc/jupyter/jupyter_server_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py if [ ! -s /etc/jupyter/jupyter_server_config.py ] ; then rm /etc/jupyter/jupyter_server_config.py rmdir /etc/jupyter 2>/dev/null || : @@ -3016,29 +2839,27 @@ fi %{python3_sitearch}/cppyy %{python3_sitearch}/cppyy_backend %{python3_sitearch}/ROOT -%{python3_sitearch}/ROOT-*.egg-info -%{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}.* -%{_libdir}/%{name}/libcppyy_backend%{python3_version_uscore}.* +%{python3_sitearch}/ROOT-*.dist-info +%{python3_sitearch}/libcppyy.so +%{python3_sitearch}/libcppyy_backend.so +%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix} +%{_libdir}/%{name}/libcppyy.* +%{_libdir}/%{name}/libcppyy_backend.* %dir %{_includedir}/%{name}/CPyCppyy %files -n python%{python3_pkgversion}-jupyroot -%{python3_sitearch}/JupyROOT -%{python3_sitearch}/JupyROOT-*.egg-info -%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} +%{python3_sitelib}/JupyROOT +%{python3_sitelib}/JupyROOT-*.dist-info %{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot +%{_bindir}/rootnb.exe +%{_datadir}/%{name}/notebook %doc bindings/jupyroot/README.md - -%files -n python%{python3_pkgversion}-jsmva -%{python3_sitelib}/JsMVA -%{python3_sitelib}/JsMVA-*.egg-info +%doc bindings/jupyroot/JupyROOT-on-EPEL %if %{distrdf} %files -n python%{python3_pkgversion}-distrdf %{python3_sitelib}/DistRDF -%{python3_sitelib}/DistRDF-*.egg-info +%{python3_sitelib}/DistRDF-*.dist-info %endif %files r -f includelist-bindings-r @@ -3433,7 +3254,6 @@ fi %{_libdir}/%{name}/libProofDraw_rdict.pcm %{_libdir}/%{name}/libProofPlayer.* %{_libdir}/%{name}/libProofPlayer_rdict.pcm -%{_datadir}/%{name}/plugins/TProofMonSender/P010_TProofMonSenderML.C %{_datadir}/%{name}/plugins/TProofMonSender/P020_TProofMonSenderSQL.C %{_datadir}/%{name}/plugins/TVirtualProofPlayer/P010_TProofPlayer.C %{_datadir}/%{name}/plugins/TVirtualProofPlayer/P020_TProofPlayerRemote.C @@ -3554,33 +3374,30 @@ fi %dir %{_includedir}/%{name}/TMVA/DNN/CNN %dir %{_includedir}/%{name}/TMVA/DNN/RNN %license tmva/doc/LICENSE +%exclude %{_includedir}/%{name}/TMVA/RBatchGenerator.hxx +%exclude %{_includedir}/%{name}/TMVA/RBatchLoader.hxx %exclude %{_includedir}/%{name}/TMVA/RBDT.hxx +%exclude %{_includedir}/%{name}/TMVA/RChunkLoader.hxx %exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx %exclude %{_includedir}/%{name}/TMVA/RReader.hxx %exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx %exclude %{_includedir}/%{name}/TMVA/RStandardScaler.hxx %exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx %if %{dataframe} %files tmva-utils %{_libdir}/%{name}/libTMVAUtils.* %{_libdir}/%{name}/libTMVAUtils_rdict.pcm %dir %{_includedir}/%{name}/TMVA -%dir %{_includedir}/%{name}/TMVA/TreeInference +%{_includedir}/%{name}/TMVA/RBatchGenerator.hxx +%{_includedir}/%{name}/TMVA/RBatchLoader.hxx %{_includedir}/%{name}/TMVA/RBDT.hxx +%{_includedir}/%{name}/TMVA/RChunkLoader.hxx %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx %{_includedir}/%{name}/TMVA/RReader.hxx %{_includedir}/%{name}/TMVA/RSofieReader.hxx %{_includedir}/%{name}/TMVA/RStandardScaler.hxx %{_includedir}/%{name}/TMVA/RTensorUtils.hxx -%{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx -%{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx -%{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx -%{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx %endif %files tmva-python -f includelist-tmva-pymva @@ -3650,14 +3467,10 @@ fi %{_bindir}/rootslimtree %{_datadir}/%{name}/cli -%files notebook -%{_bindir}/rootnb.exe -%{_datadir}/%{name}/notebook -%doc %{_pkgdocdir}/JupyROOT-on-EPEL - %files gui-webdisplay -f includelist-gui-webdisplay %{_libdir}/%{name}/libROOTWebDisplay.* %{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm +%{_datadir}/%{name}/runfirefox.sh %{_datadir}/%{name}/ui5 %ifarch %{qt5_qtwebengine_arches} @@ -3744,6 +3557,14 @@ fi %endif %changelog +* Mon Jun 03 2024 Mattias Ellert - 6.32.00-1 +- Update to 6.32.00 +- Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020) +- Dropped patches: 12 +- New patches: 6 +- The JsMVA python module is now a submodule of the ROOT python module +- The notebook package was merged with the JupyROOT package + * Wed May 15 2024 Mattias Ellert - 6.30.06-5 - Rebuilt for libarrow.so.1601 - Improved fontconfig support diff --git a/sources b/sources index 755c137..a8ec13f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.30.06.tar.xz) = 10309321a8e803f1ea2019a4d8ddde6220b052ddfa1ed7dedd432201db5917da748e944b2323794317251fd0d70048b276ad7bed6e3fcd84835de7be88b4c420 +SHA512 (root-6.32.00.tar.xz) = 4b1015684b79aa352edd42316a3a87ae48f4330a7566230349f0a5c4e3ff49cddca79b5171128300d88575dfe2503ab1357cb3bd99d2c2a78985cc9aabd742f6 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f