From 07ab2f0b596f20efb7f83bd8157eeca2a8045189 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 30 Mar 2021 19:39:57 +0100 Subject: [PATCH 001/127] Rebuilt for removed libstdc++ symbol (#1937698) --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 03e7056..ce2c011 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3492,6 +3492,9 @@ fi %endif %changelog +* Tue Mar 30 2021 Jonathan Wakely - 6.22.08-2 +- Rebuilt for removed libstdc++ symbol (#1937698) + * Fri Mar 19 2021 Mattias Ellert - 6.22.08-1 - Update to 6.22.08 From a49523d8a58444aaea12557f1bc16a2a2fe836de Mon Sep 17 00:00:00 2001 From: Tomas Hrnciar Date: Mon, 19 Apr 2021 13:18:32 +0200 Subject: [PATCH 002/127] BuildRequire setuptools explicitly See https://fedoraproject.org/wiki/Changes/Reduce_dependencies_on_python3-setuptools --- root.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/root.spec b/root.spec index ce2c011..16fefdd 100644 --- a/root.spec +++ b/root.spec @@ -211,6 +211,7 @@ BuildRequires: postgresql-devel BuildRequires: python2-devel %endif BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools %if %{root7} %ifarch %{qt5_qtwebengine_arches} BuildRequires: qt5-qtbase-devel From f21e05fd5fe40c0e81cc14c7553121aa064f326f Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 10 May 2021 16:08:35 +0100 Subject: [PATCH 003/127] Rebuilt for removed libstdc++ symbols (#1937698) --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 16fefdd..8b1cd7b 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3493,6 +3493,9 @@ fi %endif %changelog +* Mon May 10 2021 Jonathan Wakely - 6.22.08-3 +- Rebuilt for removed libstdc++ symbols (#1937698) + * Tue Mar 30 2021 Jonathan Wakely - 6.22.08-2 - Rebuilt for removed libstdc++ symbol (#1937698) From b1e3d73d24db3d3544d67d1c375c7b670f9c7f32 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 1 Jun 2021 09:42:05 +0200 Subject: [PATCH 004/127] Adapt to new Python RPM generators (empty .egg-info no longer works) Filter out parts of tests that require remote network access instead of excluding the whole test Fix multicore tests when running on machines with few cores --- root-fix-multicore-tests-with-few-cores.patch | 143 ++++++++++++++++++ root.spec | 56 ++++--- 2 files changed, 182 insertions(+), 17 deletions(-) create mode 100644 root-fix-multicore-tests-with-few-cores.patch diff --git a/root-fix-multicore-tests-with-few-cores.patch b/root-fix-multicore-tests-with-few-cores.patch new file mode 100644 index 0000000..ada5a11 --- /dev/null +++ b/root-fix-multicore-tests-with-few-cores.patch @@ -0,0 +1,143 @@ +diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_concurrency.cxx root-6.22.08/tree/dataframe/test/dataframe_concurrency.cxx +--- root-6.22.08.orig/tree/dataframe/test/dataframe_concurrency.cxx 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/tree/dataframe/test/dataframe_concurrency.cxx 2021-06-01 09:01:37.847751408 +0200 +@@ -46,33 +46,35 @@ + // [DF] Warn on mismatch between slot pool size and effective number of slots + TEST(RDFSimpleTests, ThrowOnPoolSizeMismatch) + { ++ const unsigned int nslots = std::min(3u, std::thread::hardware_concurrency()); ++ + // pool created after RDF +- { ++ if (nslots > 1) { + ROOT::RDataFrame df(1); +- ROOT::EnableImplicitMT(3); ++ ROOT::EnableImplicitMT(nslots); + try { + df.Count().GetValue(); + } catch (const std::runtime_error &e) { + const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the size of the thread pool " +- "was 1, but when starting the event loop it was 3. Maybe EnableImplicitMT() was " ++ "was 1, but when starting the event loop it was " + std::to_string(nslots) + ". Maybe EnableImplicitMT() was " + "called after the RDataFrame was constructed?"; +- EXPECT_STREQ(e.what(), expected_msg); ++ EXPECT_STREQ(e.what(), expected_msg.c_str()); + } + ROOT::DisableImplicitMT(); + } + + // pool deleted after RDF creation +- { +- ROOT::EnableImplicitMT(3); ++ if (nslots > 1) { ++ ROOT::EnableImplicitMT(nslots); + ROOT::RDataFrame df(1); + ROOT::DisableImplicitMT(); + try { + df.Count().GetValue(); + } catch (const std::runtime_error &e) { + const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the size of the thread pool " +- "was 3, but when starting the event loop it was 0. Maybe DisableImplicitMT() was " ++ "was " + std::to_string(nslots) + ", but when starting the event loop it was 0. Maybe DisableImplicitMT() was " + "called after the RDataFrame was constructed?"; +- EXPECT_STREQ(e.what(), expected_msg); ++ EXPECT_STREQ(e.what(), expected_msg.c_str()); + } + } + } +diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_interface.cxx root-6.22.08/tree/dataframe/test/dataframe_interface.cxx +--- root-6.22.08.orig/tree/dataframe/test/dataframe_interface.cxx 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/tree/dataframe/test/dataframe_interface.cxx 2021-06-01 08:51:39.351355999 +0200 +@@ -6,6 +6,8 @@ + + #include "gtest/gtest.h" + ++#include ++ + using namespace ROOT; + using namespace ROOT::RDF; + +@@ -349,9 +351,10 @@ + ROOT::RDataFrame df0(1); + EXPECT_EQ(1U, df0.GetNSlots()); + #ifdef R__USE_IMT +- ROOT::EnableImplicitMT(3); ++ unsigned int nslots = std::min(3U, std::thread::hardware_concurrency()); ++ ROOT::EnableImplicitMT(nslots); + ROOT::RDataFrame df3(1); +- EXPECT_EQ(3U, df3.GetNSlots()); ++ EXPECT_EQ(nslots, df3.GetNSlots()); + ROOT::DisableImplicitMT(); + ROOT::RDataFrame df1(1); + EXPECT_EQ(1U, df1.GetNSlots()); +diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_simple.cxx root-6.22.08/tree/dataframe/test/dataframe_simple.cxx +--- root-6.22.08.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-01 08:50:34.317205130 +0200 ++++ root-6.22.08/tree/dataframe/test/dataframe_simple.cxx 2021-06-01 08:51:39.351355999 +0200 +@@ -30,7 +30,7 @@ + // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially + class RDFSimpleTests : public ::testing::TestWithParam { + protected: +- RDFSimpleTests() : NSLOTS(GetParam() ? 4u : 1u) ++ RDFSimpleTests() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u) + { + if (GetParam()) + ROOT::EnableImplicitMT(NSLOTS); +diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_snapshot.cxx root-6.22.08/tree/dataframe/test/dataframe_snapshot.cxx +--- root-6.22.08.orig/tree/dataframe/test/dataframe_snapshot.cxx 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/tree/dataframe/test/dataframe_snapshot.cxx 2021-06-01 08:51:39.351355999 +0200 +@@ -9,6 +9,7 @@ + #include "gtest/gtest.h" + #include + #include ++#include + using namespace ROOT; // RDataFrame + using namespace ROOT::RDF; // RInterface + using namespace ROOT::VecOps; // RVec +@@ -886,9 +887,10 @@ + { + const auto fname = "emptybuffersmt.root"; + const auto treename = "t"; +- ROOT::EnableImplicitMT(4); ++ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency()); ++ ROOT::EnableImplicitMT(nslots); + ROOT::RDataFrame d(10); +- auto dd = d.DefineSlot("x", [](unsigned int s) { return s == 3 ? 0 : 1; }) ++ auto dd = d.DefineSlot("x", [&](unsigned int s) { return s == nslots - 1 ? 0 : 1; }) + .Filter([](int x) { return x == 0; }, {"x"}, "f"); + auto r = dd.Report(); + dd.Snapshot(treename, fname, {"x"}); +diff -ur root-6.22.08.orig/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx root-6.22.08/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx +--- root-6.22.08.orig/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx 2021-06-01 08:51:39.352356002 +0200 +@@ -294,14 +294,27 @@ + } + }; + +- ROOT::EnableImplicitMT(4); ++ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency()); ++ ROOT::EnableImplicitMT(nslots); + + ROOT::TTreeProcessorMT p(filename, treename); + p.Process(f); + +- EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n"; +- EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n"; +- EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n"; ++ if (nslots == 4) { ++ EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n"; ++ EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n"; ++ EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n"; ++ } ++ else if (nslots == 2) { ++ EXPECT_EQ(nTasks, 48U) << "Wrong number of tasks generated!\n"; ++ EXPECT_EQ(nEntriesCountsMap[20], 17U) << "Wrong number of tasks with 20 clusters each!\n"; ++ EXPECT_EQ(nEntriesCountsMap[21], 31U) << "Wrong number of tasks with 21 clusters each!\n"; ++ } ++ else if (nslots == 1) { ++ EXPECT_EQ(nTasks, 24U) << "Wrong number of tasks generated!\n"; ++ EXPECT_EQ(nEntriesCountsMap[41], 17U) << "Wrong number of tasks with 41 clusters each!\n"; ++ EXPECT_EQ(nEntriesCountsMap[42], 7U) << "Wrong number of tasks with 42 clusters each!\n"; ++ } + + gSystem->Unlink(filename); + ROOT::DisableImplicitMT(); diff --git a/root.spec b/root.spec index 8b1cd7b..0323321 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -161,6 +161,9 @@ Patch36: %{name}-do-not-load_library-libROOTPythonizations.patch # Filter out additional vDSO names for ppc # https://github.com/root-project/root/pull/6887 Patch37: %{name}-linux-vdso.patch +# Fix multicore tests when running on machines with few cores +# root-fix-multicore-tests-with-few-cores.patch +Patch38: %{name}-fix-multicore-tests-with-few-cores.patch # s390x suffers from endian issues resulting in failing tests # and broken documentation generation @@ -1883,6 +1886,7 @@ This package contains an ntuple extension for ROOT 7. %patch35 -p1 %patch36 -p1 %patch37 -p1 +%patch38 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2167,10 +2171,19 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so mkdir -p %{buildroot}%{python2_sitelib} cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib} -# Create empty .egg-info files so that rpm auto-generates provides -touch %{buildroot}%{python2_sitearch}/ROOT-%{version}.egg-info -touch %{buildroot}%{python2_sitearch}/JupyROOT-%{version}.egg-info -touch %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info +# Create .egg-info files so that rpm auto-generates provides +echo 'Name: ROOT' > \ + %{buildroot}%{python2_sitearch}/ROOT-%{version}.egg-info +echo 'Version: %{version}' >> \ + %{buildroot}%{python2_sitearch}/ROOT-%{version}.egg-info +echo 'Name: JupyROOT' > \ + %{buildroot}%{python2_sitearch}/JupyROOT-%{version}.egg-info +echo 'Version: %{version}' >> \ + %{buildroot}%{python2_sitearch}/JupyROOT-%{version}.egg-info +echo 'Name: JsMVA' > \ + %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info +echo 'Version: %{version}' >> \ + %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info %endif @@ -2200,10 +2213,19 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so mkdir -p %{buildroot}%{python3_sitelib} mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib} -# Create empty .egg-info files so that rpm auto-generates provides -touch %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info -touch %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info -touch %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info +# Create .egg-info files so that rpm auto-generates provides +echo 'Name: ROOT' > \ + %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info +echo 'Version: %{version}' >> \ + %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info +echo 'Name: JupyROOT' > \ + %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info +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 # Put jupyter stuff in the right places mkdir -p %{buildroot}%{_datadir}/jupyter/kernels @@ -2430,10 +2452,6 @@ popd # - tutorial-multicore-imt101_parTreeProcessing # requires input data: http://root.cern.ch/files/tp_process_imt.root (707 MB) # -# - gtest-tree-dataframe-test-datasource-sqlite -# reads sqlite data over network: -# http://root.cern.ch/files/RSqliteDS_test.sqlite -# # - tutorial-dataframe-df###_SQlite* # reads sqlite data over network: # http://root.cern.ch/files/root_download_stats.sqlite @@ -2455,11 +2473,9 @@ popd # - tutorial-v7-line.cxx # requires a web browser (and js-jsroot) to render javascript graphics # -# - gtest-io-io-test-RRawFile (*) # - gtest-net-davix-test-RRawFileDavix # reads input file over network # http://root.cern.ch/files/davix.test -# (*) one subtest RRawFile.Remote fails, others would be OK # # - gtest-tmva-tmva-test-rreader # - gtest-tmva-tmva-test-rstandardscaler @@ -2484,7 +2500,6 @@ tutorial-multicore-mp103_processSelector|\ tutorial-multicore-mp104_processH1|\ tutorial-multicore-mp105_processEntryList|\ tutorial-multicore-imt101_parTreeProcessing|\ -gtest-tree-dataframe-test-datasource-sqlite|\ tutorial-dataframe-df..._SQlite|\ gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\ tutorial-dataframe-df102_NanoAODDimuonAnalysis|\ @@ -2492,7 +2507,6 @@ tutorial-dataframe-df103_NanoAODHiggsAnalysis|\ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ tutorial-v7-line.cxx|\ -gtest-io-io-test-RRawFile|\ gtest-net-davix-test-RRawFileDavix|\ gtest-tmva-tmva-test-rreader|\ gtest-tmva-tmva-test-rstandardscaler|\ @@ -2551,6 +2565,8 @@ excluded="${excluded}|test-stresshistofit" excluded="${excluded}|pyunittests-pyroot-pyz-ttree-branch-attr" %endif +# Filter out parts of tests that require remote network access +GTEST_FILTER=-RRawFile.Remote:RSqliteDS.Davix \ make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" popd @@ -3493,6 +3509,12 @@ fi %endif %changelog +* Tue Jun 01 2021 Mattias Ellert - 6.22.08-4 +- Adapt to new Python RPM generators (empty .egg-info no longer works) +- Filter out parts of tests that require remote network access instead of + excluding the whole test +- Fix multicore tests when running on machines with few cores + * Mon May 10 2021 Jonathan Wakely - 6.22.08-3 - Rebuilt for removed libstdc++ symbols (#1937698) From c4fdaa58588eda8dea0b6216d23cdd0bfb1ddfb6 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 3 Jun 2021 18:02:44 +0200 Subject: [PATCH 005/127] Use C++17 for Fedora 34+ (gcc 11) --- root.spec | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 0323321..fe79931 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -171,7 +171,11 @@ Patch38: %{name}-fix-multicore-tests-with-few-cores.patch ExcludeArch: s390x BuildRequires: make +%if %{?rhel}%{!?rhel:0} == 7 BuildRequires: cmake3 >= 3.9 +%else +BuildRequires: cmake >= 3.9 +%endif BuildRequires: libX11-devel BuildRequires: libXpm-devel BuildRequires: libXft-devel @@ -2000,7 +2004,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ %if %{root7} +%if %{?fedora}%{!?fedora:0} >= 34 + -DCMAKE_CXX_STANDARD=17 \ +%else -DCMAKE_CXX_STANDARD=14 \ +%endif -Droot7:BOOL=ON \ -Dwebgui:BOOL=ON \ %else @@ -3509,6 +3517,9 @@ fi %endif %changelog +* Thu Jun 03 2021 Mattias Ellert - 6.22.08-5 +- Use C++17 for Fedora 34+ (gcc 11) + * Tue Jun 01 2021 Mattias Ellert - 6.22.08-4 - Adapt to new Python RPM generators (empty .egg-info no longer works) - Filter out parts of tests that require remote network access instead of From 5bf9d682017c7b3dbd4b0572bf0049f850348294 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 4 Jun 2021 21:13:47 +0200 Subject: [PATCH 006/127] Rebuilt for Python 3.10 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index fe79931..990c19a 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 6%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3517,6 +3517,9 @@ fi %endif %changelog +* Fri Jun 04 2021 Python Maint - 6.22.08-6 +- Rebuilt for Python 3.10 + * Thu Jun 03 2021 Mattias Ellert - 6.22.08-5 - Use C++17 for Fedora 34+ (gcc 11) From 37bb038cc96810b89f336b76e6d56b37794d6c6f Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 13 Jun 2021 08:55:01 +0200 Subject: [PATCH 007/127] cmake in EPEL 8 no longer provides cmake3 --- root.spec | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/root.spec b/root.spec index 990c19a..51de763 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 6%{?dist} +Release: 7%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -162,7 +162,7 @@ Patch36: %{name}-do-not-load_library-libROOTPythonizations.patch # https://github.com/root-project/root/pull/6887 Patch37: %{name}-linux-vdso.patch # Fix multicore tests when running on machines with few cores -# root-fix-multicore-tests-with-few-cores.patch +# https://github.com/root-project/root/pull/8068 Patch38: %{name}-fix-multicore-tests-with-few-cores.patch # s390x suffers from endian issues resulting in failing tests @@ -216,9 +216,12 @@ BuildRequires: postgresql-devel %endif %if %{buildpy2} BuildRequires: python2-devel +BuildRequires: python2-setuptools +BuildRequires: python2-numpy %endif BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-numpy %if %{root7} %ifarch %{qt5_qtwebengine_arches} BuildRequires: qt5-qtbase-devel @@ -259,7 +262,6 @@ BuildRequires: cmake-data >= 3.18.3-1 %else BuildRequires: openblas-devel %endif -BuildRequires: python%{python3_pkgversion}-numpy BuildRequires: doxygen BuildRequires: graphviz BuildRequires: yuicompressor @@ -2410,7 +2412,11 @@ for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f` l=`tr / - <<< $l` tmpdir=`mktemp -d` +%if %{?rhel}%{!?rhel:0} == 7 DESTDIR=$tmpdir cmake3 -DCMAKE_INSTALL_COMPONENT=headers -P $f > /dev/null +%else + DESTDIR=$tmpdir cmake -DCMAKE_INSTALL_COMPONENT=headers -P $f > /dev/null +%endif ( cd $tmpdir ; find . -type f) | sort | sed 's!^\.!!' > $l rm -rf $tmpdir done @@ -3517,6 +3523,9 @@ fi %endif %changelog +* Sun Jun 13 2021 Mattias Ellert - 6.22.08-7 +- cmake in EPEL 8 no longer provides cmake3 + * Fri Jun 04 2021 Python Maint - 6.22.08-6 - Rebuilt for Python 3.10 From f34d998c21e6ae4bb520c5e959f44de6cc731858 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 14 Jun 2021 11:20:14 +0200 Subject: [PATCH 008/127] Add configuration for jupyterlab --- root.spec | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 51de763..7ba2125 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 7%{?dist} +Release: 8%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -2632,6 +2632,14 @@ cat << EOF >> /etc/jupyter/jupyter_notebook_config.py c.NotebookApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') # Extra static path 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 +fi +cat << EOF >> /etc/jupyter/jupyter_server_config.py +# Extra static path for JupyROOT - start - do not remove this line +c.ServerApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') +# Extra static path for JupyROOT - end - do not remove this line +EOF %postun notebook if [ $1 -eq 0 ] ; then @@ -2642,6 +2650,13 @@ if [ $1 -eq 0 ] ; then 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 + if [ ! -s /etc/jupyter/jupyter_server_config.py ] ; then + rm /etc/jupyter/jupyter_server_config.py + rmdir /etc/jupyter 2>/dev/null || : + fi + fi fi %post core -p /sbin/ldconfig @@ -3523,6 +3538,9 @@ fi %endif %changelog +* Mon Jun 14 2021 Mattias Ellert - 6.22.08-8 +- Add configuration for jupyterlab + * Sun Jun 13 2021 Mattias Ellert - 6.22.08-7 - cmake in EPEL 8 no longer provides cmake3 From 76c3a41c1c926c7640f4cee60d708e7723bf93b0 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 17 Jun 2021 20:51:34 +0200 Subject: [PATCH 009/127] Backport fix for jsroot loading in jupyterlab --- root-jupyroot-jupyterlab-compat.patch | 125 ++++++++++++++++++++++++++ root-jupyroot-static.patch | 52 +++++------ root.spec | 21 +++-- 3 files changed, 166 insertions(+), 32 deletions(-) create mode 100644 root-jupyroot-jupyterlab-compat.patch diff --git a/root-jupyroot-jupyterlab-compat.patch b/root-jupyroot-jupyterlab-compat.patch new file mode 100644 index 0000000..a7850c4 --- /dev/null +++ b/root-jupyroot-jupyterlab-compat.patch @@ -0,0 +1,125 @@ +diff -ur root-6.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py +--- root-6.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-06-17 19:29:39.457234887 +0200 +@@ -39,24 +39,31 @@ + + _jsNotDrawableClassesPatterns = ["TEve*","TF3","TPolyLine3D"] + +- +-_jsROOTSourceDir = "/static/" + _jsCanvasWidth = 800 + _jsCanvasHeight = 600 +- + _jsCode = """ ++ +
+
+ + """ +@@ -296,7 +295,7 @@ + cnt = 0 + for n in range(colors.GetLast()+1): + if colors.At(n): cnt = cnt+1 +- ++ + # add all colors if there are more than 598 colors defined + if cnt < 599 or prim.FindObject(colors): + colors = None +@@ -312,14 +311,14 @@ + prim.Add(palette) + + ROOT.TColor.DefinedColors() +- ++ + canvas_json = ROOT.TBufferJSON.ConvertToJSON(canvas, 3) + + # Cleanup primitives after conversion + if style is not None: prim.Remove(style) + if colors is not None: prim.Remove(colors) + if palette is not None: prim.Remove(palette) +- ++ + return canvas_json + + transformers = [] +@@ -508,7 +507,6 @@ + + thisJsCode = _jsCode.format(jsCanvasWidth = height, + jsCanvasHeight = width, +- jsROOTSourceDir = _jsROOTSourceDir, + jsonContent = json.Data(), + jsDrawOptions = options, + jsDivId = divId) diff --git a/root-jupyroot-static.patch b/root-jupyroot-static.patch index b39110a..717e203 100644 --- a/root-jupyroot-static.patch +++ b/root-jupyroot-static.patch @@ -1,6 +1,6 @@ -diff -ur root-6.22.00.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.22.00/bindings/jsmva/python/JsMVA/JPyInterface.py ---- root-6.22.00.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/jsmva/python/JsMVA/JPyInterface.py 2020-06-21 20:20:27.744527667 +0200 +diff -ur root-6.22.08.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.22.08/bindings/jsmva/python/JsMVA/JPyInterface.py +--- root-6.22.08.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-17 19:32:12.018598877 +0200 @@ -188,7 +188,7 @@ ## Class for creating the output scripts and inserting them to cell output class JsDraw: @@ -10,21 +10,21 @@ diff -ur root-6.22.00.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.22 ## String containing the link to JavaScript files __jsMVASourceDir = __jsMVARepo + "/js" -diff -ur root-6.22.00.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py root-6.22.00/bindings/jupyroot/python/JupyROOT/helpers/utils.py ---- root-6.22.00.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2020-06-21 20:18:22.840258397 +0200 -@@ -40,7 +40,7 @@ - _jsNotDrawableClassesPatterns = ["TEve*","TF3","TPolyLine3D"] +diff -ur root-6.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py +--- root-6.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-06-17 19:29:39.457234887 +0200 ++++ root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-06-17 19:29:00.146141086 +0200 +@@ -72,7 +72,7 @@ + }} - --_jsROOTSourceDir = "/static/" -+_jsROOTSourceDir = "/static/jsroot/" - _jsCanvasWidth = 800 - _jsCanvasHeight = 600 - -diff -ur root-6.22.00.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.22.00/bindings/pyroot_legacy/JsMVA/JPyInterface.py ---- root-6.22.00.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2020-06-21 20:09:42.265004565 +0200 + // Try loading a local version of requirejs and fallback to cdn if not possible. +- script_load(base_url + 'static/scripts/JSRootCore.js', script_success, function(){{ ++ script_load(base_url + 'static/jsroot/scripts/JSRootCore.js', script_success, function(){{ + console.error('Fail to load JSROOT locally, please check your jupyter_notebook_config.py file') + script_load('https://root.cern/js/5.9.1/scripts/JSRootCore.min.js', script_success, function(){{ + document.getElementById("{jsDivId}").innerHTML = "Failed to load JSROOT"; +diff -ur root-6.22.08.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.22.08/bindings/pyroot_legacy/JsMVA/JPyInterface.py +--- root-6.22.08.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-17 19:32:12.019598879 +0200 @@ -188,7 +188,7 @@ ## Class for creating the output scripts and inserting them to cell output class JsDraw: @@ -34,9 +34,9 @@ diff -ur root-6.22.00.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.2 ## String containing the link to JavaScript files __jsMVASourceDir = __jsMVARepo + "/js" -diff -ur root-6.22.00.orig/bindings/pyroot_legacy/JupyROOT/helpers/utils.py root-6.22.00/bindings/pyroot_legacy/JupyROOT/helpers/utils.py ---- root-6.22.00.orig/bindings/pyroot_legacy/JupyROOT/helpers/utils.py 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot_legacy/JupyROOT/helpers/utils.py 2020-06-21 20:09:42.266004568 +0200 +diff -ur root-6.22.08.orig/bindings/pyroot_legacy/JupyROOT/helpers/utils.py root-6.22.08/bindings/pyroot_legacy/JupyROOT/helpers/utils.py +--- root-6.22.08.orig/bindings/pyroot_legacy/JupyROOT/helpers/utils.py 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/bindings/pyroot_legacy/JupyROOT/helpers/utils.py 2021-06-17 19:32:12.019598879 +0200 @@ -82,7 +82,7 @@ function requirejs_success(base_url) {{ return function() {{ @@ -46,9 +46,9 @@ diff -ur root-6.22.00.orig/bindings/pyroot_legacy/JupyROOT/helpers/utils.py root }}); display_{jsDivId}(); }} -diff -ur root-6.22.00.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.22.00/etc/notebook/JsMVA/js/JsMVA.js ---- root-6.22.00.orig/etc/notebook/JsMVA/js/JsMVA.js 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/etc/notebook/JsMVA/js/JsMVA.js 2020-06-21 20:10:34.552121014 +0200 +diff -ur root-6.22.08.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.22.08/etc/notebook/JsMVA/js/JsMVA.js +--- root-6.22.08.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/etc/notebook/JsMVA/js/JsMVA.js 2021-06-17 19:32:12.020598882 +0200 @@ -16,7 +16,7 @@ (function(factory){ @@ -58,9 +58,9 @@ diff -ur root-6.22.00.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.22.00/etc/noteb var url = ""; if (requirejs.s.contexts.hasOwnProperty("_")) { -diff -ur root-6.22.00.orig/etc/notebook/JsMVA/js/NetworkDesigner.js root-6.22.00/etc/notebook/JsMVA/js/NetworkDesigner.js ---- root-6.22.00.orig/etc/notebook/JsMVA/js/NetworkDesigner.js 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/etc/notebook/JsMVA/js/NetworkDesigner.js 2020-06-21 20:10:34.552121014 +0200 +diff -ur root-6.22.08.orig/etc/notebook/JsMVA/js/NetworkDesigner.js root-6.22.08/etc/notebook/JsMVA/js/NetworkDesigner.js +--- root-6.22.08.orig/etc/notebook/JsMVA/js/NetworkDesigner.js 2021-03-10 15:19:14.000000000 +0100 ++++ root-6.22.08/etc/notebook/JsMVA/js/NetworkDesigner.js 2021-06-17 19:32:12.020598882 +0200 @@ -19,7 +19,7 @@ paths: { "jquery-connections": baseURL + "jquery.connections.min", diff --git a/root.spec b/root.spec index 7ba2125..fffa16c 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 8%{?dist} +Release: 9%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -75,8 +75,9 @@ Patch0: %{name}-fontconfig.patch Patch1: %{name}-32bit-dataframe.patch # Unbundle gtest Patch2: %{name}-unbundle-gtest.patch -# Use local static script and style files for JupyROOT -Patch3: %{name}-jupyroot-static.patch +# Fix multicore tests when running on machines with few cores +# https://github.com/root-project/root/pull/8068 +Patch3: %{name}-fix-multicore-tests-with-few-cores.patch # Fedora's llvm patches Patch4: %{name}-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch Patch5: %{name}-Fix-return-type-in-ORC-readMem-client-interface.patch @@ -161,9 +162,13 @@ Patch36: %{name}-do-not-load_library-libROOTPythonizations.patch # Filter out additional vDSO names for ppc # https://github.com/root-project/root/pull/6887 Patch37: %{name}-linux-vdso.patch -# Fix multicore tests when running on machines with few cores -# https://github.com/root-project/root/pull/8068 -Patch38: %{name}-fix-multicore-tests-with-few-cores.patch +# JupyROOT has problems loading JSRootCore.js in jupyterlab +# Backported from upstream git +# https://github.com/root-project/root/issues/8459 +# https://bugzilla.redhat.com/show_bug.cgi?id=1973189 +Patch38: %{name}-jupyroot-jupyterlab-compat.patch +# Use local static script and style files for JupyROOT +Patch39: %{name}-jupyroot-static.patch # s390x suffers from endian issues resulting in failing tests # and broken documentation generation @@ -1893,6 +1898,7 @@ This package contains an ntuple extension for ROOT 7. %patch36 -p1 %patch37 -p1 %patch38 -p1 +%patch39 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3538,6 +3544,9 @@ fi %endif %changelog +* Thu Jun 17 2021 Mattias Ellert - 6.22.08-9 +- Backport fix for jsroot loading in jupyterlab + * Mon Jun 14 2021 Mattias Ellert - 6.22.08-8 - Add configuration for jupyterlab From f5f5cab0a0ced5f17c9ee239fb5a81e952e8eced Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 23 Jul 2021 11:32:11 +0000 Subject: [PATCH 010/127] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index fffa16c..9b0bcdd 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 9%{?dist} +Release: 10%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3544,6 +3544,9 @@ fi %endif %changelog +* Fri Jul 23 2021 Fedora Release Engineering - 6.22.08-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Thu Jun 17 2021 Mattias Ellert - 6.22.08-9 - Backport fix for jsroot loading in jupyterlab From 63048e8cb675f579120ea07145ded574d1d80015 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 26 Jul 2021 20:54:55 +0200 Subject: [PATCH 011/127] Drop the memstat module for Fedora 35+ The required __malloc_hook was removed from glibc 2.33.9000-48 The memstat module is deprecated and will be removed in root 6.26 --- root.spec | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 9b0bcdd..e61c683 100644 --- a/root.spec +++ b/root.spec @@ -29,6 +29,14 @@ %global xrootd5 0 %endif +%if %{?fedora}%{!?fedora:0} >= 35 +# The required __malloc_hook was removed from glibc 2.33.9000-48 +# The memstat module is deprecated and will be removed in root 6.26 +%global memstat 0 +%else +%global memstat 1 +%endif + %if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 # Multi-threading support requires TBB version >= 2018 %global tbb 1 @@ -45,7 +53,7 @@ Name: root Version: 6.22.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 10%{?dist} +Release: 11%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -425,6 +433,9 @@ Obsoletes: python%{?python3_other_pkgversion}-%{name} < 6.22.00 Obsoletes: python%{?python3_other_pkgversion}-jupyroot < 6.22.00 Obsoletes: python%{?python3_other_pkgversion}-jsmva < 6.22.00 %endif +%if ! %{memstat} +Obsoletes: %{name}-memstat < %{version}-%{release} +%endif %description core This package contains the core libraries used by ROOT: libCore, libNew, @@ -1203,6 +1214,7 @@ Obsoletes: %{name}-tree-player < 6.14.00 %description vecops This package contains a vector operation extension for ROOT. +%if %{memstat} %package memstat Summary: Memory statistics tool for use with ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1213,6 +1225,7 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} %description memstat This package contains the memory statistics tool for debugging memory leaks and such. +%endif %package montecarlo-eg Summary: Event generator library for ROOT @@ -2049,7 +2062,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ +%if %{memstat} -Dmemstat:BOOL=ON \ +%else + -Dmemstat:BOOL=OFF \ +%endif -Dminuit2:BOOL=ON \ -Dmlp:BOOL=ON \ -Dmonalisa:BOOL=OFF \ @@ -2728,7 +2745,9 @@ fi %ldconfig_scriptlets splot %ldconfig_scriptlets unuran %ldconfig_scriptlets vecops +%if %{memstat} %ldconfig_scriptlets memstat +%endif %ldconfig_scriptlets montecarlo-eg %ldconfig_scriptlets montecarlo-pythia8 %ldconfig_scriptlets montecarlo-vmc @@ -3250,9 +3269,11 @@ fi %{_libdir}/%{name}/libROOTVecOps.* %{_libdir}/%{name}/libROOTVecOps_rdict.pcm +%if %{memstat} %files memstat -f includelist-misc-memstat %{_libdir}/%{name}/libMemStat.* %{_libdir}/%{name}/libMemStat_rdict.pcm +%endif %files montecarlo-eg -f includelist-montecarlo-eg %{_libdir}/%{name}/libEG.* @@ -3544,6 +3565,11 @@ fi %endif %changelog +* Mon Jul 26 2021 Mattias Ellert - 6.22.08-11 +- Drop the memstat module for Fedora 35+ + The required __malloc_hook was removed from glibc 2.33.9000-48 + The memstat module is deprecated and will be removed in root 6.26 + * Fri Jul 23 2021 Fedora Release Engineering - 6.22.08-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 1fd9670b71e7200f88fa9049d4cd4eed7019814f Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 22 Aug 2021 19:10:24 +0200 Subject: [PATCH 012/127] Update to 6.24.02 ROOT now uses llvm/clang version 9 (updated from version 5) No longer exclude arch s390x (better supported in llvm/clang 9) Drop patches accepted upstream or previously backported Backport some fixes that make more tests work New subpackages: python{2,3}-distrdf, root-roofit-batchcompute Require js-jsroot >= 6 --- root-32bit-dataframe.patch | 72 +- ...type-in-ORC-readMem-client-interface.patch | 14 - ...non-simple-MVT-in-STBRX-optimization.patch | 23 - ...owerPC-Don-t-use-xscvdpspn-on-the-P7.patch | 27 - root-add-RCutFlowReport-to-LinkDef-file.patch | 26 + root-add-RDisplay-to-LinkDef-file.patch | 25 + ...add-TTreeProcessorMP-to-LinkDef-file.patch | 36 + root-config-restore.patch | 28 - ...t-load_library-libROOTPythonizations.patch | 42 - root-doxygen-crash.patch | 260 +++- root-doxygen-endof-part2.patch | 978 ------------- root-doxygen-filenames.patch | 378 ----- root-doxygen-macro-name.patch | 29 - root-doxygen-md-comments.patch | 214 --- root-doxygen-missing-underscore.patch | 25 - root-doxygen-parameter-names.patch | 1211 ----------------- root-fix-a-shadow-warning.patch | 41 - root-fix-bad-regex.patch | 25 - root-fix-multicore-tests-with-few-cores.patch | 77 +- ...-fix-ppc64le-compilation-with-gcc-10.patch | 29 + root-fontconfig.patch | 118 +- root-histv7-bin-iterator.patch | 51 - root-increase-timeout-for-ppc64le.patch | 34 - ...stall-headers-with-COMPONENT-headers.patch | 39 - root-jsmva-static.patch | 36 + root-jupyroot-jupyterlab-compat.patch | 125 -- root-jupyroot-static.patch | 72 - root-linux-vdso.patch | 47 - root-no-export-python-modules.patch | 22 +- root-ntuple-largefile.patch | 139 -- root-old-gtest-compat.patch | 112 +- root-older-python.patch | 46 + root-ppc-codemodel.patch | 36 + root-ppc-no-codemodel.patch | 13 + root-ptr-is-null-RooFit-TMVA.patch | 80 ++ root-ptr-is-null-TStreamerInfo.patch | 32 + root-python3.8-object.patch | 333 ----- root-roostats-test-ppc64le-aarch64.patch | 34 - root-setcachefiledir.patch | 30 - root-srm-ifce-deps.patch | 49 - root-stress-s390x.patch | 39 + root-stressGraphics.patch | 34 - root-unbundle-gtest.patch | 12 +- root-uring.patch | 55 + root-werror-fix.patch | 57 - root-xproofd.patch | 54 - root.spec | 583 ++++++-- sources | 2 +- 48 files changed, 1391 insertions(+), 4453 deletions(-) delete mode 100644 root-Fix-return-type-in-ORC-readMem-client-interface.patch delete mode 100644 root-PPC-Avoid-non-simple-MVT-in-STBRX-optimization.patch delete mode 100644 root-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch create mode 100644 root-add-RCutFlowReport-to-LinkDef-file.patch create mode 100644 root-add-RDisplay-to-LinkDef-file.patch create mode 100644 root-add-TTreeProcessorMP-to-LinkDef-file.patch delete mode 100644 root-config-restore.patch delete mode 100644 root-do-not-load_library-libROOTPythonizations.patch delete mode 100644 root-doxygen-endof-part2.patch delete mode 100644 root-doxygen-filenames.patch delete mode 100644 root-doxygen-macro-name.patch delete mode 100644 root-doxygen-md-comments.patch delete mode 100644 root-doxygen-missing-underscore.patch delete mode 100644 root-doxygen-parameter-names.patch delete mode 100644 root-fix-a-shadow-warning.patch delete mode 100644 root-fix-bad-regex.patch create mode 100644 root-fix-ppc64le-compilation-with-gcc-10.patch delete mode 100644 root-histv7-bin-iterator.patch delete mode 100644 root-increase-timeout-for-ppc64le.patch delete mode 100644 root-install-headers-with-COMPONENT-headers.patch create mode 100644 root-jsmva-static.patch delete mode 100644 root-jupyroot-jupyterlab-compat.patch delete mode 100644 root-jupyroot-static.patch delete mode 100644 root-linux-vdso.patch delete mode 100644 root-ntuple-largefile.patch create mode 100644 root-older-python.patch create mode 100644 root-ppc-codemodel.patch create mode 100644 root-ppc-no-codemodel.patch create mode 100644 root-ptr-is-null-RooFit-TMVA.patch create mode 100644 root-ptr-is-null-TStreamerInfo.patch delete mode 100644 root-python3.8-object.patch delete mode 100644 root-roostats-test-ppc64le-aarch64.patch delete mode 100644 root-setcachefiledir.patch delete mode 100644 root-srm-ifce-deps.patch create mode 100644 root-stress-s390x.patch delete mode 100644 root-stressGraphics.patch create mode 100644 root-uring.patch delete mode 100644 root-werror-fix.patch delete mode 100644 root-xproofd.patch diff --git a/root-32bit-dataframe.patch b/root-32bit-dataframe.patch index 310171f..f9ff85f 100644 --- a/root-32bit-dataframe.patch +++ b/root-32bit-dataframe.patch @@ -1,6 +1,6 @@ -diff -ur root-6.22.00.orig/bindings/pyroot_legacy/ROOT.py root-6.22.00/bindings/pyroot_legacy/ROOT.py ---- root-6.22.00.orig/bindings/pyroot_legacy/ROOT.py 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot_legacy/ROOT.py 2020-06-29 09:07:41.574798580 +0200 +diff -ur root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py root-6.24.02/bindings/pyroot_legacy/ROOT.py +--- root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/bindings/pyroot_legacy/ROOT.py 2021-08-11 10:44:16.895804556 +0200 @@ -438,9 +438,7 @@ # This function is injected as method to the respective classes in Pythonize.cxx. _root._RDataFrameAsNumpy = _RDataFrameAsNumpy @@ -12,9 +12,9 @@ diff -ur root-6.22.00.orig/bindings/pyroot_legacy/ROOT.py root-6.22.00/bindings/ ### RINT command emulation ------------------------------------------------------ -diff -ur root-6.22.00.orig/build/unix/makepchinput.py root-6.22.00/build/unix/makepchinput.py ---- root-6.22.00.orig/build/unix/makepchinput.py 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/build/unix/makepchinput.py 2020-06-29 09:07:41.639798769 +0200 +diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/makepchinput.py +--- root-6.24.02.orig/build/unix/makepchinput.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/build/unix/makepchinput.py 2021-08-11 10:44:16.926804638 +0200 @@ -252,9 +252,6 @@ "math/vdt", "tmva/rmva"] @@ -25,9 +25,9 @@ diff -ur root-6.22.00.orig/build/unix/makepchinput.py root-6.22.00/build/unix/ma accepted = isAnyPatternInString(PCHPatternsWhitelist,dirName) and \ not isAnyPatternInString(PCHPatternsBlacklist,dirName) -diff -ur root-6.22.00.orig/tree/dataframe/test/dataframe_cache.cxx root-6.22.00/tree/dataframe/test/dataframe_cache.cxx ---- root-6.22.00.orig/tree/dataframe/test/dataframe_cache.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/dataframe/test/dataframe_cache.cxx 2020-06-29 09:07:41.640798772 +0200 +diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/tree/dataframe/test/dataframe_cache.cxx +--- root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/dataframe_cache.cxx 2021-08-11 10:44:16.927804641 +0200 @@ -224,8 +224,6 @@ } @@ -46,9 +46,9 @@ diff -ur root-6.22.00.orig/tree/dataframe/test/dataframe_cache.cxx root-6.22.00/ // ROOT-10563 TEST(Cache, Alias) { -diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_arrow.cxx root-6.22.00/tree/dataframe/test/datasource_arrow.cxx ---- root-6.22.00.orig/tree/dataframe/test/datasource_arrow.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/dataframe/test/datasource_arrow.cxx 2020-06-29 09:07:41.645798787 +0200 +diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02/tree/dataframe/test/datasource_arrow.cxx +--- root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/datasource_arrow.cxx 2021-08-11 10:44:16.927804641 +0200 @@ -177,8 +177,6 @@ } #endif @@ -64,10 +64,10 @@ diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_arrow.cxx root-6.22.00 #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_csv.cxx root-6.22.00/tree/dataframe/test/datasource_csv.cxx ---- root-6.22.00.orig/tree/dataframe/test/datasource_csv.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/dataframe/test/datasource_csv.cxx 2020-06-29 09:07:41.645798787 +0200 -@@ -195,8 +195,6 @@ +diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/tree/dataframe/test/datasource_csv.cxx +--- root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/datasource_csv.cxx 2021-08-11 10:44:16.927804641 +0200 +@@ -207,8 +207,6 @@ } #endif @@ -76,15 +76,15 @@ diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_csv.cxx root-6.22.00/t TEST(RCsvDS, FromARDF) { std::unique_ptr tds(new RCsvDS(fileName0)); -@@ -292,5 +290,3 @@ +@@ -321,5 +319,3 @@ } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_root.cxx root-6.22.00/tree/dataframe/test/datasource_root.cxx ---- root-6.22.00.orig/tree/dataframe/test/datasource_root.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/dataframe/test/datasource_root.cxx 2020-06-29 09:07:41.649798799 +0200 +diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/tree/dataframe/test/datasource_root.cxx +--- root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/datasource_root.cxx 2021-08-11 10:44:16.928804644 +0200 @@ -117,8 +117,6 @@ } #endif @@ -100,11 +100,11 @@ diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_root.cxx root-6.22.00/ #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_trivial.cxx root-6.22.00/tree/dataframe/test/datasource_trivial.cxx ---- root-6.22.00.orig/tree/dataframe/test/datasource_trivial.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/dataframe/test/datasource_trivial.cxx 2020-06-29 09:07:41.654798814 +0200 -@@ -132,8 +132,6 @@ - EXPECT_EQ(*tdfAll.Count(), 20ULL); +diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.02/tree/dataframe/test/datasource_trivial.cxx +--- root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/datasource_trivial.cxx 2021-08-11 10:44:16.928804644 +0200 +@@ -141,8 +141,6 @@ + EXPECT_EQ(df.Range(10).Count().GetValue(), 10); } -#ifdef R__B64 @@ -112,17 +112,17 @@ diff -ur root-6.22.00.orig/tree/dataframe/test/datasource_trivial.cxx root-6.22. TEST(RTrivialDS, FromARDFWithJitting) { std::unique_ptr tds(new RTrivialDS(32)); -@@ -236,5 +234,3 @@ +@@ -245,5 +243,3 @@ } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.22.00.orig/tutorials/CMakeLists.txt root-6.22.00/tutorials/CMakeLists.txt ---- root-6.22.00.orig/tutorials/CMakeLists.txt 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tutorials/CMakeLists.txt 2020-06-29 09:07:41.655798816 +0200 -@@ -257,10 +257,6 @@ - set(root7_veto v7/ntuple/ntpl004_dimuon.C) +diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMakeLists.txt +--- root-6.24.02.orig/tutorials/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/CMakeLists.txt 2021-08-11 10:44:16.974804766 +0200 +@@ -279,10 +279,6 @@ + list(APPEND root7_veto ${v7_veto_files}) endif() -if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) @@ -132,7 +132,7 @@ diff -ur root-6.22.00.orig/tutorials/CMakeLists.txt root-6.22.00/tutorials/CMake #---These ones are disabled !!! ------------------------------------ set(extra_veto legacy/benchmarks.C -@@ -313,7 +309,6 @@ +@@ -335,7 +331,6 @@ ${classic_veto} ${pythia_veto} ${root7_veto} @@ -140,11 +140,3 @@ diff -ur root-6.22.00.orig/tutorials/CMakeLists.txt root-6.22.00/tutorials/CMake ${xrootd_veto} ${mlp_veto} ${spectrum_veto} -@@ -526,7 +521,6 @@ - list(REMOVE_ITEM pytutorials ${pyveto}) - - if(NOT dataframe) -- set(dataframe_veto_py dataframe/*.py) - file(GLOB dataframe_veto_py RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} dataframe/*.py tmva/tmva*.py) - list(REMOVE_ITEM pytutorials ${dataframe_veto_py}) - list(REMOVE_ITEM pytutorials diff --git a/root-Fix-return-type-in-ORC-readMem-client-interface.patch b/root-Fix-return-type-in-ORC-readMem-client-interface.patch deleted file mode 100644 index 2fd426d..0000000 --- a/root-Fix-return-type-in-ORC-readMem-client-interface.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ur root-6.14.00.orig/interpreter/llvm/src/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h root-6.14.00/interpreter/llvm/src/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h ---- root-6.14.00.orig/interpreter/llvm/src/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h 2018-06-13 12:10:40.000000000 +0200 -+++ root-6.14.00/interpreter/llvm/src/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h 2018-06-27 17:05:07.750663216 +0200 -@@ -713,8 +713,8 @@ - - uint32_t getTrampolineSize() const { return RemoteTrampolineSize; } - -- Expected> readMem(char *Dst, JITTargetAddress Src, -- uint64_t Size) { -+ Expected> readMem(char *Dst, JITTargetAddress Src, -+ uint64_t Size) { - // Check for an 'out-of-band' error, e.g. from an MM destructor. - if (ExistingError) - return std::move(ExistingError); diff --git a/root-PPC-Avoid-non-simple-MVT-in-STBRX-optimization.patch b/root-PPC-Avoid-non-simple-MVT-in-STBRX-optimization.patch deleted file mode 100644 index 5cf51c2..0000000 --- a/root-PPC-Avoid-non-simple-MVT-in-STBRX-optimization.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -ur root-6.14.00.orig/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp root-6.14.00/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp ---- root-6.14.00.orig/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp 2018-06-13 12:10:40.000000000 +0200 -+++ root-6.14.00/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp 2018-06-27 17:06:55.739506085 +0200 -@@ -11861,6 +11861,11 @@ - N->getOperand(1).getValueType() == MVT::i16 || - (Subtarget.hasLDBRX() && Subtarget.isPPC64() && - N->getOperand(1).getValueType() == MVT::i64))) { -+ // STBRX can only handle simple types. -+ EVT mVT = cast(N)->getMemoryVT(); -+ if (mVT.isExtended()) -+ break; -+ - SDValue BSwapOp = N->getOperand(1).getOperand(0); - // Do an any-extend to 32-bits if this is a half-word input. - if (BSwapOp.getValueType() == MVT::i16) -@@ -11868,7 +11873,6 @@ - - // If the type of BSWAP operand is wider than stored memory width - // it need to be shifted to the right side before STBRX. -- EVT mVT = cast(N)->getMemoryVT(); - if (Op1VT.bitsGT(mVT)) { - int Shift = Op1VT.getSizeInBits() - mVT.getSizeInBits(); - BSwapOp = DAG.getNode(ISD::SRL, dl, Op1VT, BSwapOp, diff --git a/root-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch b/root-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch deleted file mode 100644 index 3448ac8..0000000 --- a/root-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff -ur root-6.12.04.orig/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp root-6.12.04/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp ---- root-6.12.04.orig/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp 2017-12-13 08:27:42.000000000 +0100 -+++ root-6.12.04/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp 2018-01-11 12:40:14.956914822 +0100 -@@ -7448,9 +7448,11 @@ - /// - The node is a "load-and-splat" - /// In all other cases, we will choose to keep the BUILD_VECTOR. - static bool haveEfficientBuildVectorPattern(BuildVectorSDNode *V, -- bool HasDirectMove) { -+ bool HasDirectMove, -+ bool HasP8Vector) { - EVT VecVT = V->getValueType(0); -- bool RightType = VecVT == MVT::v2f64 || VecVT == MVT::v4f32 || -+ bool RightType = VecVT == MVT::v2f64 || -+ (HasP8Vector && VecVT == MVT::v4f32) || - (HasDirectMove && (VecVT == MVT::v2i64 || VecVT == MVT::v4i32)); - if (!RightType) - return false; -@@ -7612,7 +7614,8 @@ - // lowered to VSX instructions under certain conditions. - // Without VSX, there is no pattern more efficient than expanding the node. - if (Subtarget.hasVSX() && -- haveEfficientBuildVectorPattern(BVN, Subtarget.hasDirectMove())) -+ haveEfficientBuildVectorPattern(BVN, Subtarget.hasDirectMove(), -+ Subtarget.hasP8Vector())) - return Op; - return SDValue(); - } diff --git a/root-add-RCutFlowReport-to-LinkDef-file.patch b/root-add-RCutFlowReport-to-LinkDef-file.patch new file mode 100644 index 0000000..9ec99a1 --- /dev/null +++ b/root-add-RCutFlowReport-to-LinkDef-file.patch @@ -0,0 +1,26 @@ +From 2e3fabbe5423f50ee98ce848d8e85ec7a2a2106d Mon Sep 17 00:00:00 2001 +From: Enrico Guiraud +Date: Thu, 15 Jul 2021 12:17:56 +0200 +Subject: [PATCH] [DF] Add RCutFlowReport to LinkDef + +This should fix some sporadic failures in cling's symbol resolution +in builds without runtime cxx modules. +--- + tree/dataframe/inc/LinkDef.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h +index 8103468082..684fc3b6f1 100644 +--- a/tree/dataframe/inc/LinkDef.h ++++ b/tree/dataframe/inc/LinkDef.h +@@ -58,6 +58,7 @@ + #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; + #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; + #pragma link C++ class TNotifyLink; ++#pragma link C++ class ROOT::RDF::RCutFlowReport; + + #endif + +-- +2.31.1 + diff --git a/root-add-RDisplay-to-LinkDef-file.patch b/root-add-RDisplay-to-LinkDef-file.patch new file mode 100644 index 0000000..e86880c --- /dev/null +++ b/root-add-RDisplay-to-LinkDef-file.patch @@ -0,0 +1,25 @@ +From d9e15857c189edcfa75af5c6244ff68fac74f06f Mon Sep 17 00:00:00 2001 +From: Enrico Guiraud +Date: Thu, 10 Jun 2021 10:00:32 +0200 +Subject: [PATCH] [DF] Add RDisplay to LinkDef + +To help cling autoloading. +--- + tree/dataframe/inc/LinkDef.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h +index 3879ac8d5d..8103468082 100644 +--- a/tree/dataframe/inc/LinkDef.h ++++ b/tree/dataframe/inc/LinkDef.h +@@ -20,6 +20,7 @@ + #pragma link C++ namespace ROOT::Internal::RDF::GraphDrawing; + #pragma link C++ namespace ROOT::Detail::RDF; + #pragma link C++ namespace ROOT::RDF; ++#pragma link C++ class ROOT::RDF::RDisplay-; + #pragma link C++ class ROOT::Internal::RDF::RActionBase-; + #pragma link C++ class ROOT::Internal::RDF::RJittedAction-; + #pragma link C++ class ROOT::Detail::RDF::RFilterBase-; +-- +2.31.1 + diff --git a/root-add-TTreeProcessorMP-to-LinkDef-file.patch b/root-add-TTreeProcessorMP-to-LinkDef-file.patch new file mode 100644 index 0000000..c8a0b1f --- /dev/null +++ b/root-add-TTreeProcessorMP-to-LinkDef-file.patch @@ -0,0 +1,36 @@ +From 56d52ccf2fad2736e49d3cfc4c9df22492e1dbfc Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 8 Jun 2021 02:46:18 +0200 +Subject: [PATCH] Add TTreeProcessorMP to LinkDef + +This fixes test failure: + + 745/1157 Test #729: tutorial-multicore-mp102_readNtuplesFillHistosAndFit ................***Failed 1.55 sec +Processing /builddir/build/BUILD/root-6.25.01/tutorials/multicore/mp102_readNtuplesFillHistosAndFit.C... +IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMPC1Ej' unresolved while linking [cling interface function]! +You are probably missing the definition of ROOT::TTreeProcessorMP::TTreeProcessorMP(unsigned int) +Maybe you need to load the corresponding shared library? +IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMP11ReplyToIdleEP7TSocket' unresolved while linking [cling interface function]! +You are probably missing the definition of ROOT::TTreeProcessorMP::ReplyToIdle(TSocket*) +Maybe you need to load the corresponding shared library? +CMake Error at /builddir/build/BUILD/root-6.25.01/x86_64-redhat-linux-gnu/RootTestDriver.cmake:237 (message): + error code: 1 +--- + tree/treeplayer/inc/LinkDef.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tree/treeplayer/inc/LinkDef.h b/tree/treeplayer/inc/LinkDef.h +index e7fdd7c9bf..d195536a40 100644 +--- a/tree/treeplayer/inc/LinkDef.h ++++ b/tree/treeplayer/inc/LinkDef.h +@@ -30,6 +30,7 @@ + #pragma link C++ class TSimpleAnalysis+; + #ifndef _MSC_VER + #pragma link C++ class TMPWorkerTree+; ++#pragma link C++ class ROOT::TTreeProcessorMP-; + #endif + #ifdef R__USE_IMT + #pragma link C++ class ROOT::TTreeProcessorMT-; +-- +2.31.1 + diff --git a/root-config-restore.patch b/root-config-restore.patch deleted file mode 100644 index 0615b8b..0000000 --- a/root-config-restore.patch +++ /dev/null @@ -1,28 +0,0 @@ -From d589c5f31f940ea6a3a5144ca1664b2ec9ea7d38 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 19 Aug 2020 20:08:32 +0200 -Subject: [PATCH] Add back line accidentally removed in commit - 17bc17715524b4cc6b46324c428845e9ab945684 - ---- - config/root-config.in | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/config/root-config.in b/config/root-config.in -index d86b7d35af..7029439362 100755 ---- a/config/root-config.in -+++ b/config/root-config.in -@@ -438,7 +438,9 @@ Usage: root-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version]\ - [--cflags] [--auxcflags] [--ldflags] [--new] [--nonew] [--libs] [--glibs]\ - [--evelibs] [--bindir] [--libdir] [--incdir] [--etcdir] [--tutdir] [--srcdir]\ - [--noauxcflags] [--noauxlibs] [--noldflags] [--has-] [--arch]\ --[--python-version] [--python2-version] [--python3-version] [--cc] [--cxx] [--f77] [--ld ] [--help]" -+ [--platform] [--config] [--features] [--ncpu] [--git-revision]\ -+ [--python-version] [--python2-version] [--python3-version]\ -+ [--cc] [--cxx] [--f77] [--ld ] [--help]" - - if test $# -eq 0; then - echo "${usage}" 1>&2 --- -2.26.2 - diff --git a/root-do-not-load_library-libROOTPythonizations.patch b/root-do-not-load_library-libROOTPythonizations.patch deleted file mode 100644 index a108b30..0000000 --- a/root-do-not-load_library-libROOTPythonizations.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 4aa3e75da6afba4dc7f86fa264acf30eca60d56f Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 26 Nov 2020 11:14:57 +0100 -Subject: [PATCH] Do not attempt to load_library the ROOT Pythonizations module - -It is not necessary here, since it is already loaded due to the -from libROOTPythonizations import ... -earlier in the file, and it fails when the python module is not in the -library path (it is in the python path only) - -/usr/lib64/python3.9/site-packages/libROOTPythonizations3_9.cpython-39-x86_64-linux-gnu.so - -https://bugzilla.redhat.com/show_bug.cgi?id=1900661 ---- - bindings/pyroot/pythonizations/python/ROOT/_facade.py | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_facade.py b/bindings/pyroot/pythonizations/python/ROOT/_facade.py -index c028006c70..37365c36ca 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_facade.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_facade.py -@@ -5,7 +5,7 @@ from functools import partial - - import libcppyy as cppyy_backend - from cppyy import gbl as gbl_namespace --from cppyy import cppdef, include, load_library -+from cppyy import cppdef, include - from libROOTPythonizations import gROOT, CreateBufferFromAddress - - from ._application import PyROOTApplication -@@ -291,8 +291,6 @@ class ROOTFacade(types.ModuleType): - @property - def TPyDispatcher(self): - include('ROOT/TPyDispatcher.h') -- major, minor = sys.version_info[0:2] -- load_library('libROOTPythonizations{}_{}'.format(major, minor)) - tpd = gbl_namespace.TPyDispatcher - type(self).TPyDispatcher = tpd - return tpd --- -2.28.0 - diff --git a/root-doxygen-crash.patch b/root-doxygen-crash.patch index b27f5ce..d69d7e7 100644 --- a/root-doxygen-crash.patch +++ b/root-doxygen-crash.patch @@ -1,6 +1,204 @@ -diff -ur root-6.22.00.orig/tutorials/tmva/tmva003_RReader.C root-6.22.00/tutorials/tmva/tmva003_RReader.C ---- root-6.22.00.orig/tutorials/tmva/tmva003_RReader.C 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tutorials/tmva/tmva003_RReader.C 2020-07-09 18:58:36.854733120 +0200 +diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C root-6.24.02/tutorials/dataframe/df002_dataModel.C +--- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df002_dataModel.C 2021-08-11 03:55:11.021149115 +0200 +@@ -7,7 +7,6 @@ + /// complex than flat ntuples with RDataFrame + /// + /// \macro_code +-/// \macro_image + /// + /// \date December 2016 + /// \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py root-6.24.02/tutorials/dataframe/df002_dataModel.py +--- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df002_dataModel.py 2021-08-11 03:55:11.084149272 +0200 +@@ -7,7 +7,6 @@ + ## complex than flat ntuples with RDataFrame + ## + ## \macro_code +-## \macro_image + ## + ## \date May 2017 + ## \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.C root-6.24.02/tutorials/dataframe/df003_profiles.C +--- root-6.24.02.orig/tutorials/dataframe/df003_profiles.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df003_profiles.C 2021-08-11 03:55:11.148149432 +0200 +@@ -7,7 +7,6 @@ + /// RDataFrame. See the documentation of TProfile and TProfile2D to better + /// understand the analogy of this code with the example one. + /// +-/// \macro_image + /// \macro_code + /// + /// \date February 2017 +diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.py root-6.24.02/tutorials/dataframe/df003_profiles.py +--- root-6.24.02.orig/tutorials/dataframe/df003_profiles.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df003_profiles.py 2021-08-11 03:55:11.211149590 +0200 +@@ -8,7 +8,6 @@ + ## understand the analogy of this code with the example one. + ## + ## \macro_code +-## \macro_image + ## + ## \date February 2017 + ## \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C +--- root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C 2021-08-11 03:55:11.275149750 +0200 +@@ -7,7 +7,6 @@ + /// `Fill` method. + /// + /// \macro_code +-/// \macro_image + /// + /// \date March 2017 + /// \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C root-6.24.02/tutorials/dataframe/df007_snapshot.C +--- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df007_snapshot.C 2021-08-11 03:55:11.338149907 +0200 +@@ -5,7 +5,6 @@ + /// + /// This tutorial shows how to write out datasets in ROOT format using the RDataFrame + /// +-/// \macro_image + /// \macro_code + /// + /// \date April 2017 +diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py root-6.24.02/tutorials/dataframe/df007_snapshot.py +--- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df007_snapshot.py 2021-08-11 03:55:11.402150067 +0200 +@@ -5,7 +5,6 @@ + ## + ## This tutorial shows how to write out datasets in ROOT format using the RDataFrame + ## +-## \macro_image + ## \macro_code + ## + ## \date April 2017 +diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C +--- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C 2021-08-11 03:55:11.465150225 +0200 +@@ -14,7 +14,6 @@ + /// DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700). + /// + /// \macro_code +-/// \macro_image + /// + /// \date October 2017 + /// \author Enric Tejedor (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py +--- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py 2021-08-11 03:55:11.529150385 +0200 +@@ -14,7 +14,6 @@ + ## DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700). + ## + ## \macro_code +-## \macro_image + ## + ## \date October 2017 + ## \author Enric Tejedor (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C +--- root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C 2021-08-11 03:55:11.593150545 +0200 +@@ -14,7 +14,6 @@ + /// From the ROOT website: https://root.cern.ch/files/tutorials/tdf014_CsvDataSource_MuRun2010B.csv + /// + /// \macro_code +-/// \macro_image + /// + /// \date February 2018 + /// \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C root-6.24.02/tutorials/dataframe/df016_vecOps.C +--- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df016_vecOps.C 2021-08-11 03:55:11.656150702 +0200 +@@ -7,7 +7,6 @@ + /// stored in datasets, a situation very common in HEP data analysis. + /// + /// \macro_code +-/// \macro_image + /// + /// \date February 2018 + /// \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py root-6.24.02/tutorials/dataframe/df016_vecOps.py +--- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df016_vecOps.py 2021-08-11 03:55:11.720150862 +0200 +@@ -6,7 +6,6 @@ + ## This tutorial shows the potential of the VecOps approach for treating collections + ## stored in datasets, a situation very common in HEP data analysis. + ## +-## \macro_image + ## \macro_code + ## + ## \date February 2018 +diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C +--- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C 2021-08-11 03:55:11.783151020 +0200 +@@ -11,7 +11,6 @@ + /// greater than 100. + /// + /// \macro_code +-/// \macro_image + /// + /// \date March 2018 + /// \authors Danilo Piparo (CERN), Andre Vieira Silva +diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py +--- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py 2021-08-11 03:55:11.846151177 +0200 +@@ -7,7 +7,6 @@ + ## model typically adopted in HEP for analysis. + ## + ## \macro_code +-## \macro_image + ## + ## \date March 2018 + ## \authors Danilo Piparo (CERN), Andre Vieira Silva +diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.C root-6.24.02/tutorials/dataframe/df019_Cache.C +--- root-6.24.02.orig/tutorials/dataframe/df019_Cache.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df019_Cache.C 2021-08-11 03:55:11.910151337 +0200 +@@ -18,7 +18,6 @@ + /// only when the event loop is triggered on it. + /// + /// \macro_code +-/// \macro_image + /// + /// \date June 2018 + /// \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.py root-6.24.02/tutorials/dataframe/df019_Cache.py +--- root-6.24.02.orig/tutorials/dataframe/df019_Cache.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df019_Cache.py 2021-08-11 03:55:11.973151495 +0200 +@@ -18,7 +18,6 @@ + ## only when the event loop is triggered on it. + ## + ## \macro_code +-## \macro_image + ## + ## \date June 2018 + ## \author Danilo Piparo (CERN) +diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C root-6.24.02/tutorials/dataframe/df021_createTGraph.C +--- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df021_createTGraph.C 2021-08-11 03:55:12.037151655 +0200 +@@ -4,7 +4,6 @@ + /// Fill a TGraph using RDataFrame. + /// + /// \macro_code +-/// \macro_image + /// + /// \date July 2018 + /// \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino) +diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py root-6.24.02/tutorials/dataframe/df021_createTGraph.py +--- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/dataframe/df021_createTGraph.py 2021-08-11 03:55:12.100151813 +0200 +@@ -4,7 +4,6 @@ + ## Fill a TGraph using RDataFrame. + ## + ## \macro_code +-## \macro_image + ## + ## \date July 2018 + ## \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino) +diff -ur root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C root-6.24.02/tutorials/tmva/tmva003_RReader.C +--- root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/tmva/tmva003_RReader.C 2021-08-11 04:16:33.833359421 +0200 @@ -5,7 +5,6 @@ /// TMVA XML files. /// @@ -9,9 +207,9 @@ diff -ur root-6.22.00.orig/tutorials/tmva/tmva003_RReader.C root-6.22.00/tutoria /// /// \date July 2019 /// \author Stefan Wunsch -diff -ur root-6.22.00.orig/tutorials/tmva/tmva103_Application.C root-6.22.00/tutorials/tmva/tmva103_Application.C ---- root-6.22.00.orig/tutorials/tmva/tmva103_Application.C 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tutorials/tmva/tmva103_Application.C 2020-07-09 18:58:36.855733122 +0200 +diff -ur root-6.24.02.orig/tutorials/tmva/tmva103_Application.C root-6.24.02/tutorials/tmva/tmva103_Application.C +--- root-6.24.02.orig/tutorials/tmva/tmva103_Application.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/tmva/tmva103_Application.C 2021-08-11 21:56:49.387390340 +0200 @@ -6,7 +6,6 @@ /// event-by-event inference, batch inference and pipelines with RDataFrame. /// @@ -20,9 +218,42 @@ diff -ur root-6.22.00.orig/tutorials/tmva/tmva103_Application.C root-6.22.00/tut /// /// \date December 2018 /// \author Stefan Wunsch -diff -ur root-6.22.00.orig/tutorials/v7/line.cxx root-6.22.00/tutorials/v7/line.cxx ---- root-6.22.00.orig/tutorials/v7/line.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tutorials/v7/line.cxx 2020-07-09 18:58:42.202745047 +0200 +diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C +--- root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C 2021-08-10 15:21:03.306171069 +0200 +@@ -6,7 +6,6 @@ + /// This is an example of using a CNN in TMVA. We do classification using a toy image data set + /// that is generated when running the example macro + /// +-/// \macro_image + /// \macro_output + /// \macro_code + /// +diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C +--- root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C 2021-08-10 15:21:33.974251559 +0200 +@@ -7,7 +7,6 @@ + /// used in this paper: Baldi, P., P. Sadowski, and D. Whiteson. “Searching for Exotic Particles in High-energy Physics + /// with Deep Learning.” Nature Communications 5 (July 2, 2014). + /// +-/// \macro_image + /// \macro_output + /// \macro_code + /// +diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C +--- root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C 2021-08-10 15:21:15.657203486 +0200 +@@ -6,7 +6,6 @@ + /// This is an example of using a RNN in TMVA. We do classification using a toy time dependent data set + /// that is generated when running this example macro + /// +-/// \macro_image + /// \macro_output + /// \macro_code + /// +diff -ur root-6.24.02.orig/tutorials/v7/line.cxx root-6.24.02/tutorials/v7/line.cxx +--- root-6.24.02.orig/tutorials/v7/line.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/v7/line.cxx 2021-08-16 14:25:32.528867781 +0200 @@ -6,7 +6,6 @@ /// "normal" coordinates' system and changing the line color linearly from black /// to red. @@ -31,3 +262,14 @@ diff -ur root-6.22.00.orig/tutorials/v7/line.cxx root-6.22.00/tutorials/v7/line. /// \macro_code /// /// \date 2018-03-18 +diff -ur root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C +--- root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C 2021-08-10 15:22:06.504336763 +0200 +@@ -4,7 +4,6 @@ + /// Write and read an RNTuple from a user-defined class. Adapted from tv3.C + /// Illustrates various RNTuple introspection methods. + /// +-/// \macro_image + /// \macro_code + /// + /// \date April 2020 diff --git a/root-doxygen-endof-part2.patch b/root-doxygen-endof-part2.patch deleted file mode 100644 index a32b39f..0000000 --- a/root-doxygen-endof-part2.patch +++ /dev/null @@ -1,978 +0,0 @@ -From 1198ee3e08c46d1edc9258dbe857f66340f53a20 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 8 Jul 2020 10:39:54 +0200 -Subject: [PATCH 2/5] Fix various "end of ..." warnings from doxygen. - -This addresses warnings like: - -- end of comment block while expecting command -- end of comment block while expecting command -- end of comment block while expecting command -- end of comment block while expecting command -- end of comment block while expecting command -- end of comment block while expecting command -- end of comment block while expecting command -- end of list marker found without any preceding list items -- found tag without matching -- found tag without matching
  • -- found tag without matching
    -- found  tag while expecting 
    -- found  tag without matching 
    -- found  tag without matching 
    -- found  tag without matching 
    , append an opening
    -+/// Prepend a closing \, append an opening \
    - 
    - Bool_t TDocHtmlDirective::GetResult(TString& result)
    - {
    -diff --git a/math/mathcore/inc/Math/ProbFuncMathCore.h b/math/mathcore/inc/Math/ProbFuncMathCore.h
    -index d751c47a36..16e205347c 100644
    ---- a/math/mathcore/inc/Math/ProbFuncMathCore.h
    -+++ b/math/mathcore/inc/Math/ProbFuncMathCore.h
    -@@ -41,8 +41,8 @@ namespace Math {
    -    * These names are currently kept for backward compatibility, but
    -    * their usage is deprecated.
    -    *
    --   *  These functions are defined in the header file Math/ProbFunc.h or in the global one
    --   *  including all statistical functions Math/DistFunc.h
    -+   *  These functions are defined in the header file Math/ProbFunc.h or in the global one
    -+   *  including all statistical functions Math/DistFunc.h
    -    *
    -    */
    - 
    -@@ -727,8 +727,8 @@ namespace Math {
    -    first or the second momentum of the truncated distribution.
    -    In the case of the Landau, first and second momentum functions are provided for the Landau
    -    distribution truncated only on the right side.
    --   These functions are defined in the header file Math/ProbFunc.h or in the global one
    --   including all statistical functions Math/StatFunc.h
    -+   These functions are defined in the header file Math/ProbFunc.h or in the global one
    -+   including all statistical functions Math/StatFunc.h
    - 
    -    */
    - 
    -diff --git a/math/mathcore/inc/Math/QuantFuncMathCore.h b/math/mathcore/inc/Math/QuantFuncMathCore.h
    -index 7da5bd1178..1be023b33f 100644
    ---- a/math/mathcore/inc/Math/QuantFuncMathCore.h
    -+++ b/math/mathcore/inc/Math/QuantFuncMathCore.h
    -@@ -41,8 +41,8 @@ namespace Math {
    -    *
    -    *  \f[ D(x) = \int_{x}^{+\infty} p(x') dx' \f]
    -    *
    --   *  These functions are defined in the header file Math/ProbFunc.h or in the global one
    --   *  including all statistical functions Math/DistFunc.h
    -+   *  These functions are defined in the header file Math/ProbFunc.h or in the global one
    -+   *  including all statistical functions Math/DistFunc.h
    -    *
    -    *
    -    * NOTE: In the old releases (< 5.14) the _quantile functions were called
    -diff --git a/math/mathcore/src/TMath.cxx b/math/mathcore/src/TMath.cxx
    -index 49a81d56f7..ba8799b570 100644
    ---- a/math/mathcore/src/TMath.cxx
    -+++ b/math/mathcore/src/TMath.cxx
    -@@ -857,7 +857,7 @@ Double_t TMath::KolmogorovTest(Int_t na, const Double_t *a, Int_t nb, const Doub
    - /// \f[
    - /// lorentz(xx) = \frac{ \frac{1}{\pi} \frac{lg}{2} }{ (xx^{2} + \frac{lg^{2}}{4}) }
    - /// \f]
    --/// .
    -+/// \.
    - ///
    - /// The Voigt function is known to be the real part of Faddeeva function also
    - /// called complex error function [2].
    -diff --git a/math/mathmore/inc/Math/GSLMultiRootFinder.h b/math/mathmore/inc/Math/GSLMultiRootFinder.h
    -index 42069d2387..b7efe4157d 100644
    ---- a/math/mathmore/inc/Math/GSLMultiRootFinder.h
    -+++ b/math/mathmore/inc/Math/GSLMultiRootFinder.h
    -@@ -69,23 +69,23 @@ namespace Math {
    -      documentation )
    -      are the followings:
    -      
      --
    • ROOT::Math::GSLMultiRootFinder::kHybridSJ with name "HybridSJ": modified Powell's hybrid -+
    • ROOT::Math::GSLMultiRootFinder::kHybridSJ with name "HybridSJ": modified Powell's hybrid - method as implemented in HYBRJ in MINPACK --
    • ROOT::Math::GSLMultiRootFinder::kHybridJ with name "HybridJ": unscaled version of the -+
    • ROOT::Math::GSLMultiRootFinder::kHybridJ with name "HybridJ": unscaled version of the - previous algorithm
    • --
    • ROOT::Math::GSLMultiRootFinder::kNewton with name "Newton": Newton method
    • --
    • ROOT::Math::GSLMultiRootFinder::kGNewton with name "GNewton": modified Newton method
    • -+
    • ROOT::Math::GSLMultiRootFinder::kNewton with name "Newton": Newton method
    • -+
    • ROOT::Math::GSLMultiRootFinder::kGNewton with name "GNewton": modified Newton method
    • -
    - The algorithms without derivatives (see also the GSL - documentation ) - are the followings: -
      --
    • ROOT::Math::GSLMultiRootFinder::kHybridS with name "HybridS": same as HybridSJ but using -+
    • ROOT::Math::GSLMultiRootFinder::kHybridS with name "HybridS": same as HybridSJ but using - finate difference approximation for the derivatives
    • --
    • ROOT::Math::GSLMultiRootFinder::kHybrid with name "Hybrid": unscaled version of the -+
    • ROOT::Math::GSLMultiRootFinder::kHybrid with name "Hybrid": unscaled version of the - previous algorithm
    • --
    • ROOT::Math::GSLMultiRootFinder::kDNewton with name "DNewton": discrete Newton algorithm
    • --
    • ROOT::Math::GSLMultiRootFinder::kBroyden with name "Broyden": Broyden algorithm
    • -+
    • ROOT::Math::GSLMultiRootFinder::kDNewton with name "DNewton": discrete Newton algorithm
    • -+
    • ROOT::Math::GSLMultiRootFinder::kBroyden with name "Broyden": Broyden algorithm
    • -
    - - @ingroup MultiRoot -diff --git a/math/matrix/doc/Matrix.md b/math/matrix/doc/Matrix.md -index f53b29ca0b..c484c27c72 100644 ---- a/math/matrix/doc/Matrix.md -+++ b/math/matrix/doc/Matrix.md -@@ -325,7 +325,7 @@ constructor - C=A*B
    - A*=B
    - C.Mult(A,B)
    TMatrixD(A,TMatrixD::kMult,B)
    TMatrixD(A, TMatrixD(A, TMatrixD::kTransposeMult,B)
    TMatrixD(A, TMatrixD::kMultTranspose,B) -- overwrites A
     
     
    constructor of A.B
    constructor of AT .B
    constructor of A.BT -+ overwrites A
     
     
    constructor of A·B
    constructor of AT·B
    constructor of A·BT - - - Element wise multiplication -diff --git a/math/minuit/src/TMinuit.cxx b/math/minuit/src/TMinuit.cxx -index df3e563a73..18a6437c68 100644 ---- a/math/minuit/src/TMinuit.cxx -+++ b/math/minuit/src/TMinuit.cxx -@@ -187,11 +187,11 @@ the error matrix, or setting of exact confidence levels see: - - 1. F.James. - Determining the statistical Significance of experimental Results. -- Technical Report DD/81/02 and CERN Report 81-03, CERN, 1981.
  • -+ Technical Report DD/81/02 and CERN Report 81-03, CERN, 1981. - - 2. W.T.Eadie, D.Drijard, F.James, M.Roos, and B.Sadoulet. - Statistical Methods in Experimental Physics. -- North-Holland, 1971. -+ North-Holland, 1971. - - ### Reliability of MINUIT error estimates. - -diff --git a/montecarlo/eg/src/TDatabasePDG.cxx b/montecarlo/eg/src/TDatabasePDG.cxx -index 23c32e9668..85e9fe2a6d 100644 ---- a/montecarlo/eg/src/TDatabasePDG.cxx -+++ b/montecarlo/eg/src/TDatabasePDG.cxx -@@ -46,7 +46,7 @@ Root.DatabasePDG: $(HOME)/my_pdg_table.txt - See TParticlePDG for the description of a static particle properties. - See TParticle for the description of a dynamic particle particle. - --
    The current default pdg_table file displays lifetime 0 for some unstable particles.
    -+The current default pdg_table file displays lifetime 0 for some unstable particles. - - */ - -diff --git a/montecarlo/vmc/README.md b/montecarlo/vmc/README.md -index dc66ec401f..c731b26e92 100644 ---- a/montecarlo/vmc/README.md -+++ b/montecarlo/vmc/README.md -@@ -43,7 +43,7 @@ See more detailed description in [the dedicated README](README.multiple.md). - ## Authors - - The concept of Virtual MonteCarlo has been developed by the [ALICE Software Project](http://aliceinfo.cern.ch/Offline/).
    --Authors: R.Brun1, F.Carminati1, A. Gheata1, I.Hrivnacova2, A.Morsch1, B.Volkel1;
    -+Authors: R. Brun1, F. Carminati1, A. Gheata1, I. Hrivnacova2, A. Morsch1, B. Volkel1;
    - 1European Organization for Nuclear Research (CERN), Geneva, Switzerland;
    - 2Institut de Physique Nucléaire dʼOrsay (IPNO), Université Paris-Sud, CNRS-IN2P3, Orsay, France - -diff --git a/net/http/civetweb/LICENSE.md b/net/http/civetweb/LICENSE.md -index ab049e3e72..b6bb8ff037 100644 ---- a/net/http/civetweb/LICENSE.md -+++ b/net/http/civetweb/LICENSE.md -@@ -180,10 +180,6 @@ Duktape License - - https://github.com/svaarala/duktape/blob/master/LICENSE.txt - --> =============== --> Duktape license --> =============== --> - > (http://opensource.org/licenses/MIT) - > - > Copyright (c) 2013-2017 by Duktape authors (see AUTHORS.rst) -diff --git a/proof/proof/src/TProofMgr.cxx b/proof/proof/src/TProofMgr.cxx -index 2a140e4e7a..e41b637a15 100644 ---- a/proof/proof/src/TProofMgr.cxx -+++ b/proof/proof/src/TProofMgr.cxx -@@ -775,26 +775,29 @@ void TProofMgr::ReplaceSubdirs(const char *fn, TString &fdst, TList &dirph) - /// Upload files provided via the list 'src' (as TFileInfo or TObjString) - /// to 'mss'. The path under 'mss' is determined by 'dest'; the following - /// place-holders can be used in 'dest': --/// , , , ... referring to the n-th sub-component --/// of the src path --/// basename in the source path --/// basename sans extension --/// Extension --/// serial number of file in the list --/// as but zero padded --/// the full file path --/// , the local user and group names. --/// the users PROOF group --/// immediate parent directory --/// next-to immediate parent directory -+/// -+/// Place-holder | Meaning | -+/// ----------------------------|------------------------------------ -+/// \, \, \, ... | referring to the n-th sub-component of the src path -+/// \ | basename in the source path -+/// \ | basename sans extension -+/// \ | Extension -+/// \ | serial number of file in the list -+/// \ | as \ but zero padded -+/// \ | the full file path -+/// \, \ | the local user and group names. -+/// \ | the users PROOF group -+/// \ | immediate parent directory -+/// \ | next-to immediate parent directory -+/// - /// So, for example, if the source filename for the 99-th file is - /// protosrc://host//d0/d1/d2/d3/d4/d5/myfile --/// then with dest = '/pool/user/////' and -+/// then with dest = '/pool/user/\/\/\/\/\' and - /// mss = 'protodst://hostdst//nm/ - /// the corresponding destination path is - /// protodst://hostdst//nm/pool/user/d3/d4/d5/99/myfile - /// --/// If 'dest' is empty, is used. -+/// If 'dest' is empty, \ is used. - /// - /// Returns a TFileCollection with the destination files created; this - /// TFileCollection is, for example, ready to be registered as dataset. -@@ -966,20 +969,23 @@ TFileCollection *TProofMgr::UploadFiles(TList *src, - /// line, with line beginning by '#' ignored (i.e. considered comments). - /// The path under 'mss' is defined by 'dest'; the following - /// place-holders can be used in 'dest': --/// , , , ... referring to the n-th sub-component --/// of the src path --/// basename in the source path --/// serial number of file in the list --/// the full file path --/// , the local user and group names. -+/// -+/// Place-holder | Meaning | -+/// ----------------------------|------------------------------------ -+/// \, \, \, ... | referring to the n-th sub-component of the src path -+/// \ | basename in the source path -+/// \ | serial number of file in the list -+/// \ | the full file path -+/// \, \ | the local user and group names. -+/// - /// So, for example, if the source filename for the 99-th file is - /// protosrc://host//d0/d1/d2/d3/d4/d5/myfile --/// then with dest = '/pool/user/////' and -+/// then with dest = '/pool/user/\/\/\/\/\' and - /// mss = 'protodst://hostdst//nm/ - /// the corresponding destination path is - /// protodst://hostdst//nm/pool/user/d3/d4/d5/99/myfile - /// --/// If 'dest' is empty, is used. -+/// If 'dest' is empty, \ is used. - /// - /// Returns a TFileCollection with the destination files created; this - /// TFileCollection is, for example, ready to be registered as dataset. -diff --git a/proof/proof/src/TProofServ.cxx b/proof/proof/src/TProofServ.cxx -index 24c521743d..3697f257a0 100644 ---- a/proof/proof/src/TProofServ.cxx -+++ b/proof/proof/src/TProofServ.cxx -@@ -6696,11 +6696,11 @@ Int_t TProofServ::Fork() - } - - //////////////////////////////////////////////////////////////////////////////// --/// Replace , , , , , , , and --/// placeholders in fname. --/// Here, is the root version in integer form, e.g. 53403, and a --/// string includign version, architecture and compiler version, e.g. --/// '53403_linuxx8664gcc_gcc46' . -+/// Replace \, \, \, \, \, \, \, -+/// \ and \ placeholders in fname. -+/// Here, \ is the root version in integer form, e.g. 53403, and -+/// \ a string includign version, architecture and compiler version, -+/// e.g. '53403_linuxx8664gcc_gcc46' . - - void TProofServ::ResolveKeywords(TString &fname, const char *path) - { -diff --git a/roofit/histfactory/doc/index.md b/roofit/histfactory/doc/index.md -index 32f1c551a4..9256a9cf11 100644 ---- a/roofit/histfactory/doc/index.md -+++ b/roofit/histfactory/doc/index.md -@@ -41,12 +41,11 @@ it is organized as follows (see the examples in `${ROOTSYS}/tutorials/histfactor -
  • several 'Measurements' (corresponding to a full fit of the model) each of which specifies
  • -
      -
    • a name for this fit to be used in tables and files
    • --
        --
      • what is the luminosity associated to the measurement in picobarns
      • --
      • which bins of the histogram should be used
      • --
      • what is the relative uncertainty on the luminosity
      • --
      • what is (are) the parameter(s) of interest that will be measured
      • --
      • which parameters should be fixed/floating (eg. nuisance parameters)
      • -+
      • what is the luminosity associated to the measurement in picobarns
      • -+
      • which bins of the histogram should be used
      • -+
      • what is the relative uncertainty on the luminosity
      • -+
      • what is (are) the parameter(s) of interest that will be measured
      • -+
      • which parameters should be fixed/floating (eg. nuisance parameters)
      • -
      -
    - -diff --git a/roofit/histfactory/src/MakeModelAndMeasurementsFast.cxx b/roofit/histfactory/src/MakeModelAndMeasurementsFast.cxx -index e14e63ec89..73a3f627ba 100644 ---- a/roofit/histfactory/src/MakeModelAndMeasurementsFast.cxx -+++ b/roofit/histfactory/src/MakeModelAndMeasurementsFast.cxx -@@ -92,12 +92,11 @@ using namespace RooFit; -
  • several 'Measurements' (corresponding to a full fit of the model) each of which specifies
  • -
      -
    • a name for this fit to be used in tables and files
    • --
        --
      • what is the luminosity associated to the measurement in picobarns
      • --
      • which bins of the histogram should be used
      • --
      • what is the relative uncertainty on the luminosity
      • --
      • what is (are) the parameter(s) of interest that will be measured
      • --
      • which parameters should be fixed/floating (eg. nuisance parameters)
      • -+
      • what is the luminosity associated to the measurement in picobarns
      • -+
      • which bins of the histogram should be used
      • -+
      • what is the relative uncertainty on the luminosity
      • -+
      • what is (are) the parameter(s) of interest that will be measured
      • -+
      • which parameters should be fixed/floating (eg. nuisance parameters)
      • -
      -
    - -diff --git a/roofit/roofitcore/inc/RooAbsCategory.h b/roofit/roofitcore/inc/RooAbsCategory.h -index a7eaf8772a..4f0937a99d 100644 ---- a/roofit/roofitcore/inc/RooAbsCategory.h -+++ b/roofit/roofitcore/inc/RooAbsCategory.h -@@ -199,7 +199,7 @@ protected: - return hasIndex(_currentIndex); - } - -- /// If a category depends on the shape of others, *i.e.*, its state numbers or names depend -+ /// If a category depends on the shape of others, i.e.\ its state numbers or names depend - /// on the states of other categories, this function has to be implemented to recompute - /// _stateNames and _insertionOrder. - /// If one of these two changes, setShapeDirty() has to be called to propagate this information -diff --git a/roofit/roofitcore/src/RooSimPdfBuilder.cxx b/roofit/roofitcore/src/RooSimPdfBuilder.cxx -index 4c8289523d..57ea1e9196 100644 ---- a/roofit/roofitcore/src/RooSimPdfBuilder.cxx -+++ b/roofit/roofitcore/src/RooSimPdfBuilder.cxx -@@ -99,7 +99,7 @@ - /// PDF for each state of the C index category. - ///

    - ///
    -diff --git a/tmva/tmva/src/Factory.cxx b/tmva/tmva/src/Factory.cxx -index eda1b9ca1a..866aad0e18 100644 ---- a/tmva/tmva/src/Factory.cxx -+++ b/tmva/tmva/src/Factory.cxx -@@ -683,9 +683,9 @@ void TMVA::Factory::WriteDataInformation(DataSetInfo& fDataSetInfo) - } - - //////////////////////////////////////////////////////////////////////////////// --/// Iterates through all booked methods and sees if they use parameter tuning and if so.. --/// does just that i.e. calls "Method::Train()" for different parameter settings and --/// keeps in mind the "optimal one"... and that's the one that will later on be used -+/// Iterates through all booked methods and sees if they use parameter tuning and if so -+/// does just that, i.e.\ calls "Method::Train()" for different parameter settings and -+/// keeps in mind the "optimal one"...\ and that's the one that will later on be used - /// in the main training loop. - - std::map TMVA::Factory::OptimizeAllMethods(TString fomType, TString fitType) -diff --git a/tmva/tmva/src/Reader.cxx b/tmva/tmva/src/Reader.cxx -index 56d65bb9bf..b34ee9f1de 100644 ---- a/tmva/tmva/src/Reader.cxx -+++ b/tmva/tmva/src/Reader.cxx -@@ -594,7 +594,7 @@ const std::vector< Float_t >& TMVA::Reader::EvaluateRegression( const TString& m - //////////////////////////////////////////////////////////////////////////////// - /// evaluates the regression MVA - /// check for NaN in event data: (note: in the factory, this check was done already at the creation of the datasets, hence --/// it is not again checked in each of these subsequent calls.. -+/// it is not again checked in each of these subsequent calls. - - const std::vector< Float_t >& TMVA::Reader::EvaluateRegression( MethodBase* method, Double_t /*aux*/ ) - { -@@ -660,7 +660,7 @@ const std::vector< Float_t >& TMVA::Reader::EvaluateMulticlass( const TString& m - //////////////////////////////////////////////////////////////////////////////// - /// evaluates the multiclass MVA - /// check for NaN in event data: (note: in the factory, this check was done already at the creation of the datasets, hence --/// it is not again checked in each of these subsequent calls.. -+/// it is not again checked in each of these subsequent calls. - - const std::vector< Float_t >& TMVA::Reader::EvaluateMulticlass( MethodBase* method, Double_t /*aux*/ ) - { -diff --git a/tree/dataframe/inc/ROOT/RDF/RColumnValue.hxx b/tree/dataframe/inc/ROOT/RDF/RColumnValue.hxx -index 17527ac16d..497dd3d5c6 100644 ---- a/tree/dataframe/inc/ROOT/RDF/RColumnValue.hxx -+++ b/tree/dataframe/inc/ROOT/RDF/RColumnValue.hxx -@@ -93,7 +93,7 @@ class R__CLING_PTRCHECK(off) RColumnValue { - /// Enumerator for the different properties of the branch storage in memory - enum class EStorageType : char { kContiguous, kUnknown, kSparse }; - /// Signal whether we ever checked that the branch we are reading with a TTreeReaderArray stores array elements -- /// in contiguous memory. Only used when T == RVec. -+ /// in contiguous memory. Only used when T == RVec\. - EStorageType fStorageType = EStorageType::kUnknown; - /// If MustUseRVec, i.e. we are reading an array, we return a reference to this RVec to clients - RVec fRVec; -diff --git a/tutorials/net/udpserver.c b/tutorials/net/udpserver.c -index c54685400e..a74f6f0a85 100644 ---- a/tutorials/net/udpserver.c -+++ b/tutorials/net/udpserver.c -@@ -4,7 +4,7 @@ - - /* Converted to echo client/server with select() (timeout option). - See testTUDPSocket.C */ --/* Compile with: gcc udpserver.c -o udpserver -+/* Compile with: gcc udpserver.c -o udpserver */ - /* on Windows: cl -nologo -Z7 -MD -GR -EHsc udpserver.c */ - /* 3/30/05 John Schultz */ - -diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C -index 47f26368d9..89373a8887 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.C -+++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -22,7 +22,7 @@ - /// Helper function to create input images data - /// we create a signal and background 2D histograms from 2d gaussians - /// with a location (means in X and Y) different for each event --/// The difference between signal and background is in the gaussian width.. -+/// The difference between signal and background is in the gaussian width. - /// The width for the bakground gaussian is slightly larger than the signal width by few % values - /// - /// --- -2.26.2 - diff --git a/root-doxygen-filenames.patch b/root-doxygen-filenames.patch deleted file mode 100644 index d891a7f..0000000 --- a/root-doxygen-filenames.patch +++ /dev/null @@ -1,378 +0,0 @@ -From 116be70d2786a3fecdfcd6445d06ad6f3768f5a6 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 3 Jul 2020 08:08:33 +0200 -Subject: [PATCH 1/5] Fix \file references in doxygen markup - ---- - core/base/v7/inc/ROOT/RDirectory.hxx | 2 +- - core/base/v7/inc/ROOT/RDirectoryEntry.hxx | 2 +- - core/base/v7/inc/ROOT/RError.hxx | 2 +- - core/base/v7/inc/ROOT/RIndexIter.hxx | 2 +- - core/base/v7/inc/ROOT/RLogger.hxx | 2 +- - core/base/v7/inc/ROOT/RTupleApply.hxx | 2 +- - core/base/v7/inc/ROOT/impl_tuple_apply.hxx | 2 +- - core/base/v7/src/RLogger.cxx | 2 +- - core/clingutils/test/TClingUtilsTests.cxx | 2 +- - core/foundation/inc/ROOT/RNotFn.hxx | 2 +- - core/foundation/inc/ROOT/RSpan.hxx | 2 +- - core/foundation/inc/ROOT/span.hxx | 2 +- - core/foundation/src/FoundationUtils.cxx | 2 +- - gui/browsable/inc/ROOT/Browsable/RItem.hxx | 2 +- - gui/browsable/src/RHistDraw7Provider.cxx | 2 +- - gui/browsable/src/RSysFile.cxx | 2 +- - gui/browserv7/inc/ROOT/RBrowserReply.hxx | 2 +- - hist/hist/test/TFormulaGradientTests.cxx | 2 +- - hist/histdrawv7/inc/ROOT/RHistDrawable.hxx | 2 +- - hist/histv7/inc/ROOT/RAxis.hxx | 2 +- - hist/histv7/inc/ROOT/RAxisConfig.hxx | 2 +- - hist/histv7/inc/ROOT/RHist.hxx | 2 +- - hist/histv7/inc/ROOT/RHistBinIter.hxx | 2 +- - hist/histv7/inc/ROOT/RHistBufferedFill.hxx | 2 +- - hist/histv7/inc/ROOT/RHistConcurrentFill.hxx | 2 +- - hist/histv7/inc/ROOT/RHistData.hxx | 2 +- - hist/histv7/inc/ROOT/RHistImpl.hxx | 2 +- - hist/histv7/inc/ROOT/RHistUtils.hxx | 2 +- - hist/histv7/inc/ROOT/RHistView.hxx | 2 +- - io/io/v7/inc/ROOT/RFile.hxx | 2 +- - math/mathcore/test/CladDerivatorTests.cxx | 2 +- - math/mathcore/v7/inc/ROOT/RFit.hxx | 2 +- - tmva/tmva/inc/TMVA/NeuralNet.h | 2 +- - 33 files changed, 33 insertions(+), 33 deletions(-) - -diff --git a/core/base/v7/inc/ROOT/RDirectory.hxx b/core/base/v7/inc/ROOT/RDirectory.hxx -index 5331f91144..6d1a4b0541 100644 ---- a/core/base/v7/inc/ROOT/RDirectory.hxx -+++ b/core/base/v7/inc/ROOT/RDirectory.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RDirectory.h -+/// \file ROOT/RDirectory.hxx - /// \ingroup Base ROOT7 - /// \author Axel Naumann - /// \date 2015-07-31 -diff --git a/core/base/v7/inc/ROOT/RDirectoryEntry.hxx b/core/base/v7/inc/ROOT/RDirectoryEntry.hxx -index a7258bc642..1a33e5003a 100644 ---- a/core/base/v7/inc/ROOT/RDirectoryEntry.hxx -+++ b/core/base/v7/inc/ROOT/RDirectoryEntry.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RDirectoryEntry.h -+/// \file ROOT/RDirectoryEntry.hxx - /// \ingroup Base ROOT7 - /// \author Axel Naumann - /// \date 2015-07-31 -diff --git a/core/base/v7/inc/ROOT/RError.hxx b/core/base/v7/inc/ROOT/RError.hxx -index 7a0d363e7f..6af7a38f01 100644 ---- a/core/base/v7/inc/ROOT/RError.hxx -+++ b/core/base/v7/inc/ROOT/RError.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RError.h -+/// \file ROOT/RError.hxx - /// \ingroup Base ROOT7 - /// \author Jakob Blomer - /// \date 2019-12-11 -diff --git a/core/base/v7/inc/ROOT/RIndexIter.hxx b/core/base/v7/inc/ROOT/RIndexIter.hxx -index 1e290d82c8..fc424fdb8d 100644 ---- a/core/base/v7/inc/ROOT/RIndexIter.hxx -+++ b/core/base/v7/inc/ROOT/RIndexIter.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RIndexIter.h -+/// \file ROOT/RIndexIter.hxx - /// \ingroup Base ROOT7 - /// \author Axel Naumann - /// \date 2016-01-19 -diff --git a/core/base/v7/inc/ROOT/RLogger.hxx b/core/base/v7/inc/ROOT/RLogger.hxx -index c1852656ee..d4e3e6e7bd 100644 ---- a/core/base/v7/inc/ROOT/RLogger.hxx -+++ b/core/base/v7/inc/ROOT/RLogger.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/TLogger.h -+/// \file ROOT/RLogger.hxx - /// \ingroup Base ROOT7 - /// \author Axel Naumann - /// \date 2015-03-29 -diff --git a/core/base/v7/inc/ROOT/RTupleApply.hxx b/core/base/v7/inc/ROOT/RTupleApply.hxx -index 9a80bfcd6f..995246505f 100644 ---- a/core/base/v7/inc/ROOT/RTupleApply.hxx -+++ b/core/base/v7/inc/ROOT/RTupleApply.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RTupleApply.h -+/// \file ROOT/RTupleApply.hxx - /// \ingroup Base StdExt ROOT7 - /// \author Axel Naumann - /// \date 2015-09-06 -diff --git a/core/base/v7/inc/ROOT/impl_tuple_apply.hxx b/core/base/v7/inc/ROOT/impl_tuple_apply.hxx -index dc12706906..68d6988f97 100644 ---- a/core/base/v7/inc/ROOT/impl_tuple_apply.hxx -+++ b/core/base/v7/inc/ROOT/impl_tuple_apply.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/impl_tuple_apply.h -+/// \file ROOT/impl_tuple_apply.hxx - /// \ingroup Base StdExt ROOT7 - /// \author Axel Naumann - /// \date 2015-07-09 -diff --git a/core/base/v7/src/RLogger.cxx b/core/base/v7/src/RLogger.cxx -index 69aba0b05c..3ac8bb760f 100644 ---- a/core/base/v7/src/RLogger.cxx -+++ b/core/base/v7/src/RLogger.cxx -@@ -1,4 +1,4 @@ --/// \file TLogger.cxx -+/// \file RLogger.cxx - /// \ingroup Base ROOT7 - /// \author Axel Naumann - /// \date 2015-07-07 -diff --git a/core/clingutils/test/TClingUtilsTests.cxx b/core/clingutils/test/TClingUtilsTests.cxx -index fca26705c3..fbc12cd352 100644 ---- a/core/clingutils/test/TClingUtilsTests.cxx -+++ b/core/clingutils/test/TClingUtilsTests.cxx -@@ -1,4 +1,4 @@ --/// \file TClingUtilsTest.cxx -+/// \file TClingUtilsTests.cxx - /// - /// \brief The file contain unit tests which test the TClingUtils.h - /// -diff --git a/core/foundation/inc/ROOT/RNotFn.hxx b/core/foundation/inc/ROOT/RNotFn.hxx -index a6dd13679e..a3877797f3 100644 ---- a/core/foundation/inc/ROOT/RNotFn.hxx -+++ b/core/foundation/inc/ROOT/RNotFn.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RNotFn.h -+/// \file ROOT/RNotFn.hxx - /// \ingroup Base StdExt - /// \author Danilo Piparo, Enrico Guiraud - /// \date 2018-01-19 -diff --git a/core/foundation/inc/ROOT/RSpan.hxx b/core/foundation/inc/ROOT/RSpan.hxx -index 9e356493e6..b7366d58e7 100644 ---- a/core/foundation/inc/ROOT/RSpan.hxx -+++ b/core/foundation/inc/ROOT/RSpan.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RSpan.h -+/// \file ROOT/RSpan.hxx - /// \ingroup Base StdExt - /// \author Axel Naumann - /// \date 2015-09-06 -diff --git a/core/foundation/inc/ROOT/span.hxx b/core/foundation/inc/ROOT/span.hxx -index ce1b0e1d96..185055bbe6 100644 ---- a/core/foundation/inc/ROOT/span.hxx -+++ b/core/foundation/inc/ROOT/span.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/rhysd_span.h -+/// \file ROOT/span.hxx - /// \ingroup Base StdExt - /// \author Axel Naumann - /// \date 2015-09-06 -diff --git a/core/foundation/src/FoundationUtils.cxx b/core/foundation/src/FoundationUtils.cxx -index 9de395698b..d70e196130 100644 ---- a/core/foundation/src/FoundationUtils.cxx -+++ b/core/foundation/src/FoundationUtils.cxx -@@ -1,4 +1,4 @@ --/// \file FoundationUtils.hxx -+/// \file FoundationUtils.cxx - /// - /// \brief The file contains utilities which are foundational and could be used - /// across the core component of ROOT. -diff --git a/gui/browsable/inc/ROOT/Browsable/RItem.hxx b/gui/browsable/inc/ROOT/Browsable/RItem.hxx -index a07870a2cb..290587013e 100644 ---- a/gui/browsable/inc/ROOT/Browsable/RItem.hxx -+++ b/gui/browsable/inc/ROOT/Browsable/RItem.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RBrowser.hxx -+/// \file ROOT/RItem.hxx - /// \ingroup WebGui ROOT7 - /// \author Bertrand Bellenot - /// \author Sergey Linev -diff --git a/gui/browsable/src/RHistDraw7Provider.cxx b/gui/browsable/src/RHistDraw7Provider.cxx -index 416db22472..e2e15303c6 100644 ---- a/gui/browsable/src/RHistDraw7Provider.cxx -+++ b/gui/browsable/src/RHistDraw7Provider.cxx -@@ -1,4 +1,4 @@ --/// \file RDrawableRHist.cxx -+/// \file RHistDraw7Provider.cxx - /// \ingroup rbrowser - /// \author Bertrand Bellenot - /// \author Sergey Linev -diff --git a/gui/browsable/src/RSysFile.cxx b/gui/browsable/src/RSysFile.cxx -index d5f481cb83..4447164f52 100644 ---- a/gui/browsable/src/RSysFile.cxx -+++ b/gui/browsable/src/RSysFile.cxx -@@ -6,7 +6,7 @@ - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - --/// \file ROOT/RFileBrowsable.cxx -+/// \file ROOT/RSysFile.cxx - /// \ingroup rbrowser - /// \author Sergey Linev - /// \date 2019-10-15 -diff --git a/gui/browserv7/inc/ROOT/RBrowserReply.hxx b/gui/browserv7/inc/ROOT/RBrowserReply.hxx -index bdb94f60ea..35a2f1f978 100644 ---- a/gui/browserv7/inc/ROOT/RBrowserReply.hxx -+++ b/gui/browserv7/inc/ROOT/RBrowserReply.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RBrowserRequest.hxx -+/// \file ROOT/RBrowserReply.hxx - /// \ingroup WebGui ROOT7 - /// \author Bertrand Bellenot - /// \author Sergey Linev -diff --git a/hist/hist/test/TFormulaGradientTests.cxx b/hist/hist/test/TFormulaGradientTests.cxx -index 8c11a56077..74c0930f03 100644 ---- a/hist/hist/test/TFormulaGradientTests.cxx -+++ b/hist/hist/test/TFormulaGradientTests.cxx -@@ -1,4 +1,4 @@ --/// \file TFormulaGradientTests.h -+/// \file TFormulaGradientTests.cxx - /// - /// \brief The file contain unit tests which test the clad-based gradient - /// computations. -diff --git a/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx b/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx -index ac56b9c8f3..0b3b635d92 100644 ---- a/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx -+++ b/hist/histdrawv7/inc/ROOT/RHistDrawable.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistDrawable.h -+/// \file ROOT/RHistDrawable.hxx - /// \ingroup HistDraw ROOT7 - /// \author Axel Naumann - /// \date 2015-07-09 -diff --git a/hist/histv7/inc/ROOT/RAxis.hxx b/hist/histv7/inc/ROOT/RAxis.hxx -index 1d35ed9b93..0371a06f97 100644 ---- a/hist/histv7/inc/ROOT/RAxis.hxx -+++ b/hist/histv7/inc/ROOT/RAxis.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RAxis.h -+/// \file ROOT/RAxis.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-03-23 -diff --git a/hist/histv7/inc/ROOT/RAxisConfig.hxx b/hist/histv7/inc/ROOT/RAxisConfig.hxx -index 1e100986f0..34bf2f6a4a 100644 ---- a/hist/histv7/inc/ROOT/RAxisConfig.hxx -+++ b/hist/histv7/inc/ROOT/RAxisConfig.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RAxisConfig.h -+/// \file ROOT/RAxisConfig.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2020-02-05 -diff --git a/hist/histv7/inc/ROOT/RHist.hxx b/hist/histv7/inc/ROOT/RHist.hxx -index ebb319f1ef..5567683b27 100644 ---- a/hist/histv7/inc/ROOT/RHist.hxx -+++ b/hist/histv7/inc/ROOT/RHist.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHist.h -+/// \file ROOT/RHist.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-03-23 -diff --git a/hist/histv7/inc/ROOT/RHistBinIter.hxx b/hist/histv7/inc/ROOT/RHistBinIter.hxx -index 60f57dd20e..ab77dfbeaa 100644 ---- a/hist/histv7/inc/ROOT/RHistBinIter.hxx -+++ b/hist/histv7/inc/ROOT/RHistBinIter.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistBinIter.h -+/// \file ROOT/RHistBinIter.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-08-07 -diff --git a/hist/histv7/inc/ROOT/RHistBufferedFill.hxx b/hist/histv7/inc/ROOT/RHistBufferedFill.hxx -index bb1cade29b..8efe00e207 100644 ---- a/hist/histv7/inc/ROOT/RHistBufferedFill.hxx -+++ b/hist/histv7/inc/ROOT/RHistBufferedFill.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistBufferedFill.h -+/// \file ROOT/RHistBufferedFill.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-07-03 -diff --git a/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx b/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx -index a6b4b6a8e2..8ff76eb659 100644 ---- a/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx -+++ b/hist/histv7/inc/ROOT/RHistConcurrentFill.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistConcurrentFill.h -+/// \file ROOT/RHistConcurrentFill.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-07-03 -diff --git a/hist/histv7/inc/ROOT/RHistData.hxx b/hist/histv7/inc/ROOT/RHistData.hxx -index 901bd5c33a..9757986ff4 100644 ---- a/hist/histv7/inc/ROOT/RHistData.hxx -+++ b/hist/histv7/inc/ROOT/RHistData.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistData.h -+/// \file ROOT/RHistData.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-06-14 -diff --git a/hist/histv7/inc/ROOT/RHistImpl.hxx b/hist/histv7/inc/ROOT/RHistImpl.hxx -index 483d879f0e..b6d4b2c6b5 100644 ---- a/hist/histv7/inc/ROOT/RHistImpl.hxx -+++ b/hist/histv7/inc/ROOT/RHistImpl.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistImpl.h -+/// \file ROOT/RHistImpl.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-03-23 -diff --git a/hist/histv7/inc/ROOT/RHistUtils.hxx b/hist/histv7/inc/ROOT/RHistUtils.hxx -index 3733113c2b..08a342bf61 100644 ---- a/hist/histv7/inc/ROOT/RHistUtils.hxx -+++ b/hist/histv7/inc/ROOT/RHistUtils.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistData.h -+/// \file ROOT/RHistUtils.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2016-06-01 -diff --git a/hist/histv7/inc/ROOT/RHistView.hxx b/hist/histv7/inc/ROOT/RHistView.hxx -index b65d3518dd..d2b40e0f35 100644 ---- a/hist/histv7/inc/ROOT/RHistView.hxx -+++ b/hist/histv7/inc/ROOT/RHistView.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RHistView.h -+/// \file ROOT/RHistView.hxx - /// \ingroup Hist ROOT7 - /// \author Axel Naumann - /// \date 2015-08-06 -diff --git a/io/io/v7/inc/ROOT/RFile.hxx b/io/io/v7/inc/ROOT/RFile.hxx -index 6d3baaec05..c371a25875 100644 ---- a/io/io/v7/inc/ROOT/RFile.hxx -+++ b/io/io/v7/inc/ROOT/RFile.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RFile.h -+/// \file ROOT/RFile.hxx - /// \ingroup Base ROOT7 - /// \author Axel Naumann - /// \date 2015-07-31 -diff --git a/math/mathcore/test/CladDerivatorTests.cxx b/math/mathcore/test/CladDerivatorTests.cxx -index e4289a7286..d1682094e0 100644 ---- a/math/mathcore/test/CladDerivatorTests.cxx -+++ b/math/mathcore/test/CladDerivatorTests.cxx -@@ -1,4 +1,4 @@ --/// \file CladDerivator.h -+/// \file CladDerivatorTests.cxx - /// - /// \brief The file contain unit tests which test the CladDerivator facility. - /// -diff --git a/math/mathcore/v7/inc/ROOT/RFit.hxx b/math/mathcore/v7/inc/ROOT/RFit.hxx -index 4fae336242..5b92733152 100644 ---- a/math/mathcore/v7/inc/ROOT/RFit.hxx -+++ b/math/mathcore/v7/inc/ROOT/RFit.hxx -@@ -1,4 +1,4 @@ --/// \file ROOT/RFit.h -+/// \file ROOT/RFit.hxx - /// \ingroup MathCore ROOT7 - /// \author Axel Naumann - /// \date 2015-09-06 -diff --git a/tmva/tmva/inc/TMVA/NeuralNet.h b/tmva/tmva/inc/TMVA/NeuralNet.h -index 31229cb1cf..bae98a48b2 100644 ---- a/tmva/tmva/inc/TMVA/NeuralNet.h -+++ b/tmva/tmva/inc/TMVA/NeuralNet.h -@@ -1,5 +1,5 @@ - /** -- * @file NeuralNet -+ * @file TMVA/NeuralNet.h - * @author Peter Speckmayer - * @version 1.0 - * --- -2.26.2 - diff --git a/root-doxygen-macro-name.patch b/root-doxygen-macro-name.patch deleted file mode 100644 index a97bdf0..0000000 --- a/root-doxygen-macro-name.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8266262f76eaef4dc72ffda38e1d315be2ce3ff0 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 8 Jul 2020 19:41:34 +0200 -Subject: [PATCH 5/5] Make the name of macro match the filename - -Fixes: - -warning: Failed to call `rs302_JeffreysPriorDemo()` to execute the macro. -Add this function or rename the macro. Falling back to `.L`. ---- - tutorials/roostats/rs302_JeffreysPriorDemo.C | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tutorials/roostats/rs302_JeffreysPriorDemo.C b/tutorials/roostats/rs302_JeffreysPriorDemo.C -index c2f720a5f9..1c52e5dd83 100644 ---- a/tutorials/roostats/rs302_JeffreysPriorDemo.C -+++ b/tutorials/roostats/rs302_JeffreysPriorDemo.C -@@ -49,7 +49,7 @@ - - using namespace RooFit; - --void JeffreysPriorDemo() -+void rs302_JeffreysPriorDemo() - { - RooWorkspace w("w"); - w.factory("Uniform::u(x[0,1])"); --- -2.26.2 - diff --git a/root-doxygen-md-comments.patch b/root-doxygen-md-comments.patch deleted file mode 100644 index c1f57e2..0000000 --- a/root-doxygen-md-comments.patch +++ /dev/null @@ -1,214 +0,0 @@ -From 7336caccd3288a9164c82b78053e8f4f59eb1a9c Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 12 Jul 2020 12:12:15 +0200 -Subject: [PATCH] Remove /** comments */ from md files - ---- - math/genvector/doc/Genvector.md | 7 ------- - math/genvector/doc/LorentzVector.md | 6 +----- - math/genvector/doc/Point3D.md | 6 ------ - math/genvector/doc/Transformation.md | 6 ------ - math/genvector/doc/Vector3D.md | 4 ---- - math/genvector/doc/VectorPoint2D.md | 6 ------ - math/genvector/doc/externalUsage.md | 6 ------ - math/mathcore/doc/MathCore.md | 5 ----- - math/mathmore/doc/MathMore.md | 5 ----- - math/matrix/doc/Matrix.md | 3 --- - math/unuran/doc/Unuran.md | 8 ++------ - 11 files changed, 3 insertions(+), 59 deletions(-) - -diff --git a/math/genvector/doc/Genvector.md b/math/genvector/doc/Genvector.md -index 12e4e47a93..50dc61b2ce 100644 ---- a/math/genvector/doc/Genvector.md -+++ b/math/genvector/doc/Genvector.md -@@ -1,5 +1,3 @@ --/** -- - \page Vector Generic Vector for 2, 3 and 4 Dimensions - - -@@ -113,8 +111,3 @@ A more detailed description of all the GenVector classes is available in this [d - 2. [CLHEP Geometry package](http://www.hep.phy.cam.ac.uk/lhcb/doc/CLHEP/1.9.1.2/html/namespaceH) - 3. [%ROOT Physics Vector classes](http://root.cern.ch/root/html/PHYSICS_Index.html) - 4. [CMS Vector package](http://lcgapp.cern.ch/doxygen/SEAL/snapshot/html/dir_000007.html) -- --* * * -- --*/ -- -diff --git a/math/genvector/doc/LorentzVector.md b/math/genvector/doc/LorentzVector.md -index b40ea8c69c..e01ed4a8ca 100644 ---- a/math/genvector/doc/LorentzVector.md -+++ b/math/genvector/doc/LorentzVector.md -@@ -1,6 +1,4 @@ --// LorentzVector doxygen page -- --/** \page LorentzVectorPage LorentzVector Classes -+\page LorentzVectorPage LorentzVector Classes - - To avoid exposing templated parameter to the users, typedefs are defined for all types of vectors based an double's and float's. To use them, one must include the header file _Math/Vector4D.h_. The following typedef's, defined in the header file _Math/Vector4Dfwd.h_, are available for the different instantiations of the template class ROOT::Math::LorentzVector: - -@@ -110,5 +108,3 @@ v.Beta(); // return beta and gamma value - v.Gamma() // (vector must be time-like otherwise result is meaningless) - XYZVector b = v.BoostToCM() // return boost vector which will bring the Vector in its mas frame (P=0) - -- --*/ -diff --git a/math/genvector/doc/Point3D.md b/math/genvector/doc/Point3D.md -index a273b182d4..db55c68752 100644 ---- a/math/genvector/doc/Point3D.md -+++ b/math/genvector/doc/Point3D.md -@@ -1,7 +1,3 @@ --// Point3d doxygen page -- --/** -- - \page Point3DPage Point3D Classes - - To avoid exposing templated parameter to the users, typedefs are defined for all types of vectors based an double's and float's. To use them, one must include the header file _Math/Point3D.h_. The following typedef's, defined in the header file _Math/Point3Dfwd.h_, are available for the different instantiations of the template class ROOT::Math::PositionVector3D: -@@ -61,5 +57,3 @@ Exactly as for the 3D Vectors, the following operations are allowed: - * comparison of points - * scaling and division of points with a scalar - * dot and cross product with any type of vector -- --*/ -diff --git a/math/genvector/doc/Transformation.md b/math/genvector/doc/Transformation.md -index 7e66107f55..edc36778ed 100644 ---- a/math/genvector/doc/Transformation.md -+++ b/math/genvector/doc/Transformation.md -@@ -1,7 +1,3 @@ --// Rotation and transformation doxygen page -- --/** -- - \page TransformPage Vector Transformations - - Transformations classes are grouped in Rotations (in 3 dimensions), Lorentz transformations and Poincarre transformations, which are Translation/Rotation combinations. Each group has several members which may model physically equivalent trasformations but with different internal representations. -@@ -114,5 +110,3 @@ Transform3D t; t.GetComponens(m); // fill matrix of size 3x4 with c - - - For more detailed documentation on all methods see the reference doc for the specific transformation class. -- --*/ -diff --git a/math/genvector/doc/Vector3D.md b/math/genvector/doc/Vector3D.md -index 4f65f6b603..9d10ce7db2 100644 ---- a/math/genvector/doc/Vector3D.md -+++ b/math/genvector/doc/Vector3D.md -@@ -1,5 +1,3 @@ --/** -- - \page Vector3DPage Vector3D Classes - - -@@ -120,5 +118,3 @@ Note that the multiplication between two vectors using the operator * is not sup - -
    XYZVector u = v1.Unit();               //  return unit vector parallel to v1
    - 
    -- --*/ -diff --git a/math/genvector/doc/VectorPoint2D.md b/math/genvector/doc/VectorPoint2D.md -index 5c5e665088..287f3f8b73 100644 ---- a/math/genvector/doc/VectorPoint2D.md -+++ b/math/genvector/doc/VectorPoint2D.md -@@ -1,7 +1,3 @@ --// Vector2d doxygen page -- --/** -- - \page Vector2DPage 2D Point and Vector Classes - - Similar to the \ref Vector3DPage and \ref Point3DPage , typedefs are defined to avoid exposing templated parameter to the users, for all 2D vectors based an double's and float's. To use them, one must include the header file _Math/Vector2D.h_ or _Math/Point2D.h_. The following typedef's, defined in the header file _Math/Vector2Dfwd.h_, are available for the different instantiations of the template class ROOT::Math::DisplacementVector2D: -@@ -19,5 +15,3 @@ The typedef's, defined in the header file _Math/Point2Dfwd.h_, available for the - * ROOT::Math::Polar2DPointF vector based on r,phi coordinates (polar) in float precision - - Similar constructs, functions and operations available for the 3D vectors and points (see \ref Vector3DPage and \ref Point3DPage ) are available also for the 2D vector and points. No transformations or rotation classes are available for the 2D vectors. -- --*/ -diff --git a/math/genvector/doc/externalUsage.md b/math/genvector/doc/externalUsage.md -index f8580225a5..4413bbafca 100644 ---- a/math/genvector/doc/externalUsage.md -+++ b/math/genvector/doc/externalUsage.md -@@ -1,7 +1,3 @@ --// example on using with exteral classes (doxygen page) -- --/** -- - \page ExtUsagePage Examples with External Packages - - ### Connection to Linear Algebra classes -@@ -48,5 +44,3 @@ XYZPoint p1(hp); // create a 3D Point from CLHEP geom - - CLHEP::HepLorentzVector hq; - XYZTVector q(hq); // create a LorentzVector from CLHEP L.V. -- --*/ -diff --git a/math/mathcore/doc/MathCore.md b/math/mathcore/doc/MathCore.md -index 4efc043cab..8d38b4ae19 100644 ---- a/math/mathcore/doc/MathCore.md -+++ b/math/mathcore/doc/MathCore.md -@@ -1,5 +1,3 @@ --/** -- - \defgroup MathCore MathCore - - \brief The Core Mathematical Library of %ROOT. See the \ref MathCorePage "MathCore" description page. -@@ -32,6 +30,3 @@ MathCore contains instead now classes which were originally part of _libCore_. T - * Other classes, such as - * TKDTree for partitioning the data using a kd-Tree and TKDTreeBinning for binning data using a kdTree - * ROOT::Math::GoFTest for goodness of fit tests -- -- --*/ -diff --git a/math/mathmore/doc/MathMore.md b/math/mathmore/doc/MathMore.md -index 28b3528a68..f30ef6d0be 100644 ---- a/math/mathmore/doc/MathMore.md -+++ b/math/mathmore/doc/MathMore.md -@@ -1,6 +1,3 @@ -- --/** -- - \defgroup MathMore MathMore - - \brief The Mathematical library providing some advanced functionality and based on GSL. See the \ref MathMorePage "MathMore" Library page. -@@ -32,5 +29,3 @@ To build MathMore you need to have first GSL installed somewhere in your system. - MathMore (and its %ROOT CINT dictionary) can be built within %ROOT whenever a GSL library is found in the system. Optionally the GSL library and header file location can be specified in the %ROOT configure script with _configure --with-gsl-incdir=... --with-gsl-libdir=..._ - MathMore links with the GSL static libraries. On some platform (like Linux x86-64) GSL needs to be compiled with the option _--with-pic_. - The source code of MathMore is distributed under the GNU General Public License -- --*/ -diff --git a/math/matrix/doc/Matrix.md b/math/matrix/doc/Matrix.md -index ed0d9fffe8..f0b9d7a06a 100644 ---- a/math/matrix/doc/Matrix.md -+++ b/math/matrix/doc/Matrix.md -@@ -1,6 +1,3 @@ --/** -- -- - \page MatrixPage The ROOT Matrix Linear Algebra classes. - - -diff --git a/math/unuran/doc/Unuran.md b/math/unuran/doc/Unuran.md -index d807c4e807..4c64e0d214 100644 ---- a/math/unuran/doc/Unuran.md -+++ b/math/unuran/doc/Unuran.md -@@ -1,9 +1,7 @@ --/** -- --Universal Non Uniform Random number generator for generating non uniform pseudo-random numbers -- - \defgroup Unuran Unuran - -+\brief Universal Non Uniform Random number generator for generating non uniform pseudo-random numbers. -+ - \ingroup Math - - UNU.RAN, (Universal Non Uniform Random number generator for generating non uniform pseudo-random numbers) -@@ -120,5 +118,3 @@ TRandom pointer when constructing the TUnuran class (by default the ROOT gRandom - - The (UNU.RAN documentation)[http://statistik.wu-wien.ac.at/unuran/doc/unuran.html#Top] provides a detailed - description of all the available methods and the possible options which one can pass to UNU.RAN for the various distributions. --*/ -- --- -2.26.2 - diff --git a/root-doxygen-missing-underscore.patch b/root-doxygen-missing-underscore.patch deleted file mode 100644 index 630d58f..0000000 --- a/root-doxygen-missing-underscore.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e6e6715a73fb8b65ee24c11ff08ca34e25db9ef1 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 8 Jul 2020 19:41:10 +0200 -Subject: [PATCH 4/5] Add missing underscore - ---- - tutorials/fit/vectorizedFit.C | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tutorials/fit/vectorizedFit.C b/tutorials/fit/vectorizedFit.C -index d6b13e2fa7..1f6e317aa6 100644 ---- a/tutorials/fit/vectorizedFit.C -+++ b/tutorials/fit/vectorizedFit.C -@@ -8,7 +8,7 @@ - /// TF1::SetVectorized - /// - /// \macro_image --/// \macro output -+/// \macro_output - /// \macro_code - /// - /// \author Lorenzo Moneta --- -2.26.2 - diff --git a/root-doxygen-parameter-names.patch b/root-doxygen-parameter-names.patch deleted file mode 100644 index 7cc7d2e..0000000 --- a/root-doxygen-parameter-names.patch +++ /dev/null @@ -1,1211 +0,0 @@ -From e65727913e435819a3fc26513d9892d179eab1f2 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 8 Jul 2020 19:32:51 +0200 -Subject: [PATCH 3/5] Adjust parameter names in doxygen markup so they match - the code - -Addresses warnings: - -argument '' of command @param is not found in the argument list -of . ---- - .../pythonizations/src/PyzPythonHelpers.cxx | 2 +- - bindings/r/inc/TRInterface.h | 4 +-- - hist/hist/src/TF1.cxx | 5 ++- - hist/hist/src/TGraph.cxx | 6 ++-- - hist/histpainter/src/TPainter3dAlgorithms.cxx | 6 ++-- - hist/histv7/inc/ROOT/RAxis.hxx | 11 +++---- - hist/histv7/inc/ROOT/RHist.hxx | 2 +- - hist/unfold/src/TUnfoldBinning.cxx | 24 +++++++------- - hist/unfold/src/TUnfoldBinningXML.cxx | 2 +- - hist/unfold/src/TUnfoldDensity.cxx | 2 +- - hist/unfold/src/TUnfoldSys.cxx | 7 ++-- - io/io/inc/ROOT/TBufferMerger.hxx | 2 +- - math/mathcore/inc/Math/IntegratorMultiDim.h | 2 +- - math/minuit2/inc/Minuit2/FCNBase.h | 4 +-- - math/minuit2/inc/Minuit2/FumiliChi2FCN.h | 2 +- - math/minuit2/inc/Minuit2/FumiliErrorUpdator.h | 2 +- - .../inc/Minuit2/FumiliMaximumLikelihoodFCN.h | 2 +- - roofit/roofit/src/RooExponential.cxx | 2 +- - roofit/roofit/src/RooGExpModel.cxx | 32 +++++++++---------- - roofit/roofit/src/RooGaussian.cxx | 2 +- - roofit/roofit/src/RooJohnson.cxx | 2 +- - roofit/roofit/src/RooLandau.cxx | 2 +- - roofit/roofitcore/src/BatchData.cxx | 2 +- - roofit/roofitcore/src/RooAbsPdf.cxx | 4 +-- - roofit/roofitcore/src/RooAbsReal.cxx | 2 +- - roofit/roofitcore/src/RooCustomizer.cxx | 4 +-- - roofit/roofitcore/src/RooDataHist.cxx | 4 +-- - roofit/roofitcore/src/RooDataSet.cxx | 10 +++--- - roofit/roofitcore/src/RooFormulaVar.cxx | 2 +- - roofit/roofitcore/src/RooSuperCategory.cxx | 2 +- - roofit/roofitmore/src/RooHypatia2.cxx | 6 ++-- - tmva/tmva/inc/TMVA/BDTEventWrapper.h | 4 +-- - tmva/tmva/inc/TMVA/NeuralNet.h | 14 +++----- - tmva/tmva/inc/TMVA/NeuralNet.icc | 2 +- - tmva/tmva/inc/TMVA/RTensor.hxx | 2 +- - .../inc/TMVA/TreeInference/BranchlessTree.hxx | 4 +-- - tmva/tmva/inc/TMVA/TreeInference/Forest.hxx | 2 +- - tmva/tmva/src/BDTEventWrapper.cxx | 2 +- - tmva/tmva/src/CrossValidation.cxx | 2 +- - tmva/tmva/src/CvSplit.cxx | 18 +++++------ - tmva/tmva/src/Envelope.cxx | 12 +++---- - tree/dataframe/inc/ROOT/RDF/RInterface.hxx | 16 +++++----- - tree/dataframe/inc/ROOT/RDFHelpers.hxx | 2 +- - tree/dataframe/inc/ROOT/RDataSource.hxx | 8 ++--- - tree/dataframe/inc/ROOT/RResultPtr.hxx | 2 +- - tree/dataframe/src/RArrowDS.cxx | 4 +-- - tree/tree/inc/TTree.h | 2 +- - tree/tree/src/TIOFeatures.cxx | 14 ++++---- - 48 files changed, 131 insertions(+), 140 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/src/PyzPythonHelpers.cxx b/bindings/pyroot/pythonizations/src/PyzPythonHelpers.cxx -index 059debcee4..c5e354f300 100644 ---- a/bindings/pyroot/pythonizations/src/PyzPythonHelpers.cxx -+++ b/bindings/pyroot/pythonizations/src/PyzPythonHelpers.cxx -@@ -99,7 +99,7 @@ PyObject *PyROOT::GetDataPointer(PyObject * /*self*/, PyObject *args) - /// \brief Get endianess of the system - /// \param[in] self Always null, since this is a module function. - /// \param[in] args Pointer to an empty Python tuple. --/// \param[out] Endianess as Python string -+/// \return Endianess as Python string - /// - /// This function returns endianess of the system as a Python integer. The - /// return value is either '<' or '>' for little or big endian, respectively. -diff --git a/bindings/r/inc/TRInterface.h b/bindings/r/inc/TRInterface.h -index bdb559bfb5..e097007429 100644 ---- a/bindings/r/inc/TRInterface.h -+++ b/bindings/r/inc/TRInterface.h -@@ -206,7 +206,7 @@ namespace ROOT { - The command line arguments are by deafult argc=0 and argv=NULL, - The verbose mode is by default disabled but you can enable it to show procedures information in stdout/stderr \note some time can produce so much noise in the output - \param argc default 0 -- \param args default null -+ \param argv default null - \param loadRcpp default true - \param verbose default false - \param interactive default true -@@ -226,7 +226,7 @@ namespace ROOT { - /** - Method to eval R code and you get the result in a reference to TRObject - \param code R code -- \param ands reference to TRObject -+ \param ans reference to TRObject - \return an true or false if the execution was sucessful or not. - */ - Int_t Eval(const TString &code, TRObject &ans); // parse line, returns in ans; error code rc -diff --git a/hist/hist/src/TF1.cxx b/hist/hist/src/TF1.cxx -index a72b309c1e..0b7c0b5e45 100644 ---- a/hist/hist/src/TF1.cxx -+++ b/hist/hist/src/TF1.cxx -@@ -1973,12 +1973,11 @@ Double_t TF1::GetProb() const - /// F(x_{\frac{1}{2}}) = \prod(x < x_{\frac{1}{2}}) = \frac{1}{2} - /// \f] - /// --/// \param[in] this TF1 function - /// \param[in] nprobSum maximum size of array q and size of array probSum -+/// \param[out] q array filled with nq quantiles - /// \param[in] probSum array of positions where quantiles will be computed. - /// It is assumed to contain at least nprobSum values. --/// \param[out] return value nq (<=nprobSum) with the number of quantiles computed --/// \param[out] array q filled with nq quantiles -+/// \return value nq (<=nprobSum) with the number of quantiles computed - /// - /// Getting quantiles from two histograms and storing results in a TGraph, - /// a so-called QQ-plot -diff --git a/hist/hist/src/TGraph.cxx b/hist/hist/src/TGraph.cxx -index b6e05a4a9c..614c63d697 100644 ---- a/hist/hist/src/TGraph.cxx -+++ b/hist/hist/src/TGraph.cxx -@@ -1900,9 +1900,9 @@ Int_t TGraph::IsInside(Double_t x, Double_t y) const - /// Least squares polynomial fitting without weights. - /// - /// \param [in] m number of parameters --/// \param [in] ma array of parameters --/// \param [in] mfirst 1st point number to fit (default =0) --/// \param [in] mlast last point number to fit (default=fNpoints-1) -+/// \param [in] a array of parameters -+/// \param [in] xmin 1st point number to fit (default =0) -+/// \param [in] xmax last point number to fit (default=fNpoints-1) - /// - /// based on CERNLIB routine LSQ: Translated to C++ by Rene Brun - -diff --git a/hist/histpainter/src/TPainter3dAlgorithms.cxx b/hist/histpainter/src/TPainter3dAlgorithms.cxx -index e0dd1f28e4..a95ac36d2d 100644 ---- a/hist/histpainter/src/TPainter3dAlgorithms.cxx -+++ b/hist/histpainter/src/TPainter3dAlgorithms.cxx -@@ -3122,8 +3122,8 @@ L500: - /// Set light source - /// - /// \param[in] nl source number: 1 off all light sources, 0 set diffused light --/// \param[in] xl intensity of the light source --/// \param[in] xscr `yscr` `zscr` direction of the light (in respect of the screen) -+/// \param[in] yl intensity of the light source -+/// \param[in] xscr, yscr, zscr direction of the light (in respect of the screen) - /// - /// \param[out] irep reply (0 - O.K, -1 error) - -@@ -4074,7 +4074,7 @@ L500: - /// \param[in] qqa diffusion coefficient for diffused light [0.,1.] - /// \param[in] qqd diffusion coefficient for direct light [0.,1.] - /// \param[in] qqs diffusion coefficient for reflected light [0.,1.] --/// \param[in] nncs power coefficient for reflected light (.GE.1) -+/// \param[in] nnqs power coefficient for reflected light (.GE.1) - /// - /// Lightness model formula: Y = YD*QA + > YLi*(QD*cosNi+QS*cosRi) - /// -diff --git a/hist/histv7/inc/ROOT/RAxis.hxx b/hist/histv7/inc/ROOT/RAxis.hxx -index 0371a06f97..52ed88b9d8 100644 ---- a/hist/histv7/inc/ROOT/RAxis.hxx -+++ b/hist/histv7/inc/ROOT/RAxis.hxx -@@ -68,7 +68,7 @@ protected: - /// determine the bin number taking into account how over/underflow - /// should be handled. - /// -- /// \param[out] result status of the bin determination. -+ /// \param[in] rawbin for which to determine the bin number. - /// \return Returns the bin number adjusted for potential over- and underflow - /// bins. Returns `kInvalidBin` if the axis cannot handle the over- / underflow. - /// -@@ -390,7 +390,7 @@ protected: - /// Determine the inverse bin width. - /// \param nbinsNoOver - number of bins without unter-/overflow - /// \param lowOrHigh - first axis boundary -- /// \param lighOrLow - second axis boundary -+ /// \param highOrLow - second axis boundary - static double GetInvBinWidth(int nbinsNoOver, double lowOrHigh, double highOrLow) - { - return nbinsNoOver / std::fabs(highOrLow - lowOrHigh); -@@ -413,7 +413,7 @@ public: - - /// Initialize a RAxisEquidistant. - /// \param[in] title - axis title used for graphics and text representation. -- /// \param nbins - number of bins in the axis, excluding under- and overflow -+ /// \param nbinsNoOver - number of bins in the axis, excluding under- and overflow - /// bins. - /// \param low - the low axis range. Any coordinate below that is considered - /// as underflow. The first bin's lower edge is at this value. -@@ -427,13 +427,12 @@ public: - {} - - /// Initialize a RAxisEquidistant. -- /// \param nbins - number of bins in the axis, excluding under- and overflow -+ /// \param nbinsNoOver - number of bins in the axis, excluding under- and overflow - /// bins. - /// \param low - the low axis range. Any coordinate below that is considered - /// as underflow. The first bin's lower edge is at this value. - /// \param high - the high axis range. Any coordinate above that is considered - /// as overflow. The last bin's higher edge is at this value. -- /// \param canGrow - whether this axis can extend its range. - explicit RAxisEquidistant(int nbinsNoOver, double low, double high) noexcept - : RAxisEquidistant("", nbinsNoOver, low, high) - {} -@@ -505,6 +504,7 @@ struct AxisConfigToType { - class RAxisGrow: public RAxisEquidistant { - public: - /// Initialize a RAxisGrow. -+ /// \param[in] title - axis title used for graphics and text representation. - /// \param nbins - number of bins in the axis, excluding under- and overflow - /// bins. This value is fixed over the lifetime of the object. - /// \param low - the initial value for the low axis range. Any coordinate -@@ -518,7 +518,6 @@ public: - {} - - /// Initialize a RAxisGrow. -- /// \param[in] title - axis title used for graphics and text representation. - /// \param nbins - number of bins in the axis, excluding under- and overflow - /// bins. This value is fixed over the lifetime of the object. - /// \param low - the initial value for the low axis range. Any coordinate -diff --git a/hist/histv7/inc/ROOT/RHist.hxx b/hist/histv7/inc/ROOT/RHist.hxx -index 5567683b27..e2b7649975 100644 ---- a/hist/histv7/inc/ROOT/RHist.hxx -+++ b/hist/histv7/inc/ROOT/RHist.hxx -@@ -219,9 +219,9 @@ struct RHistImplGen { - /// - /// Delegate to the appropriate MakeNextAxis instantiation, depending on the - /// axis type selected in the RAxisConfig. -+ /// \param title - title of the derived object. - /// \param axes - `RAxisConfig` objects describing the axis of the resulting - /// RHistImpl. -- /// \param statConfig - the statConfig parameter to be passed to the RHistImpl - /// \param processedAxisArgs - the RAxisBase-derived axis objects describing the - /// axes of the resulting RHistImpl. There are `IDIM` of those; in the end - /// (`IDIM` == `GetNDim()`), all `axes` have been converted to -diff --git a/hist/unfold/src/TUnfoldBinning.cxx b/hist/unfold/src/TUnfoldBinning.cxx -index 3aecbf53c2..2500230dca 100644 ---- a/hist/unfold/src/TUnfoldBinning.cxx -+++ b/hist/unfold/src/TUnfoldBinning.cxx -@@ -205,7 +205,7 @@ Int_t TUnfoldBinning::UpdateFirstLastBin(Bool_t startWithRootNode) - /// Create a new node without axis. - /// - /// \param[in] name identifier of the node --/// \param[in] nBin number of unconnected bins (could be zero) -+/// \param[in] nBins number of unconnected bins (could be zero) - /// \param[in] binNames (optional) names of the bins separated by ';' - - TUnfoldBinning::TUnfoldBinning -@@ -241,7 +241,7 @@ TUnfoldBinning::TUnfoldBinning - /// Add a new binning node as last last child of this node. - /// - /// \param[in] name name of the node --/// \param[in] nBin number of extra bins -+/// \param[in] nBins number of extra bins - /// \param[in] binNames (optional) names of the bins separated by ';' - /// - /// this is a shortcut for AddBinning(new TUnfoldBinning(name,nBins,binNames)) -@@ -695,11 +695,11 @@ Int_t TUnfoldBinning::GetTH1xNumberOfBins - /// - /// \param[in] histogramName name of the histogram which is created - /// \param[in] originalAxisBinning if true, try to preserve the axis binning --/// \param[out] (default=0) binMap mapping of global bins to histogram bins. -+/// \param[out] binMap (default=0) mapping of global bins to histogram bins. - /// if(binMap==0), no binMap is created --/// \param[in] (default=0) histogramTitle title of the histogram. If zero, a title -+/// \param[in] histogramTitle (default=0) title of the histogram. If zero, a title - /// is selected automatically --/// \param[in] (default=0) axisSteering steer the handling of underflow/overflow -+/// \param[in] axisSteering (default=0) steer the handling of underflow/overflow - /// and projections - /// - /// returns a new histogram (TH1D, TH2D or TH3D) -@@ -789,11 +789,11 @@ TH1 *TUnfoldBinning::CreateHistogram - /// - /// \param[in] histogramName name of the histogram which is created - /// \param[in] originalAxisBinning if true, try to preserve the axis binning --/// \param[out] (default=0) binMap mapping of global bins to histogram bins. -+/// \param[out] binMap (default=0) mapping of global bins to histogram bins. - /// if(binMap==0), no binMap is created --/// \param[in] (default=0) histogramTitle title of the histogram. If zero, a title -+/// \param[in] histogramTitle (default=0) title of the histogram. If zero, a title - /// is selected automatically --/// \param[in] (default=0) axisSteering steer the handling of underflow/overflow -+/// \param[in] axisSteering (default=0) steer the handling of underflow/overflow - /// and projections - /// - /// returns a new TH2D. The options are described in greater detail -@@ -832,7 +832,7 @@ TH2D *TUnfoldBinning::CreateErrorMatrixHistogram - /// Create a TH2D histogram capable to hold the bins of the two - /// input binning schemes on the x and y axes, respectively. - /// --/// \paran[in] xAxis binning scheme for the x axis -+/// \param[in] xAxis binning scheme for the x axis - /// \param[in] yAxis binning scheme for the y axis - /// \param[in] histogramName name of the histogram which is created - /// \param[in] originalXAxisBinning preserve x-axis bin widths if possible -@@ -1053,8 +1053,8 @@ Int_t *TUnfoldBinning::CreateEmptyBinMap(void) const { - /// Set one entry in a bin map. - /// - /// \param[out] binMap to be used with TUnfoldSys::GetOutput() etc --/// \param[in] source bin, global bin number in this binning scheme --/// \param[in] destination bin in the output histogram -+/// \param[in] globalBin source bin, global bin number in this binning scheme -+/// \param[in] destBin destination bin in the output histogram - - void TUnfoldBinning::SetBinMapEntry - (Int_t *binMap,Int_t globalBin,Int_t destBin) const { -@@ -2075,7 +2075,7 @@ Int_t TUnfoldBinning::ToGlobalBin - /// and bin numbers on the corresponding axes. - /// - /// \param[in] globalBin global bin number --/// \param[out] local bin numbers of the distribution's axes -+/// \param[out] axisBins local bin numbers of the distribution's axes - /// - /// returns the distribution in which the globalBin is located - /// or 0 if the globalBin is outside this node and its children -diff --git a/hist/unfold/src/TUnfoldBinningXML.cxx b/hist/unfold/src/TUnfoldBinningXML.cxx -index 28ce408128..a1daf58215 100644 ---- a/hist/unfold/src/TUnfoldBinningXML.cxx -+++ b/hist/unfold/src/TUnfoldBinningXML.cxx -@@ -472,7 +472,7 @@ void TUnfoldBinningXML::AddAxisXML(TXMLNode *node) { - /// Export a binning scheme to a stream in XML format. - /// - /// \param[in] binning the binning scheme to export --/// \param[out] stream to write to -+/// \param[in] out stream to write to - /// \param[in] writeHeader set true when writing the first binning - /// scheme to this stream - /// \param[in] writeFooter set true when writing the last binning -diff --git a/hist/unfold/src/TUnfoldDensity.cxx b/hist/unfold/src/TUnfoldDensity.cxx -index 9b32da0961..78c7ddbf14 100644 ---- a/hist/unfold/src/TUnfoldDensity.cxx -+++ b/hist/unfold/src/TUnfoldDensity.cxx -@@ -1311,7 +1311,7 @@ const TUnfoldBinning *TUnfoldDensity::GetOutputBinning - /// \param[out] scanResult the scanned function wrt log(tau) - /// \param[in] mode 1st parameter for the scan function - /// \param[in] distribution 2nd parameter for the scan function --/// \param[in] projectionMode 3rd parameter for the scan function -+/// \param[in] axisSteering 3rd parameter for the scan function - /// \param[out] lCurvePlot for monitoring, shows the L-curve - /// \param[out] logTauXPlot for monitoring, L-curve(X) as a function of log(tau) - /// \param[out] logTauYPlot for monitoring, L-curve(Y) as a function of log(tau) -diff --git a/hist/unfold/src/TUnfoldSys.cxx b/hist/unfold/src/TUnfoldSys.cxx -index 42bbc7751c..1e89445cde 100644 ---- a/hist/unfold/src/TUnfoldSys.cxx -+++ b/hist/unfold/src/TUnfoldSys.cxx -@@ -463,7 +463,7 @@ Int_t TUnfoldSys::SetInput(const TH1 *hist_y,Double_t scaleBias, - /// \param[in] bgr background distribution with uncorrelated errors - /// \param[in] name identifier for this background source - /// \param[in] scale normalisation factor applied to the background --/// \param[in] scaleError normalisation uncertainty -+/// \param[in] scale_error normalisation uncertainty - /// - /// The contribution scale*bgr is subtracted from the - /// measurement prior to unfolding. The following contributions are -@@ -1045,7 +1045,6 @@ Bool_t TUnfoldSys::GetDeltaSysBackgroundScale - /// Correlated one-sigma shifts from shifting tau. - /// - /// \param[out] hist_delta histogram to store shifts --/// \param[in] source identifier of the background source - /// \param[in] binMap (default=0) remapping of histogram bins - /// - /// returns true if the background source was found. -@@ -1100,8 +1099,8 @@ void TUnfoldSys::GetEmatrixSysSource - //////////////////////////////////////////////////////////////////////////////// - /// Covariance contribution from background normalisation uncertainty. - /// --/// \param[inout] ematrix output histogram --/// \param[in] source identifier of the background source -+/// \param[in,out] ematrix output histogram -+/// \param[in] name identifier of the background source - /// \param[in] binMap (default=0) remapping of histogram bins - /// \param[in] clearEmat (default=true) if true, clear the histogram - /// prior to adding the covariance matrix contribution -diff --git a/io/io/inc/ROOT/TBufferMerger.hxx b/io/io/inc/ROOT/TBufferMerger.hxx -index 27fe36d399..5e4cfe52cb 100644 ---- a/io/io/inc/ROOT/TBufferMerger.hxx -+++ b/io/io/inc/ROOT/TBufferMerger.hxx -@@ -43,7 +43,7 @@ public: - /** Constructor - * @param name Output file name - * @param option Output file creation options -- * @param compression Output file compression level -+ * @param compress Output file compression level - */ - TBufferMerger(const char *name, Option_t *option = "RECREATE", Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault); - -diff --git a/math/mathcore/inc/Math/IntegratorMultiDim.h b/math/mathcore/inc/Math/IntegratorMultiDim.h -index 0d2d56396e..7b14f96d8e 100644 ---- a/math/mathcore/inc/Math/IntegratorMultiDim.h -+++ b/math/mathcore/inc/Math/IntegratorMultiDim.h -@@ -60,7 +60,7 @@ public: - @param type integration type (adaptive, MC methods, etc..) - @param absTol desired absolute Error - @param relTol desired relative Error -- @param size maximum number of sub-intervals -+ @param ncall number of function calls (apply only to MC integratioon methods) - - In case no parameter values are passed the default ones used in IntegratorMultiDimOptions are used - */ -diff --git a/math/minuit2/inc/Minuit2/FCNBase.h b/math/minuit2/inc/Minuit2/FCNBase.h -index bf6c64bd9e..760df5b6f4 100644 ---- a/math/minuit2/inc/Minuit2/FCNBase.h -+++ b/math/minuit2/inc/Minuit2/FCNBase.h -@@ -65,7 +65,7 @@ public: - as it searches for the Minimum or performs whatever analysis is requested by - the user. - -- @param par function parameters as defined by the user. -+ @param v function parameters as defined by the user. - - @return the Value of the function. - -@@ -75,7 +75,7 @@ public: - - */ - -- virtual double operator()(const std::vector& x) const = 0; -+ virtual double operator()(const std::vector& v) const = 0; - - - /** -diff --git a/math/minuit2/inc/Minuit2/FumiliChi2FCN.h b/math/minuit2/inc/Minuit2/FumiliChi2FCN.h -index 6af985ef08..fac33baaf6 100644 ---- a/math/minuit2/inc/Minuit2/FumiliChi2FCN.h -+++ b/math/minuit2/inc/Minuit2/FumiliChi2FCN.h -@@ -62,7 +62,7 @@ public: - - Sets the model function for the data (for example gaussian+linear for a peak) - -- @param modelFunction a reference to the model function. -+ @param modelFCN a reference to the model function. - - */ - -diff --git a/math/minuit2/inc/Minuit2/FumiliErrorUpdator.h b/math/minuit2/inc/Minuit2/FumiliErrorUpdator.h -index 3eb5da9c36..4b620c57a8 100644 ---- a/math/minuit2/inc/Minuit2/FumiliErrorUpdator.h -+++ b/math/minuit2/inc/Minuit2/FumiliErrorUpdator.h -@@ -67,7 +67,7 @@ public: - - @param fGradientCalculator the Gradient calculator used to retrieved the Parameter transformation - -- @param fFumiliFCNBase the function calculating the figure of merit. -+ @param lambda the Marquard lambda factor - - - \todo Some nice latex mathematical formuli... -diff --git a/math/minuit2/inc/Minuit2/FumiliMaximumLikelihoodFCN.h b/math/minuit2/inc/Minuit2/FumiliMaximumLikelihoodFCN.h -index c6725ae350..1661bee94a 100644 ---- a/math/minuit2/inc/Minuit2/FumiliMaximumLikelihoodFCN.h -+++ b/math/minuit2/inc/Minuit2/FumiliMaximumLikelihoodFCN.h -@@ -61,7 +61,7 @@ public: - - Sets the model function for the data (for example gaussian+linear for a peak) - -- @param modelFunction a reference to the model function. -+ @param modelFCN a reference to the model function. - - */ - -diff --git a/roofit/roofit/src/RooExponential.cxx b/roofit/roofit/src/RooExponential.cxx -index dc211f5275..e16871c5eb 100644 ---- a/roofit/roofit/src/RooExponential.cxx -+++ b/roofit/roofit/src/RooExponential.cxx -@@ -102,7 +102,7 @@ void compute(size_t n, double* __restrict output, Tx x, Tc c) { - - //////////////////////////////////////////////////////////////////////////////// - /// Evaluate the exponential without normalising it on the given batch. --/// \param[in] batchIndex Index of the batch to be computed. -+/// \param[in] begin Index of the batch to be computed. - /// \param[in] batchSize Size of each batch. The last batch may be smaller. - /// \return A span with the computed values. - -diff --git a/roofit/roofit/src/RooGExpModel.cxx b/roofit/roofit/src/RooGExpModel.cxx -index 9c7f184b69..18f5688217 100644 ---- a/roofit/roofit/src/RooGExpModel.cxx -+++ b/roofit/roofit/src/RooGExpModel.cxx -@@ -48,10 +48,10 @@ ClassImp(RooGExpModel); - /// - /// \param[in] name Name of this instance. - /// \param[in] title Title (e.g. for plotting) --/// \param[in] x The convolution observable. --/// \param[in] mean The mean of the Gaussian. --/// \param[in] sigma Width of the Gaussian. --/// \param[in] rlife Lifetime constant \f$ \tau \f$. -+/// \param[in] xIn The convolution observable. -+/// \param[in] meanIn The mean of the Gaussian. -+/// \param[in] sigmaIn Width of the Gaussian. -+/// \param[in] rlifeIn Lifetime constant \f$ \tau \f$. - /// \param[in] meanSF Scale factor for mean. - /// \param[in] sigmaSF Scale factor for sigma. - /// \param[in] rlifeSF Scale factor for rlife. -@@ -81,9 +81,9 @@ RooGExpModel::RooGExpModel(const char *name, const char *title, RooAbsRealLValue - /// - /// \param[in] name Name of this instance. - /// \param[in] title Title (e.g. for plotting) --/// \param[in] x The convolution observable. --/// \param[in] sigma Width of the Gaussian. --/// \param[in] rlife Lifetime constant \f$ \tau \f$. -+/// \param[in] xIn The convolution observable. -+/// \param[in] _sigma Width of the Gaussian. -+/// \param[in] _rlife Lifetime constant \f$ \tau \f$. - /// \param[in] nlo Include next-to-leading order for higher accuracy of convolution. - /// \param[in] type Switch between normal and flipped model. - RooGExpModel::RooGExpModel(const char *name, const char *title, RooAbsRealLValue& xIn, -@@ -105,10 +105,10 @@ RooGExpModel::RooGExpModel(const char *name, const char *title, RooAbsRealLValue - /// - /// \param[in] name Name of this instance. - /// \param[in] title Title (e.g. for plotting) --/// \param[in] x The convolution observable. --/// \param[in] sigma Width of the Gaussian. --/// \param[in] rlife Lifetime constant \f$ \tau \f$. --/// \param[in] srSF Scale factor for both sigma and tau. -+/// \param[in] xIn The convolution observable. -+/// \param[in] _sigma Width of the Gaussian. -+/// \param[in] _rlife Lifetime constant \f$ \tau \f$. -+/// \param[in] _rsSF Scale factor for both sigma and tau. - /// \param[in] nlo Include next-to-leading order for higher accuracy of convolution. - /// \param[in] type Switch between normal and flipped model. - RooGExpModel::RooGExpModel(const char *name, const char *title, RooAbsRealLValue& xIn, -@@ -134,11 +134,11 @@ RooGExpModel::RooGExpModel(const char *name, const char *title, RooAbsRealLValue - /// - /// \param[in] name Name of this instance. - /// \param[in] title Title (e.g. for plotting) --/// \param[in] x The convolution observable. --/// \param[in] sigma Width of the Gaussian. --/// \param[in] rlife Lifetime constant \f$ \tau \f$. --/// \param[in] sigmaSF Scale factor for sigma. --/// \param[in] rlifeSF Scale factor for rlife. -+/// \param[in] xIn The convolution observable. -+/// \param[in] _sigma Width of the Gaussian. -+/// \param[in] _rlife Lifetime constant \f$ \tau \f$. -+/// \param[in] _sigmaSF Scale factor for sigma. -+/// \param[in] _rlifeSF Scale factor for rlife. - /// \param[in] nlo Include next-to-leading order for higher accuracy of convolution. - /// \param[in] type Switch between normal and flipped model. - RooGExpModel::RooGExpModel(const char *name, const char *title, RooAbsRealLValue& xIn, -diff --git a/roofit/roofit/src/RooGaussian.cxx b/roofit/roofit/src/RooGaussian.cxx -index 9d18be7354..aec93528ba 100644 ---- a/roofit/roofit/src/RooGaussian.cxx -+++ b/roofit/roofit/src/RooGaussian.cxx -@@ -92,7 +92,7 @@ void compute(RooSpan output, Tx x, TMean mean, TSig sigma) { - /// and if found, the computation will be batched over their - /// values. If batch data are not found for one of the proxies, the proxies value is assumed to - /// be constant over the batch. --/// \param[in] batchIndex Index of the batch to be computed. -+/// \param[in] begin Index of the batch to be computed. - /// \param[in] batchSize Size of each batch. The last batch may be smaller. - /// \return A span with the computed values. - -diff --git a/roofit/roofit/src/RooJohnson.cxx b/roofit/roofit/src/RooJohnson.cxx -index ba6686f698..1dd6de96b2 100644 ---- a/roofit/roofit/src/RooJohnson.cxx -+++ b/roofit/roofit/src/RooJohnson.cxx -@@ -153,7 +153,7 @@ void compute(RooSpan output, TMass mass, TMu mu, TLambda lambda, TGamma - /// and if found, the computation will be batched over their - /// values. If batch data are not found for one of the proxies, the proxies value is assumed to - /// be constant over the batch. --/// \param[in] batchIndex Index of the batch to be computed. -+/// \param[in] begin Index of the batch to be computed. - /// \param[in] maxSize Maximal size of the batches. May return smaller batches depending on inputs. - /// \return A span with the computed values. - -diff --git a/roofit/roofit/src/RooLandau.cxx b/roofit/roofit/src/RooLandau.cxx -index e59a923cf0..2dade45b3a 100644 ---- a/roofit/roofit/src/RooLandau.cxx -+++ b/roofit/roofit/src/RooLandau.cxx -@@ -169,7 +169,7 @@ void compute( size_t batchSize, - /// and if found, the computation will be batched over their - /// values. If batch data are not found for one of the proxies, the proxies value is assumed to - /// be constant over the batch. --/// \param[in] batchIndex Index of the batch to be computed. -+/// \param[in] begin Index of the batch to be computed. - /// \param[in] batchSize Size of each batch. The last batch may be smaller. - /// \return A span with the computed values. - -diff --git a/roofit/roofitcore/src/BatchData.cxx b/roofit/roofitcore/src/BatchData.cxx -index fd05343076..5bbe34e20b 100644 ---- a/roofit/roofitcore/src/BatchData.cxx -+++ b/roofit/roofitcore/src/BatchData.cxx -@@ -73,7 +73,7 @@ bool BatchData::setStatus(std::size_t begin, std::size_t size, Status_t stat, - /// Retrieve an existing batch. - /// - /// \param[in] begin Begin index of the batch. --/// \param[in] size Requested size. Batch may come out smaller than this. -+/// \param[in] maxSize Requested size. Batch may come out smaller than this. - /// \param[in] normSet Optional normSet pointer to distinguish differently normalised computations. - /// \param[in] ownerTag Optional owner tag. This avoids reusing batch memory for e.g. getVal() and getLogVal(). - /// \return Non-mutable contiguous batch data. -diff --git a/roofit/roofitcore/src/RooAbsPdf.cxx b/roofit/roofitcore/src/RooAbsPdf.cxx -index 9f68b1cdb7..9e7eb69e09 100644 ---- a/roofit/roofitcore/src/RooAbsPdf.cxx -+++ b/roofit/roofitcore/src/RooAbsPdf.cxx -@@ -711,7 +711,7 @@ bool checkInfNaNNeg(const T& inputs) { - - //////////////////////////////////////////////////////////////////////////////// - /// Scan through outputs and fix+log all nans and negative values. --/// \param[in/out] outputs Array to be scanned & fixed. -+/// \param[in,out] outputs Array to be scanned & fixed. - /// \param[in] begin Begin of event range. Only needed to print the correct event number - /// where the error occurred. - void RooAbsPdf::logBatchComputationErrors(RooSpan& outputs, std::size_t begin) const { -@@ -734,7 +734,7 @@ void RooAbsPdf::logBatchComputationErrors(RooSpan& outputs, std::s - /// Compute the log-likelihoods for all events in the requested batch. - /// The arguments are passed over to getValBatch(). - /// \param[in] begin Start of the batch. --/// \param[in] size Maximum size of the batch. Depending on data layout and memory, the batch -+/// \param[in] maxSize Maximum size of the batch. Depending on data layout and memory, the batch - /// may come back smaller. - /// \return Returns a batch of doubles that contains the log probabilities. - RooSpan RooAbsPdf::getLogValBatch(std::size_t begin, std::size_t maxSize, -diff --git a/roofit/roofitcore/src/RooAbsReal.cxx b/roofit/roofitcore/src/RooAbsReal.cxx -index 2d2ceeaf2d..6cac5f5897 100644 ---- a/roofit/roofitcore/src/RooAbsReal.cxx -+++ b/roofit/roofitcore/src/RooAbsReal.cxx -@@ -4294,7 +4294,7 @@ RooAbsMoment* RooAbsReal::moment(RooRealVar& obs, Int_t order, Bool_t central, B - /// \param[in] order Order of the moment - /// \param[in] central If true, the central moment is given by \f$ \langle (x- \langle x \rangle )^2 \rangle \f$ - /// \param[in] takeRoot Calculate the square root --/// \param[in] intNormOb If true, the moment of the function integrated over all normalization observables is returned. -+/// \param[in] intNormObs If true, the moment of the function integrated over all normalization observables is returned. - - RooAbsMoment* RooAbsReal::moment(RooRealVar& obs, const RooArgSet& normObs, Int_t order, Bool_t central, Bool_t takeRoot, Bool_t intNormObs) - { -diff --git a/roofit/roofitcore/src/RooCustomizer.cxx b/roofit/roofitcore/src/RooCustomizer.cxx -index 97d6d3176c..818991873d 100644 ---- a/roofit/roofitcore/src/RooCustomizer.cxx -+++ b/roofit/roofitcore/src/RooCustomizer.cxx -@@ -198,7 +198,7 @@ static Int_t init() - /// replaceArg() and splitArg() functionality. - /// \param[in] pdf Proto PDF to be customised. - /// \param[in] masterCat Category to be used for splitting. --/// \param[in/out] splitLeafs All nodes created in -+/// \param[in,out] splitLeafs All nodes created in - /// the customisation process are added to this set. - /// The user can provide nodes that are *taken* - /// from the set if they have a name that matches `_`. -@@ -209,7 +209,7 @@ static Int_t init() - /// auto yield1 = new RooFormulaVar("yieldSig_BBG1m2T","sigy1","M/3.360779",mass); - /// customisedLeafs.addOwned(*yield1); - /// ``` --/// \param[in/out] splitLeafsAll All leafs that are used when customising are collected here. -+/// \param[in,out] splitLeafsAll All leafs that are used when customising are collected here. - /// If this set already contains leaves, they will be used for customising if the names match - /// as above. - /// -diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx -index 1c8b517b0d..8c90dd0ade 100644 ---- a/roofit/roofitcore/src/RooDataHist.cxx -+++ b/roofit/roofitcore/src/RooDataHist.cxx -@@ -632,8 +632,8 @@ void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis, - /// observable to binning in given reference TH1. Used by constructors - /// that import data from an external TH1. - /// Both the variables in vars and in this RooDataHist are adjusted. --/// @param List with variables that are supposed to have their binning adjusted. --/// @param Reference histogram that dictates the binning -+/// @param vars List with variables that are supposed to have their binning adjusted. -+/// @param href Reference histogram that dictates the binning - /// @param offset If not nullptr, a possible bin count offset for the axes x,y,z is saved here as Int_t[3] - - void RooDataHist::adjustBinning(const RooArgList& vars, const TH1& href, Int_t* offset) -diff --git a/roofit/roofitcore/src/RooDataSet.cxx b/roofit/roofitcore/src/RooDataSet.cxx -index 1e54dfbde0..f03ec78a0d 100644 ---- a/roofit/roofitcore/src/RooDataSet.cxx -+++ b/roofit/roofitcore/src/RooDataSet.cxx -@@ -765,7 +765,7 @@ RooDataSet::RooDataSet(const char *name, const char *title, TTree *theTree, - /// - /// \param[in] name Name of this dataset. - /// \param[in] title Title for e.g. plotting. --/// \param[in] tree Tree to be imported. -+/// \param[in] theTree Tree to be imported. - /// \param[in] vars Defines the columns of the data set. For each dimension - /// specified, the TTree must have a branch with the same name. For category - /// branches, this branch should contain the numeric index value. Real dimensions -@@ -1205,11 +1205,11 @@ void RooDataSet::add(const RooArgSet& data, Double_t wgt, Double_t wgtError) - //////////////////////////////////////////////////////////////////////////////// - /// Add a data point, with its coordinates specified in the 'data' argset, to the data set. - /// Any variables present in 'data' but not in the dataset will be silently ignored. --/// \param[in] data Data point. --/// \param[in] wgt Event weight. The current value of the weight variable is ignored. -+/// \param[in] indata Data point. -+/// \param[in] inweight Event weight. The current value of the weight variable is ignored. - /// \note To obtain weighted events, a variable must be designated `WeightVar` in the constructor. --/// \param[in] wgtErrorLo Asymmetric weight error. --/// \param[in] wgtErrorHi Asymmetric weight error. -+/// \param[in] weightErrorLo Asymmetric weight error. -+/// \param[in] weightErrorHi Asymmetric weight error. - /// \note This requires including the weight variable in the set of `StoreAsymError` variables when constructing - /// the dataset. - -diff --git a/roofit/roofitcore/src/RooFormulaVar.cxx b/roofit/roofitcore/src/RooFormulaVar.cxx -index 90ee32d619..947c505598 100644 ---- a/roofit/roofitcore/src/RooFormulaVar.cxx -+++ b/roofit/roofitcore/src/RooFormulaVar.cxx -@@ -66,7 +66,7 @@ ClassImp(RooFormulaVar); - /// Constructor with formula expression and list of input variables. - /// \param[in] name Name of the formula. - /// \param[in] title Title of the formula. --/// \param[in] formula Expression to be evaluated. -+/// \param[in] inFormula Expression to be evaluated. - /// \param[in] dependents Variables that should be passed to the formula. - /// \param[in] checkVariables Check that all variables from `dependents` are used in the expression. - RooFormulaVar::RooFormulaVar(const char *name, const char *title, const char* inFormula, const RooArgList& dependents, -diff --git a/roofit/roofitcore/src/RooSuperCategory.cxx b/roofit/roofitcore/src/RooSuperCategory.cxx -index 4c0b705e50..e5668ffb98 100644 ---- a/roofit/roofitcore/src/RooSuperCategory.cxx -+++ b/roofit/roofitcore/src/RooSuperCategory.cxx -@@ -54,7 +54,7 @@ RooSuperCategory::RooSuperCategory() : - /// Construct a super category from other categories. - /// \param[in] name Name of this object - /// \param[in] title Title (for e.g. printing) --/// \param[in] inputCatList RooArgSet with category objects. These all need to derive from RooAbsCategoryLValue, *i.e.* -+/// \param[in] inputCategories RooArgSet with category objects. These all need to derive from RooAbsCategoryLValue, *i.e.* - /// one needs to be able to assign to them. - RooSuperCategory::RooSuperCategory(const char *name, const char *title, const RooArgSet& inputCategories) : - RooAbsCategoryLValue(name, title), -diff --git a/roofit/roofitmore/src/RooHypatia2.cxx b/roofit/roofitmore/src/RooHypatia2.cxx -index 691aa6073d..7d550b2753 100644 ---- a/roofit/roofitmore/src/RooHypatia2.cxx -+++ b/roofit/roofitmore/src/RooHypatia2.cxx -@@ -119,21 +119,21 @@ - /// \param[in] a2 Start of right tail. - /// \param[in] n2 Shape parameter of right tail (\f$ n2 \ge 0 \f$). With \f$ n2 = 0 \f$, the function is constant. - RooHypatia2::RooHypatia2(const char *name, const char *title, RooAbsReal& x, RooAbsReal& lambda, -- RooAbsReal& zeta, RooAbsReal& beta, RooAbsReal& sigm, RooAbsReal& mu, RooAbsReal& a, -+ RooAbsReal& zeta, RooAbsReal& beta, RooAbsReal& sigma, RooAbsReal& mu, RooAbsReal& a, - RooAbsReal& n, RooAbsReal& a2, RooAbsReal& n2) : - RooAbsPdf(name, title), - _x("x", "x", this, x), - _lambda("lambda", "Lambda", this, lambda), - _zeta("zeta", "zeta", this, zeta), - _beta("beta", "Asymmetry parameter beta", this, beta), -- _sigma("sigma", "Width parameter sigma", this, sigm), -+ _sigma("sigma", "Width parameter sigma", this, sigma), - _mu("mu", "Location parameter mu", this, mu), - _a("a", "Left tail location a", this, a), - _n("n", "Left tail parameter n", this, n), - _a2("a2", "Right tail location a2", this, a2), - _n2("n2", "Right tail parameter n2", this, n2) - { -- RooHelpers::checkRangeOfParameters(this, {&sigm}, 0.); -+ RooHelpers::checkRangeOfParameters(this, {&sigma}, 0.); - RooHelpers::checkRangeOfParameters(this, {&zeta, &n, &n2, &a, &a2}, 0., std::numeric_limits::max(), true); - if (zeta.getVal() == 0. && zeta.isConstant()) { - RooHelpers::checkRangeOfParameters(this, {&lambda}, -std::numeric_limits::max(), 0., false, -diff --git a/tmva/tmva/inc/TMVA/BDTEventWrapper.h b/tmva/tmva/inc/TMVA/BDTEventWrapper.h -index 7d4c4f8dd6..2c99341dd9 100644 ---- a/tmva/tmva/inc/TMVA/BDTEventWrapper.h -+++ b/tmva/tmva/inc/TMVA/BDTEventWrapper.h -@@ -40,14 +40,14 @@ namespace TMVA { - - // Set the accumulated weight, for sorted signal/background events - /** -- * @param fType - true for signal, false for background -+ * @param type - true for signal, false for background - * @param weight - the total weight - */ - void SetCumulativeWeight( Bool_t type, Double_t weight ); - - // Get the accumulated weight - /** -- * @param fType - true for signal, false for background -+ * @param type - true for signal, false for background - * @return the cumulative weight for sorted signal/background events - */ - Double_t GetCumulativeWeight( Bool_t type ) const; -diff --git a/tmva/tmva/inc/TMVA/NeuralNet.h b/tmva/tmva/inc/TMVA/NeuralNet.h -index bae98a48b2..a11b543b59 100644 ---- a/tmva/tmva/inc/TMVA/NeuralNet.h -+++ b/tmva/tmva/inc/TMVA/NeuralNet.h -@@ -478,10 +478,8 @@ namespace TMVA - * \param size size of the layer - * \param itWeightBegin indicates the start of the weights for this layer on the weight vector - * \param itGradientBegin indicates the start of the gradients for this layer on the gradient vector -- * \param itFunctionBegin indicates the start of the vector of activation functions for this layer on the -- * activation function vector -- * \param itInverseFunctionBegin indicates the start of the vector of activation functions for this -- * layer on the activation function vector -+ * \param activationFunction indicates activation functions for this layer -+ * \param inverseActivationFunction indicates the inverse activation functions for this layer - * \param eModeOutput indicates a potential tranformation of the output values before further computation - * DIRECT does not further transformation; SIGMOID applies a sigmoid transformation to each - * output value (to create a probability); SOFTMAX applies a softmax transformation to all -@@ -500,8 +498,7 @@ namespace TMVA - * - * \param size size of the layer - * \param itWeightBegin indicates the start of the weights for this layer on the weight vector -- * \param itFunctionBegin indicates the start of the vector of activation functions for this layer on the -- * activation function vector -+ * \param activationFunction indicates the activation function for this layer - * \param eModeOutput indicates a potential tranformation of the output values before further computation - * DIRECT does not further transformation; SIGMOID applies a sigmoid transformation to each - * output value (to create a probability); SOFTMAX applies a softmax transformation to all -@@ -679,9 +676,6 @@ namespace TMVA - /*! \brief c'tor for defining a Layer - * - * -- * \param itInputBegin indicates the start of the input node vector -- * \param itInputEnd indicates the end of the input node vector -- * - */ - Layer (size_t numNodes, EnumFunction activationFunction, ModeOutputValues eModeOutputValues = ModeOutputValues::DIRECT); - -@@ -1141,7 +1135,7 @@ namespace TMVA - - /*! \brief executes one training cycle - * -- * \param minimizier the minimizer to be used -+ * \param minimizer the minimizer to be used - * \param weights the weight vector to be used - * \param itPatternBegin the pattern to be trained with - * \param itPatternEnd the pattern to be trainied with -diff --git a/tmva/tmva/inc/TMVA/NeuralNet.icc b/tmva/tmva/inc/TMVA/NeuralNet.icc -index 95cad21e26..e511e49d43 100644 ---- a/tmva/tmva/inc/TMVA/NeuralNet.icc -+++ b/tmva/tmva/inc/TMVA/NeuralNet.icc -@@ -933,7 +933,7 @@ template - * \param minimizer the minimizer to be used (e.g. SGD) - * \param weights the weight container with all the synapse weights - * \param itPatternBegin begin of the pattern container -- * \parama itPatternEnd the end of the pattern container -+ * \param itPatternEnd the end of the pattern container - * \param settings the settings for this training (e.g. multithreading or not, regularization, etc.) - * \param dropContainer the data for dropping-out nodes (regularization technique) - */ -diff --git a/tmva/tmva/inc/TMVA/RTensor.hxx b/tmva/tmva/inc/TMVA/RTensor.hxx -index c131384ae2..7d9773b457 100644 ---- a/tmva/tmva/inc/TMVA/RTensor.hxx -+++ b/tmva/tmva/inc/TMVA/RTensor.hxx -@@ -73,7 +73,7 @@ inline std::vector ComputeStridesFromShape(const T &shape, MemoryLa - } - - /// \brief Compute indices from global index --/// \param[in] Shape vector -+/// \param[in] shape Shape vector - /// \param[in] idx Global index - /// \param[in] layout Memory layout - /// \return Indice vector -diff --git a/tmva/tmva/inc/TMVA/TreeInference/BranchlessTree.hxx b/tmva/tmva/inc/TMVA/TreeInference/BranchlessTree.hxx -index 4ac460be64..a1c6fdf773 100644 ---- a/tmva/tmva/inc/TMVA/TreeInference/BranchlessTree.hxx -+++ b/tmva/tmva/inc/TMVA/TreeInference/BranchlessTree.hxx -@@ -72,7 +72,7 @@ struct BranchlessTree { - /// Perform inference on a single input vector - /// \param[in] input Pointer to data containing the input values - /// \param[in] stride Stride to go from one input variable to the next one --/// \param[out] Tree score, result of the inference -+/// \return Tree score, result of the inference - template - inline T BranchlessTree::Inference(const T *input, const int stride) - { -@@ -105,7 +105,7 @@ inline void BranchlessTree::FillSparse() - /// - /// \param[in] funcName Name of the function - /// \param[in] typeName Name of the type used for the computation --/// \param[out] Code of the inference function as string -+/// \return Code of the inference function as string - template - inline std::string BranchlessTree::GetInferenceCode(const std::string& funcName, const std::string& typeName) - { -diff --git a/tmva/tmva/inc/TMVA/TreeInference/Forest.hxx b/tmva/tmva/inc/TMVA/TreeInference/Forest.hxx -index 70d1e3eb68..18b385a8e0 100644 ---- a/tmva/tmva/inc/TMVA/TreeInference/Forest.hxx -+++ b/tmva/tmva/inc/TMVA/TreeInference/Forest.hxx -@@ -195,7 +195,7 @@ struct BranchlessJittedForest : public ForestBase - inline std::string - BranchlessJittedForest::Load(const std::string &key, const std::string &filename, const int output, const bool sortTrees) -diff --git a/tmva/tmva/src/BDTEventWrapper.cxx b/tmva/tmva/src/BDTEventWrapper.cxx -index 63171c886b..9702660936 100644 ---- a/tmva/tmva/src/BDTEventWrapper.cxx -+++ b/tmva/tmva/src/BDTEventWrapper.cxx -@@ -48,7 +48,7 @@ BDTEventWrapper::~BDTEventWrapper() { - //////////////////////////////////////////////////////////////////////////////// - /// Set the accumulated weight, for sorted signal/background events - /// --/// @param fType - true for signal, false for background -+/// @param type - true for signal, false for background - /// @param weight - the total weight - - void BDTEventWrapper::SetCumulativeWeight(Bool_t type, Double_t weight) { -diff --git a/tmva/tmva/src/CrossValidation.cxx b/tmva/tmva/src/CrossValidation.cxx -index 453927c5b7..58bd9130d1 100644 ---- a/tmva/tmva/src/CrossValidation.cxx -+++ b/tmva/tmva/src/CrossValidation.cxx -@@ -99,7 +99,7 @@ TMultiGraph *TMVA::CrossValidationResult::GetROCCurves(Bool_t /*fLegend*/) - /// - /// \note You own the returned pointer. - /// --/// \param numSamples[in] Number of samples used for generating the average ROC -+/// \param[in] numSamples Number of samples used for generating the average ROC - /// Curve. Avg. curve will be evaluated only at these - /// points (using interpolation if necessary). - /// -diff --git a/tmva/tmva/src/CvSplit.cxx b/tmva/tmva/src/CvSplit.cxx -index d6d44ac1cc..9eedcf3d72 100644 ---- a/tmva/tmva/src/CvSplit.cxx -+++ b/tmva/tmva/src/CvSplit.cxx -@@ -227,15 +227,15 @@ UInt_t TMVA::CvSplitKFoldsExpr::GetSpectatorIndexForName(DataSetInfo &dsi, TStri - - //////////////////////////////////////////////////////////////////////////////// - /// \brief Splits a dataset into k folds, ready for use in cross validation. --/// \param numFolds[in] Number of folds to split data into --/// \param stratified[in] If true, use stratified splitting, balancing the -+/// \param[in] numFolds Number of folds to split data into -+/// \param[in] stratified If true, use stratified splitting, balancing the - /// number of events across classes and folds. If false, - /// no such balancing is done. For --/// \param splitExpr[in] Expression used to split data into folds. If `""` a -+/// \param[in] splitExpr Expression used to split data into folds. If `""` a - /// random assignment will be done. Otherwise the - /// expression is fed into a TFormula and evaluated per - /// event. The resulting value is the the fold assignment. --/// \param seed[in] Used only when using random splitting (i.e. when -+/// \param[in] seed Used only when using random splitting (i.e. when - /// `splitExpr` is `""`). Seed is used to initialise the random - /// number generator when assigning events to folds. - /// -@@ -282,9 +282,9 @@ void TMVA::CvSplitKFolds::MakeKFoldDataSet(DataSetInfo &dsi) - - //////////////////////////////////////////////////////////////////////////////// - /// \brief Generates a vector of fold assignments --/// \param nEntires[in] Number of events in range --/// \param numFolds[in] Number of folds to split data into --/// \param seed[in] Random seed -+/// \param[in] nEntries Number of events in range -+/// \param[in] numFolds Number of folds to split data into -+/// \param[in] seed Random seed - /// - /// Randomly assigns events to `numFolds` folds. Each fold will hold at most - /// `nEntries / numFolds + 1` events. -@@ -311,8 +311,8 @@ std::vector TMVA::CvSplitKFolds::GetEventIndexToFoldMapping(UInt_t nEntr - - //////////////////////////////////////////////////////////////////////////////// - /// \brief Split sets for into k-folds --/// \param oldSet[in] Original, unsplit, events --/// \param numFolds[in] Number of folds to split data into -+/// \param[in] oldSet Original, unsplit, events -+/// \param[in] numFolds Number of folds to split data into - /// - - std::vector> -diff --git a/tmva/tmva/src/Envelope.cxx b/tmva/tmva/src/Envelope.cxx -index 5fab98c13b..8a0c6b23f4 100644 ---- a/tmva/tmva/src/Envelope.cxx -+++ b/tmva/tmva/src/Envelope.cxx -@@ -37,8 +37,8 @@ this is a generic one protected. - \param file optional file to save the results. - \param options extra options for the algorithm. - */ --Envelope::Envelope(const TString &name, DataLoader *dalaloader, TFile *file, const TString options) -- : Configurable(options), fDataLoader(dalaloader), fFile(file), fModelPersistence(kTRUE), fVerbose(kFALSE), -+Envelope::Envelope(const TString &name, DataLoader *dataloader, TFile *file, const TString options) -+ : Configurable(options), fDataLoader(dataloader), fFile(file), fModelPersistence(kTRUE), fVerbose(kFALSE), - fTransformations("I"), fSilentFile(kFALSE), fJobs(1) - { - SetName(name.Data()); -@@ -120,7 +120,7 @@ DataLoader *Envelope::GetDataLoader(){ return fDataLoader.get();} - //_______________________________________________________________________ - /** - Method to set the pointer to TMVA::DataLoader object. --\param dalaloader pointer to TMVA::DataLoader object. -+\param dataloader pointer to TMVA::DataLoader object. - */ - - void Envelope::SetDataLoader(DataLoader *dataloader) -@@ -146,7 +146,7 @@ void TMVA::Envelope::SetModelPersistence(Bool_t status){fModelPersistence=status - /** - Method to book the machine learning method to perform the algorithm. - \param method enum TMVA::Types::EMVA with the type of the mva method --\param methodtitle String with the method title. -+\param methodTitle String with the method title. - \param options String with the options for the method. - */ - void TMVA::Envelope::BookMethod(Types::EMVA method, TString methodTitle, TString options){ -@@ -156,8 +156,8 @@ void TMVA::Envelope::BookMethod(Types::EMVA method, TString methodTitle, TString - //_______________________________________________________________________ - /** - Method to book the machine learning method to perform the algorithm. --\param methodname String with the name of the mva method --\param methodtitle String with the method title. -+\param methodName String with the name of the mva method -+\param methodTitle String with the method title. - \param options String with the options for the method. - */ - void TMVA::Envelope::BookMethod(TString methodName, TString methodTitle, TString options){ -diff --git a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx -index b5e39251a8..da09c0be3c 100644 ---- a/tree/dataframe/inc/ROOT/RDF/RInterface.hxx -+++ b/tree/dataframe/inc/ROOT/RDF/RInterface.hxx -@@ -568,7 +568,7 @@ public: - //////////////////////////////////////////////////////////////////////////// - /// \brief Save selected columns in memory - /// \tparam ColumnTypes variadic list of branch/column types. -- /// \param[in] columns to be cached in memory. -+ /// \param[in] columnList columns to be cached in memory. - /// \return a `RDataFrame` that wraps the cached dataset. - /// - /// This action returns a new `RDataFrame` object, completely detached from -@@ -603,7 +603,7 @@ public: - - //////////////////////////////////////////////////////////////////////////// - /// \brief Save selected columns in memory -- /// \param[in] columns to be cached in memory -+ /// \param[in] columnList columns to be cached in memory - /// \return a `RDataFrame` that wraps the cached dataset. - /// - /// See the previous overloads for more information. -@@ -660,7 +660,7 @@ public: - - //////////////////////////////////////////////////////////////////////////// - /// \brief Save selected columns in memory -- /// \param[in] columns to be cached in memory. -+ /// \param[in] columnList columns to be cached in memory. - /// \return a `RDataFrame` that wraps the cached dataset. - /// - /// See the previous overloads for more information. -@@ -1528,13 +1528,13 @@ public: - /// ~~~ - /// - template -- RResultPtr Fill(T &&model, const ColumnNames_t &bl) -+ RResultPtr Fill(T &&model, const ColumnNames_t &columnList) - { - auto h = std::make_shared(std::forward(model)); - if (!RDFInternal::HistoUtils::HasAxisLimits(*h)) { - throw std::runtime_error("The absence of axes limits is not supported yet."); - } -- return CreateAction(bl, h, bl.size()); -+ return CreateAction(columnList, h, columnList.size()); - } - - //////////////////////////////////////////////////////////////////////////// -@@ -2134,7 +2134,7 @@ public: - /// \brief Provides a representation of the columns in the dataset - /// \tparam ColumnTypes variadic list of branch/column types. - /// \param[in] columnList Names of the columns to be displayed. -- /// \param[in] rows Number of events for each column to be displayed. -+ /// \param[in] nRows Number of events for each column to be displayed. - /// \return the `RDisplay` instance wrapped in a `RResultPtr`. - /// - /// This function returns a `RResultPtr` containing all the entries to be displayed, organized in a tabular -@@ -2165,7 +2165,7 @@ public: - //////////////////////////////////////////////////////////////////////////// - /// \brief Provides a representation of the columns in the dataset - /// \param[in] columnList Names of the columns to be displayed. -- /// \param[in] rows Number of events for each column to be displayed. -+ /// \param[in] nRows Number of events for each column to be displayed. - /// \return the `RDisplay` instance wrapped in a `RResultPtr`. - /// - /// This overload automatically infers the column types. -@@ -2181,7 +2181,7 @@ public: - //////////////////////////////////////////////////////////////////////////// - /// \brief Provides a representation of the columns in the dataset - /// \param[in] columnNameRegexp A regular expression to select the columns. -- /// \param[in] rows Number of events for each column to be displayed. -+ /// \param[in] nRows Number of events for each column to be displayed. - /// \return the `RDisplay` instance wrapped in a `RResultPtr`. - /// - /// The existing columns are matched against the regular expression. If the string provided -diff --git a/tree/dataframe/inc/ROOT/RDFHelpers.hxx b/tree/dataframe/inc/ROOT/RDFHelpers.hxx -index 2193e1772e..63a0f90cab 100644 ---- a/tree/dataframe/inc/ROOT/RDFHelpers.hxx -+++ b/tree/dataframe/inc/ROOT/RDFHelpers.hxx -@@ -138,7 +138,7 @@ void SaveGraph(NodeType node, const std::string &outputFile) - - // clang-format off - /// Cast a RDataFrame node to the common type ROOT::RDF::RNode --/// \param[in] Any node of a RDataFrame graph -+/// \param[in] node Any node of a RDataFrame graph - // clang-format on - template - RNode AsRNode(NodeType node) -diff --git a/tree/dataframe/inc/ROOT/RDataSource.hxx b/tree/dataframe/inc/ROOT/RDataSource.hxx -index f4af9abded..04f7dc850c 100644 ---- a/tree/dataframe/inc/ROOT/RDataSource.hxx -+++ b/tree/dataframe/inc/ROOT/RDataSource.hxx -@@ -126,14 +126,14 @@ public: - virtual const std::vector &GetColumnNames() const = 0; - - /// \brief Checks if the dataset has a certain column -- /// \param[in] columnName The name of the column -- virtual bool HasColumn(std::string_view) const = 0; -+ /// \param[in] colName The name of the column -+ virtual bool HasColumn(std::string_view colName) const = 0; - - // clang-format off - /// \brief Type of a column as a string, e.g. `GetTypeName("x") == "double"`. Required for jitting e.g. `df.Filter("x>0")`. -- /// \param[in] columnName The name of the column -+ /// \param[in] colName The name of the column - // clang-format on -- virtual std::string GetTypeName(std::string_view) const = 0; -+ virtual std::string GetTypeName(std::string_view colName) const = 0; - - // clang-format off - /// Called at most once per column by RDF. Return vector of pointers to pointers to column values - one per slot. -diff --git a/tree/dataframe/inc/ROOT/RResultPtr.hxx b/tree/dataframe/inc/ROOT/RResultPtr.hxx -index 8358832b14..8acb2bfae6 100644 ---- a/tree/dataframe/inc/ROOT/RResultPtr.hxx -+++ b/tree/dataframe/inc/ROOT/RResultPtr.hxx -@@ -262,7 +262,7 @@ public: - /// Register a callback that RDataFrame will execute in each worker thread concurrently on that thread's partial result. - /// - /// \param[in] everyNEvents Frequency at which the callback will be called by each thread, as a number of events processed -- /// \param[in] a callable with signature `void(unsigned int, Value_t&)` where Value_t is the type of the value contained in this RResultPtr -+ /// \param[in] callback A callable with signature `void(unsigned int, Value_t&)` where Value_t is the type of the value contained in this RResultPtr - /// \return this RResultPtr, to allow chaining of OnPartialResultSlot with other calls - /// - /// See `OnPartialResult` for a generic explanation of the callback mechanism. -diff --git a/tree/dataframe/src/RArrowDS.cxx b/tree/dataframe/src/RArrowDS.cxx -index d9e2fae32f..0152b9a813 100644 ---- a/tree/dataframe/src/RArrowDS.cxx -+++ b/tree/dataframe/src/RArrowDS.cxx -@@ -382,8 +382,8 @@ public: - - //////////////////////////////////////////////////////////////////////// - /// Constructor to create an Arrow RDataSource for RDataFrame. --/// \param[in] table the arrow Table to observe. --/// \param[in] columns the name of the columns to use -+/// \param[in] inTable the arrow Table to observe. -+/// \param[in] inColumns the name of the columns to use - /// In case columns is empty, we use all the columns found in the table - RArrowDS::RArrowDS(std::shared_ptr inTable, std::vector const &inColumns) - : fTable{inTable}, fColumnNames{inColumns} -diff --git a/tree/tree/inc/TTree.h b/tree/tree/inc/TTree.h -index 8560e28ab5..e95d4ce301 100644 ---- a/tree/tree/inc/TTree.h -+++ b/tree/tree/inc/TTree.h -@@ -357,7 +357,7 @@ public: - /// possible, unless e.g. type conversions are needed. - /// - /// \param[in] name Name of the branch to be created. -- /// \param[in] obj Array of the objects to be added. When calling Fill(), the current value of the type/object will be saved. -+ /// \param[in] addobj Array of the objects to be added. When calling Fill(), the current value of the type/object will be saved. - /// \param[in] bufsize he buffer size in bytes for this branch. When the buffer is full, it is compressed and written to disc. - /// The default value of 32000 bytes and should be ok for most simple types. Larger buffers (e.g. 256000) if your Tree is not split and each entry is large (Megabytes). - /// A small value for bufsize is beneficial if entries in the Tree are accessed randomly and the Tree is in split mode. -diff --git a/tree/tree/src/TIOFeatures.cxx b/tree/tree/src/TIOFeatures.cxx -index 681f2172bd..ca292fb30a 100644 ---- a/tree/tree/src/TIOFeatures.cxx -+++ b/tree/tree/src/TIOFeatures.cxx -@@ -51,7 +51,7 @@ using namespace ROOT; - - //////////////////////////////////////////////////////////////////////////// - /// \brief Clear a specific IO feature from this set. --/// \param[in] enum_bits The specific feature to disable. -+/// \param[in] input_bits The specific feature to disable. - /// - /// Removes a feature from the `TIOFeatures` object; emits an Error message if - /// the IO feature is not supported by this version of ROOT. -@@ -62,7 +62,7 @@ void TIOFeatures::Clear(Experimental::EIOFeatures input_bits) - - //////////////////////////////////////////////////////////////////////////// - /// \brief Clear a specific IO feature from this set. --/// \param[in] enum_bits The specific feature to disable. -+/// \param[in] input_bits The specific feature to disable. - /// - /// Removes a feature from the `TIOFeatures` object; emits an Error message if - /// the IO feature is not supported by this version of ROOT. -@@ -73,7 +73,7 @@ void TIOFeatures::Clear(Experimental::EIOUnsupportedFeatures input_bits) - - //////////////////////////////////////////////////////////////////////////// - /// \brief Clear a specific IO feature from this set. --/// \param[in] enum_bits The specific feature to disable. -+/// \param[in] input_bits The specific feature to disable. - /// - /// Removes a feature from the `TIOFeatures` object; emits an Error message if - /// the IO feature is not supported by this version of ROOT. -@@ -115,7 +115,7 @@ static std::string GetUnsupportedName(TBasket::EUnsupportedIOBits enum_flag) - - //////////////////////////////////////////////////////////////////////////// - /// \brief Set a specific IO feature. --/// \param[in] enum_bits The specific feature to enable. -+/// \param[in] input_bits The specific feature to enable. - /// - /// Sets a feature in the `TIOFeatures` object; emits an Error message if - /// the IO feature is not supported by this version of ROOT. -@@ -129,7 +129,7 @@ bool TIOFeatures::Set(Experimental::EIOFeatures input_bits) - - //////////////////////////////////////////////////////////////////////////// - /// \brief Set a specific IO feature. --/// \param[in] enum_bits The specific feature to enable. -+/// \param[in] input_bits The specific feature to enable. - /// - /// Sets a feature in the `TIOFeatures` object; emits an Error message if - /// the IO feature is not supported by this version of ROOT. -@@ -221,7 +221,7 @@ void TIOFeatures::Print() const - - //////////////////////////////////////////////////////////////////////////// - /// \brief Test to see if a given feature is set --/// \param[in] enum_bits The specific feature to test. -+/// \param[in] input_bits The specific feature to test. - /// - /// Returns kTRUE if the feature is enables in this object and supported by - /// this version of ROOT. -@@ -232,7 +232,7 @@ bool TIOFeatures::Test(Experimental::EIOFeatures input_bits) const - - //////////////////////////////////////////////////////////////////////////// - /// \brief Test to see if a given feature is set --/// \param[in] enum_bits The specific feature to test. -+/// \param[in] input_bits The specific feature to test. - /// - /// Returns kTRUE if the feature is enables in this object and supported by - /// this version of ROOT. --- -2.26.2 - diff --git a/root-fix-a-shadow-warning.patch b/root-fix-a-shadow-warning.patch deleted file mode 100644 index f0daaaf..0000000 --- a/root-fix-a-shadow-warning.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 00bbfddbf5c900923b284ddc540d2458bda15b7b Mon Sep 17 00:00:00 2001 -From: Stephan Hageboeck -Date: Wed, 5 Aug 2020 13:22:46 +0200 -Subject: [PATCH] Fix a shadow warning. - ---- - roofit/roofitmore/src/RooHypatia2.cxx | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/roofit/roofitmore/src/RooHypatia2.cxx b/roofit/roofitmore/src/RooHypatia2.cxx -index 7d550b2753..fe80f414d0 100644 ---- a/roofit/roofitmore/src/RooHypatia2.cxx -+++ b/roofit/roofitmore/src/RooHypatia2.cxx -@@ -119,21 +119,21 @@ - /// \param[in] a2 Start of right tail. - /// \param[in] n2 Shape parameter of right tail (\f$ n2 \ge 0 \f$). With \f$ n2 = 0 \f$, the function is constant. - RooHypatia2::RooHypatia2(const char *name, const char *title, RooAbsReal& x, RooAbsReal& lambda, -- RooAbsReal& zeta, RooAbsReal& beta, RooAbsReal& sigma, RooAbsReal& mu, RooAbsReal& a, -+ RooAbsReal& zeta, RooAbsReal& beta, RooAbsReal& argSigma, RooAbsReal& mu, RooAbsReal& a, - RooAbsReal& n, RooAbsReal& a2, RooAbsReal& n2) : - RooAbsPdf(name, title), - _x("x", "x", this, x), - _lambda("lambda", "Lambda", this, lambda), - _zeta("zeta", "zeta", this, zeta), - _beta("beta", "Asymmetry parameter beta", this, beta), -- _sigma("sigma", "Width parameter sigma", this, sigma), -+ _sigma("sigma", "Width parameter sigma", this, argSigma), - _mu("mu", "Location parameter mu", this, mu), - _a("a", "Left tail location a", this, a), - _n("n", "Left tail parameter n", this, n), - _a2("a2", "Right tail location a2", this, a2), - _n2("n2", "Right tail parameter n2", this, n2) - { -- RooHelpers::checkRangeOfParameters(this, {&sigma}, 0.); -+ RooHelpers::checkRangeOfParameters(this, {&argSigma}, 0.); - RooHelpers::checkRangeOfParameters(this, {&zeta, &n, &n2, &a, &a2}, 0., std::numeric_limits::max(), true); - if (zeta.getVal() == 0. && zeta.isConstant()) { - RooHelpers::checkRangeOfParameters(this, {&lambda}, -std::numeric_limits::max(), 0., false, --- -2.26.2 - diff --git a/root-fix-bad-regex.patch b/root-fix-bad-regex.patch deleted file mode 100644 index e1e667e..0000000 --- a/root-fix-bad-regex.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b7dc989f9a49ad31094331aa272859ff7480f943 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 9 Jul 2020 21:29:46 +0200 -Subject: [PATCH] Fix bad regex - ---- - proof/proof/src/TProofMgr.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/proof/proof/src/TProofMgr.cxx b/proof/proof/src/TProofMgr.cxx -index 2a140e4e7a..35c91b77ac 100644 ---- a/proof/proof/src/TProofMgr.cxx -+++ b/proof/proof/src/TProofMgr.cxx -@@ -820,7 +820,7 @@ TFileCollection *TProofMgr::UploadFiles(TList *src, - if (dest && strlen(dest) > 0) { - TString dst(dest), dt; - Ssiz_t from = 0; -- TRegexp re(""); -+ TRegexp re(""); - while (dst.Tokenize(dt, from, "/")) { - if (dt.Contains(re)) { - TParameter *pi = new TParameter(dt, -1); --- -2.26.2 - diff --git a/root-fix-multicore-tests-with-few-cores.patch b/root-fix-multicore-tests-with-few-cores.patch index ada5a11..55ad56e 100644 --- a/root-fix-multicore-tests-with-few-cores.patch +++ b/root-fix-multicore-tests-with-few-cores.patch @@ -1,7 +1,25 @@ -diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_concurrency.cxx root-6.22.08/tree/dataframe/test/dataframe_concurrency.cxx ---- root-6.22.08.orig/tree/dataframe/test/dataframe_concurrency.cxx 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/tree/dataframe/test/dataframe_concurrency.cxx 2021-06-01 09:01:37.847751408 +0200 -@@ -46,33 +46,35 @@ +From 153f1c3de0e24f5678fd3a706f902ac12b11048e Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 18 Apr 2021 07:28:41 +0200 +Subject: [PATCH] Fix multicore tests when running on machines with few cores + +When running on machines with few cores, enabling multithreading can +give you fewer cores than requested. For most of the tests this does +not matter. However, some tests verify the number of threads used. +This commit adapts those tests for this situation. +--- + tree/dataframe/test/dataframe_concurrency.cxx | 18 +++++++++------- + tree/dataframe/test/dataframe_interface.cxx | 7 +++++-- + tree/dataframe/test/dataframe_simple.cxx | 2 +- + tree/dataframe/test/dataframe_snapshot.cxx | 6 ++++-- + .../test/treeprocmt/treeprocessormt.cxx | 21 +++++++++++++++---- + 5 files changed, 37 insertions(+), 17 deletions(-) + +diff --git a/tree/dataframe/test/dataframe_concurrency.cxx b/tree/dataframe/test/dataframe_concurrency.cxx +index d1b25493e5..a4bce595f8 100644 +--- a/tree/dataframe/test/dataframe_concurrency.cxx ++++ b/tree/dataframe/test/dataframe_concurrency.cxx +@@ -57,33 +57,35 @@ TEST(RDFConcurrency, NestedParallelismBetweenDefineCalls) // [DF] Warn on mismatch between slot pool size and effective number of slots TEST(RDFSimpleTests, ThrowOnPoolSizeMismatch) { @@ -16,7 +34,7 @@ diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_concurrency.cxx root-6. try { df.Count().GetValue(); } catch (const std::runtime_error &e) { - const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the size of the thread pool " + const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required " - "was 1, but when starting the event loop it was 3. Maybe EnableImplicitMT() was " + "was 1, but when starting the event loop it was " + std::to_string(nslots) + ". Maybe EnableImplicitMT() was " "called after the RDataFrame was constructed?"; @@ -36,19 +54,20 @@ diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_concurrency.cxx root-6. try { df.Count().GetValue(); } catch (const std::runtime_error &e) { - const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the size of the thread pool " -- "was 3, but when starting the event loop it was 0. Maybe DisableImplicitMT() was " -+ "was " + std::to_string(nslots) + ", but when starting the event loop it was 0. Maybe DisableImplicitMT() was " + const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required " +- "was 3, but when starting the event loop it was 1. Maybe DisableImplicitMT() was " ++ "was " + std::to_string(nslots) + ", but when starting the event loop it was 1. Maybe DisableImplicitMT() was " "called after the RDataFrame was constructed?"; - EXPECT_STREQ(e.what(), expected_msg); + EXPECT_STREQ(e.what(), expected_msg.c_str()); } } } -diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_interface.cxx root-6.22.08/tree/dataframe/test/dataframe_interface.cxx ---- root-6.22.08.orig/tree/dataframe/test/dataframe_interface.cxx 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/tree/dataframe/test/dataframe_interface.cxx 2021-06-01 08:51:39.351355999 +0200 -@@ -6,6 +6,8 @@ +diff --git a/tree/dataframe/test/dataframe_interface.cxx b/tree/dataframe/test/dataframe_interface.cxx +index afdd8360ef..90e052f1a7 100644 +--- a/tree/dataframe/test/dataframe_interface.cxx ++++ b/tree/dataframe/test/dataframe_interface.cxx +@@ -7,6 +7,8 @@ #include "gtest/gtest.h" @@ -57,7 +76,7 @@ diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_interface.cxx root-6.22 using namespace ROOT; using namespace ROOT::RDF; -@@ -349,9 +351,10 @@ +@@ -351,9 +353,10 @@ TEST(RDataFrameInterface, GetNSlots) ROOT::RDataFrame df0(1); EXPECT_EQ(1U, df0.GetNSlots()); #ifdef R__USE_IMT @@ -70,10 +89,11 @@ diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_interface.cxx root-6.22 ROOT::DisableImplicitMT(); ROOT::RDataFrame df1(1); EXPECT_EQ(1U, df1.GetNSlots()); -diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_simple.cxx root-6.22.08/tree/dataframe/test/dataframe_simple.cxx ---- root-6.22.08.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-01 08:50:34.317205130 +0200 -+++ root-6.22.08/tree/dataframe/test/dataframe_simple.cxx 2021-06-01 08:51:39.351355999 +0200 -@@ -30,7 +30,7 @@ +diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx +index c6aba48b3e..e6b92be776 100644 +--- a/tree/dataframe/test/dataframe_simple.cxx ++++ b/tree/dataframe/test/dataframe_simple.cxx +@@ -26,7 +26,7 @@ using namespace ROOT::VecOps; // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially class RDFSimpleTests : public ::testing::TestWithParam { protected: @@ -82,10 +102,11 @@ diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_simple.cxx root-6.22.08 { if (GetParam()) ROOT::EnableImplicitMT(NSLOTS); -diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_snapshot.cxx root-6.22.08/tree/dataframe/test/dataframe_snapshot.cxx ---- root-6.22.08.orig/tree/dataframe/test/dataframe_snapshot.cxx 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/tree/dataframe/test/dataframe_snapshot.cxx 2021-06-01 08:51:39.351355999 +0200 -@@ -9,6 +9,7 @@ +diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx +index 3ce9254442..92444feff1 100644 +--- a/tree/dataframe/test/dataframe_snapshot.cxx ++++ b/tree/dataframe/test/dataframe_snapshot.cxx +@@ -10,6 +10,7 @@ #include "gtest/gtest.h" #include #include @@ -93,7 +114,7 @@ diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_snapshot.cxx root-6.22. using namespace ROOT; // RDataFrame using namespace ROOT::RDF; // RInterface using namespace ROOT::VecOps; // RVec -@@ -886,9 +887,10 @@ +@@ -1041,9 +1042,10 @@ TEST(RDFSnapshotMore, EmptyBuffersMT) { const auto fname = "emptybuffersmt.root"; const auto treename = "t"; @@ -106,10 +127,11 @@ diff -ur root-6.22.08.orig/tree/dataframe/test/dataframe_snapshot.cxx root-6.22. .Filter([](int x) { return x == 0; }, {"x"}, "f"); auto r = dd.Report(); dd.Snapshot(treename, fname, {"x"}); -diff -ur root-6.22.08.orig/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx root-6.22.08/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx ---- root-6.22.08.orig/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx 2021-06-01 08:51:39.352356002 +0200 -@@ -294,14 +294,27 @@ +diff --git a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx +index 5d5b2cbf42..963ce8a1b1 100644 +--- a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx ++++ b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx +@@ -294,14 +294,27 @@ TEST(TreeProcessorMT, LimitNTasks_CheckEntries) } }; @@ -141,3 +163,6 @@ diff -ur root-6.22.08.orig/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx r gSystem->Unlink(filename); ROOT::DisableImplicitMT(); +-- +2.30.2 + diff --git a/root-fix-ppc64le-compilation-with-gcc-10.patch b/root-fix-ppc64le-compilation-with-gcc-10.patch new file mode 100644 index 0000000..2624de8 --- /dev/null +++ b/root-fix-ppc64le-compilation-with-gcc-10.patch @@ -0,0 +1,29 @@ +From 5b8e969ca045aa238c685009e0aa48d74cbdbf22 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 13 Mar 2020 17:09:03 +0100 +Subject: [PATCH 1/2] Fix ppc64le compilation with gcc 10 + +Reapply fix lost in the LLVM 9 upgrade. This fix is in LLVM 10. + +Backported from llvm upstream +https://reviews.llvm.org/D74129 +--- + interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp +index c8ed42d266..16bb00d2e9 100644 +--- a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp ++++ b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp +@@ -2546,7 +2546,7 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr, + '/', '/', '/', '/', '/', '/', '/', '/' + }; + while (CurPtr+16 <= BufferEnd && +- !vec_any_eq(*(const vector unsigned char*)CurPtr, Slashes)) ++ !vec_any_eq(*(const __vector unsigned char*)CurPtr, Slashes)) + CurPtr += 16; + #else + // Scan for '/' quickly. Many block comments are very large. +-- +2.30.2 + diff --git a/root-fontconfig.patch b/root-fontconfig.patch index 2a05c55..35705a4 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,7 +1,7 @@ -diff -ur root-6.22.02.orig/core/base/src/TApplication.cxx root-6.22.02/core/base/src/TApplication.cxx ---- root-6.22.02.orig/core/base/src/TApplication.cxx 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/core/base/src/TApplication.cxx 2020-08-18 09:50:12.739102596 +0200 -@@ -264,18 +264,11 @@ +diff -ur root-6.24.02.orig/core/base/src/TApplication.cxx root-6.24.02/core/base/src/TApplication.cxx +--- root-6.24.02.orig/core/base/src/TApplication.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/core/base/src/TApplication.cxx 2021-08-11 10:49:08.583579248 +0200 +@@ -265,18 +265,11 @@ LoadGraphicsLibs(); // Try to load TrueType font renderer. Only try to load if not in batch @@ -22,7 +22,7 @@ diff -ur root-6.22.02.orig/core/base/src/TApplication.cxx root-6.22.02/core/base if (gClassTable->GetDict("TGX11TTF")) { // in principle we should not have linked anything against libGX11TTF // but with ACLiC this can happen, initialize TGX11TTF by hand -@@ -289,7 +282,6 @@ +@@ -290,7 +283,6 @@ } } #endif @@ -30,9 +30,9 @@ diff -ur root-6.22.02.orig/core/base/src/TApplication.cxx root-6.22.02/core/base // Create WM dependent application environment if (fAppImp) -diff -ur root-6.22.02.orig/graf2d/asimage/CMakeLists.txt root-6.22.02/graf2d/asimage/CMakeLists.txt ---- root-6.22.02.orig/graf2d/asimage/CMakeLists.txt 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf2d/asimage/CMakeLists.txt 2020-08-18 09:50:12.761102650 +0200 +diff -ur root-6.24.02.orig/graf2d/asimage/CMakeLists.txt root-6.24.02/graf2d/asimage/CMakeLists.txt +--- root-6.24.02.orig/graf2d/asimage/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf2d/asimage/CMakeLists.txt 2021-08-11 10:49:08.583579248 +0200 @@ -30,6 +30,7 @@ ${FREETYPE_LIBRARIES} ${X11_LIBRARIES} @@ -41,10 +41,10 @@ diff -ur root-6.22.02.orig/graf2d/asimage/CMakeLists.txt root-6.22.02/graf2d/asi DEPENDENCIES Core Graf -diff -ur root-6.22.02.orig/graf2d/asimage/src/TASImage.cxx root-6.22.02/graf2d/asimage/src/TASImage.cxx ---- root-6.22.02.orig/graf2d/asimage/src/TASImage.cxx 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf2d/asimage/src/TASImage.cxx 2020-08-18 09:50:12.763102655 +0200 -@@ -111,6 +111,8 @@ +diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/asimage/src/TASImage.cxx +--- root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf2d/asimage/src/TASImage.cxx 2021-08-11 10:49:08.585579253 +0200 +@@ -112,6 +112,8 @@ # include } @@ -53,7 +53,7 @@ diff -ur root-6.22.02.orig/graf2d/asimage/src/TASImage.cxx root-6.22.02/graf2d/a // auxiliary functions for general polygon filling #include "TASPolyUtils.c" -@@ -2594,14 +2596,120 @@ +@@ -2595,14 +2597,120 @@ TString fn = font_name; fn.Strip(); @@ -181,7 +181,7 @@ diff -ur root-6.22.02.orig/graf2d/asimage/src/TASImage.cxx root-6.22.02/graf2d/a if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) { ttfont = kTRUE; -@@ -2625,14 +2733,11 @@ +@@ -2626,14 +2734,11 @@ return; } @@ -199,9 +199,9 @@ diff -ur root-6.22.02.orig/graf2d/asimage/src/TASImage.cxx root-6.22.02/graf2d/a } get_text_size(text, font, (ASText3DType)type, &width, &height); -diff -ur root-6.22.02.orig/graf2d/graf/CMakeLists.txt root-6.22.02/graf2d/graf/CMakeLists.txt ---- root-6.22.02.orig/graf2d/graf/CMakeLists.txt 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf2d/graf/CMakeLists.txt 2020-08-18 09:50:12.763102655 +0200 +diff -ur root-6.24.02.orig/graf2d/graf/CMakeLists.txt root-6.24.02/graf2d/graf/CMakeLists.txt +--- root-6.24.02.orig/graf2d/graf/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf2d/graf/CMakeLists.txt 2021-08-11 10:49:08.586579256 +0200 @@ -91,6 +91,7 @@ ${FREETYPE_LIBRARIES} ZLIB::ZLIB @@ -210,9 +210,9 @@ diff -ur root-6.22.02.orig/graf2d/graf/CMakeLists.txt root-6.22.02/graf2d/graf/C DEPENDENCIES Hist Matrix -diff -ur root-6.22.02.orig/graf2d/graf/inc/TTF.h root-6.22.02/graf2d/graf/inc/TTF.h ---- root-6.22.02.orig/graf2d/graf/inc/TTF.h 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf2d/graf/inc/TTF.h 2020-08-18 09:50:12.763102655 +0200 +diff -ur root-6.24.02.orig/graf2d/graf/inc/TTF.h root-6.24.02/graf2d/graf/inc/TTF.h +--- root-6.24.02.orig/graf2d/graf/inc/TTF.h 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf2d/graf/inc/TTF.h 2021-08-11 10:49:08.586579256 +0200 @@ -76,9 +76,8 @@ static FT_BBox fgCBox; ///< string control box static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map @@ -224,9 +224,9 @@ diff -ur root-6.22.02.orig/graf2d/graf/inc/TTF.h root-6.22.02/graf2d/graf/inc/TT static FT_Face fgFace[kTTMaxFonts]; ///< font face static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs static Bool_t fgHinting; ///< use hinting (true by default) -diff -ur root-6.22.02.orig/graf2d/graf/src/TTF.cxx root-6.22.02/graf2d/graf/src/TTF.cxx ---- root-6.22.02.orig/graf2d/graf/src/TTF.cxx 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf2d/graf/src/TTF.cxx 2020-08-18 09:54:27.734727819 +0200 +diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/TTF.cxx +--- root-6.24.02.orig/graf2d/graf/src/TTF.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf2d/graf/src/TTF.cxx 2021-08-11 10:49:08.587579259 +0200 @@ -25,6 +25,8 @@ #include "TMath.h" #include "TError.h" @@ -787,9 +787,9 @@ diff -ur root-6.22.02.orig/graf2d/graf/src/TTF.cxx root-6.22.02/graf2d/graf/src/ } //////////////////////////////////////////////////////////////////////////////// -diff -ur root-6.22.02.orig/graf2d/postscript/CMakeLists.txt root-6.22.02/graf2d/postscript/CMakeLists.txt ---- root-6.22.02.orig/graf2d/postscript/CMakeLists.txt 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf2d/postscript/CMakeLists.txt 2020-08-18 09:50:12.764102658 +0200 +diff -ur root-6.24.02.orig/graf2d/postscript/CMakeLists.txt root-6.24.02/graf2d/postscript/CMakeLists.txt +--- root-6.24.02.orig/graf2d/postscript/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf2d/postscript/CMakeLists.txt 2021-08-11 10:49:08.587579259 +0200 @@ -27,6 +27,7 @@ LIBRARIES ZLIB::ZLIB @@ -798,18 +798,18 @@ diff -ur root-6.22.02.orig/graf2d/postscript/CMakeLists.txt root-6.22.02/graf2d/ DEPENDENCIES Graf ) -diff -ur root-6.22.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.22.02/graf2d/postscript/src/TPostScript.cxx ---- root-6.22.02.orig/graf2d/postscript/src/TPostScript.cxx 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf2d/postscript/src/TPostScript.cxx 2020-08-18 09:50:12.765102660 +0200 -@@ -233,6 +233,7 @@ - #include - #include - #include +diff -ur root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.24.02/graf2d/postscript/src/TPostScript.cxx +--- root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf2d/postscript/src/TPostScript.cxx 2021-08-11 10:49:08.588579261 +0200 +@@ -234,6 +234,7 @@ + #include + #include + #include +#include - #include "Riostream.h" - #include "Byteswap.h" -@@ -1583,56 +1584,179 @@ + #include "strlcpy.h" + #include "snprintf.h" +@@ -1585,56 +1586,179 @@ void TPostScript::FontEmbed(void) { @@ -1034,7 +1034,7 @@ diff -ur root-6.22.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.22.02/gr } else { if (FontEmbedType2(ttfont)) { // nothing -@@ -1641,9 +1765,8 @@ +@@ -1643,9 +1767,8 @@ } else if(FontEmbedType42(ttfont)) { // nothing } else { @@ -1046,7 +1046,7 @@ diff -ur root-6.22.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.22.02/gr } delete [] ttfont; } -@@ -2835,10 +2958,10 @@ +@@ -2837,10 +2960,10 @@ { "Root.PSFont.9", "/FreeMonoOblique" }, { "Root.PSFont.10", "/FreeMonoBold" }, { "Root.PSFont.11", "/FreeMonoBoldOblique" }, @@ -1060,9 +1060,9 @@ diff -ur root-6.22.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.22.02/gr { "Root.PSFont.STIXGen", "/STIXGeneral" }, { "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" }, { "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" }, -diff -ur root-6.22.02.orig/graf3d/gl/CMakeLists.txt root-6.22.02/graf3d/gl/CMakeLists.txt ---- root-6.22.02.orig/graf3d/gl/CMakeLists.txt 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf3d/gl/CMakeLists.txt 2020-08-18 09:50:12.834102829 +0200 +diff -ur root-6.24.02.orig/graf3d/gl/CMakeLists.txt root-6.24.02/graf3d/gl/CMakeLists.txt +--- root-6.24.02.orig/graf3d/gl/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf3d/gl/CMakeLists.txt 2021-08-11 10:49:08.589579264 +0200 @@ -208,6 +208,7 @@ ${GL2PS_LIBRARIES} ${X11_LIBRARIES} @@ -1071,10 +1071,10 @@ diff -ur root-6.22.02.orig/graf3d/gl/CMakeLists.txt root-6.22.02/graf3d/gl/CMake DEPENDENCIES Hist Gui -diff -ur root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.22.02/graf3d/gl/src/TGLFontManager.cxx ---- root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf3d/gl/src/TGLFontManager.cxx 2020-08-18 09:50:12.854102878 +0200 -@@ -37,6 +37,7 @@ +diff -ur root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.24.02/graf3d/gl/src/TGLFontManager.cxx +--- root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf3d/gl/src/TGLFontManager.cxx 2021-08-11 10:49:08.589579264 +0200 +@@ -36,6 +36,7 @@ # include "FTGLBitmapFont.h" #endif @@ -1082,7 +1082,7 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.22.02/graf3d/ /** \class TGLFont \ingroup opengl -@@ -420,7 +421,7 @@ +@@ -419,7 +420,7 @@ ClassImp(TGLFontManager); TObjArray TGLFontManager::fgFontFileArray; @@ -1091,7 +1091,7 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.22.02/graf3d/ TGLFontManager::FontSizeVec_t TGLFontManager::fgFontSizeArray; Bool_t TGLFontManager::fgStaticInitDone = kFALSE; -@@ -451,17 +452,175 @@ +@@ -450,17 +451,175 @@ FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode)); if (it == fFontMap.end()) { @@ -1276,7 +1276,7 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.22.02/graf3d/ FTFont* ftfont = 0; switch (mode) { -@@ -485,10 +644,14 @@ +@@ -484,10 +643,14 @@ ftfont = new FTGLTextureFont(file); break; default: @@ -1291,7 +1291,7 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.22.02/graf3d/ ftfont->FaceSize(size); const TGLFont &mf = fFontMap.insert(std::make_pair(TGLFont(size, fileID, mode, ftfont, 0), 1)).first->first; out.CopyAttributes(mf); -@@ -571,8 +734,6 @@ +@@ -570,8 +733,6 @@ { if (fgStaticInitDone == kFALSE) InitStatics(); @@ -1300,7 +1300,7 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.22.02/graf3d/ return fgExtendedFontStart; } -@@ -642,28 +803,6 @@ +@@ -641,28 +802,6 @@ fgFontFileArray.Add(new TObjString("wingding")); // 140 fgFontFileArray.Add(new TObjString("symbol")); // 150 @@ -1329,10 +1329,10 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.22.02/graf3d/ fgFontFileArray.Add(new TObjString("STIXGeneral.otf")); // 200 fgFontFileArray.Add(new TObjString("STIXGeneralItalic.otf")); // 210 fgFontFileArray.Add(new TObjString("STIXGeneralBol.otf")); // 220 -diff -ur root-6.22.02.orig/graf3d/gl/src/TGLText.cxx root-6.22.02/graf3d/gl/src/TGLText.cxx ---- root-6.22.02.orig/graf3d/gl/src/TGLText.cxx 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/graf3d/gl/src/TGLText.cxx 2020-08-18 09:50:12.881102944 +0200 -@@ -34,6 +34,8 @@ +diff -ur root-6.24.02.orig/graf3d/gl/src/TGLText.cxx root-6.24.02/graf3d/gl/src/TGLText.cxx +--- root-6.24.02.orig/graf3d/gl/src/TGLText.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/graf3d/gl/src/TGLText.cxx 2021-08-11 10:49:08.590579267 +0200 +@@ -32,6 +32,8 @@ # include "FTGLBitmapFont.h" #endif @@ -1341,7 +1341,7 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLText.cxx root-6.22.02/graf3d/gl/src/ #define FTGL_BITMAP 0 #define FTGL_PIXMAP 1 #define FTGL_OUTLINE 2 -@@ -178,27 +180,92 @@ +@@ -176,27 +178,92 @@ { int fontid = fontnumber / 10; @@ -1455,7 +1455,7 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLText.cxx root-6.22.02/graf3d/gl/src/ if (fGLTextFont) delete fGLTextFont; -@@ -206,7 +273,9 @@ +@@ -204,7 +271,9 @@ fGLTextFont = new FTGLPolygonFont(ttfont); @@ -1466,9 +1466,9 @@ diff -ur root-6.22.02.orig/graf3d/gl/src/TGLText.cxx root-6.22.02/graf3d/gl/src/ Error("SetGLTextFont","Cannot set FTGL::FaceSize"); - delete [] ttfont; } -diff -ur root-6.22.02.orig/gui/gui/src/TGApplication.cxx root-6.22.02/gui/gui/src/TGApplication.cxx ---- root-6.22.02.orig/gui/gui/src/TGApplication.cxx 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/gui/gui/src/TGApplication.cxx 2020-08-18 09:50:13.153103608 +0200 +diff -ur root-6.24.02.orig/gui/gui/src/TGApplication.cxx root-6.24.02/gui/gui/src/TGApplication.cxx +--- root-6.24.02.orig/gui/gui/src/TGApplication.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/gui/gui/src/TGApplication.cxx 2021-08-11 10:49:08.590579267 +0200 @@ -80,20 +80,12 @@ gROOT->SetBatch(kFALSE); diff --git a/root-histv7-bin-iterator.patch b/root-histv7-bin-iterator.patch deleted file mode 100644 index 9e52725..0000000 --- a/root-histv7-bin-iterator.patch +++ /dev/null @@ -1,51 +0,0 @@ -From af2e5c8b1bf17a0a0e1c1492735395bdd49ffd65 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 29 Jun 2020 12:57:43 +0200 -Subject: [PATCH] Fix off-by-one error in the histogram v7 bin iterator - -The histogram bin iterator should start at 1 and end at N + 1, not -start at 0 and end at N. (As for all iterators, the end element is the -invalid element after the last one.) - -Fixes an assertion in the histhistv7testUnit test - -[----------] 2 tests from BinIterNBins -[ RUN ] BinIterNBins.NumBins -/usr/include/c++/10/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = float; _Alloc = std::allocator; std::vector<_Tp, _Alloc>::reference = float&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' failed. ---- - hist/histv7/inc/ROOT/RHist.hxx | 4 ++-- - hist/histv7/test/biniter.cxx | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/hist/histv7/inc/ROOT/RHist.hxx b/hist/histv7/inc/ROOT/RHist.hxx -index ebb319f1ef..9521fe182f 100644 ---- a/hist/histv7/inc/ROOT/RHist.hxx -+++ b/hist/histv7/inc/ROOT/RHist.hxx -@@ -158,9 +158,9 @@ public: - /// Get the uncertainty on the content of the bin at `x`. - double GetBinUncertainty(const CoordArray_t &x) const { return fImpl->GetBinUncertainty(x); } - -- const_iterator begin() const { return const_iterator(*fImpl); } -+ const_iterator begin() const { return const_iterator(*fImpl, 1); } - -- const_iterator end() const { return const_iterator(*fImpl, fImpl->GetNBinsNoOver()); } -+ const_iterator end() const { return const_iterator(*fImpl, fImpl->GetNBinsNoOver() + 1); } - - /// Swap *this and other. - /// -diff --git a/hist/histv7/test/biniter.cxx b/hist/histv7/test/biniter.cxx -index aa1c2dfef9..1f940aa8e7 100644 ---- a/hist/histv7/test/biniter.cxx -+++ b/hist/histv7/test/biniter.cxx -@@ -45,7 +45,7 @@ TEST(BinIterNBins, BinRef) { - double founduncert = -1.; - RH2F::CoordArray_t foundcoord{}; - -- int nBins = 0; -+ int nBins = 1; - for (auto bin: h) { - auto binCenter = bin.GetCenter(); - if (std::fabs(binCenter[0] - x) < 0.1 && std::fabs(binCenter[1] - y) < 0.1) { --- -2.26.2 - diff --git a/root-increase-timeout-for-ppc64le.patch b/root-increase-timeout-for-ppc64le.patch deleted file mode 100644 index f4bbc79..0000000 --- a/root-increase-timeout-for-ppc64le.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 4a4f661e80aa569a2fe2fcadeb2632db52371f79 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 21 Aug 2020 18:46:36 +0200 -Subject: [PATCH] Increase timeout for PPC64 - ---- - tutorials/CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index b49bc68209..ef6e884658 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -462,7 +462,7 @@ foreach(t ${tutorials}) - endif() - - # These tests on ARM64 need much more than 20 minutes - increase the timeout -- if(ROOT_ARCHITECTURE MATCHES arm64) -+ if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) - set(thisTestTimeout 2400) # 40m - else() - set(thisTestTimeout 1200) # 20m -@@ -489,7 +489,7 @@ foreach(t ${mpi_tutorials}) - string(REPLACE "/" "-" tname ${tname}) - - # These tests on ARM64 need much more than 20 minutes - increase the timeout -- if(ROOT_ARCHITECTURE MATCHES arm64) -+ if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) - set(thisTestTimeout 2400) # 40m - else() - set(thisTestTimeout 1200) # 20m --- -2.28.0 - diff --git a/root-install-headers-with-COMPONENT-headers.patch b/root-install-headers-with-COMPONENT-headers.patch deleted file mode 100644 index 8948c1e..0000000 --- a/root-install-headers-with-COMPONENT-headers.patch +++ /dev/null @@ -1,39 +0,0 @@ -From c6b03126690439f5137e4a1090e81e93fd09df9a Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 19 Aug 2020 20:17:37 +0200 -Subject: [PATCH] Install headers with COMPONENT headers - ---- - bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt | 4 +++- - bindings/pyroot/pythonizations/CMakeLists.txt | 4 +++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt -index 00ce6c13b8..e23b439b3e 100644 ---- a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt -+++ b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt -@@ -120,4 +120,6 @@ foreach(val RANGE ${how_many_pythons}) - endforeach() - - file(COPY ${headers} DESTINATION ${CMAKE_BINARY_DIR}/include/CPyCppyy) --install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CPyCppyy) -+install(FILES ${headers} -+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CPyCppyy -+ COMPONENT headers) -diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt -index 7827204396..377ec46916 100644 ---- a/bindings/pyroot/pythonizations/CMakeLists.txt -+++ b/bindings/pyroot/pythonizations/CMakeLists.txt -@@ -159,6 +159,8 @@ install(DIRECTORY ${localruntimedir}/ROOT - COMPONENT libraries) - - # Install headers required by pythonizations --install(FILES ${PYROOT_EXTRA_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ROOT) -+install(FILES ${PYROOT_EXTRA_HEADERS} -+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ROOT -+ COMPONENT headers) - - ROOT_ADD_TEST_SUBDIRECTORY(test) --- -2.26.2 - diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch new file mode 100644 index 0000000..a81848a --- /dev/null +++ b/root-jsmva-static.patch @@ -0,0 +1,36 @@ +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.ch/js/notebook/scripts/"; ++ var JSROOT_source_dir = "/static/scripts/"; + + var url = ""; + if (requirejs.s.contexts.hasOwnProperty("_")) { diff --git a/root-jupyroot-jupyterlab-compat.patch b/root-jupyroot-jupyterlab-compat.patch deleted file mode 100644 index a7850c4..0000000 --- a/root-jupyroot-jupyterlab-compat.patch +++ /dev/null @@ -1,125 +0,0 @@ -diff -ur root-6.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py ---- root-6.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-06-17 19:29:39.457234887 +0200 -@@ -39,24 +39,31 @@ - - _jsNotDrawableClassesPatterns = ["TEve*","TF3","TPolyLine3D"] - -- --_jsROOTSourceDir = "/static/" - _jsCanvasWidth = 800 - _jsCanvasHeight = 600 -- - _jsCode = """ -+ -
    -
    - - """ -@@ -296,7 +295,7 @@ - cnt = 0 - for n in range(colors.GetLast()+1): - if colors.At(n): cnt = cnt+1 -- -+ - # add all colors if there are more than 598 colors defined - if cnt < 599 or prim.FindObject(colors): - colors = None -@@ -312,14 +311,14 @@ - prim.Add(palette) - - ROOT.TColor.DefinedColors() -- -+ - canvas_json = ROOT.TBufferJSON.ConvertToJSON(canvas, 3) - - # Cleanup primitives after conversion - if style is not None: prim.Remove(style) - if colors is not None: prim.Remove(colors) - if palette is not None: prim.Remove(palette) -- -+ - return canvas_json - - transformers = [] -@@ -508,7 +507,6 @@ - - thisJsCode = _jsCode.format(jsCanvasWidth = height, - jsCanvasHeight = width, -- jsROOTSourceDir = _jsROOTSourceDir, - jsonContent = json.Data(), - jsDrawOptions = options, - jsDivId = divId) diff --git a/root-jupyroot-static.patch b/root-jupyroot-static.patch deleted file mode 100644 index 717e203..0000000 --- a/root-jupyroot-static.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff -ur root-6.22.08.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.22.08/bindings/jsmva/python/JsMVA/JPyInterface.py ---- root-6.22.08.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-17 19:32:12.018598877 +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.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py ---- root-6.22.08.orig/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-06-17 19:29:39.457234887 +0200 -+++ root-6.22.08/bindings/jupyroot/python/JupyROOT/helpers/utils.py 2021-06-17 19:29:00.146141086 +0200 -@@ -72,7 +72,7 @@ - }} - - // Try loading a local version of requirejs and fallback to cdn if not possible. -- script_load(base_url + 'static/scripts/JSRootCore.js', script_success, function(){{ -+ script_load(base_url + 'static/jsroot/scripts/JSRootCore.js', script_success, function(){{ - console.error('Fail to load JSROOT locally, please check your jupyter_notebook_config.py file') - script_load('https://root.cern/js/5.9.1/scripts/JSRootCore.min.js', script_success, function(){{ - document.getElementById("{jsDivId}").innerHTML = "Failed to load JSROOT"; -diff -ur root-6.22.08.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.22.08/bindings/pyroot_legacy/JsMVA/JPyInterface.py ---- root-6.22.08.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-17 19:32:12.019598879 +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.22.08.orig/bindings/pyroot_legacy/JupyROOT/helpers/utils.py root-6.22.08/bindings/pyroot_legacy/JupyROOT/helpers/utils.py ---- root-6.22.08.orig/bindings/pyroot_legacy/JupyROOT/helpers/utils.py 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/bindings/pyroot_legacy/JupyROOT/helpers/utils.py 2021-06-17 19:32:12.019598879 +0200 -@@ -82,7 +82,7 @@ - function requirejs_success(base_url) {{ - return function() {{ - require.config({{ -- baseUrl: base_url + 'static/' -+ baseUrl: base_url + 'static/jsroot/' - }}); - display_{jsDivId}(); - }} -diff -ur root-6.22.08.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.22.08/etc/notebook/JsMVA/js/JsMVA.js ---- root-6.22.08.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/etc/notebook/JsMVA/js/JsMVA.js 2021-06-17 19:32:12.020598882 +0200 -@@ -16,7 +16,7 @@ - - (function(factory){ - -- var JSROOT_source_dir = "https://root.cern.ch/js/notebook/scripts/"; -+ var JSROOT_source_dir = "/static/jsroot/scripts/"; - - var url = ""; - if (requirejs.s.contexts.hasOwnProperty("_")) { -diff -ur root-6.22.08.orig/etc/notebook/JsMVA/js/NetworkDesigner.js root-6.22.08/etc/notebook/JsMVA/js/NetworkDesigner.js ---- root-6.22.08.orig/etc/notebook/JsMVA/js/NetworkDesigner.js 2021-03-10 15:19:14.000000000 +0100 -+++ root-6.22.08/etc/notebook/JsMVA/js/NetworkDesigner.js 2021-06-17 19:32:12.020598882 +0200 -@@ -19,7 +19,7 @@ - paths: { - "jquery-connections": baseURL + "jquery.connections.min", - "jquery-timing": baseURL + "jquery-timing.min", -- "d3": "/static/scripts/d3.min" -+ "d3": "/static/jsroot/scripts/d3.min" - }, - shim: { - "jquery-ui": { diff --git a/root-linux-vdso.patch b/root-linux-vdso.patch deleted file mode 100644 index f749e9e..0000000 --- a/root-linux-vdso.patch +++ /dev/null @@ -1,47 +0,0 @@ -From f7161d2612c035604146298809e628d806dbed3a Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 29 Nov 2020 07:58:30 +0100 -Subject: [PATCH] Several new test failures on ppc64le with 6.22.06 due to: - g++: error: linux-vdso64.so.1: No such file or directory -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The list of names filtered out by TCling is incomplete. -The vdso(7) man page gives the following list: - - user ABI vDSO name - ───────────────────────────── - aarch64 linux-vdso.so.1 - arm linux-vdso.so.1 - ia64 linux-gate.so.1 - mips linux-vdso.so.1 - ppc/32 linux-vdso32.so.1 - ppc/64 linux-vdso64.so.1 - riscv linux-vdso.so.1 - s390 linux-vdso32.so.1 - s390x linux-vdso64.so.1 - sh linux-gate.so.1 - i386 linux-gate.so.1 - x86-64 linux-vdso.so.1 - x86/x32 linux-vdso.so.1 ---- - core/metacling/src/TCling.cxx | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx -index 5078d7b93e..0e605a5388 100644 ---- a/core/metacling/src/TCling.cxx -+++ b/core/metacling/src/TCling.cxx -@@ -3274,6 +3274,8 @@ static int callback_for_dl_iterate_phdr(struct dl_phdr_info *info, size_t size, - // Skip \0, "", and kernel pseudo-libs linux-vdso.so.1 or linux-gate.so.1 - if (info->dlpi_name && info->dlpi_name[0] - && strncmp(info->dlpi_name, "linux-vdso.so", 13) -+ && strncmp(info->dlpi_name, "linux-vdso32.so", 15) -+ && strncmp(info->dlpi_name, "linux-vdso64.so", 15) - && strncmp(info->dlpi_name, "linux-gate.so", 13)) - newLibs->emplace_back(info->dlpi_name); - sKnownLoadedLibBaseAddrs.insert(info->dlpi_addr); --- -2.28.0 - diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch index 21b1319..aa7604d 100644 --- a/root-no-export-python-modules.patch +++ b/root-no-export-python-modules.patch @@ -1,6 +1,6 @@ -diff -ur root-6.22.02.orig/bindings/jupyroot/CMakeLists.txt root-6.22.02/bindings/jupyroot/CMakeLists.txt ---- root-6.22.02.orig/bindings/jupyroot/CMakeLists.txt 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/bindings/jupyroot/CMakeLists.txt 2020-08-19 09:49:12.094722642 +0200 +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() @@ -8,13 +8,13 @@ diff -ur root-6.22.02.orig/bindings/jupyroot/CMakeLists.txt root-6.22.02/binding - 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_LIBDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) + LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) -diff -ur root-6.22.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt root-6.22.02/bindings/pyroot/pythonizations/CMakeLists.txt ---- root-6.22.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt 2020-08-17 14:41:56.000000000 +0200 -+++ root-6.22.02/bindings/pyroot/pythonizations/CMakeLists.txt 2020-08-19 10:36:10.390486171 +0200 -@@ -133,11 +133,10 @@ +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) @@ -25,6 +25,6 @@ diff -ur root-6.22.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt root-6. - 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_LIBDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) + LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) diff --git a/root-ntuple-largefile.patch b/root-ntuple-largefile.patch deleted file mode 100644 index b4242f0..0000000 --- a/root-ntuple-largefile.patch +++ /dev/null @@ -1,139 +0,0 @@ -diff -ur root-6.22.00.orig/io/io/src/RRawFileUnix.cxx root-6.22.00/io/io/src/RRawFileUnix.cxx ---- root-6.22.00.orig/io/io/src/RRawFileUnix.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/io/io/src/RRawFileUnix.cxx 2020-07-02 09:02:48.202677798 +0200 -@@ -9,6 +9,8 @@ - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -+#include "ROOT/RConfig.hxx" -+ - #include "ROOT/RRawFileUnix.hxx" - #include "ROOT/RMakeUnique.hxx" - -@@ -47,8 +49,13 @@ - - std::uint64_t ROOT::Internal::RRawFileUnix::GetSizeImpl() - { -+#ifdef R__SEEK64 -+ struct stat64 info; -+ int res = fstat64(fFileDes, &info); -+#else - struct stat info; - int res = fstat(fFileDes, &info); -+#endif - if (res != 0) - throw std::runtime_error("Cannot call fstat on '" + fUrl + "', error: " + std::string(strerror(errno))); - return info.st_size; -@@ -68,7 +75,11 @@ - - void ROOT::Internal::RRawFileUnix::OpenImpl() - { -+#ifdef R__SEEK64 -+ fFileDes = open64(GetLocation(fUrl).c_str(), O_RDONLY); -+#else - fFileDes = open(GetLocation(fUrl).c_str(), O_RDONLY); -+#endif - if (fFileDes < 0) { - throw std::runtime_error("Cannot open '" + fUrl + "', error: " + std::string(strerror(errno))); - } -@@ -76,8 +87,13 @@ - if (fOptions.fBlockSize >= 0) - return; - -+#ifdef R__SEEK64 -+ struct stat64 info; -+ int res = fstat64(fFileDes, &info); -+#else - struct stat info; - int res = fstat(fFileDes, &info); -+#endif - if (res != 0) { - throw std::runtime_error("Cannot call fstat on '" + fUrl + "', error: " + std::string(strerror(errno))); - } -@@ -92,7 +108,11 @@ - { - size_t total_bytes = 0; - while (nbytes) { -+#ifdef R__SEEK64 -+ ssize_t res = pread64(fFileDes, buffer, nbytes, offset); -+#else - ssize_t res = pread(fFileDes, buffer, nbytes, offset); -+#endif - if (res < 0) { - if (errno == EINTR) - continue; -diff -ur root-6.22.00.orig/tree/ntuple/v7/src/RMiniFile.cxx root-6.22.00/tree/ntuple/v7/src/RMiniFile.cxx ---- root-6.22.00.orig/tree/ntuple/v7/src/RMiniFile.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/ntuple/v7/src/RMiniFile.cxx 2020-07-02 10:06:55.066204147 +0200 -@@ -13,6 +13,8 @@ - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -+#include -+ - #include "ROOT/RMiniFile.hxx" - - #include -@@ -999,7 +1001,11 @@ - R__ASSERT(fFile); - size_t retval; - if ((offset >= 0) && (static_cast(offset) != fFilePos)) { -+#ifdef R__SEEK64 -+ retval = fseeko64(fFile, offset, SEEK_SET); -+#else - retval = fseek(fFile, offset, SEEK_SET); -+#endif - R__ASSERT(retval == 0); - fFilePos = offset; - } -@@ -1099,7 +1105,11 @@ - if (idxDirSep != std::string::npos) { - fileName.erase(0, idxDirSep + 1); - } -+#ifdef R__SEEK64 -+ FILE *fileStream = fopen64(std::string(path.data(), path.size()).c_str(), "wb"); -+#else - FILE *fileStream = fopen(std::string(path.data(), path.size()).c_str(), "wb"); -+#endif - R__ASSERT(fileStream); - - auto writer = new RNTupleFileWriter(ntupleName); -@@ -1319,7 +1329,11 @@ - fFileSimple.Write(&strEmpty, strEmpty.GetSize()); - fFileSimple.Write(&fileRoot, fileRoot.GetSize()); - fFileSimple.fFilePos = tail; -+#ifdef R__SEEK64 -+ auto retval = fseeko64(fFileSimple.fFile, tail, SEEK_SET); -+#else - auto retval = fseek(fFileSimple.fFile, tail, SEEK_SET); -+#endif - R__ASSERT(retval == 0); - fFileSimple.fFilePos = tail; - } -diff -ur root-6.22.00.orig/tree/ntuple/v7/test/ntuple.cxx root-6.22.00/tree/ntuple/v7/test/ntuple.cxx ---- root-6.22.00.orig/tree/ntuple/v7/test/ntuple.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/ntuple/v7/test/ntuple.cxx 2020-07-02 10:10:54.409737807 +0200 -@@ -1,3 +1,5 @@ -+#include -+ - #include - #include - #include -@@ -891,10 +893,17 @@ - ntuple->Fill(); - } - } -+#ifdef R__SEEK64 -+ FILE *file = fopen64(fileGuard.GetPath().c_str(), "rb"); -+ ASSERT_TRUE(file != nullptr); -+ EXPECT_EQ(0, fseeko64(file, 0, SEEK_END)); -+ EXPECT_GT(ftello64(file), 2048LL * 1024LL * 1024LL); -+#else - FILE *file = fopen(fileGuard.GetPath().c_str(), "rb"); - ASSERT_TRUE(file != nullptr); - EXPECT_EQ(0, fseek(file, 0, SEEK_END)); - EXPECT_GT(ftell(file), 2048LL * 1024LL * 1024LL); -+#endif - fclose(file); - - auto ntuple = RNTupleReader::Open("myNTuple", fileGuard.GetPath()); diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch index a25a8e8..bcba732 100644 --- a/root-old-gtest-compat.patch +++ b/root-old-gtest-compat.patch @@ -1,6 +1,20 @@ -diff -ur root-6.22.00.orig/math/mathcore/test/stress/testGenVector.cxx root-6.22.00/math/mathcore/test/stress/testGenVector.cxx ---- root-6.22.00.orig/math/mathcore/test/stress/testGenVector.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/math/mathcore/test/stress/testGenVector.cxx 2020-06-29 19:38:08.524050438 +0200 +diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hist/hist/test/test_THBinIterator.cxx +--- root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/hist/hist/test/test_THBinIterator.cxx 2021-08-06 22:59:45.039518775 +0200 +@@ -1,5 +1,10 @@ + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define SetUpTestSuite SetUpTestCase ++#define TearDownTestSuite TearDownTestCase ++#endif ++ + // test iterating histogram bins and using the new THistRange and + // THBinIterator classes + +diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24.02/math/mathcore/test/stress/testGenVector.cxx +--- root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/math/mathcore/test/stress/testGenVector.cxx 2021-08-06 09:31:38.795835283 +0200 @@ -4,6 +4,16 @@ #include "gtest/gtest.h" @@ -18,9 +32,9 @@ diff -ur root-6.22.00.orig/math/mathcore/test/stress/testGenVector.cxx root-6.22 #include "StatFunction.h" #include "TestHelper.h" #include "VectorTest.h" -diff -ur root-6.22.00.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.22.00/math/mathcore/test/stress/testSMatrix.cxx ---- root-6.22.00.orig/math/mathcore/test/stress/testSMatrix.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/math/mathcore/test/stress/testSMatrix.cxx 2020-06-29 19:38:08.524050438 +0200 +diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx +--- root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx 2021-08-06 09:31:38.796835286 +0200 @@ -7,6 +7,16 @@ #include "TestHelper.h" #include "gtest/gtest.h" @@ -38,9 +52,9 @@ diff -ur root-6.22.00.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.22.0 #include "VectorTest.h" #include "TROOT.h" #include "TSystem.h" -diff -ur root-6.22.00.orig/math/mathcore/test/stress/testVector34.cxx root-6.22.00/math/mathcore/test/stress/testVector34.cxx ---- root-6.22.00.orig/math/mathcore/test/stress/testVector34.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/math/mathcore/test/stress/testVector34.cxx 2020-06-29 19:38:08.525050440 +0200 +diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.02/math/mathcore/test/stress/testVector34.cxx +--- root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/math/mathcore/test/stress/testVector34.cxx 2021-08-06 09:31:38.796835286 +0200 @@ -4,6 +4,16 @@ #include "gtest/gtest.h" @@ -58,9 +72,9 @@ diff -ur root-6.22.00.orig/math/mathcore/test/stress/testVector34.cxx root-6.22. #include "StatFunction.h" #include "VectorTest.h" -diff -ur root-6.22.00.orig/math/mathcore/test/stress/testVector.cxx root-6.22.00/math/mathcore/test/stress/testVector.cxx ---- root-6.22.00.orig/math/mathcore/test/stress/testVector.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/math/mathcore/test/stress/testVector.cxx 2020-06-29 19:38:08.525050440 +0200 +diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02/math/mathcore/test/stress/testVector.cxx +--- root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/math/mathcore/test/stress/testVector.cxx 2021-08-06 09:31:38.796835286 +0200 @@ -4,6 +4,16 @@ #include "gtest/gtest.h" @@ -78,9 +92,9 @@ diff -ur root-6.22.00.orig/math/mathcore/test/stress/testVector.cxx root-6.22.00 #include "StatFunction.h" #include "TestHelper.h" #include "VectorTest.h" -diff -ur root-6.22.00.orig/math/mathcore/test/testGradient.cxx root-6.22.00/math/mathcore/test/testGradient.cxx ---- root-6.22.00.orig/math/mathcore/test/testGradient.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/math/mathcore/test/testGradient.cxx 2020-06-29 19:38:08.525050440 +0200 +diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math/mathcore/test/testGradient.cxx +--- root-6.24.02.orig/math/mathcore/test/testGradient.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/math/mathcore/test/testGradient.cxx 2021-08-06 09:31:38.796835286 +0200 @@ -22,6 +22,10 @@ #include "gtest/gtest.h" @@ -92,9 +106,9 @@ diff -ur root-6.22.00.orig/math/mathcore/test/testGradient.cxx root-6.22.00/math #include #include #include -diff -ur root-6.22.00.orig/math/mathcore/test/testGradientFitting.cxx root-6.22.00/math/mathcore/test/testGradientFitting.cxx ---- root-6.22.00.orig/math/mathcore/test/testGradientFitting.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/math/mathcore/test/testGradientFitting.cxx 2020-06-29 19:38:08.525050440 +0200 +diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.02/math/mathcore/test/testGradientFitting.cxx +--- root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/math/mathcore/test/testGradientFitting.cxx 2021-08-06 09:31:38.797835288 +0200 @@ -12,6 +12,16 @@ #include "gtest/gtest.h" @@ -112,10 +126,10 @@ diff -ur root-6.22.00.orig/math/mathcore/test/testGradientFitting.cxx root-6.22. #include #include -diff -ur root-6.22.00.orig/math/mathmore/test/testStress.cxx root-6.22.00/math/mathmore/test/testStress.cxx ---- root-6.22.00.orig/math/mathmore/test/testStress.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/math/mathmore/test/testStress.cxx 2020-06-29 19:38:08.526050443 +0200 -@@ -28,6 +28,16 @@ +diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/mathmore/test/testStress.cxx +--- root-6.24.02.orig/math/mathmore/test/testStress.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/math/mathmore/test/testStress.cxx 2021-08-06 09:31:38.797835288 +0200 +@@ -26,6 +26,16 @@ #include "gtest/gtest.h" @@ -132,9 +146,9 @@ diff -ur root-6.22.00.orig/math/mathmore/test/testStress.cxx root-6.22.00/math/m using ::testing::TestWithParam; using ::testing::Values; -diff -ur root-6.22.00.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx root-6.22.00/roofit/roofitcore/test/testProxiesAndCategories.cxx ---- root-6.22.00.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/roofit/roofitcore/test/testProxiesAndCategories.cxx 2020-06-29 19:38:08.526050443 +0200 +diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx +--- root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-08-06 09:31:38.798835290 +0200 @@ -16,6 +16,9 @@ #include "gtest/gtest.h" @@ -145,9 +159,49 @@ diff -ur root-6.22.00.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx r TEST(RooCategory, CategoryDefineMultiState) { RooCategory myCat("myCat", "A category", { {"0Lep", 0}, {"1Lep", 1}, {"2Lep", 2}, {"3Lep", 3} }); -diff -ur root-6.22.00.orig/tree/dataframe/test/dataframe_simple.cxx root-6.22.00/tree/dataframe/test/dataframe_simple.cxx ---- root-6.22.00.orig/tree/dataframe/test/dataframe_simple.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/tree/dataframe/test/dataframe_simple.cxx 2020-06-29 19:38:45.667130468 +0200 +diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx +--- root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-08-06 09:31:38.801835298 +0200 +@@ -11,6 +11,10 @@ + + #include + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include // std::min + #include // std::hardware_concurrency + +diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx +--- root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx 2021-08-06 09:31:38.802835300 +0200 +@@ -308,7 +308,7 @@ + EXPECT_FALSE(mh3); + EXPECT_FALSE(mh4); + EXPECT_FALSE(mh5); +- EXPECT_TRUE(mergedptr); ++ EXPECT_TRUE(!!mergedptr); + + const auto &mh = mergedptr->GetValue(); + +diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.24.02/tree/dataframe/test/dataframe_regression.cxx +--- root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/dataframe_regression.cxx 2021-08-06 09:31:38.802835300 +0200 +@@ -9,6 +9,10 @@ + + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially + class RDFRegressionTests : public ::testing::TestWithParam { + protected: +diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02/tree/dataframe/test/dataframe_simple.cxx +--- root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/tree/dataframe/test/dataframe_simple.cxx 2021-08-06 09:31:38.803835303 +0200 @@ -1,5 +1,10 @@ /****** Run RDataFrame tests both with and without IMT enabled *******/ #include @@ -156,6 +210,6 @@ diff -ur root-6.22.00.orig/tree/dataframe/test/dataframe_simple.cxx root-6.22.00 +#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P +#endif + + #include #include #include - #include diff --git a/root-older-python.patch b/root-older-python.patch new file mode 100644 index 0000000..fa6a05a --- /dev/null +++ b/root-older-python.patch @@ -0,0 +1,46 @@ +From 61116151cce8fe5b397555a65f7b55001b8e416b Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 23 Apr 2021 21:39:17 +0200 +Subject: [PATCH] Compat with no f-strings + +--- + tutorials/tmva/PyTorch_Generate_CNN_Model.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tutorials/tmva/PyTorch_Generate_CNN_Model.py b/tutorials/tmva/PyTorch_Generate_CNN_Model.py +index 7024112f03..5a314f86dd 100644 +--- a/tutorials/tmva/PyTorch_Generate_CNN_Model.py ++++ b/tutorials/tmva/PyTorch_Generate_CNN_Model.py +@@ -56,7 +56,7 @@ def fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, crit + # print train statistics + running_train_loss += train_loss.item() + if i % 4 == 3: # print every 4 mini-batches +- print(f"[{epoch+1}, {i+1}] train loss: {running_train_loss / 4 :.3f}") ++ print("[{}, {}] train loss: {:.3f}".format(epoch+1, i+1, running_train_loss / 4)) + running_train_loss = 0.0 + + if schedule: +@@ -75,15 +75,15 @@ def fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, crit + + curr_val = running_val_loss / len(val_loader) + if save_best: +- if best_val==None: +- best_val = curr_val +- best_val = save_best(model, curr_val, best_val) ++ if best_val is None: ++ best_val = curr_val ++ best_val = save_best(model, curr_val, best_val) + + # print val statistics per epoch +- print(f"[{epoch+1}] val loss: {curr_val :.3f}") ++ print("[{}] val loss: {:.3f}".format(epoch+1, curr_val)) + running_val_loss = 0.0 + +- print(f"Finished Training on {epoch+1} Epochs!") ++ print("Finished Training on {} Epochs!".format(epoch+1)) + + return model + +-- +2.30.2 + diff --git a/root-ppc-codemodel.patch b/root-ppc-codemodel.patch new file mode 100644 index 0000000..223dc7c --- /dev/null +++ b/root-ppc-codemodel.patch @@ -0,0 +1,36 @@ +From 774ab9358d852e2c004564183de4a60eaaa5ac98 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 23 Apr 2021 21:40:14 +0200 +Subject: [PATCH 2/2] Actually request the use of the large code model for + ppc64/ppc64le + +Instead of erroring out with an assert. +--- + interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp +index 46771aa8c0..93a48f31f3 100644 +--- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp ++++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp +@@ -73,14 +73,14 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) { + JTMB->getOptions().EmulatedTLS = false; + #endif // _WIN32 + +- std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); +- + #if defined(__powerpc64__) || defined(__PPC64__) + // We have to use large code model for PowerPC64 because TOC and text sections + // can be more than 2GB apart. +- assert(TM->getCodeModel() >= CodeModel::Large); ++ JTMB->setCodeModel(CodeModel::Large); + #endif + ++ std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); ++ + // Forcefully disable GlobalISel, it might be enabled on AArch64 without + // optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this + // new instruction selection framework emits branches / calls that expect all +-- +2.30.2 + diff --git a/root-ppc-no-codemodel.patch b/root-ppc-no-codemodel.patch new file mode 100644 index 0000000..3429097 --- /dev/null +++ b/root-ppc-no-codemodel.patch @@ -0,0 +1,13 @@ +diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp +index c98a3be0ed..f77d4adec2 100644 +--- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp ++++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp +@@ -77,7 +77,7 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) { + #if defined(__powerpc64__) || defined(__PPC64__) + // We have to use large code model for PowerPC64 because TOC and text sections + // can be more than 2GB apart. +- JTMB->setCodeModel(CodeModel::Large); ++ //JTMB->setCodeModel(CodeModel::Large); + #endif + + std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); diff --git a/root-ptr-is-null-RooFit-TMVA.patch b/root-ptr-is-null-RooFit-TMVA.patch new file mode 100644 index 0000000..3aa3acd --- /dev/null +++ b/root-ptr-is-null-RooFit-TMVA.patch @@ -0,0 +1,80 @@ +From c65f3d96f3f4433bff9d40fa9cf1dec100867a07 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 8 Jun 2021 10:12:37 +0200 +Subject: [PATCH] Fix 'this' pointer is null warnings + +.../roofit/roofitcore/src/RooDataHist.cxx: In member function 'void RooDataHist::_adjustBinning(RooRealVar&, const TAxis&, RooRealVar*, Int_t*)': +.../roofit/roofitcore/src/RooDataHist.cxx:595:122: warning: 'this' pointer is null [-Wnonnull] + 595 | coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ; + | ^~~~~~~~~~~~~~~ + +.../roofit/roofitcore/src/RooRealSumFunc.cxx: In constructor 'RooRealSumFunc::RooRealSumFunc(const char*, const char*, const RooArgList&, const RooArgList&)': +.../roofit/roofitcore/src/RooRealSumFunc.cxx:156:35: warning: 'this' pointer is null [-Wnonnull] + 156 | << " is not of type RooAbsReal, fatal error" << endl; + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx: In member function 'void TMVA::DNN::TDataLoader >::CopyInput(TMatrixT&, TMVA::DNN::IndexIterator_t) [with AData = std::tuple >&, const TMVA::DataSetInfo&>; AReal = float]': +.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:131:34: warning: 'this' pointer is null [-Wnonnull] + 131 | Int_t n = event->GetNVariables(); + | ~~~~~~~~~~~~~~~~~~~~^~ +In file included from .../tmva/tmva/inc/TMVA/VariableTransformBase.h:48, + from .../tmva/tmva/inc/TMVA/Tools.h:58, + from .../tmva/tmva/inc/TMVA/DNN/GeneralLayer.h:36, + from .../tmva/tmva/inc/TMVA/DNN/CNN/ConvLayer.h:32, + from .../tmva/tmva/inc/TMVA/DNN/Architectures/Reference.h:24, + from .../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:17: +.../tmva/tmva/inc/TMVA/Event.h:88:16: note: in a call to non-static member function 'UInt_t TMVA::Event::GetNVariables() const' + 88 | UInt_t GetNVariables() const; + | ^~~~~~~~~~~~~ +--- + roofit/roofitcore/src/RooDataHist.cxx | 2 +- + roofit/roofitcore/src/RooRealSumFunc.cxx | 4 ++-- + tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx +index 84cf2c0f68..8dddb88e2b 100644 +--- a/roofit/roofitcore/src/RooDataHist.cxx ++++ b/roofit/roofitcore/src/RooDataHist.cxx +@@ -591,7 +591,7 @@ void RooDataHist::importDHistSet(const RooArgList& /*vars*/, RooCategory& indexC + void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis, + RooRealVar *ourVar, Int_t *offset) + { +- if (!dynamic_cast(ourVar)) { ++ if (!dynamic_cast(static_cast(ourVar))) { + coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ; + assert(0) ; + } +diff --git a/roofit/roofitcore/src/RooRealSumFunc.cxx b/roofit/roofitcore/src/RooRealSumFunc.cxx +index 3f78020acd..a1625d7e35 100644 +--- a/roofit/roofitcore/src/RooRealSumFunc.cxx ++++ b/roofit/roofitcore/src/RooRealSumFunc.cxx +@@ -149,10 +149,10 @@ RooRealSumFunc::RooRealSumFunc(const char *name, const char *title, const RooArg + _coefList.add(*coef); + } + +- func = (RooAbsReal *)funcIter->Next(); ++ func = (RooAbsArg *)funcIter->Next(); + if (func) { + if (!dynamic_cast(func)) { +- coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << coef->GetName() ++ coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << func->GetName() + << " is not of type RooAbsReal, fatal error" << endl; + assert(0); + } +diff --git a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx +index 2465abf308..24a09d1fc0 100644 +--- a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx ++++ b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx +@@ -128,7 +128,7 @@ void TDataLoader>::CopyInput(TMatrixT &m + Event *event = nullptr; + + Int_t m = matrix.GetNrows(); +- Int_t n = event->GetNVariables(); ++ Int_t n = matrix.GetNcols(); + + // Copy input variables. + +-- +2.31.1 + diff --git a/root-ptr-is-null-TStreamerInfo.patch b/root-ptr-is-null-TStreamerInfo.patch new file mode 100644 index 0000000..869715c --- /dev/null +++ b/root-ptr-is-null-TStreamerInfo.patch @@ -0,0 +1,32 @@ +From 1ca221f010fdcfb6249ae7b1cac77fbe29b86214 Mon Sep 17 00:00:00 2001 +From: Enrico Guiraud +Date: Mon, 7 Jun 2021 11:02:48 +0200 +Subject: [PATCH] [io] Avoid nullptr deref when printing warning in + TStreamerInfo + +--- + io/io/src/TStreamerInfo.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx +index d545ab7be8..a026635890 100644 +--- a/io/io/src/TStreamerInfo.cxx ++++ b/io/io/src/TStreamerInfo.cxx +@@ -1109,12 +1109,12 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */) + fClassVersion, GetName(), GetName(), GetName(), fClassVersion); + } else { + Warning("BuildCheck", "\n\ +- The StreamerInfo from %s does not match existing one (%s:%d)\n\ ++ The StreamerInfo does not match existing one (%s:%d)\n\ + The existing one has not been used yet and will be discarded.\n\ + Reading should work properly, however writing object of\n\ + type %s will not work properly. Most likely the version number\n\ + of the class was not properly updated [See ClassDef(%s,%d)].", +- file->GetName(), GetName(), fClassVersion, GetName(), GetName(), fClassVersion); ++ GetName(), fClassVersion, GetName(), GetName(), fClassVersion); + } + } + } +-- +2.31.1 + diff --git a/root-python3.8-object.patch b/root-python3.8-object.patch deleted file mode 100644 index 1cc6c7b..0000000 --- a/root-python3.8-object.patch +++ /dev/null @@ -1,333 +0,0 @@ -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt 2020-06-21 20:54:24.848992803 +0200 -@@ -85,11 +85,6 @@ - target_compile_options(${libname} PRIVATE -Wno-deprecated-register) - endif() - -- # Disables warnings due to new field tp_vectorcall in Python 3.8 -- if(NOT MSVC AND ${python_version_string} VERSION_GREATER_EQUAL "3.8") -- target_compile_options(${libname} PRIVATE -Wno-missing-field-initializers) -- endif() -- - target_include_directories(${libname} - PRIVATE - ${CMAKE_SOURCE_DIR}/core/foundation/inc # needed for string_view backport -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPDataMember.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPDataMember.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPDataMember.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPDataMember.cxx 2020-06-21 20:53:49.651914431 +0200 -@@ -167,7 +167,8 @@ - sizeof(CPPDataMember), // tp_basicsize - 0, // tp_itemsize - (destructor)pp_dealloc, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -216,6 +217,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPExcInstance.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPExcInstance.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPExcInstance.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPExcInstance.cxx 2020-06-21 20:53:49.651914431 +0200 -@@ -158,7 +158,8 @@ - sizeof(CPPExcInstance), // tp_basicsize - 0, // tp_itemsize - (destructor)ep_dealloc, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -211,6 +212,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx 2020-06-21 20:53:49.651914431 +0200 -@@ -746,7 +746,8 @@ - sizeof(CPPInstance), // tp_basicsize - 0, // tp_itemsize - (destructor)op_dealloc, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -798,6 +799,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx 2020-06-21 20:53:49.652914433 +0200 -@@ -866,7 +866,8 @@ - sizeof(CPPOverload), // tp_basicsize - 0, // tp_itemsize - (destructor)mp_dealloc, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -915,6 +916,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPScope.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPScope.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPPScope.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPPScope.cxx 2020-06-21 20:53:49.652914433 +0200 -@@ -616,7 +616,8 @@ - sizeof(CPyCppyy::CPPScope), // tp_basicsize - 0, // tp_itemsize - 0, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -669,6 +670,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx 2020-06-21 20:53:49.652914433 +0200 -@@ -141,6 +141,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - namespace { -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CustomPyTypes.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CustomPyTypes.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/CustomPyTypes.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/CustomPyTypes.cxx 2020-06-21 20:53:49.652914433 +0200 -@@ -34,6 +34,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - //= long type allowed for reference passing ================================== -@@ -60,6 +66,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - //- custom type representing typedef to pointer of class --------------------- -@@ -90,6 +102,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - //= instancemethod object with a more efficient call function ================ -@@ -255,6 +273,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - -@@ -305,6 +329,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - -@@ -364,6 +394,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/LowLevelViews.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/LowLevelViews.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/LowLevelViews.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/LowLevelViews.cxx 2020-06-21 20:53:49.653914436 +0200 -@@ -651,7 +651,8 @@ - sizeof(CPyCppyy::LowLevelView),// tp_basicsize - 0, // tp_itemsize - (destructor)ll_dealloc, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -701,6 +702,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/TemplateProxy.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/TemplateProxy.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/TemplateProxy.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/TemplateProxy.cxx 2020-06-21 20:53:49.653914436 +0200 -@@ -730,7 +730,8 @@ - sizeof(TemplateProxy), // tp_basicsize - 0, // tp_itemsize - (destructor)tpp_dealloc, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -779,6 +780,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy -diff -ur root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/TupleOfInstances.cxx root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/TupleOfInstances.cxx ---- root-6.22.00.orig/bindings/pyroot/cppyy/CPyCppyy/src/TupleOfInstances.cxx 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/bindings/pyroot/cppyy/CPyCppyy/src/TupleOfInstances.cxx 2020-06-21 20:53:49.653914436 +0200 -@@ -82,6 +82,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - -@@ -161,7 +167,8 @@ - 0, // tp_basicsize - 0, // tp_itemsize - 0, // tp_dealloc -- 0, // tp_print -+ 0, // tp_print (python < 3.8) -+ // tp_vectorcall_offset (python >= 3.8) - 0, // tp_getattr - 0, // tp_setattr - 0, // tp_compare -@@ -211,6 +218,12 @@ - #if PY_VERSION_HEX >= 0x03040000 - , 0 // tp_finalize - #endif -+#if PY_VERSION_HEX >= 0x03080000 -+ , 0 // tp_vectorcall -+#if PY_VERSION_HEX < 0x03090000 -+ , 0 // tp_print (python 3.8 only) -+#endif -+#endif - }; - - } // namespace CPyCppyy diff --git a/root-roostats-test-ppc64le-aarch64.patch b/root-roostats-test-ppc64le-aarch64.patch deleted file mode 100644 index b88d052..0000000 --- a/root-roostats-test-ppc64le-aarch64.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 357ac50a2420a4544c9c63594cccb994ee14f870 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 13 Jun 2020 14:23:15 +0200 -Subject: [PATCH] The roofit/roostats/test/testHypoTestInvResult.cxx test fails - on aarch64 and ppc64le. This commit adjusts the allowed deviation from the - expected value so that the test passes. - -The reported error is (with slight variations in the exact numbers): - -/builddir/build/BUILD/root-6.20.06/roofit/roostats/test/testHypoTestInvResult.cxx:24: Failure -The difference between result->UpperLimitEstimatedError() and 0.059684301 is 1.1846561807221656e-07, which exceeds 1.E-8, where -result->UpperLimitEstimatedError() evaluates to 0.05968418253438193, -0.059684301 evaluates to 0.059684301000000002, and -1.E-8 evaluates to 1e-08. ---- - roofit/roostats/test/testHypoTestInvResult.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/roofit/roostats/test/testHypoTestInvResult.cxx b/roofit/roostats/test/testHypoTestInvResult.cxx -index 9c2896185a..b89eab9b69 100644 ---- a/roofit/roostats/test/testHypoTestInvResult.cxx -+++ b/roofit/roostats/test/testHypoTestInvResult.cxx -@@ -21,7 +21,7 @@ TEST(HypoTestInvResult, ReadFromFile) - - // This just reads members - EXPECT_NEAR(result->UpperLimit(), 2.4613465, 1.E-7); -- EXPECT_NEAR(result->UpperLimitEstimatedError(), 0.059684301, 1.E-8); -+ EXPECT_NEAR(result->UpperLimitEstimatedError(), 0.059684301, 2.E-7); - - // This accesses the sampling distribution - EXPECT_DOUBLE_EQ(result->GetExpectedUpperLimit(0), 1.60988427028569); --- -2.26.2 - diff --git a/root-setcachefiledir.patch b/root-setcachefiledir.patch deleted file mode 100644 index 1244734..0000000 --- a/root-setcachefiledir.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 532e02a0e5373d26f73495183dc13055e7f13421 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 29 Jun 2020 12:08:15 +0200 -Subject: [PATCH] Add missing call to TFile::SetCacheFileDir(".") - -Without it the following TFile::Open call using the CACHEREAD option -will not work as intended: -inputFile = TFile::Open(inputFileLink, "CACHEREAD"); ---- - tutorials/tmva/TMVA_Higgs_Classification.C | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/tutorials/tmva/TMVA_Higgs_Classification.C b/tutorials/tmva/TMVA_Higgs_Classification.C -index 6b4a8ed028..85dffc2790 100644 ---- a/tutorials/tmva/TMVA_Higgs_Classification.C -+++ b/tutorials/tmva/TMVA_Higgs_Classification.C -@@ -72,9 +72,8 @@ Define now input data file and signal and background trees - if (!inputFile) { - // download file from Cernbox location - Info("TMVA_Higgs_Classification","Download Higgs_data.root file"); -+ TFile::SetCacheFileDir("."); - inputFile = TFile::Open(inputFileLink, "CACHEREAD"); -- //gSystem->Exec( TString::Format("wget -O %s %s",inputFileName.Data(), downloadLinkFile.Data() ) ); -- //inputFile = TFile::Open( inputFileName); - if (!inputFile) { - Error("TMVA_Higgs_Classification","Input file cannot be downloaded - exit"); - return; --- -2.26.2 - diff --git a/root-srm-ifce-deps.patch b/root-srm-ifce-deps.patch deleted file mode 100644 index 929d799..0000000 --- a/root-srm-ifce-deps.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 7e8706b21dc62fc7b56709cf03c2650c715e5b64 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 19 Aug 2020 20:23:15 +0200 -Subject: [PATCH] When building ROOT's libGFAL using gfal2, srm-ifce is not a - build dependency. - ---- - cmake/modules/FindGFAL.cmake | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -diff --git a/cmake/modules/FindGFAL.cmake b/cmake/modules/FindGFAL.cmake -index 71163a1714..74028ac5a7 100644 ---- a/cmake/modules/FindGFAL.cmake -+++ b/cmake/modules/FindGFAL.cmake -@@ -17,22 +17,26 @@ find_path(GFAL_INCLUDE_DIR NAMES gfal_api.h - HINTS ${GFAL_DIR}/include $ENV{GFAL_DIR}/include) - find_library(GFAL_LIBRARY NAMES gfal gfal2 - HINTS ${GFAL_DIR}/lib $ENV{GFAL_DIR}/lib) --find_path(SRM_IFCE_INCLUDE_DIR gfal_srm_ifce_types.h -- HINTS ${SRM_IFCE_DIR}/include $ENV{SRM_IFCE_DIR}/include) - - set(GFAL_LIBRARIES ${GFAL_LIBRARY}) --set(GFAL_INCLUDE_DIRS ${GFAL_INCLUDE_DIR} ${SRM_IFCE_INCLUDE_DIR}) -+set(GFAL_INCLUDE_DIRS ${GFAL_INCLUDE_DIR}) - - if(GFAL_LIBRARY MATCHES gfal2) - # use pkg-config to get the directories for glib and then use these values - find_package(PkgConfig) - pkg_check_modules(GLIB2 REQUIRED glib-2.0) - list(APPEND GFAL_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS}) -+ set(GFAL_DEP GLIB2_INCLUDE_DIRS) -+else() -+ find_path(SRM_IFCE_INCLUDE_DIR gfal_srm_ifce_types.h -+ HINTS ${SRM_IFCE_DIR}/include $ENV{SRM_IFCE_DIR}/include) -+ list(APPEND GFAL_INCLUDE_DIRS ${SRM_IFCE_INCLUDE_DIR}) -+ set(GFAL_DEP SRM_IFCE_INCLUDE_DIR) - endif() - - # handle the QUIETLY and REQUIRED arguments and set GFAL_FOUND to TRUE if - # all listed variables are TRUE - include(FindPackageHandleStandardArgs) --find_package_handle_standard_args(GFAL DEFAULT_MSG GFAL_INCLUDE_DIR SRM_IFCE_INCLUDE_DIR GFAL_LIBRARY) -+find_package_handle_standard_args(GFAL DEFAULT_MSG GFAL_INCLUDE_DIR ${GFAL_DEP} GFAL_LIBRARY) - --mark_as_advanced(GFAL_FOUND GFAL_INCLUDE_DIR GFAL_LIBRARY SRM_IFCE_INCLUDE_DIR GLIB_INCLUDE_DIR) -+mark_as_advanced(GFAL_FOUND GFAL_INCLUDE_DIR GFAL_LIBRARY SRM_IFCE_INCLUDE_DIR GLIB2_INCLUDE_DIRS) --- -2.26.2 - diff --git a/root-stress-s390x.patch b/root-stress-s390x.patch new file mode 100644 index 0000000..b1d9b9d --- /dev/null +++ b/root-stress-s390x.patch @@ -0,0 +1,39 @@ +From 30cbc0d44364586ac64a3ac0fd6641e338549bbe Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 10 Aug 2021 06:33:17 +0200 +Subject: [PATCH] Adjust tests for s390x + +--- + math/mathcore/test/stress/testGenVector.cxx | 2 +- + test/stressMathCore.cxx | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx +index 8da429c395..df9061c88e 100644 +--- a/math/mathcore/test/stress/testGenVector.cxx ++++ b/math/mathcore/test/stress/testGenVector.cxx +@@ -79,7 +79,7 @@ TYPED_TEST_P(GenVectorTest, TestGenVectors) + scale = this->fDim * 20; + if (this->fDim == 3 && this->V2Name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi + if (this->fDim == 4 && ( this->V2Name() == "PtEtaPhiMVector" || this->V2Name() == "PxPyPzMVector")) { +-#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__)) ++#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__)) + scale *= 1.E7; + #else + scale *= 10; +diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx +index 4d4695a8a0..b6d2d2c9e7 100644 +--- a/test/stressMathCore.cxx ++++ b/test/stressMathCore.cxx +@@ -1120,7 +1120,7 @@ int testVector(int ngen, bool testio=false) { + scale = Dim*20; + if (Dim==3 && VecType::name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi + if (Dim==4 && ( VecType::name() == "PtEtaPhiMVector" || VecType::name() == "PxPyPzMVector")) { +-#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__)) ++#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__)) + scale *= 1.E7; + #else + scale *= 10; +-- +2.31.1 + diff --git a/root-stressGraphics.patch b/root-stressGraphics.patch deleted file mode 100644 index c7ac170..0000000 --- a/root-stressGraphics.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 141dc7359fa890b081802532b97c25eeb5be5ee1 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 29 Jun 2020 12:53:07 +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 38474d0549..2aecf462e8 100644 ---- a/test/stressGraphics.ref -+++ b/test/stressGraphics.ref -@@ -3,7 +3,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# GIFRef# GIFErr# JPGRef# JP - 2 4627 600 14506 100 7608 1500 13368 7900 9208 3000 4690 600 - 3 452 50 12632 50 4797 350 11232 4200 3796 10700 492 50 - 4 23617 1500 19386 100 43077 12000 143320 123000 45665 11000 24908 1500 -- 5 1025 150 12802 150 19715 2900 33468 9900 30846 5000 1072 200 -+ 5 1025 150 12802 200 19715 2900 33468 9900 30846 5000 1072 200 - 6 430 50 12669 50 4041 400 9558 100 5325 700 471 50 - 7 4980 50 13893 50 8215 310 16143 1300 12230 500 5011 70 - 8 5442 80 13473 50 9599 150 18430 700 12398 300 5469 80 -@@ -41,7 +41,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# GIFRef# GIFErr# JPGRef# JP - 40 38312 200 56877 250 47205 3900 36524 11800 119641 8000 38121 200 - 41 15025 3000 29289 500 34091 1500 42525 11300 33336 3900 14787 4000 - 42 254604 5000 383258 7000 34608 5000 55666 30400 46534 6500 259594 7000 -- 43 4846 150 14075 100 24281 200 33239 600 25303 300 4877 150 -+ 43 4846 150 14075 150 24281 200 33239 600 25303 300 4877 150 - 44 1435879 150000 12837 100 96029 4000 25972 100 359846 15000 1085792 250000 - 45 5884 500 16577 200 30259 3500 40706 14000 30026 4000 0 0 - 46 5723 700 15720 200 14291 2600 32236 11000 16916 3200 5670 800 --- -2.26.2 - diff --git a/root-unbundle-gtest.patch b/root-unbundle-gtest.patch index 6821f22..ae180a2 100644 --- a/root-unbundle-gtest.patch +++ b/root-unbundle-gtest.patch @@ -1,7 +1,7 @@ -diff -ur root-6.22.00.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.22.00/cmake/modules/SearchInstalledSoftware.cmake ---- root-6.22.00.orig/cmake/modules/SearchInstalledSoftware.cmake 2020-06-14 17:51:48.000000000 +0200 -+++ root-6.22.00/cmake/modules/SearchInstalledSoftware.cmake 2020-06-21 18:29:13.973655810 +0200 -@@ -1592,100 +1592,17 @@ +diff -ur root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake +--- root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake 2021-06-28 11:17:14.000000000 +0200 ++++ root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake 2021-08-11 10:56:26.680731609 +0200 +@@ -1699,102 +1699,17 @@ #---Download googletest-------------------------------------------------------------- if (testing) @@ -62,7 +62,9 @@ diff -ur root-6.22.00.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.22 - # Wrap download, configure and build steps in a script to log output - LOG_DOWNLOAD ON - LOG_CONFIGURE ON -- LOG_BUILD ON) +- LOG_BUILD ON +- TIMEOUT 600 +- ) - - # Specify include dirs for gtest and gmock - ExternalProject_Get_Property(googletest source_dir) diff --git a/root-uring.patch b/root-uring.patch new file mode 100644 index 0000000..129c38e --- /dev/null +++ b/root-uring.patch @@ -0,0 +1,55 @@ +diff --git a/io/io/src/RRawFileUnix.cxx b/io/io/src/RRawFileUnix.cxx +index 829c5e4cb6..417c3adf30 100644 +--- a/io/io/src/RRawFileUnix.cxx ++++ b/io/io/src/RRawFileUnix.cxx +@@ -115,26 +115,33 @@ void ROOT::Internal::RRawFileUnix::OpenImpl() + void ROOT::Internal::RRawFileUnix::ReadVImpl(RIOVec *ioVec, unsigned int nReq) + { + #ifdef R__HAS_URING +- if (RIoUring::IsAvailable()) { +- RIoUring ring; +- std::vector reads; +- reads.reserve(nReq); +- for (std::size_t i = 0; i < nReq; ++i) { +- RIoUring::RReadEvent ev; +- ev.fBuffer = ioVec[i].fBuffer; +- ev.fOffset = ioVec[i].fOffset; +- ev.fSize = ioVec[i].fSize; +- ev.fFileDes = fFileDes; +- reads.push_back(ev); ++ thread_local bool uring_failed = false; ++ if (!uring_failed) { ++ try { ++ RIoUring ring; // throws std::runtime_error ++ std::vector reads; ++ reads.reserve(nReq); ++ for (std::size_t i = 0; i < nReq; ++i) { ++ RIoUring::RReadEvent ev; ++ ev.fBuffer = ioVec[i].fBuffer; ++ ev.fOffset = ioVec[i].fOffset; ++ ev.fSize = ioVec[i].fSize; ++ ev.fFileDes = fFileDes; ++ reads.push_back(ev); ++ } ++ ring.SubmitReadsAndWait(reads.data(), nReq); ++ for (std::size_t i = 0; i < nReq; ++i) { ++ ioVec[i].fOutBytes = reads.at(i).fOutBytes; ++ } ++ return; + } +- ring.SubmitReadsAndWait(reads.data(), nReq); +- for (std::size_t i = 0; i < nReq; ++i) { +- ioVec[i].fOutBytes = reads.at(i).fOutBytes; ++ catch(const std::runtime_error &e) { ++ Warning("RIoUring", "io_uring is unexpectedly not available because:\n%s", e.what()); ++ Warning("RRawFileUnix", ++ "io_uring setup failed, falling back to blocking I/O in ReadV"); ++ uring_failed = true; + } +- return; + } +- Warning("RRawFileUnix", +- "io_uring setup failed, falling back to default ReadV implementation"); + #endif + RRawFile::ReadVImpl(ioVec, nReq); + } diff --git a/root-werror-fix.patch b/root-werror-fix.patch deleted file mode 100644 index 341cca9..0000000 --- a/root-werror-fix.patch +++ /dev/null @@ -1,57 +0,0 @@ -From a5185f2cdf509314970c1b332c5926283f6962e2 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 22 Jun 2020 09:21:23 +0200 -Subject: [PATCH] Fix too aggressive -Werror replacements - -The replacements removes the -Werror option for externals, which is -intended. However, it also replaces e.g. -Werror=format-security with -=format-security, which results in compilation failures due to the -unknown option =format-security. ---- - builtins/davix/CMakeLists.txt | 2 +- - cmake/modules/SearchInstalledSoftware.cmake | 2 +- - interpreter/CMakeLists.txt | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/builtins/davix/CMakeLists.txt b/builtins/davix/CMakeLists.txt -index 52614ae2e0..c9b291ec45 100644 ---- a/builtins/davix/CMakeLists.txt -+++ b/builtins/davix/CMakeLists.txt -@@ -21,7 +21,7 @@ foreach(lib davix neon) - list(APPEND DAVIX_LIBRARIES ${DAVIX_PREFIX}/lib/${libname}) - endforeach() - --string(REPLACE "-Werror" "" DAVIX_CXX_FLAGS ${CMAKE_CXX_FLAGS}) -+string(REPLACE "-Werror " "" DAVIX_CXX_FLAGS "${CMAKE_CXX_FLAGS} ") - - ExternalProject_Add(DAVIX - URL ${DAVIX_URL}/davix-${DAVIX_VERSION}.tar.gz -diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake -index ad63f08cd0..36aa88d8cf 100644 ---- a/cmake/modules/SearchInstalledSoftware.cmake -+++ b/cmake/modules/SearchInstalledSoftware.cmake -@@ -9,7 +9,7 @@ include(ExternalProject) - include(FindPackageHandleStandardArgs) - - set(lcgpackages http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/sources) --string(REPLACE "-Werror" "" ROOT_EXTERNAL_CXX_FLAGS ${CMAKE_CXX_FLAGS}) -+string(REPLACE "-Werror " "" ROOT_EXTERNAL_CXX_FLAGS "${CMAKE_CXX_FLAGS} ") - - macro(find_package) - if(NOT "${ARGV0}" IN_LIST ROOT_BUILTINS) -diff --git a/interpreter/CMakeLists.txt b/interpreter/CMakeLists.txt -index 0f43893443..1274758410 100644 ---- a/interpreter/CMakeLists.txt -+++ b/interpreter/CMakeLists.txt -@@ -140,7 +140,7 @@ if(gcctoolchain) - endif() - - # We will not fix llvm or clang. --string(REPLACE "-Werror" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) -+string(REPLACE "-Werror " "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ") - - if(LLVM_SHARED_LINKER_FLAGS) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LLVM_SHARED_LINKER_FLAGS}") --- -2.26.2 - diff --git a/root-xproofd.patch b/root-xproofd.patch deleted file mode 100644 index a62c8d7..0000000 --- a/root-xproofd.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 0a752f33834a3520a7f18433f48bc9e1e9d32cea Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 30 Aug 2020 05:46:42 +0200 -Subject: [PATCH] Only install the xproofd script and man page if xproofd - option is on - ---- - CMakeLists.txt | 7 ++++++- - cmake/modules/RootConfiguration.cmake | 4 ++-- - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 76f6ad93b3..b37a1bbe70 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -528,7 +528,12 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_INSTALL_PREFIX) - if(webgui) - install(DIRECTORY ui5/ DESTINATION ${CMAKE_INSTALL_OPENUI5DIR}) - endif() -- install(DIRECTORY man/ DESTINATION ${CMAKE_INSTALL_MANDIR}) -+ if(xproofd AND xrootd AND ssl) -+ set(MAN_PATT_EXCL) -+ else() -+ set(MAN_PATT_EXCL PATTERN xproofd.1 EXCLUDE) -+ endif() -+ install(DIRECTORY man/ DESTINATION ${CMAKE_INSTALL_MANDIR} ${MAN_PATT_EXCL}) - install(DIRECTORY tutorials/ DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests) - install(FILES - cmake/modules/RootMacros.cmake -diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake -index 151235aa4e..a71ac72101 100644 ---- a/cmake/modules/RootConfiguration.cmake -+++ b/cmake/modules/RootConfiguration.cmake -@@ -819,7 +819,7 @@ configure_file(${CMAKE_SOURCE_DIR}/config/setxrd.sh ${CMAKE_RUNTIME_OUTPUT_DIREC - configure_file(${CMAKE_SOURCE_DIR}/config/proofserv.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/proofserv @ONLY NEWLINE_STYLE UNIX) - configure_file(${CMAKE_SOURCE_DIR}/config/roots.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/roots @ONLY NEWLINE_STYLE UNIX) - configure_file(${CMAKE_SOURCE_DIR}/config/root-help.el.in root-help.el @ONLY NEWLINE_STYLE UNIX) --if (XROOTD_FOUND AND XROOTD_NOMAIN) -+if(xproofd AND xrootd AND ssl AND XROOTD_NOMAIN) - configure_file(${CMAKE_SOURCE_DIR}/config/xproofd.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/xproofd @ONLY NEWLINE_STYLE UNIX) - endif() - if(WIN32) -@@ -857,7 +857,7 @@ install(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/memprobe - WORLD_EXECUTE WORLD_READ - DESTINATION ${CMAKE_INSTALL_BINDIR}) - --if (XROOTD_FOUND AND XROOTD_NOMAIN) -+if(xproofd AND xrootd AND ssl AND XROOTD_NOMAIN) - install(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/xproofd - PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ - GROUP_EXECUTE GROUP_READ --- -2.26.2 - diff --git a/root.spec b/root.spec index e61c683..26aeb7a 100644 --- a/root.spec +++ b/root.spec @@ -13,8 +13,6 @@ %endif %global python3_version_uscore %(tr . _ <<< "%{python3_version}") -%global py3_soabi %([ -x %{__python3} ] && %{__python3} -c "from distutils import sysconfig; print(sysconfig.get_config_vars().get('SOABI'))") - %if %{?fedora}%{!?fedora:0} >= 24 || %{?rhel}%{!?rhel:0} >= 8 # Building the experimental ROOT 7 classes requires c++-14. # This is the default for gcc 6.1 and later. @@ -51,9 +49,9 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.22.08 +Version: 6.24.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 11%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -83,105 +81,64 @@ Patch0: %{name}-fontconfig.patch Patch1: %{name}-32bit-dataframe.patch # Unbundle gtest Patch2: %{name}-unbundle-gtest.patch -# Fix multicore tests when running on machines with few cores -# https://github.com/root-project/root/pull/8068 -Patch3: %{name}-fix-multicore-tests-with-few-cores.patch -# Fedora's llvm patches -Patch4: %{name}-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch -Patch5: %{name}-Fix-return-type-in-ORC-readMem-client-interface.patch -Patch6: %{name}-PPC-Avoid-non-simple-MVT-in-STBRX-optimization.patch # Reduce memory usage of build # Do not link rootcling_stage1 and libCling in parallel -Patch7: %{name}-memory-usage.patch +Patch3: %{name}-memory-usage.patch # Reduce memory usage during linking on ARM and x86 by generating # smaller debuginfo for the llmv libraries. # Fedora builders run out of memory with the default setting. -Patch8: %{name}-memory-arm-x86.patch +Patch4: %{name}-memory-arm-x86.patch # Don't install minicern static library -Patch9: %{name}-dont-install-minicern.patch +Patch5: %{name}-dont-install-minicern.patch # Do not export Python modules in CMake config -Patch10: %{name}-no-export-python-modules.patch +Patch6: %{name}-no-export-python-modules.patch # Don't create documentation notebooks -Patch11: %{name}-doc-no-notebooks.patch +Patch7: %{name}-doc-no-notebooks.patch # Don't run tutorials that crash during doc generation -Patch12: %{name}-doxygen-crash.patch +Patch8: %{name}-doxygen-crash.patch # Compatibility with older gtest -Patch13: %{name}-old-gtest-compat.patch -# Fix -Wmissing-field-initializers in python bindings for -# Python 3.8 and 3.9 -# https://github.com/root-project/root/pull/5158 -Patch14: %{name}-python3.8-object.patch +Patch9: %{name}-old-gtest-compat.patch # Run some test on 32 bit that upstream has disabled -Patch15: %{name}-32bit-tests.patch +Patch10: %{name}-32bit-tests.patch # Workaround for initialization problems for PyROOT on # EPEL7 ppc64le # https://sft.its.cern.ch/jira/browse/ROOT-10622 -Patch16: %{name}-epel7-ppc64le-pyroot.patch -# Fix test failure on ppc64le and aarch64 -# https://github.com/root-project/root/pull/5867 -Patch17: %{name}-roostats-test-ppc64le-aarch64.patch -# Fix too aggressive -Werror replacements -# https://github.com/root-project/root/pull/5902 -Patch18: %{name}-werror-fix.patch -# Add missing call to TFile::SetCacheFileDir in a TMVA tutorial -# https://github.com/root-project/root/pull/5944 -Patch19: %{name}-setcachefiledir.patch -# Adjust stressGraphics.ref -# https://github.com/root-project/root/pull/5957 -Patch20: %{name}-stressGraphics.patch -# Fix off-by-one error in histogram v7 bin iterator -# https://github.com/root-project/root/pull/5958 -Patch21: %{name}-histv7-bin-iterator.patch -# Add back line accidentally removed in root-config -# https://github.com/root-project/root/pull/6236 -Patch22: %{name}-config-restore.patch -# Fix the RNTuple.LargeFile test on 32bit (i386 and armv7hf) -# https://github.com/root-project/root/pull/5977 -Patch23: %{name}-ntuple-largefile.patch -# Headers in new PyROOT are not installed with COMPONENT headers -# https://github.com/root-project/root/pull/6237 -Patch24: %{name}-install-headers-with-COMPONENT-headers.patch -# Fix doxygen issues -# https://github.com/root-project/root/pull/6029 -Patch25: %{name}-doxygen-filenames.patch -Patch26: %{name}-doxygen-endof-part2.patch -Patch27: %{name}-doxygen-parameter-names.patch -Patch28: %{name}-doxygen-macro-name.patch -Patch29: %{name}-doxygen-missing-underscore.patch -Patch30: %{name}-doxygen-md-comments.patch -# Fix bad regex in TProofMgr -# https://github.com/root-project/root/pull/6030 -Patch31: %{name}-fix-bad-regex.patch -# Increase timeout for ppc64le -# https://github.com/root-project/root/pull/6246 -Patch32: %{name}-increase-timeout-for-ppc64le.patch -# Only install the xproofd script and man page if option is on -# https://github.com/root-project/root/pull/6281 -Patch33: %{name}-xproofd.patch -# Avoid unneeded build requirement on srm-ifce-devel -# https://github.com/root-project/root/pull/6233 -Patch34: %{name}-srm-ifce-deps.patch -# Fix a shadow warning -# https://github.com/root-project/root/pull/6029 -Patch35: %{name}-fix-a-shadow-warning.patch -# Do not attempt to load_library the ROOT Pythonizations module -# https://github.com/root-project/root/pull/6883 -Patch36: %{name}-do-not-load_library-libROOTPythonizations.patch -# Filter out additional vDSO names for ppc -# https://github.com/root-project/root/pull/6887 -Patch37: %{name}-linux-vdso.patch -# JupyROOT has problems loading JSRootCore.js in jupyterlab -# Backported from upstream git -# https://github.com/root-project/root/issues/8459 -# https://bugzilla.redhat.com/show_bug.cgi?id=1973189 -Patch38: %{name}-jupyroot-jupyterlab-compat.patch -# Use local static script and style files for JupyROOT -Patch39: %{name}-jupyroot-static.patch - -# s390x suffers from endian issues resulting in failing tests -# and broken documentation generation -# https://sft.its.cern.ch/jira/browse/ROOT-8703 -ExcludeArch: s390x +Patch11: %{name}-epel7-ppc64le-pyroot.patch +# Use local static script and style files for JsMVA +Patch12: %{name}-jsmva-static.patch +# Compatibility with older python versions (no f-strings) +Patch13: %{name}-older-python.patch +# Fix multicore tests when running on machines with few cores +# https://github.com/root-project/root/pull/8068 +Patch14: %{name}-fix-multicore-tests-with-few-cores.patch +# Reapply altivec fix lost in the LLVM 9 upgrade +# https://github.com/root-project/root/pull/8069 +Patch15: %{name}-fix-ppc64le-compilation-with-gcc-10.patch +# Actually request the use of the large code model for ppc64le +# https://github.com/root-project/root/pull/8230 +Patch16: %{name}-ppc-codemodel.patch +# Do not request the large code model for ppc64le +# It causes segmentation faults +Patch17: %{name}-ppc-no-codemodel.patch +# Fall back to blocking I/O if uring fails +# Backported +# - commit 691403b2cc504fd4e3e7227894023913014a61ff +# - commit 956951ee2af83426d73ad72b2d966f9f1acbea83 +# - commit 16e64da11edf91fcf31c2fc474f573fca2ee863c +# - commit 311a6822f9b0fd438c4210ed60617b45f2ddbe74 +Patch18: %{name}-uring.patch +# Add missing classes in LinkDef.h files +# Backported +Patch19: %{name}-add-TTreeProcessorMP-to-LinkDef-file.patch +Patch20: %{name}-add-RDisplay-to-LinkDef-file.patch +Patch21: %{name}-add-RCutFlowReport-to-LinkDef-file.patch +# Fix "pointer is null" warnings +# Backported +Patch22: %{name}-ptr-is-null-RooFit-TMVA.patch +Patch23: %{name}-ptr-is-null-TStreamerInfo.patch +# Fix two failing tests on s390x +# https://github.com/root-project/root/pull/8826 +Patch24: %{name}-stress-s390x.patch BuildRequires: make %if %{?rhel}%{!?rhel:0} == 7 @@ -275,6 +232,13 @@ BuildRequires: cmake-data >= 3.18.3-1 %else BuildRequires: openblas-devel %endif +BuildRequires: json-devel +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +BuildRequires: liburing-devel +%endif +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +BuildRequires: python%{python3_pkgversion}-pandas +%endif BuildRequires: doxygen BuildRequires: graphviz BuildRequires: yuicompressor @@ -527,6 +491,17 @@ Requires: %{name}-tmva = %{version}-%{release} %description -n python2-jsmva TMVA interface used by JupyROOT. + +%package -n python2-distrdf +Summary: Distributed RDataFrame +BuildArch: noarch +%{?python_provide:%python_provide python2-distrdf} +Requires: python2-%{name} = %{version}-%{release} +Requires: %{name}-tree-dataframe = %{version}-%{release} + +%description -n python2-distrdf +A layer on top of RDataFrame to enable distributed computations. It is +a port of the previously known PyRDF python package. %endif %package -n python%{python3_pkgversion}-%{name} @@ -573,6 +548,17 @@ Requires: %{name}-tmva = %{version}-%{release} %description -n python%{python3_pkgversion}-jsmva TMVA interface used by JupyROOT. +%package -n python%{python3_pkgversion}-distrdf +Summary: Distributed RDataFrame +BuildArch: noarch +%{?python_provide:%python_provide python%{python3_pkgversion}-distrdf} +Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} +Requires: %{name}-tree-dataframe = %{version}-%{release} + +%description -n python%{python3_pkgversion}-distrdf +A layer on top of RDataFrame to enable distributed computations. It is +a port of the previously known PyRDF python package. + %package r Summary: R interface for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -870,6 +856,7 @@ in ROOT. %package gui-recorder Summary: Interface for recording and replaying events in ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} @@ -1298,7 +1285,7 @@ access to http based storage such as webdav and S3. Summary: HTTP server extension for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: js-jsroot +Requires: js-jsroot >= 6 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -1423,6 +1410,7 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) @@ -1454,6 +1442,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-minuit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1479,6 +1468,7 @@ License: BSD Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-mathmore%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1498,6 +1488,25 @@ suitable for adoption in different disciplines as well. This package contains RooFit classes that use the mathmore library. +%package roofit-batchcompute +Summary: Optimized computation functions for PDFs +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} + +%description roofit-batchcompute +While fitting, a significant amount of time and processing power is +spent on computing the probability function for every event and PDF +involved in the fitting model. To speed up this process, roofit can +use the computation functions provided in this library. The functions +provided here process whole data arrays (batches) instead of a single +event at a time, as in the legacy evaluate() function in roofit. In +addition, the code is written in a manner that allows for compiler +optimizations, notably auto-vectorization. This library is compiled +multiple times for different vector instuction set architectures and +the optimal code is executed during runtime, as a result of an +automatic hardware detection mechanism that this library contains. + %package roostats Summary: Statistical tools built on top of RooFit License: BSD @@ -1721,7 +1730,7 @@ written in python. Summary: Static files for the Jupyter ROOT Notebook BuildArch: noarch Requires: %{name}-core = %{version}-%{release} -Requires: js-jsroot +Requires: js-jsroot >= 6 %if %{?fedora}%{!?fedora:0} >= 26 # jupyter-notebook not available in # Fedora <= 25 or RHEL/EPEL - some functionality missing @@ -1754,6 +1763,7 @@ Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release} @@ -1770,6 +1780,7 @@ Summary: GUI browsable (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-draw%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} @@ -1781,6 +1792,8 @@ Summary: Browser (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-eve7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webgui6%{?_isa} = %{version}-%{release} @@ -1897,21 +1910,6 @@ This package contains an ntuple extension for ROOT 7. %patch22 -p1 %patch23 -p1 %patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1920,8 +1918,17 @@ rm -rf graf2d/asimage/src/libAfterImage rm -rf graf3d/ftgl/src graf3d/ftgl/inc # * freetype rm -rf graf2d/freetype/src -# * davix, glew, lz4, openssl, pcre, xxhash, zlib, zstd -rm -rf builtins +# * davix, glew, lz4, nlohmann, openssl, pcre, tbb, xxhash, zlib, zstd +rm -rf builtins/davix +rm -rf builtins/glew +rm -rf builtins/lz4 +rm -rf builtins/nlohmann +rm -rf builtins/openssl +rm -rf builtins/pcre +rm -rf builtins/tbb +rm -rf builtins/xxhash +rm -rf builtins/zlib +rm -rf builtins/zstd # * lzma rm -rf core/lzma/src/*.tar.gz # * gl2ps @@ -1944,9 +1951,6 @@ sed /RWrap_libcpp_string_view.h/d -i build/unix/module.modulemap # * jsroot rm -rf js/* -# Fix file permissions -chmod -x interpreter/llvm/src/lib/Target/X86/X86EvexToVex.cpp - # Remove unsupported man page macros sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* @@ -1995,6 +1999,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_afterimage:BOOL=OFF \ -Dbuiltin_cfitsio:BOOL=OFF \ -Dbuiltin_clang:BOOL=ON \ + -Dbuiltin_cling:BOOL=ON \ -Dbuiltin_davix:BOOL=OFF \ -Dbuiltin_fftw3:BOOL=OFF \ -Dbuiltin_freetype:BOOL=OFF \ @@ -2005,7 +2010,9 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_llvm:BOOL=ON \ -Dbuiltin_lz4:BOOL=OFF \ -Dbuiltin_lzma:BOOL=OFF \ + -Dbuiltin_nlohmannjson:BOOL=OFF \ -Dbuiltin_openssl:BOOL=OFF \ + -Dbuiltin_openui5:BOOL=ON \ -Dbuiltin_pcre:BOOL=OFF \ -Dbuiltin_tbb:BOOL=OFF \ -Dbuiltin_unuran:BOOL=OFF \ @@ -2020,20 +2027,15 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Darrow:BOOL=OFF \ -Dasimage:BOOL=ON \ -Dccache:BOOL=OFF \ + -Ddistcc:BOOL=OFF \ -Dcefweb:BOOL=OFF \ -Dclad:BOOL=OFF \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ %if %{root7} -%if %{?fedora}%{!?fedora:0} >= 34 - -DCMAKE_CXX_STANDARD=17 \ -%else - -DCMAKE_CXX_STANDARD=14 \ -%endif -Droot7:BOOL=ON \ -Dwebgui:BOOL=ON \ %else - -DCMAKE_CXX_STANDARD=11 \ -Droot7:BOOL=OFF \ -Dwebgui:BOOL=OFF \ %endif @@ -2107,6 +2109,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva-pymva:BOOL=ON \ -Dtmva-rmva:BOOL=ON \ -Dunuran:BOOL=ON \ +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 + -During:BOOL=ON \ +%else + -During:BOOL=OFF \ +%endif -Dvc:BOOL=OFF \ -Dvdt:BOOL=OFF \ -Dveccore:BOOL=OFF \ @@ -2203,6 +2210,7 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so mkdir -p %{buildroot}%{python2_sitelib} cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib} +cp -pr %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python2_sitelib} # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2217,6 +2225,10 @@ echo 'Name: JsMVA' > \ %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info +echo 'Name: DistRDF' > \ + %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info +echo 'Version: %{version}' >> \ + %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info %endif @@ -2225,7 +2237,7 @@ mkdir -p %{buildroot}%{python3_sitearch} mv %{buildroot}%{_libdir}/%{name}/cppyy %{buildroot}%{python3_sitearch} ln -s ../../root/libcppyy%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libcppyy%{python3_version_uscore}.%{py3_soabi}.so + %{buildroot}%{python3_sitearch}/libcppyy%{python3_version_uscore}%{python3_ext_suffix} mv %{buildroot}%{_libdir}/%{name}/cppyy_backend %{buildroot}%{python3_sitearch} ln -s ../../root/libcppyy_backend%{python3_version_uscore}.so.%{version} \ @@ -2233,18 +2245,19 @@ ln -s ../../root/libcppyy_backend%{python3_version_uscore}.so.%{version} \ mv %{buildroot}%{_libdir}/%{name}/ROOT %{buildroot}%{python3_sitearch} mv %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.%{py3_soabi}.so + %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion} rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so mv %{buildroot}%{_libdir}/%{name}/JupyROOT %{buildroot}%{python3_sitearch} mv %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.%{py3_soabi}.so + %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so.%{libversion} rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so mkdir -p %{buildroot}%{python3_sitelib} mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib} +mv %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python3_sitelib} # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2259,6 +2272,10 @@ echo 'Name: JsMVA' > \ %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info +echo 'Name: DistRDF' > \ + %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info +echo 'Version: %{version}' >> \ + %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info # Put jupyter stuff in the right places mkdir -p %{buildroot}%{_datadir}/jupyter/kernels @@ -2284,8 +2301,7 @@ sed -e '/^\#!/d' \ rm -rf %{buildroot}%{_datadir}/%{name}/notebook/custom rm -rf %{buildroot}%{_datadir}/%{name}/notebook/html rm -rf %{buildroot}%{_datadir}/%{name}/notebook/kernels - -ln -s /usr/share/javascript/jsroot %{buildroot}%{_datadir}/%{name}/notebook +rm %{buildroot}%{_datadir}/%{name}/notebook/jupyter_notebook_config.py # Replace the rootnb.exe wrapper with a simpler one cat > %{buildroot}%{_bindir}/rootnb.exe << EOF @@ -2345,6 +2361,9 @@ rm %{buildroot}%{_datadir}/%{name}/macros/fileopen.C # Remove plugin definitions for non-built and obsolete plugins pushd %{buildroot}%{_datadir}/%{name}/plugins +%if ! %{root7} +rm TBrowserImp/P030_RWebBrowserImp.C +%endif rm TDataSetManager/P020_TDataSetManagerAliEn.C rm TFile/P070_TAlienFile.C rm TGLManager/P020_TGWin32GLManager.C @@ -2494,11 +2513,22 @@ popd # http://root.cern.ch/files/root_download_stats.sqlite # # - gtest-tree-treeplayer-test-treeprocessormt-remotefiles -# - tutorial-dataframe-df102_NanoAODDimuonAnalysis -# - tutorial-dataframe-df103_NanoAODHiggsAnalysis +# - tutorial-dataframe-df102_NanoAODDimuonAnalysis(-py)? +# - tutorial-dataframe-df103_NanoAODHiggsAnalysis(-py)? # reads input data over network: # root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/ # +# - tutorial-dataframe-df104_HiggsToTwoPhotons-py +# - tutorial-dataframe-df105_WBosonAnalysis-py +# - tutorial-dataframe-df106_HiggsToFourLeptons-py +# - tutorial-dataframe-df107_SingleTopAnalysis-py +# reads input data over network: +# root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ +# +# - tutorial-v7-climate-global_temperatures +# reads input data over network +# http://root.cern./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) @@ -2525,9 +2555,32 @@ popd # reads input data over network # http://root.cern/files/tmva101.root # +# - pyunittests-pyroot-dependency-versions # - pyunittests-pyroot-numbadeclare +# - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py # these tests require the numba python module which is not available +# +# - tutorial-v7-concurrentfill.cxx +# - tutorial-v7-draw.cxx +# - tutorial-v7-draw_frame.cxx +# - tutorial-v7-draw_legend.cxx +# - tutorial-v7-draw_mt.cxx +# - tutorial-v7-draw_rh1.cxx +# - tutorial-v7-draw_rh1_large.cxx +# - tutorial-v7-draw_rh2.cxx +# - tutorial-v7-draw_rh2_colz.cxx +# - tutorial-v7-draw_rh2_large.cxx +# - tutorial-v7-draw_rh3.cxx +# - tutorial-v7-draw_rh3_large.cxx +# - tutorial-v7-draw_subpads.cxx +# - tutorial-v7-histops.cxx +# - tutorial-v7-perf.cxx +# - tutorial-v7-perfcomp.cxx +# - tutorial-v7-simple.cxx +# Fails with "already deserialized this template specialization" +# https://github.com/root-project/root/issues/8073 + excluded="\ test-stressIOPlugins|\ tutorial-dataframe-df101_h1Analysis|\ @@ -2541,6 +2594,11 @@ tutorial-dataframe-df..._SQlite|\ gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\ tutorial-dataframe-df102_NanoAODDimuonAnalysis|\ tutorial-dataframe-df103_NanoAODHiggsAnalysis|\ +tutorial-dataframe-df104_HiggsToTwoPhotons-py|\ +tutorial-dataframe-df105_WBosonAnalysis-py|\ +tutorial-dataframe-df106_HiggsToFourLeptons-py|\ +tutorial-dataframe-df107_SingleTopAnalysis-py|\ +tutorial-v7-climate-global_temperatures|\ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ tutorial-v7-line.cxx|\ @@ -2550,8 +2608,48 @@ gtest-tmva-tmva-test-rstandardscaler|\ tutorial-tmva-tmva003_RReader|\ tutorial-tmva-tmva004_RStandardScaler|\ tutorial-tmva-tmva103_Application|\ +pyunittests-pyroot-dependency-versions|\ pyunittests-pyroot-numbadeclare|\ -tutorial-pyroot-pyroot004_NumbaDeclare-py" +test-import-numba|\ +tutorial-pyroot-pyroot004_NumbaDeclare-py|\ +tutorial-v7-concurrentfill.cxx|\ +tutorial-v7-draw.cxx|\ +tutorial-v7-draw_frame.cxx|\ +tutorial-v7-draw_legend.cxx|\ +tutorial-v7-draw_mt.cxx|\ +tutorial-v7-draw_rh1.cxx|\ +tutorial-v7-draw_rh1_large.cxx|\ +tutorial-v7-draw_rh2.cxx|\ +tutorial-v7-draw_rh2_colz.cxx|\ +tutorial-v7-draw_rh2_large.cxx|\ +tutorial-v7-draw_rh3.cxx|\ +tutorial-v7-draw_rh3_large.cxx|\ +tutorial-v7-draw_subpads.cxx|\ +tutorial-v7-histops.cxx|\ +tutorial-v7-perf.cxx|\ +tutorial-v7-perfcomp.cxx|\ +tutorial-v7-simple.cxx" + +%if %{?rhel}%{!?rhel:0} == 7 +# - test-import-pandas +# - tutorial-dataframe-df026_AsNumpyArrays-py +# requires the pandas python module which is not available in EPEL 7 +# +# - tutorial-multicore-mp001_fillHistos +# - tutorial-multicore-mp101_fillNtuples +# - tutorial-multicore-mp102_readNtuplesFillHistosAndFit +# - tutorial-multicore-mp201_parallelHistoFill +# fails intermittently on EPEL 7 with the error +# symbol '_Z6MPRecvP7TSocket' unresolved while linking +# symbol '_Z6MPSendP7TSocketj' unresolved while linking +excluded="${excluded}|\ +test-import-pandas|\ +tutorial-dataframe-df026_AsNumpyArrays-py|\ +tutorial-multicore-mp001_fillHistos|\ +tutorial-multicore-mp101_fillNtuples|\ +tutorial-multicore-mp102_readNtuplesFillHistosAndFit|\ +tutorial-multicore-mp201_parallelHistoFill" +%endif %ifarch %{ix86} %{arm} # Tests failing on 32 bit architectures (dataframe) @@ -2559,51 +2657,226 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py" # - gtest-tree-dataframe-test-dataframe-cache # - gtest-tree-dataframe-test-dataframe-callbacks # - gtest-tree-dataframe-test-dataframe-colnames +# - gtest-tree-dataframe-test-dataframe-concurrency # - gtest-tree-dataframe-test-dataframe-display # - gtest-tree-dataframe-test-dataframe-friends # - gtest-tree-dataframe-test-dataframe-helpers # - gtest-tree-dataframe-test-dataframe-interface +# - gtest-tree-dataframe-test-dataframe-leaves # - gtest-tree-dataframe-test-dataframe-ranges +# - gtest-tree-dataframe-test-dataframe-regression # - gtest-tree-dataframe-test-dataframe-simple # - gtest-tree-dataframe-test-dataframe-snapshot -# - gtest-tree-dataframe-test-datasource-root +# - gtest-tree-dataframe-test-dataframe-vecops +# - gtest-tree-dataframe-test-datasource-csv +# - gtest-tree-dataframe-test-datasource-more +# - gtest-tree-dataframe-test-datasource-sqlite # - gtest-tree-dataframe-test-datasource-trivial excluded="${excluded}|\ gtest-tree-dataframe-test-dataframe-cache|\ gtest-tree-dataframe-test-dataframe-callbacks|\ gtest-tree-dataframe-test-dataframe-colnames|\ +gtest-tree-dataframe-test-dataframe-concurrency|\ gtest-tree-dataframe-test-dataframe-display|\ gtest-tree-dataframe-test-dataframe-friends|\ gtest-tree-dataframe-test-dataframe-helpers|\ gtest-tree-dataframe-test-dataframe-interface|\ +gtest-tree-dataframe-test-dataframe-leaves|\ gtest-tree-dataframe-test-dataframe-ranges|\ +gtest-tree-dataframe-test-dataframe-regression|\ gtest-tree-dataframe-test-dataframe-simple|\ gtest-tree-dataframe-test-dataframe-snapshot|\ -gtest-tree-dataframe-test-datasource-root|\ +gtest-tree-dataframe-test-dataframe-vecops|\ +gtest-tree-dataframe-test-datasource-csv|\ +gtest-tree-dataframe-test-datasource-more|\ +gtest-tree-dataframe-test-datasource-sqlite|\ gtest-tree-dataframe-test-datasource-trivial" %endif %ifarch %{arm} -# This test fails on 32 bit arm +# 32 bit arm specific failures +# +# - gtest-tree-tree-test-testBulkApi # - gtest-tree-tree-test-testBulkApiSillyStruct -excluded="${excluded}|gtest-tree-tree-test-testBulkApiSillyStruct" +# segmentation fault - bus error +# +# - gtest-tree-dataframe-test-dataframe-histomodels +# - gtest-tree-ntuple-v7-test-ntuple-rdf +# - pyunittests-dataframe-cache +# - pyunittests-dataframe-histograms +# - pyunittests-dataframe-merge-results +# - pyunittests-dataframe-misc +# - pyunittests-pyroot-pyz-rdataframe-makenumpy +# - pyunittests-pyroot-pyz-tf-pycallables +# - test-stressiterators-interpreted +# - tutorial-dataframe-df001_introduction(-py) +# - tutorial-dataframe-df002_dataModel(-py) +# - tutorial-dataframe-df003_profiles(-py) +# - tutorial-dataframe-df005_fillAnyObject +# - tutorial-dataframe-df006_ranges(-py) +# - tutorial-dataframe-df007_snapshot(-py) +# - tutorial-dataframe-df010_trivialDataSource(-py) +# - tutorial-dataframe-df012_DefinesAndFiltersAsStrings(-py) +# - tutorial-dataframe-df014_CSVDataSource(-py) +# - tutorial-dataframe-df015_LazyDataSource +# - tutorial-dataframe-df016_vecOps(-py) +# - tutorial-dataframe-df017_vecOpsHEP(-py) +# - tutorial-dataframe-df019_Cache(-py) +# - tutorial-dataframe-df020_helpers +# - tutorial-dataframe-df021_createTGraph(-py) +# - tutorial-dataframe-df022_useKahan +# - tutorial-dataframe-df025_RNode +# - tutorial-dataframe-df031_Stats(-py) +# - tutorial-hist-sparsehist +# - tutorial-r-example +# - tutorial-r-DataFrame +# - tutorial-r-Function +# - tutorial-r-Functor +# - tutorial-r-GlobalMinimization +# - tutorial-r-Integration +# - tutorial-r-Minimization +# Not implemented relocation type! +excluded="${excluded}|\ +gtest-tree-tree-test-testBulkApi\$\$|\ +gtest-tree-tree-test-testBulkApiSillyStruct|\ +gtest-tree-dataframe-test-dataframe-histomodels|\ +gtest-tree-ntuple-v7-test-ntuple-rdf|\ +pyunittests-dataframe-cache|\ +pyunittests-dataframe-histograms|\ +pyunittests-dataframe-merge-results|\ +pyunittests-dataframe-misc|\ +pyunittests-pyroot-pyz-rdataframe-makenumpy|\ +pyunittests-pyroot-pyz-tf-pycallables|\ +test-stressiterators-interpreted|\ +tutorial-dataframe-df001_introduction|\ +tutorial-dataframe-df002_dataModel|\ +tutorial-dataframe-df003_profiles|\ +tutorial-dataframe-df005_fillAnyObject|\ +tutorial-dataframe-df006_ranges|\ +tutorial-dataframe-df007_snapshot|\ +tutorial-dataframe-df010_trivialDataSource|\ +tutorial-dataframe-df012_DefinesAndFiltersAsStrings|\ +tutorial-dataframe-df014_CSVDataSource|\ +tutorial-dataframe-df015_LazyDataSource|\ +tutorial-dataframe-df016_vecOps|\ +tutorial-dataframe-df017_vecOpsHEP|\ +tutorial-dataframe-df019_Cache|\ +tutorial-dataframe-df020_helpers|\ +tutorial-dataframe-df021_createTGraph|\ +tutorial-dataframe-df022_useKahan|\ +tutorial-dataframe-df025_RNode|\ +tutorial-dataframe-df031_Stats|\ +tutorial-hist-sparsehist|\ +tutorial-r-example|\ +tutorial-r-DataFrame|\ +tutorial-r-Function|\ +tutorial-r-Functor|\ +tutorial-r-GlobalMinimization|\ +tutorial-r-Integration|\ +tutorial-r-Minimization" %endif %ifarch %{power64} aarch64 # This test fails on ppc64le and aarch64 (but not on x86_64) # The interpreted version works though, only compiled version fails # - test-stresshistofit -excluded="${excluded}|test-stresshistofit" +excluded="${excluded}|test-stresshistofit\$\$" %endif -%ifarch %{ix86} -# This test fails with "symbol '__atomic_fetch_add_8' unresolved" on ix86 -# https://github.com/root-project/root/issues/6813 -excluded="${excluded}|pyunittests-pyroot-pyz-ttree-branch-attr" +%ifarch %{power64} +# PPC64LE specific failures +# +# - test-stressgraphics(-interpreted) +excluded="${excluded}|test-stressgraphics" + +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +# - pyunittests-pyroot-pyz-array-interface +# - pyunittests-pyroot-pyz-rdataframe-asnumpy +# - pyunittests-pyroot-pyz-rdataframe-makenumpy +# - pyunittests-pyroot-pyz-rvec-asrvec +# - pyunittests-pyroot-pyz-ttree-asmatrix +# - tutorial-dataframe-df026_AsNumpyArrays-py +# - tutorial-pyroot-pyroot001_arrayInterface-py +# - tutorial-pyroot-pyroot002_TTreeAsMatrix-py +excluded="${excluded}|\ +pyunittests-pyroot-pyz-array-interface|\ +pyunittests-pyroot-pyz-rdataframe-asnumpy|\ +pyunittests-pyroot-pyz-rdataframe-makenumpy|\ +pyunittests-pyroot-pyz-rvec-asrvec|\ +pyunittests-pyroot-pyz-ttree-asmatrix|\ +tutorial-dataframe-df026_AsNumpyArrays-py|\ +tutorial-pyroot-pyroot001_arrayInterface-py|\ +tutorial-pyroot-pyroot002_TTreeAsMatrix-py" +%endif + +%if %{?fedora}%{!?fedora:0} +# - pyunittests-pyroot-pyz-rtensor +# - pyunittests-pyroot-pyz-ttree-branch +# - pyunittests-pyroot-pyz-ttree-setbranchaddress +# - tutorial-r-example +# - tutorial-r-DataFrame +# - tutorial-r-Function +# - tutorial-r-Functor +# - tutorial-r-GlobalMinimization +# - tutorial-r-Integration +# - tutorial-r-Interpolation +# - tutorial-r-Minimization +# - tutorial-r-SimpleFitting +# - tutorial-tmva-envelope-classification +# - tutorial-tmva-TMVA* +# Relocation R_PPC64_REL32 overflow +excluded="${excluded}|\ +pyunittests-pyroot-pyz-rtensor|\ +pyunittests-pyroot-pyz-ttree-branch|\ +pyunittests-pyroot-pyz-ttree-setbranchaddress|\ +tutorial-r-example|\ +tutorial-r-DataFrame|\ +tutorial-r-Function|\ +tutorial-r-Functor|\ +tutorial-r-GlobalMinimization|\ +tutorial-r-Integration|\ +tutorial-r-Interpolation|\ +tutorial-r-Minimization|\ +tutorial-r-SimpleFitting|\ +tutorial-tmva-envelope-classification|\ +tutorial-tmva-TMVA" +%endif +%endif + +%ifarch s390x +# s390x specific failures +# +# - gtest-roofit-roofitcore-test-testNaNPacker +# - gtest-tree-ntuple-v7-test-ntuple-basics +# - gtest-tree-ntuple-v7-test-ntuple-extended +# - gtest-tree-ntuple-v7-test-ntuple-minifile +# - gtest-tree-ntuple-v7-test-ntuple-storage +# - pyunittests-pyroot-pyz-rtensor +# - test-stresshistogram(-interpreted) +# - test-stresshistofit(-interpreted) +# - tutorial-dataframe-df006_ranges-py +# - tutorial-roofit-rf203_ranges-py +# - tutorial-roofit-rf612_recoverFromInvalidParameters +# - tutorial-roofit-rf902_numgenconfig-py +# - tutorial-v7-ntuple-ntpl005_introspection +excluded="${excluded}|\ +gtest-roofit-roofitcore-test-testNaNPacker|\ +gtest-tree-ntuple-v7-test-ntuple-basics|\ +gtest-tree-ntuple-v7-test-ntuple-extended|\ +gtest-tree-ntuple-v7-test-ntuple-minifile|\ +gtest-tree-ntuple-v7-test-ntuple-storage|\ +pyunittests-pyroot-pyz-rtensor|\ +test-stresshistogram|\ +test-stresshistofit|\ +tutorial-dataframe-df006_ranges-py|\ +tutorial-roofit-rf203_ranges-py|\ +tutorial-roofit-rf612_recoverFromInvalidParameters|\ +tutorial-roofit-rf902_numgenconfig-py|\ +tutorial-v7-ntuple-ntpl005_introspection" %endif # Filter out parts of tests that require remote network access -GTEST_FILTER=-RRawFile.Remote:RSqliteDS.Davix \ +GTEST_FILTER=-RCsvDS.Remote:RRawFile.Remote:RSqliteDS.Davix \ make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" popd @@ -2652,6 +2925,7 @@ if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then fi cat << EOF >> /etc/jupyter/jupyter_notebook_config.py # Extra static path for JupyROOT - start - do not remove this line +c.NotebookApp.extra_static_paths.append('%{_datadir}/javascript/jsroot') c.NotebookApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') # Extra static path for JupyROOT - end - do not remove this line EOF @@ -2660,6 +2934,7 @@ if [ -e /etc/jupyter/jupyter_server_config.py ] ; then fi cat << EOF >> /etc/jupyter/jupyter_server_config.py # Extra static path for JupyROOT - start - do not remove this line +c.ServerApp.extra_static_paths.append('%{_datadir}/javascript/jsroot') c.ServerApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') # Extra static path for JupyROOT - end - do not remove this line EOF @@ -2768,6 +3043,7 @@ fi %ldconfig_scriptlets roofit %ldconfig_scriptlets roofit-core %ldconfig_scriptlets roofit-more +%ldconfig_scriptlets roofit-batchcompute %ldconfig_scriptlets roostats %ldconfig_scriptlets sql-mysql %ldconfig_scriptlets sql-odbc @@ -2886,13 +3162,12 @@ fi # They therefore should not be marked doc. %{_pkgdocdir}/CREDITS %{_pkgdocdir}/LICENSE -%doc %{_pkgdocdir}/README +%doc %{_pkgdocdir}/DEVELOPMENT.md %doc %{_pkgdocdir}/ReleaseNotes %license LICENSE LGPL2_1.txt %files multiproc -f includelist-core-multiproc %{_libdir}/%{name}/libMultiProc.* -%{_libdir}/%{name}/libMultiProc_rdict.pcm %files cling %{_bindir}/genreflex @@ -2936,6 +3211,10 @@ fi %files -n python2-jsmva %{python2_sitelib}/JsMVA %{python2_sitelib}/JsMVA-*.egg-info + +%files -n python2-distrdf +%{python2_sitelib}/DistRDF +%{python2_sitelib}/DistRDF-*.egg-info %endif %files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot @@ -2943,9 +3222,9 @@ fi %{python3_sitearch}/cppyy_backend %{python3_sitearch}/ROOT %{python3_sitearch}/ROOT-*.egg-info -%{python3_sitearch}/libcppyy%{python3_version_uscore}.%{py3_soabi}.so +%{python3_sitearch}/libcppyy%{python3_version_uscore}%{python3_ext_suffix} %{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so -%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.%{py3_soabi}.so +%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} %{_libdir}/%{name}/libcppyy%{python3_version_uscore}.* %{_libdir}/%{name}/libcppyy_backend%{python3_version_uscore}.* %dir %{_includedir}/%{name}/CPyCppyy @@ -2953,7 +3232,7 @@ fi %files -n python%{python3_pkgversion}-jupyroot %{python3_sitearch}/JupyROOT %{python3_sitearch}/JupyROOT-*.egg-info -%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.%{py3_soabi}.so +%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} %{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot %doc bindings/jupyroot/README.md @@ -2961,6 +3240,10 @@ fi %{python3_sitelib}/JsMVA %{python3_sitelib}/JsMVA-*.egg-info +%files -n python%{python3_pkgversion}-distrdf +%{python3_sitelib}/DistRDF +%{python3_sitelib}/DistRDF-*.egg-info + %files r -f includelist-bindings-r %{_libdir}/%{name}/libRInterface.* %{_libdir}/%{name}/libRInterface_rdict.pcm @@ -3411,6 +3694,11 @@ fi %{_libdir}/%{name}/libRooFitMore.* %{_libdir}/%{name}/libRooFitMore_rdict.pcm +%files roofit-batchcompute -f includelist-roofit-batchcompute +%{_libdir}/%{name}/libRooBatchCompute.* +%{_libdir}/%{name}/libRooBatchCompute_* +%doc roofit/batchcompute/README.md + %files roostats -f includelist-roofit-roostats %{_libdir}/%{name}/libRooStats.* %{_libdir}/%{name}/libRooStats_rdict.pcm @@ -3519,6 +3807,7 @@ fi %files gui-browsable -f includelist-gui-browsable %{_libdir}/%{name}/libROOTBrowsable.* %{_libdir}/%{name}/libROOTBrowsable_rdict.pcm +%{_libdir}/%{name}/libROOTBranchBrowseProvider.* %{_libdir}/%{name}/libROOTHistDrawProvider.* %{_libdir}/%{name}/libROOTLeafDraw6Provider.* %{_libdir}/%{name}/libROOTLeafDraw7Provider.* @@ -3528,6 +3817,11 @@ fi %files gui-browserv7 -f includelist-gui-browserv7 %{_libdir}/%{name}/libROOTBrowserv7.* %{_libdir}/%{name}/libROOTBrowserv7_rdict.pcm +%{_libdir}/%{name}/libROOTBrowserGeomWidget.* +%{_libdir}/%{name}/libROOTBrowserRCanvasWidget.* +%{_libdir}/%{name}/libROOTBrowserTCanvasWidget.* +%{_libdir}/%{name}/libROOTBrowserWidgets.* +%{_datadir}/%{name}/plugins/TBrowserImp/P030_RWebBrowserImp.C %files gui-canvaspainter %{_libdir}/%{name}/libROOTCanvasPainter.* @@ -3565,6 +3859,15 @@ fi %endif %changelog +* Wed Aug 04 2021 Mattias Ellert - 6.24.02-1 +- Update to 6.24.02 +- ROOT now uses llvm/clang version 9 (updated from version 5) +- No longer exclude arch s390x (better supported in llvm/clang 9) +- Drop patches accepted upstream or previously backported +- Backport some fixes that make more tests work +- New subpackages: python{2,3}-distrdf, root-roofit-batchcompute +- Require js-jsroot >= 6 + * Mon Jul 26 2021 Mattias Ellert - 6.22.08-11 - Drop the memstat module for Fedora 35+ The required __malloc_hook was removed from glibc 2.33.9000-48 diff --git a/sources b/sources index 9b75929..af28a1d 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.22.08.tar.xz) = 9080168116ffdd07cfce411dca77404177cd3ba57af498419432ca95169dbce581a7a2a667c22273685d659b3e0398d567b2d51d07ca767b076ee5196395d828 +SHA512 (root-6.24.02.tar.xz) = 2f2bc89b436c7bc703bc88290f5047fae941950f98bd549fdd43121f7742a4030e153cc12a52d81c9a76a32e8d7be197a85776b721fe1643439827fb5b49d1c0 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 19b1aedc980e8705d77d742b19b03a5be416a9b3 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 28 Aug 2021 13:11:27 +0200 Subject: [PATCH 013/127] Update to 6.24.04 Add dependency on json-devel to root-core Disable uring in EPEL 8 (liburing is available, but uring not supported by kernel) --- root.spec | 58 +++++++++++++++++++++++++++++++------------------------ sources | 2 +- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/root.spec b/root.spec index 26aeb7a..3c93d49 100644 --- a/root.spec +++ b/root.spec @@ -49,7 +49,7 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.24.02 +Version: 6.24.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -233,7 +233,7 @@ BuildRequires: cmake-data >= 3.18.3-1 BuildRequires: openblas-devel %endif BuildRequires: json-devel -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +%if %{?fedora}%{!?fedora:0} BuildRequires: liburing-devel %endif %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 @@ -362,6 +362,8 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-dataframe%{?_isa} = %{version}-%{release} Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: %{name}-vecops%{?_isa} = %{version}-%{release} +# To resolve dependency in installed ROOTConfig.cmake +Requires: json-devel # Fonts Requires: xorg-x11-fonts-ISO8859-1-75dpi Requires: font(freesans) @@ -2109,7 +2111,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva-pymva:BOOL=ON \ -Dtmva-rmva:BOOL=ON \ -Dunuran:BOOL=ON \ -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +%if %{?fedora}%{!?fedora:0} -During:BOOL=ON \ %else -During:BOOL=OFF \ @@ -2560,27 +2562,6 @@ popd # - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py # these tests require the numba python module which is not available -# -# - tutorial-v7-concurrentfill.cxx -# - tutorial-v7-draw.cxx -# - tutorial-v7-draw_frame.cxx -# - tutorial-v7-draw_legend.cxx -# - tutorial-v7-draw_mt.cxx -# - tutorial-v7-draw_rh1.cxx -# - tutorial-v7-draw_rh1_large.cxx -# - tutorial-v7-draw_rh2.cxx -# - tutorial-v7-draw_rh2_colz.cxx -# - tutorial-v7-draw_rh2_large.cxx -# - tutorial-v7-draw_rh3.cxx -# - tutorial-v7-draw_rh3_large.cxx -# - tutorial-v7-draw_subpads.cxx -# - tutorial-v7-histops.cxx -# - tutorial-v7-perf.cxx -# - tutorial-v7-perfcomp.cxx -# - tutorial-v7-simple.cxx -# Fails with "already deserialized this template specialization" -# https://github.com/root-project/root/issues/8073 - excluded="\ test-stressIOPlugins|\ tutorial-dataframe-df101_h1Analysis|\ @@ -2611,7 +2592,28 @@ tutorial-tmva-tmva103_Application|\ pyunittests-pyroot-dependency-versions|\ pyunittests-pyroot-numbadeclare|\ test-import-numba|\ -tutorial-pyroot-pyroot004_NumbaDeclare-py|\ +tutorial-pyroot-pyroot004_NumbaDeclare-py" + +# - tutorial-v7-concurrentfill.cxx +# - tutorial-v7-draw.cxx +# - tutorial-v7-draw_frame.cxx +# - tutorial-v7-draw_legend.cxx +# - tutorial-v7-draw_mt.cxx +# - tutorial-v7-draw_rh1.cxx +# - tutorial-v7-draw_rh1_large.cxx +# - tutorial-v7-draw_rh2.cxx +# - tutorial-v7-draw_rh2_colz.cxx +# - tutorial-v7-draw_rh2_large.cxx +# - tutorial-v7-draw_rh3.cxx +# - tutorial-v7-draw_rh3_large.cxx +# - tutorial-v7-draw_subpads.cxx +# - tutorial-v7-histops.cxx +# - tutorial-v7-perf.cxx +# - tutorial-v7-perfcomp.cxx +# - tutorial-v7-simple.cxx +# Fails with "already deserialized this template specialization" +# https://github.com/root-project/root/issues/8073 +excluded="${excluded}|\ tutorial-v7-concurrentfill.cxx|\ tutorial-v7-draw.cxx|\ tutorial-v7-draw_frame.cxx|\ @@ -3859,6 +3861,12 @@ fi %endif %changelog +* Fri Aug 27 2021 Mattias Ellert - 6.24.04-1 +- Update to 6.24.04 +- Add dependency on json-devel to root-core +- Disable uring in EPEL 8 (liburing is available, but uring not + supported by kernel) + * Wed Aug 04 2021 Mattias Ellert - 6.24.02-1 - Update to 6.24.02 - ROOT now uses llvm/clang version 9 (updated from version 5) diff --git a/sources b/sources index af28a1d..36cdb68 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.24.02.tar.xz) = 2f2bc89b436c7bc703bc88290f5047fae941950f98bd549fdd43121f7742a4030e153cc12a52d81c9a76a32e8d7be197a85776b721fe1643439827fb5b49d1c0 +SHA512 (root-6.24.04.tar.xz) = 2f91d54e4c5d03524ebeeafd9a4240c30dd4a1a8de38cec001b0ea8e84de4fd71aca9788296b9e0cb3031f901d9fb32b6848c73c08b0cf41c44096d4191025fd SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From a96b0b3132c9307388317f6f72545f2cf490cf4e Mon Sep 17 00:00:00 2001 From: Sahana Prasad Date: Tue, 14 Sep 2021 19:13:40 +0200 Subject: [PATCH 014/127] Rebuilt with OpenSSL 3.0.0 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 3c93d49..9bd1490 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3861,6 +3861,9 @@ fi %endif %changelog +* Tue Sep 14 2021 Sahana Prasad - 6.24.04-2 +- Rebuilt with OpenSSL 3.0.0 + * Fri Aug 27 2021 Mattias Ellert - 6.24.04-1 - Update to 6.24.04 - Add dependency on json-devel to root-core From 01b908fc8c059de47434d342793578a7da980daf Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 5 Nov 2021 13:14:04 +0100 Subject: [PATCH 015/127] Update to 6.24.06 --- root.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/root.spec b/root.spec index 9bd1490..26707c6 100644 --- a/root.spec +++ b/root.spec @@ -49,9 +49,9 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.24.04 +Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3861,6 +3861,9 @@ fi %endif %changelog +* Thu Nov 04 2021 Mattias Ellert - 6.24.06-1 +- Update to 6.24.06 + * Tue Sep 14 2021 Sahana Prasad - 6.24.04-2 - Rebuilt with OpenSSL 3.0.0 diff --git a/sources b/sources index 36cdb68..31dae3c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.24.04.tar.xz) = 2f91d54e4c5d03524ebeeafd9a4240c30dd4a1a8de38cec001b0ea8e84de4fd71aca9788296b9e0cb3031f901d9fb32b6848c73c08b0cf41c44096d4191025fd +SHA512 (root-6.24.06.tar.xz) = fe316283503dae60acb26d2ae3e838e6f9c01e1f89ff9973aa2b666a30c00f99f5e0df02b54e3744cd14a45a49ca2fc7d1f19fbac6b69071b9c9e0c98f2e0645 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From f57d1d575ec6e885d4d17358f00b73b9df04192a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 9 Dec 2021 17:14:53 +0100 Subject: [PATCH 016/127] Fix segfaults on ppc64le when using the large code model --- root-doxygen-crash-el7.patch | 44 +++++++++++++ root-doxygen-fix1.patch | 87 +++++++++++++++++++++++++ root-doxygen-fix2.patch | 26 ++++++++ root-ppc-no-codemodel.patch | 13 ---- root-ppc-segfault-fix.patch | 49 +++++++++++++++ root-symbol-rewrite.patch | 31 +++++++++ root.spec | 119 +++++++++++++++++------------------ 7 files changed, 296 insertions(+), 73 deletions(-) create mode 100644 root-doxygen-crash-el7.patch create mode 100644 root-doxygen-fix1.patch create mode 100644 root-doxygen-fix2.patch delete mode 100644 root-ppc-no-codemodel.patch create mode 100644 root-ppc-segfault-fix.patch create mode 100644 root-symbol-rewrite.patch diff --git a/root-doxygen-crash-el7.patch b/root-doxygen-crash-el7.patch new file mode 100644 index 0000000..28fb075 --- /dev/null +++ b/root-doxygen-crash-el7.patch @@ -0,0 +1,44 @@ +diff -ur root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C +--- root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C 2021-11-05 18:09:46.916687882 +0100 +@@ -5,7 +5,6 @@ + /// This tutorial shows how a histogram can be filled in parallel + /// with a multiprocess approach. + /// +-/// \macro_image + /// \macro_code + /// + /// \date January 2016 +diff -ur root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C +--- root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C 2021-12-06 18:19:08.498933048 +0100 +@@ -10,7 +10,6 @@ + /// method. This method is not thread safe: in presence of ROOT histograms, the + /// system will not crash but the result is not uniquely defined. + /// +-/// \macro_image + /// \macro_code + /// + /// \date January 2016 +diff -ur root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C root-6.24.06/tutorials/multicore/mt304_fillHistos.C +--- root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mt304_fillHistos.C 2021-12-06 19:54:20.634373797 +0100 +@@ -5,7 +5,6 @@ + /// Illustrates use of power-of-two autobin algorithm + /// + /// \macro_code +-/// \macro_image + /// + /// \date November 2017 + /// \author Gerardo Ganis +diff -ur root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C +--- root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 ++++ root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-12-06 19:54:22.174377227 +0100 +@@ -5,7 +5,6 @@ + /// This tutorial shows how a histogram can be filled in parallel + /// with a multiprocess approach. + /// +-/// \macro_image + /// \macro_code + /// + /// \date January 2016 diff --git a/root-doxygen-fix1.patch b/root-doxygen-fix1.patch new file mode 100644 index 0000000..9525bf4 --- /dev/null +++ b/root-doxygen-fix1.patch @@ -0,0 +1,87 @@ +From e303e0105b6f7bd7848a4385fcb62bedb847abb4 Mon Sep 17 00:00:00 2001 +From: Olivier Couet +Date: Mon, 12 Apr 2021 16:22:49 +0200 +Subject: [PATCH] RLogScopedVerbosity doxygen doc fix (#7830) + +* RLogScopedVerbosity doxygen doc was not visible because source code was under ``` instead of ~~~ + +* [foundation] RLogger doc (NFC) - thanks, Sergey! + +Co-authored-by: Axel Naumann +--- + core/foundation/inc/ROOT/RLogger.hxx | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/core/foundation/inc/ROOT/RLogger.hxx b/core/foundation/inc/ROOT/RLogger.hxx +index d753bbc358..c1a1b22690 100644 +--- a/core/foundation/inc/ROOT/RLogger.hxx ++++ b/core/foundation/inc/ROOT/RLogger.hxx +@@ -109,7 +109,7 @@ public: + /// Construct an anonymous channel. + RLogChannel() = default; + +- /// Construct an anonymous channel with a default vebosity. ++ /// Construct an anonymous channel with a default verbosity. + explicit RLogChannel(ELogLevel verbosity) : fVerbosity(verbosity) {} + + /// Construct a log channel given its name, which is part of the diagnostics. +@@ -202,11 +202,11 @@ namespace Detail { + + This builder can be used through the utility preprocessor macros R__LOG_ERROR, + R__LOG_WARNING etc like this: +- ```c++ ++~~~ {.cpp} + R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; + const int decreasedInfoLevel = 5; + R__LOG_XDEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; +- ``` ++~~~ + This will automatically capture the current class and function name, the file and line number. + */ + +@@ -235,10 +235,10 @@ public: + Change the verbosity level (global or specific to the RLogChannel passed to the + constructor) for the lifetime of this object. + Example: +- ```c++ ++~~~ {.cpp} + RLogScopedVerbosity debugThis(gFooLog, ELogLevel::kDebug); + Foo::SomethingToDebug(); +- ``` ++~~~ + */ + class RLogScopedVerbosity { + RLogChannel *fChannel; +@@ -331,10 +331,10 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons + + - The conditional `RLogBuilder` use prevents stream operators from being called if + verbosity is too low, i.e.: +- ```` ++ ~~~ + RLogScopedVerbosity silence(RLogLevel::kFatal); + R__LOG_DEBUG(7) << WillNotBeCalled(); +- ``` ++ ~~~ + - To update counts of warnings / errors / fatal errors, those RLogEntries must + always be created, even if in the end their emission will be silenced. This + should be fine, performance-wise, as they should not happen frequently. +@@ -350,13 +350,13 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons + + /// \name LogMacros + /// Macros to log diagnostics. +-/// ```c++ ++/// ~~~ {.cpp} + /// R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; + /// + /// RLogScopedVerbosity verbose(kDebug + 5); + /// const int decreasedInfoLevel = 5; +-/// R__LOG_DEBUG(decreasedInfoLevel, ROOT::Experimental::WebGUILog()) << "nitty-gritty details"; +-/// ``` ++/// R__LOG_DEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; ++/// ~~~ + ///\{ + #define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__) + #define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__) +-- +2.33.1 + diff --git a/root-doxygen-fix2.patch b/root-doxygen-fix2.patch new file mode 100644 index 0000000..1fa75e7 --- /dev/null +++ b/root-doxygen-fix2.patch @@ -0,0 +1,26 @@ +From 37a1a43347bc1ecb492b13e2f06d80c16779c84f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 5 Dec 2021 21:51:32 +0100 +Subject: [PATCH] Fix doxygen warning + +warning: reached end of file while inside a ~~~ block! +--- + gui/webdisplay/src/RWebDisplayHandle.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx +index 44a544bb51..84ff7a6990 100644 +--- a/gui/webdisplay/src/RWebDisplayHandle.cxx ++++ b/gui/webdisplay/src/RWebDisplayHandle.cxx +@@ -608,7 +608,7 @@ std::unique_ptr RWebDisplayHandle::Display(const RWebDisplayA + /// Browser can specified when starting `root --web=firefox` + /// Returns true when browser started + /// It is convenience method, equivalent to: +-/// ~~~ ++/// ~~~ + /// RWebDisplayArgs args; + /// args.SetUrl(url); + /// args.SetStandalone(false); +-- +2.33.1 + diff --git a/root-ppc-no-codemodel.patch b/root-ppc-no-codemodel.patch deleted file mode 100644 index 3429097..0000000 --- a/root-ppc-no-codemodel.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -index c98a3be0ed..f77d4adec2 100644 ---- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -@@ -77,7 +77,7 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) { - #if defined(__powerpc64__) || defined(__PPC64__) - // We have to use large code model for PowerPC64 because TOC and text sections - // can be more than 2GB apart. -- JTMB->setCodeModel(CodeModel::Large); -+ //JTMB->setCodeModel(CodeModel::Large); - #endif - - std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); diff --git a/root-ppc-segfault-fix.patch b/root-ppc-segfault-fix.patch new file mode 100644 index 0000000..b9cba0f --- /dev/null +++ b/root-ppc-segfault-fix.patch @@ -0,0 +1,49 @@ +From 55ae047b70e927de5c84cfa5ad42905cbd58d499 Mon Sep 17 00:00:00 2001 +From: Vassil Vassilev +Date: Sat, 4 Dec 2021 00:06:19 +0000 +Subject: [PATCH] [llvm] Restore the ppc64le support that we lost in llvm8. + +This patch is backported from https://reviews.llvm.org/D94183 + +For more discussion see https://github.com/numba/numba/issues/4026 + +Fixes root-project/root#8072 and root-project/root#9297 +--- + .../src/lib/Target/PowerPC/PPCISelLowering.cpp | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +diff --git a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp +index 24d50074860d..a922b40aa902 100644 +--- a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp ++++ b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp +@@ -4463,7 +4463,15 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, + if (!G) + return false; + +- const GlobalValue *GV = G->getGlobal(); ++ const GlobalValue *GV = G->getGlobal(); ++ ++ // If the GV is not a strong definition then we need to assume it can be ++ // replaced by another function at link time. The function that replaces ++ // it may not share the same TOC as the caller since the callee may be ++ // replaced by a PC Relative version of the same function. ++ if (!GV->isStrongDefinitionForLinker()) ++ return false; ++ + // The medium and large code models are expected to provide a sufficiently + // large TOC to provide all data addressing needs of a module with a + // single TOC. Since each module will be addressed with a single TOC then we +@@ -4472,13 +4480,6 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, + CodeModel::Large == TM.getCodeModel()) + return TM.shouldAssumeDSOLocal(*Caller->getParent(), GV); + +- // Otherwise we need to ensure callee and caller are in the same section, +- // since the linker may allocate multiple TOCs, and we don't know which +- // sections will belong to the same TOC base. +- +- if (!GV->isStrongDefinitionForLinker()) +- return false; +- + // Any explicitly-specified sections and section prefixes must also match. + // Also, if we're using -ffunction-sections, then each function is always in + // a different section (the same is true for COMDAT functions). diff --git a/root-symbol-rewrite.patch b/root-symbol-rewrite.patch new file mode 100644 index 0000000..c91bbe6 --- /dev/null +++ b/root-symbol-rewrite.patch @@ -0,0 +1,31 @@ +From f99eedeb72644671cd584f48e4c136d47f6b0020 Mon Sep 17 00:00:00 2001 +From: Fangrui Song +Date: Thu, 12 Dec 2019 16:18:57 -0800 +Subject: [PATCH] [MC][PowerPC] Fix a crash when redefining a symbol after .set + +Fix PR44284. This is probably not valid assembly but we should not crash. + +Reviewed By: luporl, #powerpc, steven.zhang + +Differential Revision: https://reviews.llvm.org/D71443 +--- + interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp +index 00df9e41fdae..5e91bdb2f8de 100644 +--- a/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp ++++ b/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp +@@ -201,7 +201,8 @@ public: + + void finish() override { + for (auto *Sym : UpdateOther) +- copyLocalEntry(Sym, Sym->getVariableValue()); ++ if (Sym->isVariable()) ++ copyLocalEntry(Sym, Sym->getVariableValue()); + } + + private: +-- +2.33.1 + diff --git a/root.spec b/root.spec index 26707c6..4406bef 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -117,9 +117,11 @@ Patch15: %{name}-fix-ppc64le-compilation-with-gcc-10.patch # Actually request the use of the large code model for ppc64le # https://github.com/root-project/root/pull/8230 Patch16: %{name}-ppc-codemodel.patch -# Do not request the large code model for ppc64le -# It causes segmentation faults -Patch17: %{name}-ppc-no-codemodel.patch +# Fix segfaults on ppc64le when using the large code model +# PR by Vassil Vassilev based on upstream fix +# https://reviews.llvm.org/D91983 +# https://github.com/root-project/root/pull/9380 +Patch17: %{name}-ppc-segfault-fix.patch # Fall back to blocking I/O if uring fails # Backported # - commit 691403b2cc504fd4e3e7227894023913014a61ff @@ -139,6 +141,17 @@ Patch23: %{name}-ptr-is-null-TStreamerInfo.patch # Fix two failing tests on s390x # https://github.com/root-project/root/pull/8826 Patch24: %{name}-stress-s390x.patch +# Doxygen warning fixes +# Backported from upstream +Patch25: root-doxygen-fix1.patch +# Doxygen warning fixes +# https://github.com/root-project/root/pull/9388 +Patch26: root-doxygen-fix2.patch +# Don't run tutorials that crash during doc generation +# EPEL 7 specific +Patch27: %{name}-doxygen-crash-el7.patch +# Backported fix from LLVM upstream +Patch28: %{name}-symbol-rewrite.patch BuildRequires: make %if %{?rhel}%{!?rhel:0} == 7 @@ -1912,6 +1925,12 @@ This package contains an ntuple extension for ROOT 7. %patch22 -p1 %patch23 -p1 %patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%if %{?rhel}%{!?rhel:0} == 7 +%patch27 -p1 +%endif +%patch28 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2788,60 +2807,30 @@ excluded="${excluded}|test-stresshistofit\$\$" %ifarch %{power64} # PPC64LE specific failures # -# - test-stressgraphics(-interpreted) -excluded="${excluded}|test-stressgraphics" - -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 -# - pyunittests-pyroot-pyz-array-interface -# - pyunittests-pyroot-pyz-rdataframe-asnumpy -# - pyunittests-pyroot-pyz-rdataframe-makenumpy -# - pyunittests-pyroot-pyz-rvec-asrvec -# - pyunittests-pyroot-pyz-ttree-asmatrix -# - tutorial-dataframe-df026_AsNumpyArrays-py -# - tutorial-pyroot-pyroot001_arrayInterface-py -# - tutorial-pyroot-pyroot002_TTreeAsMatrix-py +# - test-stresshistofit-interpreted +# - test-stresshistogram-interpreted +# - test-stressmathcore-interpreted +# - test-stressroostats-interpreted excluded="${excluded}|\ -pyunittests-pyroot-pyz-array-interface|\ -pyunittests-pyroot-pyz-rdataframe-asnumpy|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -pyunittests-pyroot-pyz-rvec-asrvec|\ -pyunittests-pyroot-pyz-ttree-asmatrix|\ -tutorial-dataframe-df026_AsNumpyArrays-py|\ -tutorial-pyroot-pyroot001_arrayInterface-py|\ -tutorial-pyroot-pyroot002_TTreeAsMatrix-py" -%endif +test-stresshistofit-interpreted|\ +test-stresshistogram-interpreted|\ +test-stressmathcore-interpreted|\ +test-stressroostats-interpreted" -%if %{?fedora}%{!?fedora:0} -# - pyunittests-pyroot-pyz-rtensor -# - pyunittests-pyroot-pyz-ttree-branch -# - pyunittests-pyroot-pyz-ttree-setbranchaddress -# - tutorial-r-example -# - tutorial-r-DataFrame -# - tutorial-r-Function -# - tutorial-r-Functor -# - tutorial-r-GlobalMinimization -# - tutorial-r-Integration -# - tutorial-r-Interpolation -# - tutorial-r-Minimization -# - tutorial-r-SimpleFitting -# - tutorial-tmva-envelope-classification -# - tutorial-tmva-TMVA* -# Relocation R_PPC64_REL32 overflow +%if %{?rhel}%{!?rhel:0} == 8 +# Random segmentation faults +# - gtest-tree-dataframe-test-dataframe-snapshot +# +# Fails on ppc64le since RHEL 8.5 update +# Exception: Found not whitelisted libraries after importing ROOT: +# - libpthread-2.28 +# - libm-2.28 +# - libc-2.28 +# - librt-2.28 +# - pyunittests-pyroot-import-load-libs excluded="${excluded}|\ -pyunittests-pyroot-pyz-rtensor|\ -pyunittests-pyroot-pyz-ttree-branch|\ -pyunittests-pyroot-pyz-ttree-setbranchaddress|\ -tutorial-r-example|\ -tutorial-r-DataFrame|\ -tutorial-r-Function|\ -tutorial-r-Functor|\ -tutorial-r-GlobalMinimization|\ -tutorial-r-Integration|\ -tutorial-r-Interpolation|\ -tutorial-r-Minimization|\ -tutorial-r-SimpleFitting|\ -tutorial-tmva-envelope-classification|\ -tutorial-tmva-TMVA" +gtest-tree-dataframe-test-dataframe-snapshot|\ +pyunittests-pyroot-import-load-libs" %endif %endif @@ -2852,7 +2841,6 @@ tutorial-tmva-TMVA" # - gtest-tree-ntuple-v7-test-ntuple-basics # - gtest-tree-ntuple-v7-test-ntuple-extended # - gtest-tree-ntuple-v7-test-ntuple-minifile -# - gtest-tree-ntuple-v7-test-ntuple-storage # - pyunittests-pyroot-pyz-rtensor # - test-stresshistogram(-interpreted) # - test-stresshistofit(-interpreted) @@ -2860,21 +2848,29 @@ tutorial-tmva-TMVA" # - tutorial-roofit-rf203_ranges-py # - tutorial-roofit-rf612_recoverFromInvalidParameters # - tutorial-roofit-rf902_numgenconfig-py -# - tutorial-v7-ntuple-ntpl005_introspection excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ -gtest-tree-ntuple-v7-test-ntuple-storage|\ pyunittests-pyroot-pyz-rtensor|\ test-stresshistogram|\ test-stresshistofit|\ tutorial-dataframe-df006_ranges-py|\ tutorial-roofit-rf203_ranges-py|\ tutorial-roofit-rf612_recoverFromInvalidParameters|\ -tutorial-roofit-rf902_numgenconfig-py|\ -tutorial-v7-ntuple-ntpl005_introspection" +tutorial-roofit-rf902_numgenconfig-py" + +%if %{?rhel}%{!?rhel:0} == 8 +# Issues with file sizes on EPEL 8 s390x +# - gtest-tree-tree-test-testTBranch +# - test-stress +# - test-stressgraphics(-interpreted) +excluded="${excluded}|\ +gtest-tree-tree-test-testTBranch|\ +test-stress\$\$|\ +test-stressgraphics" +%endif %endif # Filter out parts of tests that require remote network access @@ -3861,6 +3857,9 @@ fi %endif %changelog +* Tue Dec 07 2021 Mattias Ellert - 6.24.06-2 +- Fix segfaults on ppc64le when using the large code model + * Thu Nov 04 2021 Mattias Ellert - 6.24.06-1 - Update to 6.24.06 From 530bdfbe23276d5410c2d1b98a7a0d1d8f558ea6 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 17 Jan 2022 19:28:30 +0100 Subject: [PATCH 017/127] Backport gcc 12 fix from LLVM Fix test failure on ppc64le and aarch64 with gcc 12 --- root-fix-compilation-with-gcc-12.patch | 63 +++++++++++++++++++ ...e-on-ppc64le-and-aarch64-with-gcc-12.patch | 43 +++++++++++++ root.spec | 14 ++++- 3 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 root-fix-compilation-with-gcc-12.patch create mode 100644 root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch diff --git a/root-fix-compilation-with-gcc-12.patch b/root-fix-compilation-with-gcc-12.patch new file mode 100644 index 0000000..2c34516 --- /dev/null +++ b/root-fix-compilation-with-gcc-12.patch @@ -0,0 +1,63 @@ +From 3bc55ece1db8b32c5e86fd6b85856addd67265fb Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 15 Jan 2022 06:35:58 +0100 +Subject: [PATCH] Fix compilation with gcc 12 + +Fixes error: use of deleted function + +/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp: In member function 'std::string llvm::NVPTXAsmPrinter::getPTXFundamentalTypeStr(llvm::Type*, bool) const': +/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:1319:10: error: use of deleted function 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::nullptr_t) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator; std::nullptr_t = std::nullptr_t]' + 1319 | return nullptr; + | ^~~~~~~ +In file included from /usr/include/c++/12/string:53, + from /usr/include/c++/12/bits/locale_classes.h:40, + from /usr/include/c++/12/bits/ios_base.h:41, + from /usr/include/c++/12/streambuf:41, + from /usr/include/c++/12/bits/streambuf_iterator.h:35, + from /usr/include/c++/12/iterator:66, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/iterator_range.h:21, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/SmallVector.h:16, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/STLExtras.h:20, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/StringRef.h:12, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/Pass.h:31, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTX.h:17, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.h:17, + from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:14: +/usr/include/c++/12/bits/basic_string.h:732:7: note: declared here + 732 | basic_string(nullptr_t) = delete; + | ^~~~~~~~~~~~ + +Fix backported from LLVM upstrea https://reviews.llvm.org/D87697 +--- + interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +index 5f38b4a3c4..bfa74bd98f 100644 +--- a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp ++++ b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +@@ -1281,9 +1281,6 @@ void NVPTXAsmPrinter::emitPTXAddressSpace(unsigned int AddressSpace, + std::string + NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const { + switch (Ty->getTypeID()) { +- default: +- llvm_unreachable("unexpected type"); +- break; + case Type::IntegerTyID: { + unsigned NumBits = cast(Ty)->getBitWidth(); + if (NumBits == 1) +@@ -1314,9 +1311,10 @@ NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const { + return "b32"; + else + return "u32"; ++ default: ++ break; + } + llvm_unreachable("unexpected type"); +- return nullptr; + } + + void NVPTXAsmPrinter::emitPTXGlobalVariable(const GlobalVariable *GVar, +-- +2.34.1 + diff --git a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch new file mode 100644 index 0000000..007c3cd --- /dev/null +++ b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch @@ -0,0 +1,43 @@ +From ddc155795baa9d4690717c204e54a7fd4600c688 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 17 Jan 2022 18:49:30 +0100 +Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12 + +.../hist/hist/test/test_tprofile2poly.cxx:61: Failure +The difference between cont1 and cont2 is 1.4551915228366852e-11, which exceeds delta, where +cont1 evaluates to 54886.064319363642, +cont2 evaluates to 54886.064319363628, and +delta evaluates to 9.999999960041972e-12. +.../hist/hist/test/test_tprofile2poly.cxx:61: Failure +The difference between cont1 and cont2 is 1.4551915228366852e-11, where +cont1 evaluates to 109868.61342004745, +cont2 evaluates to 109868.61342004743. +The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead. +--- + hist/hist/test/test_tprofile2poly.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx +index 40cb3052a2..5150da0bea 100644 +--- a/hist/hist/test/test_tprofile2poly.cxx ++++ b/hist/hist/test/test_tprofile2poly.cxx +@@ -58,14 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { + for(Double_t x=0.5; x<10; x+=2.0) { + cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(x,y)); + cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(x,y)); +- ASSERT_NEAR(cont1, cont2, delta); ++ ASSERT_NEAR(cont1, cont2, 2*delta); + } + + } + // test overflow + cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11)); + cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11)); +- ASSERT_NEAR(cont1, cont2, delta); ++ ASSERT_NEAR(cont1, cont2, 2*delta); + + } + +-- +2.34.1 + diff --git a/root.spec b/root.spec index 4406bef..3c01a6c 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -152,6 +152,12 @@ Patch26: root-doxygen-fix2.patch Patch27: %{name}-doxygen-crash-el7.patch # Backported fix from LLVM upstream Patch28: %{name}-symbol-rewrite.patch +# Backport gcc 12 fix from LLVM +# https://github.com/root-project/root/pull/9586 +Patch29: %{name}-fix-compilation-with-gcc-12.patch +# Fix test failure on ppc64le and aarch64 with gcc 12 +# https://github.com/root-project/root/pull/9601 +Patch30: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch BuildRequires: make %if %{?rhel}%{!?rhel:0} == 7 @@ -1931,6 +1937,8 @@ This package contains an ntuple extension for ROOT 7. %patch27 -p1 %endif %patch28 -p1 +%patch29 -p1 +%patch30 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3857,6 +3865,10 @@ fi %endif %changelog +* Sun Jan 16 2022 Mattias Ellert - 6.24.06-3 +- Backport gcc 12 fix from LLVM +- Fix test failure on ppc64le and aarch64 with gcc 12 + * Tue Dec 07 2021 Mattias Ellert - 6.24.06-2 - Fix segfaults on ppc64le when using the large code model From 79bc80ed33ef23cb412f65727b6a12e70b46ac55 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jan 2022 17:57:47 +0000 Subject: [PATCH 018/127] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 3c01a6c..bd095b6 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3865,6 +3865,9 @@ fi %endif %changelog +* Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Sun Jan 16 2022 Mattias Ellert - 6.24.06-3 - Backport gcc 12 fix from LLVM - Fix test failure on ppc64le and aarch64 with gcc 12 From d28cfab6db23ba8129741cb9d378affbc249e264 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 28 Jan 2022 21:28:20 +0100 Subject: [PATCH 019/127] Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) --- root.spec | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index bd095b6..3fa4562 100644 --- a/root.spec +++ b/root.spec @@ -51,7 +51,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -2840,6 +2840,13 @@ excluded="${excluded}|\ gtest-tree-dataframe-test-dataframe-snapshot|\ pyunittests-pyroot-import-load-libs" %endif + +%if %{?fedora}%{!?fedora:0} >= 36 +# Fails on Fedora 36 ppc64le +# - test-stressHistFactory(-interpreted) +excluded="${excluded}|\ +test-stressHistFactory" +%endif %endif %ifarch s390x @@ -3865,6 +3872,10 @@ fi %endif %changelog +* Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 +- Exclude failing test on Fedora 36 ppc64le: + test-stressHistFactory(-interpreted) + * Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 1ca8ad1517f21dca869c95afa310022f2b86fed0 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 29 Jan 2022 00:30:44 +0100 Subject: [PATCH 020/127] Disable package note flags --- root.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/root.spec b/root.spec index 3fa4562..4c8d449 100644 --- a/root.spec +++ b/root.spec @@ -1,6 +1,10 @@ %undefine __cmake_in_source_build %undefine __cmake3_in_source_build +# Disable package note flags, since root saves the compiler/linker flags +# used during the build +%undefine _package_note_flags + %if %{?fedora}%{!?fedora:0} >= 31 || %{?rhel}%{!?rhel:0} >= 8 # Don't build python2-root for Fedora >= 31 %global buildpy2 0 @@ -3875,6 +3879,7 @@ fi * Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 - Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) +# Disable package note flags * Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 65aa8a70756160cf36ea5323a408673d44c78b3c Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Wed, 9 Feb 2022 21:06:51 -0700 Subject: [PATCH 021/127] Rebuild for glew 2.2 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 4c8d449..3a305ae 100644 --- a/root.spec +++ b/root.spec @@ -55,7 +55,7 @@ Name: root Version: 6.24.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 6%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3876,6 +3876,9 @@ fi %endif %changelog +* Thu Feb 10 2022 Orion Poplawski - 6.24.06-6 +- Rebuild for glew 2.2 + * Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 - Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) From 2f8e3d96d1a2bbe2f9cd8a9a87d4ab147df9e60b Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 5 Apr 2022 14:39:21 +0200 Subject: [PATCH 022/127] Update to 6.24.04 New subpackages: root-roofit-common, root-roofit-dataframe-helpers, root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser Removed subpackages: root-memstat and root-montecarlo-vmc Drop the doxygen generated root-doc package (doxygen runs out of memory) Dropped patches: 17 New patches: 22 Updated patches: 5 --- root-32bit-dataframe.patch | 132 ++- root-add-RCutFlowReport-to-LinkDef-file.patch | 26 - root-add-RDisplay-to-LinkDef-file.patch | 25 - ...add-TTreeProcessorMP-to-LinkDef-file.patch | 36 - root-avoid-deleting-TFormulas-twice.patch | 37 + root-big-endian-byte-swap.patch | 40 + root-blas-linking-and-ignore-prefix.patch | 74 ++ root-core-base-test.patch | 31 + root-dataframe-callback.patch | 45 + root-doc-no-notebooks.patch | 21 - root-doxygen-crash-el7.patch | 44 - root-doxygen-crash.patch | 275 ----- root-doxygen-fix1.patch | 87 -- root-doxygen-fix2.patch | 26 - root-endian-warn.patch | 33 + root-epel7-ppc64le-pyroot.patch | 16 - ...MVA-tutorial-using-internally-python.patch | 177 +++ root-fix-multicore-tests-with-few-cores.patch | 168 --- ...-fix-ppc64le-compilation-with-gcc-10.patch | 29 - root-get-src.sh | 6 + root-jsmva-static.patch | 2 +- root-longlong.patch | 52 + ...ased-library-search-behavior-default.patch | 147 +++ root-memory-usage.patch | 43 +- root-missing-include.patch | 32 + root-move-private-decl.patch | 405 +++++++ root-namespace-pymva.patch | 31 + root-namespace-roofit.patch | 43 + root-namespace-sofie.patch | 30 + root-ntuplewait.patch | 39 + root-old-gtest-compat.patch | 325 ++++- root-ppc-codemodel.patch | 36 - root-ppc-segfault-fix.patch | 49 - root-ptr-is-null-RooFit-TMVA.patch | 80 -- root-ptr-is-null-TStreamerInfo.patch | 32 - root-rcolor-static-init.patch | 42 + root-roofit-overflow.patch | 59 + root-roofit-tutorial.patch | 74 ++ root-stress-s390x.patch | 39 - ...-threadsh1-avoid-heap-use-after-free.patch | 48 + root-tmva-threads.patch | 62 + root-unbundle-gtest.patch | 305 +++-- root-uring-warn.patch | 43 + root-uring.patch | 55 - ...ue-filenames-in-fillrandom-tutorials.patch | 25 + root.spec | 1052 +++++++++-------- sources | 2 +- 47 files changed, 2698 insertions(+), 1782 deletions(-) delete mode 100644 root-add-RCutFlowReport-to-LinkDef-file.patch delete mode 100644 root-add-RDisplay-to-LinkDef-file.patch delete mode 100644 root-add-TTreeProcessorMP-to-LinkDef-file.patch create mode 100644 root-avoid-deleting-TFormulas-twice.patch create mode 100644 root-big-endian-byte-swap.patch create mode 100644 root-blas-linking-and-ignore-prefix.patch create mode 100644 root-core-base-test.patch create mode 100644 root-dataframe-callback.patch delete mode 100644 root-doc-no-notebooks.patch delete mode 100644 root-doxygen-crash-el7.patch delete mode 100644 root-doxygen-crash.patch delete mode 100644 root-doxygen-fix1.patch delete mode 100644 root-doxygen-fix2.patch create mode 100644 root-endian-warn.patch delete mode 100644 root-epel7-ppc64le-pyroot.patch create mode 100644 root-fix-TMVA-tutorial-using-internally-python.patch delete mode 100644 root-fix-multicore-tests-with-few-cores.patch delete mode 100644 root-fix-ppc64le-compilation-with-gcc-10.patch create mode 100755 root-get-src.sh create mode 100644 root-longlong.patch create mode 100644 root-make-dyld-based-library-search-behavior-default.patch create mode 100644 root-missing-include.patch create mode 100644 root-move-private-decl.patch create mode 100644 root-namespace-pymva.patch create mode 100644 root-namespace-roofit.patch create mode 100644 root-namespace-sofie.patch create mode 100644 root-ntuplewait.patch delete mode 100644 root-ppc-codemodel.patch delete mode 100644 root-ppc-segfault-fix.patch delete mode 100644 root-ptr-is-null-RooFit-TMVA.patch delete mode 100644 root-ptr-is-null-TStreamerInfo.patch create mode 100644 root-rcolor-static-init.patch create mode 100644 root-roofit-overflow.patch create mode 100644 root-roofit-tutorial.patch delete mode 100644 root-stress-s390x.patch create mode 100644 root-threadsh1-avoid-heap-use-after-free.patch create mode 100644 root-tmva-threads.patch create mode 100644 root-uring-warn.patch delete mode 100644 root-uring.patch create mode 100644 root-use-unique-filenames-in-fillrandom-tutorials.patch diff --git a/root-32bit-dataframe.patch b/root-32bit-dataframe.patch index f9ff85f..89e3c95 100644 --- a/root-32bit-dataframe.patch +++ b/root-32bit-dataframe.patch @@ -1,21 +1,24 @@ -diff -ur root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py root-6.24.02/bindings/pyroot_legacy/ROOT.py ---- root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/pyroot_legacy/ROOT.py 2021-08-11 10:44:16.895804556 +0200 -@@ -438,9 +438,7 @@ - # This function is injected as method to the respective classes in Pythonize.cxx. - _root._RDataFrameAsNumpy = _RDataFrameAsNumpy - --# This Pythonisation is there only for 64 bits builds --if (sys.maxsize > 2**32): # https://docs.python.org/3/library/platform.html#cross-platform -- _root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix -+_root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix - - - ### RINT command emulation ------------------------------------------------------ -diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/makepchinput.py ---- root-6.24.02.orig/build/unix/makepchinput.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/build/unix/makepchinput.py 2021-08-11 10:44:16.926804638 +0200 -@@ -252,9 +252,6 @@ +From 686d5011df607fde2a42c729d6bd446486163784 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 13 Mar 2020 16:20:17 +0100 +Subject: [PATCH] Restore 32-bit dataframe + +--- + build/unix/makepchinput.py | 3 --- + cmake/modules/RootBuildOptions.cmake | 5 ----- + tree/dataframe/test/dataframe_cache.cxx | 4 ---- + tree/dataframe/test/datasource_arrow.cxx | 4 ---- + tree/dataframe/test/datasource_csv.cxx | 4 ---- + tree/dataframe/test/datasource_root.cxx | 4 ---- + tree/dataframe/test/datasource_trivial.cxx | 4 ---- + tutorials/CMakeLists.txt | 5 ----- + 8 files changed, 33 deletions(-) + +diff --git a/build/unix/makepchinput.py b/build/unix/makepchinput.py +index 1adff487de..eec73f946d 100755 +--- a/build/unix/makepchinput.py ++++ b/build/unix/makepchinput.py +@@ -252,9 +252,6 @@ def isDirForPCH(dirName, legacyPyROOT): "math/vdt", "tmva/rmva"] @@ -25,10 +28,27 @@ diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/ma accepted = isAnyPatternInString(PCHPatternsWhitelist,dirName) and \ not isAnyPatternInString(PCHPatternsBlacklist,dirName) -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/tree/dataframe/test/dataframe_cache.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_cache.cxx 2021-08-11 10:44:16.927804641 +0200 -@@ -224,8 +224,6 @@ +diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake +index 7886c5f3e9..6fbd8873f1 100644 +--- a/cmake/modules/RootBuildOptions.cmake ++++ b/cmake/modules/RootBuildOptions.cmake +@@ -344,11 +344,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + set(runtime_cxxmodules_defvalue OFF) + endif() + +-# Disable RDataFrame on 32-bit UNIX platforms due to ROOT-9236 +-if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4) +- set(dataframe_defvalue OFF) +-endif() +- + # MultiProcess is not possible on Windows, so fail if it is manually set: + if(roofit_multiprocess AND WIN32) + message(FATAL_ERROR ">>> Option 'roofit_multiprocess' is not supported on Windows.") +diff --git a/tree/dataframe/test/dataframe_cache.cxx b/tree/dataframe/test/dataframe_cache.cxx +index 77be488052..8475b98acb 100644 +--- a/tree/dataframe/test/dataframe_cache.cxx ++++ b/tree/dataframe/test/dataframe_cache.cxx +@@ -224,8 +224,6 @@ TEST(Cache, evtCounter) } @@ -37,7 +57,7 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/ TEST(Cache, Regex) { -@@ -335,8 +333,6 @@ +@@ -329,8 +327,6 @@ TEST(Cache, Carrays) gSystem->Unlink(fileName); } @@ -46,10 +66,11 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/ // ROOT-10563 TEST(Cache, Alias) { -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02/tree/dataframe/test/datasource_arrow.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_arrow.cxx 2021-08-11 10:44:16.927804641 +0200 -@@ -177,8 +177,6 @@ +diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx +index 5ac9fcf09a..5f5f94a666 100644 +--- a/tree/dataframe/test/datasource_arrow.cxx ++++ b/tree/dataframe/test/datasource_arrow.cxx +@@ -177,8 +177,6 @@ TEST(RArrowDS, SetNSlotsTwice) } #endif @@ -58,16 +79,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02 TEST(RArrowDS, FromARDF) { std::unique_ptr tds(new RArrowDS(createTestTable(), {})); -@@ -250,5 +248,3 @@ +@@ -250,5 +248,3 @@ TEST(RArrowDS, FromARDFWithJittingMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/tree/dataframe/test/datasource_csv.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_csv.cxx 2021-08-11 10:44:16.927804641 +0200 -@@ -207,8 +207,6 @@ +diff --git a/tree/dataframe/test/datasource_csv.cxx b/tree/dataframe/test/datasource_csv.cxx +index 6554719f98..d93117b67a 100644 +--- a/tree/dataframe/test/datasource_csv.cxx ++++ b/tree/dataframe/test/datasource_csv.cxx +@@ -210,8 +210,6 @@ TEST(RCsvDS, SetNSlotsTwice) } #endif @@ -76,16 +98,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/t TEST(RCsvDS, FromARDF) { std::unique_ptr tds(new RCsvDS(fileName0)); -@@ -321,5 +319,3 @@ +@@ -324,5 +322,3 @@ TEST(RCsvDS, ProgressiveReadingRDFMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/tree/dataframe/test/datasource_root.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_root.cxx 2021-08-11 10:44:16.928804644 +0200 -@@ -117,8 +117,6 @@ +diff --git a/tree/dataframe/test/datasource_root.cxx b/tree/dataframe/test/datasource_root.cxx +index 79840d9fff..4c795fee6f 100644 +--- a/tree/dataframe/test/datasource_root.cxx ++++ b/tree/dataframe/test/datasource_root.cxx +@@ -117,8 +117,6 @@ TEST(TRootTDS, SetNSlotsTwice) } #endif @@ -93,17 +116,18 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/ - TEST(TRootTDS, FromARDF) { - std::unique_ptr tds(new RRootDS(treeName, fileGlob)); -@@ -190,5 +188,3 @@ + std::unique_ptr tds(new ROOT::Internal::RDF::RRootDS(treeName, fileGlob)); +@@ -190,5 +188,3 @@ TEST(TRootTDS, FromARDFWithJittingMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.02/tree/dataframe/test/datasource_trivial.cxx ---- root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/datasource_trivial.cxx 2021-08-11 10:44:16.928804644 +0200 -@@ -141,8 +141,6 @@ +diff --git a/tree/dataframe/test/datasource_trivial.cxx b/tree/dataframe/test/datasource_trivial.cxx +index 7da675c83b..deb89301c7 100644 +--- a/tree/dataframe/test/datasource_trivial.cxx ++++ b/tree/dataframe/test/datasource_trivial.cxx +@@ -141,8 +141,6 @@ TEST(RTrivialDS, EarlyQuitWithRange) EXPECT_EQ(df.Range(10).Count().GetValue(), 10); } @@ -112,16 +136,17 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24. TEST(RTrivialDS, FromARDFWithJitting) { std::unique_ptr tds(new RTrivialDS(32)); -@@ -245,5 +243,3 @@ +@@ -245,5 +243,3 @@ TEST(RTrivialDS, SkipEntriesMT) } #endif // R__USE_IMT - -#endif // R__B64 -diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMakeLists.txt ---- root-6.24.02.orig/tutorials/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/CMakeLists.txt 2021-08-11 10:44:16.974804766 +0200 -@@ -279,10 +279,6 @@ +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index a6e5c97703..12bb610d67 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -332,10 +332,6 @@ else() list(APPEND root7_veto ${v7_veto_files}) endif() @@ -129,10 +154,10 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake - set(bits32_veto dataframe/*.C graphs/timeSeriesFrom*.C v7/ntuple/ntpl004_dimuon.C) -endif() - - #---These ones are disabled !!! ------------------------------------ - set(extra_veto - legacy/benchmarks.C -@@ -335,7 +331,6 @@ + if (APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES arm64) + set(macm1_veto dataframe/df107_SingleTopAnalysis.py) + endif() +@@ -391,7 +387,6 @@ set(all_veto hsimple.C ${classic_veto} ${pythia_veto} ${root7_veto} @@ -140,3 +165,6 @@ diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMake ${xrootd_veto} ${mlp_veto} ${spectrum_veto} +-- +2.35.1 + diff --git a/root-add-RCutFlowReport-to-LinkDef-file.patch b/root-add-RCutFlowReport-to-LinkDef-file.patch deleted file mode 100644 index 9ec99a1..0000000 --- a/root-add-RCutFlowReport-to-LinkDef-file.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 2e3fabbe5423f50ee98ce848d8e85ec7a2a2106d Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Thu, 15 Jul 2021 12:17:56 +0200 -Subject: [PATCH] [DF] Add RCutFlowReport to LinkDef - -This should fix some sporadic failures in cling's symbol resolution -in builds without runtime cxx modules. ---- - tree/dataframe/inc/LinkDef.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h -index 8103468082..684fc3b6f1 100644 ---- a/tree/dataframe/inc/LinkDef.h -+++ b/tree/dataframe/inc/LinkDef.h -@@ -58,6 +58,7 @@ - #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; - #pragma link C++ class ROOT::Detail::RDF::RMergeableValue+; - #pragma link C++ class TNotifyLink; -+#pragma link C++ class ROOT::RDF::RCutFlowReport; - - #endif - --- -2.31.1 - diff --git a/root-add-RDisplay-to-LinkDef-file.patch b/root-add-RDisplay-to-LinkDef-file.patch deleted file mode 100644 index e86880c..0000000 --- a/root-add-RDisplay-to-LinkDef-file.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d9e15857c189edcfa75af5c6244ff68fac74f06f Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Thu, 10 Jun 2021 10:00:32 +0200 -Subject: [PATCH] [DF] Add RDisplay to LinkDef - -To help cling autoloading. ---- - tree/dataframe/inc/LinkDef.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h -index 3879ac8d5d..8103468082 100644 ---- a/tree/dataframe/inc/LinkDef.h -+++ b/tree/dataframe/inc/LinkDef.h -@@ -20,6 +20,7 @@ - #pragma link C++ namespace ROOT::Internal::RDF::GraphDrawing; - #pragma link C++ namespace ROOT::Detail::RDF; - #pragma link C++ namespace ROOT::RDF; -+#pragma link C++ class ROOT::RDF::RDisplay-; - #pragma link C++ class ROOT::Internal::RDF::RActionBase-; - #pragma link C++ class ROOT::Internal::RDF::RJittedAction-; - #pragma link C++ class ROOT::Detail::RDF::RFilterBase-; --- -2.31.1 - diff --git a/root-add-TTreeProcessorMP-to-LinkDef-file.patch b/root-add-TTreeProcessorMP-to-LinkDef-file.patch deleted file mode 100644 index c8a0b1f..0000000 --- a/root-add-TTreeProcessorMP-to-LinkDef-file.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 56d52ccf2fad2736e49d3cfc4c9df22492e1dbfc Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 8 Jun 2021 02:46:18 +0200 -Subject: [PATCH] Add TTreeProcessorMP to LinkDef - -This fixes test failure: - - 745/1157 Test #729: tutorial-multicore-mp102_readNtuplesFillHistosAndFit ................***Failed 1.55 sec -Processing /builddir/build/BUILD/root-6.25.01/tutorials/multicore/mp102_readNtuplesFillHistosAndFit.C... -IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMPC1Ej' unresolved while linking [cling interface function]! -You are probably missing the definition of ROOT::TTreeProcessorMP::TTreeProcessorMP(unsigned int) -Maybe you need to load the corresponding shared library? -IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMP11ReplyToIdleEP7TSocket' unresolved while linking [cling interface function]! -You are probably missing the definition of ROOT::TTreeProcessorMP::ReplyToIdle(TSocket*) -Maybe you need to load the corresponding shared library? -CMake Error at /builddir/build/BUILD/root-6.25.01/x86_64-redhat-linux-gnu/RootTestDriver.cmake:237 (message): - error code: 1 ---- - tree/treeplayer/inc/LinkDef.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tree/treeplayer/inc/LinkDef.h b/tree/treeplayer/inc/LinkDef.h -index e7fdd7c9bf..d195536a40 100644 ---- a/tree/treeplayer/inc/LinkDef.h -+++ b/tree/treeplayer/inc/LinkDef.h -@@ -30,6 +30,7 @@ - #pragma link C++ class TSimpleAnalysis+; - #ifndef _MSC_VER - #pragma link C++ class TMPWorkerTree+; -+#pragma link C++ class ROOT::TTreeProcessorMP-; - #endif - #ifdef R__USE_IMT - #pragma link C++ class ROOT::TTreeProcessorMT-; --- -2.31.1 - diff --git a/root-avoid-deleting-TFormulas-twice.patch b/root-avoid-deleting-TFormulas-twice.patch new file mode 100644 index 0000000..af758ed --- /dev/null +++ b/root-avoid-deleting-TFormulas-twice.patch @@ -0,0 +1,37 @@ +From c7dd58f3bc012690bab16763b1d73a4b7106ced9 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 29 Mar 2022 15:40:35 +0200 +Subject: [PATCH] Avoid deleting TFormulas twice + +Example failure: + + 562/1224 Test #541: tutorial-gl-gltf3 ...................................................***Failed Error regular expression found in output. Regex=[Error in <] 1.36 sec +Processing /builddir/build/BUILD/root-6.26.00/tutorials/gl/gltf3.C... +Error in : A list is accessing an object (0x7fffd1c959a0) already deleted (list name = Functions) +Error in : A list is accessing an object (0x7fffd1c95750) already deleted (list name = Functions) + +The commit also changes the filename used in +tutorials/hist/fillrandom.py to be different form the one used in +tutorials/hist/fillrandom.C (and tutorials/pyroot/fillrandom.py) +--- + tutorials/gl/gltf3.C | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tutorials/gl/gltf3.C b/tutorials/gl/gltf3.C +index 3697e69b7a..4089f0d2b7 100644 +--- a/tutorials/gl/gltf3.C ++++ b/tutorials/gl/gltf3.C +@@ -27,8 +27,8 @@ void gltf3() + TPad *tf3Pad = new TPad("box", "box", 0.04, 0.04, 0.96, 0.8); + tf3Pad->Draw(); + +- TFormula f1 = TFormula("f1", "x*x + y*y + z*z + 2*y - 1"); +- TFormula f2 = TFormula("f2", "x*x + y*y + z*z - 2*y - 1"); ++ TFormula *f1 = new TFormula("f1", "x*x + y*y + z*z + 2*y - 1"); ++ TFormula *f2 = new TFormula("f2", "x*x + y*y + z*z - 2*y - 1"); + + // Klein bottle with cut top&bottom parts + // The Klein bottle is a closed non-orientable surface that has no +-- +2.35.1 + diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch new file mode 100644 index 0000000..0d9f41a --- /dev/null +++ b/root-big-endian-byte-swap.patch @@ -0,0 +1,40 @@ +From d9e03aad7a5132fe9db9992eecb47ee4e91c354c Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 25 Mar 2022 11:13:12 +0100 +Subject: [PATCH] Byte swap values read from the protobuf raw data stream on + big endian + +--- + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +index 3b0a30cdb0..23e41d746f 100644 +--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx ++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +@@ -1,3 +1,4 @@ ++#include "Byteswap.h" + #include "TMVA/RModelParser_ONNX.hxx" + #include "TMVA/OperatorList.hxx" + #include "onnx_proto3.pb.h" +@@ -980,9 +981,14 @@ RModel RModelParser_ONNX::Parse(std::string filename){ + //void* data = malloc (fLength * sizeof(float)); + std::shared_ptr data(malloc(fLength * sizeof(float)), free); + +- if (tensorproto->raw_data().empty() == false){ +- auto raw_data_ptr = reinterpret_cast(const_cast(tensorproto->raw_data().c_str())); +- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float)); ++ if (!tensorproto->raw_data().empty()) { ++#ifdef R__BYTESWAP ++ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float)); ++#else ++ for (std::size_t k = 0; k < fLength; ++k) ++ (reinterpret_cast(data.get()))[k] = ++ R__bswap_32((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); ++#endif + }else{ + tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), static_cast(data.get())); + } +-- +2.35.1 + diff --git a/root-blas-linking-and-ignore-prefix.patch b/root-blas-linking-and-ignore-prefix.patch new file mode 100644 index 0000000..abe53f7 --- /dev/null +++ b/root-blas-linking-and-ignore-prefix.patch @@ -0,0 +1,74 @@ +From 1aa9231becda09a89ec576e4a17ca4d9b6e2f310 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 15 Mar 2022 14:55:37 +0100 +Subject: [PATCH] Link to the blas library found by cmake, not hardcoded + "blas". Set ROOTIGNOREPREFIX=1 when running built binaries during build. Make + sure PCH is created before running emitters. + +--- + tmva/sofie/test/CMakeLists.txt | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/tmva/sofie/test/CMakeLists.txt b/tmva/sofie/test/CMakeLists.txt +index e4f9d28748..a3a2c9ae16 100644 +--- a/tmva/sofie/test/CMakeLists.txt ++++ b/tmva/sofie/test/CMakeLists.txt +@@ -43,7 +43,7 @@ target_compile_options(emitFromONNX PRIVATE -Wno-unused-parameter -Wno-array-bou + + # Automatic compilation of headers from onnx files + add_custom_target(SofieCompileModels_ONNX) +-add_dependencies(SofieCompileModels_ONNX emitFromONNX) ++add_dependencies(SofieCompileModels_ONNX emitFromONNX onepcm) + + # Finding .onnx files to be compiled and creating the appropriate command + file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx") +@@ -51,7 +51,7 @@ foreach(onnx_file ${ONNX_FILES}) + get_filename_component(fname ${onnx_file} NAME_WE) + get_filename_component(fdir ${onnx_file} DIRECTORY) + add_custom_command(TARGET SofieCompileModels_ONNX POST_BUILD +- COMMAND ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} ++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} + USES_TERMINAL + ) + endforeach() +@@ -60,7 +60,8 @@ endforeach() + ROOT_ADD_GTEST(TestCustomModelsFromONNX TestCustomModelsFromONNX.cxx + LIBRARIES + ROOTTMVASofie +- blas ++ ${BLAS_LINKER_FLAGS} ++ ${BLAS_LIBRARIES} + INCLUDE_DIRS + ${CMAKE_CURRENT_BINARY_DIR} + ) +@@ -92,7 +93,7 @@ target_compile_options(emitFromROOT PRIVATE -Wno-unused-parameter -Wno-array-bou + + # Automatic compilation of headers from root files + add_custom_target(SofieCompileModels_ROOT) +-add_dependencies(SofieCompileModels_ROOT emitFromROOT) ++add_dependencies(SofieCompileModels_ROOT emitFromROOT onepcm) + + # Finding .onnx files to be parsed and creating the appropriate command + file(GLOB ONNX_FILES "${ONNX_MODELS_DIR}/*.onnx") +@@ -100,7 +101,7 @@ foreach(onnx_file ${ONNX_FILES}) + get_filename_component(fname ${onnx_file} NAME_WE) + get_filename_component(fdir ${onnx_file} DIRECTORY) + add_custom_command(TARGET SofieCompileModels_ROOT POST_BUILD +- COMMAND ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} ++ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} + USES_TERMINAL + ) + endforeach() +@@ -109,7 +110,8 @@ endforeach() + ROOT_ADD_GTEST(TestCustomModelsFromROOT TestCustomModelsFromROOT.cxx + LIBRARIES + ROOTTMVASofie +- blas ++ ${BLAS_LINKER_FLAGS} ++ ${BLAS_LIBRARIES} + INCLUDE_DIRS + ${CMAKE_CURRENT_BINARY_DIR} + ) +-- +2.35.1 + diff --git a/root-core-base-test.patch b/root-core-base-test.patch new file mode 100644 index 0000000..c268390 --- /dev/null +++ b/root-core-base-test.patch @@ -0,0 +1,31 @@ +From 12d52a60629e1639ced23a1919bd85628d9135ea Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 3 Apr 2022 23:23:00 +0200 +Subject: [PATCH] Fix library link order + +Fixes undefined references when linking CoreBaseTests + +../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::TMemFile(char const*, TMemFile::ZeroCopyView_t const&)' +../../../lib/libCling.so.6.26.00: undefined reference to `TFile::TFile(char const*, char const*, char const*, int)' +../../../lib/libCling.so.6.26.00: undefined reference to `TFile::~TFile()' +../../../lib/libCling.so.6.26.00: undefined reference to `TStreamerInfo::TStreamerInfo()' +../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::~TMemFile()' +--- + core/base/test/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/base/test/CMakeLists.txt b/core/base/test/CMakeLists.txt +index 4b08cb0390..9b52e83405 100644 +--- a/core/base/test/CMakeLists.txt ++++ b/core/base/test/CMakeLists.txt +@@ -22,6 +22,6 @@ ROOT_ADD_GTEST(CoreBaseTests + TExceptionHandlerTests.cxx + TStringTest.cxx + TBitsTests.cxx +- LIBRARIES Core RIO ${extralibs}) ++ LIBRARIES ${extralibs} RIO Core) + + ROOT_ADD_GTEST(CoreErrorTests TErrorTests.cxx LIBRARIES Core) +-- +2.35.1 + diff --git a/root-dataframe-callback.patch b/root-dataframe-callback.patch new file mode 100644 index 0000000..57ffc08 --- /dev/null +++ b/root-dataframe-callback.patch @@ -0,0 +1,45 @@ +From d849bc502eec4ec95d15ca41319ba0467ab22759 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 15:55:29 +0100 +Subject: [PATCH] =?UTF-8?q?NENTRIES=20is=20not=20always=20a=20multiple=20o?= + =?UTF-8?q?f=20the=20expected=20size.=20NENTRIES=20is=2010.=20On=20a=204?= + =?UTF-8?q?=20core=20machine=20the=20expected=20size=20in=202=20=C3=97=204?= + =?UTF-8?q?=20=3D=208.=20Looping=20over=20the=208=20IDs,=202=20have=202=20?= + =?UTF-8?q?entries=20the=20remaining=206=20have=201=20entry=20for=20a=20to?= + =?UTF-8?q?tal=20of=2010=20(NENTRIES)=20entries.=20The=20test=20checked=20?= + =?UTF-8?q?that=20each=20ID=20had=20NENTRIES/(expected=20size)=20entries,?= + =?UTF-8?q?=20which=20in=20this=20case=20with=20integer=20division=20equal?= + =?UTF-8?q?s=201=20entry,=20which=20was=20not=20the=20correct=20test.=20Th?= + =?UTF-8?q?is=20commit=20chenges=20to=20test=20to=20check=20that=20the=20t?= + =?UTF-8?q?otal=20number=20of=20entries=20summed=20for=20all=20IDs=20equal?= + =?UTF-8?q?s=20NENTRIES.?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + tree/dataframe/test/dataframe_samplecallback.cxx | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx +index 188d58dd31..d387ea5f86 100644 +--- a/tree/dataframe/test/dataframe_samplecallback.cxx ++++ b/tree/dataframe/test/dataframe_samplecallback.cxx +@@ -125,11 +125,13 @@ TEST_P(RDFSampleCallback, EmptySourceSampleID) { + // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled + const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2ull); + ASSERT_EQ(result->size(), expectedSize); ++ ULong64_t entries = 0; + for (auto &id : *result) { + // check that all entries start with the expected string + EXPECT_TRUE(id.AsString().rfind("Empty source, range: {", 0) == 0); +- EXPECT_EQ(id.NEntries(), NENTRIES / expectedSize); ++ entries += id.NEntries(); + } ++ EXPECT_EQ(entries, NENTRIES); + } else { + ASSERT_EQ(result->size(), 1); + const auto &id = result->at(0); +-- +2.35.1 + diff --git a/root-doc-no-notebooks.patch b/root-doc-no-notebooks.patch deleted file mode 100644 index f94d31f..0000000 --- a/root-doc-no-notebooks.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ur root-6.20.02.orig/documentation/doxygen/filter.cxx root-6.20.02/documentation/doxygen/filter.cxx ---- root-6.20.02.orig/documentation/doxygen/filter.cxx 2020-03-15 16:21:25.000000000 +0100 -+++ root-6.20.02/documentation/doxygen/filter.cxx 2020-03-15 20:05:59.047270429 +0100 -@@ -378,16 +378,7 @@ - - // notebook found - if (gLineString.find("\\notebook") != string::npos) { -- ExecuteCommand(StringFormat("%s converttonotebook.py %s %s/notebooks/", -- gPythonExec.c_str(), -- gFileName.c_str(), gOutDir.c_str())); -- if (gPython){ -- gLineString = "## "; -- } -- else{ -- gLineString = "/// "; -- } -- gLineString += StringFormat( "\\htmlonly \"View \"Open \\endhtmlonly \n", gMacroName.c_str() , gMacroName.c_str()); -+ gLineString = ""; - } - - // \macro_output found diff --git a/root-doxygen-crash-el7.patch b/root-doxygen-crash-el7.patch deleted file mode 100644 index 28fb075..0000000 --- a/root-doxygen-crash-el7.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -ur root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C ---- root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C 2021-11-05 18:09:46.916687882 +0100 -@@ -5,7 +5,6 @@ - /// This tutorial shows how a histogram can be filled in parallel - /// with a multiprocess approach. - /// --/// \macro_image - /// \macro_code - /// - /// \date January 2016 -diff -ur root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C ---- root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C 2021-12-06 18:19:08.498933048 +0100 -@@ -10,7 +10,6 @@ - /// method. This method is not thread safe: in presence of ROOT histograms, the - /// system will not crash but the result is not uniquely defined. - /// --/// \macro_image - /// \macro_code - /// - /// \date January 2016 -diff -ur root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C root-6.24.06/tutorials/multicore/mt304_fillHistos.C ---- root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mt304_fillHistos.C 2021-12-06 19:54:20.634373797 +0100 -@@ -5,7 +5,6 @@ - /// Illustrates use of power-of-two autobin algorithm - /// - /// \macro_code --/// \macro_image - /// - /// \date November 2017 - /// \author Gerardo Ganis -diff -ur root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C ---- root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200 -+++ root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-12-06 19:54:22.174377227 +0100 -@@ -5,7 +5,6 @@ - /// This tutorial shows how a histogram can be filled in parallel - /// with a multiprocess approach. - /// --/// \macro_image - /// \macro_code - /// - /// \date January 2016 diff --git a/root-doxygen-crash.patch b/root-doxygen-crash.patch deleted file mode 100644 index d69d7e7..0000000 --- a/root-doxygen-crash.patch +++ /dev/null @@ -1,275 +0,0 @@ -diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C root-6.24.02/tutorials/dataframe/df002_dataModel.C ---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df002_dataModel.C 2021-08-11 03:55:11.021149115 +0200 -@@ -7,7 +7,6 @@ - /// complex than flat ntuples with RDataFrame - /// - /// \macro_code --/// \macro_image - /// - /// \date December 2016 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py root-6.24.02/tutorials/dataframe/df002_dataModel.py ---- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df002_dataModel.py 2021-08-11 03:55:11.084149272 +0200 -@@ -7,7 +7,6 @@ - ## complex than flat ntuples with RDataFrame - ## - ## \macro_code --## \macro_image - ## - ## \date May 2017 - ## \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.C root-6.24.02/tutorials/dataframe/df003_profiles.C ---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df003_profiles.C 2021-08-11 03:55:11.148149432 +0200 -@@ -7,7 +7,6 @@ - /// RDataFrame. See the documentation of TProfile and TProfile2D to better - /// understand the analogy of this code with the example one. - /// --/// \macro_image - /// \macro_code - /// - /// \date February 2017 -diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.py root-6.24.02/tutorials/dataframe/df003_profiles.py ---- root-6.24.02.orig/tutorials/dataframe/df003_profiles.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df003_profiles.py 2021-08-11 03:55:11.211149590 +0200 -@@ -8,7 +8,6 @@ - ## understand the analogy of this code with the example one. - ## - ## \macro_code --## \macro_image - ## - ## \date February 2017 - ## \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C ---- root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C 2021-08-11 03:55:11.275149750 +0200 -@@ -7,7 +7,6 @@ - /// `Fill` method. - /// - /// \macro_code --/// \macro_image - /// - /// \date March 2017 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C root-6.24.02/tutorials/dataframe/df007_snapshot.C ---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df007_snapshot.C 2021-08-11 03:55:11.338149907 +0200 -@@ -5,7 +5,6 @@ - /// - /// This tutorial shows how to write out datasets in ROOT format using the RDataFrame - /// --/// \macro_image - /// \macro_code - /// - /// \date April 2017 -diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py root-6.24.02/tutorials/dataframe/df007_snapshot.py ---- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df007_snapshot.py 2021-08-11 03:55:11.402150067 +0200 -@@ -5,7 +5,6 @@ - ## - ## This tutorial shows how to write out datasets in ROOT format using the RDataFrame - ## --## \macro_image - ## \macro_code - ## - ## \date April 2017 -diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C ---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C 2021-08-11 03:55:11.465150225 +0200 -@@ -14,7 +14,6 @@ - /// DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700). - /// - /// \macro_code --/// \macro_image - /// - /// \date October 2017 - /// \author Enric Tejedor (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py ---- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py 2021-08-11 03:55:11.529150385 +0200 -@@ -14,7 +14,6 @@ - ## DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700). - ## - ## \macro_code --## \macro_image - ## - ## \date October 2017 - ## \author Enric Tejedor (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C ---- root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C 2021-08-11 03:55:11.593150545 +0200 -@@ -14,7 +14,6 @@ - /// From the ROOT website: https://root.cern.ch/files/tutorials/tdf014_CsvDataSource_MuRun2010B.csv - /// - /// \macro_code --/// \macro_image - /// - /// \date February 2018 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C root-6.24.02/tutorials/dataframe/df016_vecOps.C ---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df016_vecOps.C 2021-08-11 03:55:11.656150702 +0200 -@@ -7,7 +7,6 @@ - /// stored in datasets, a situation very common in HEP data analysis. - /// - /// \macro_code --/// \macro_image - /// - /// \date February 2018 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py root-6.24.02/tutorials/dataframe/df016_vecOps.py ---- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df016_vecOps.py 2021-08-11 03:55:11.720150862 +0200 -@@ -6,7 +6,6 @@ - ## This tutorial shows the potential of the VecOps approach for treating collections - ## stored in datasets, a situation very common in HEP data analysis. - ## --## \macro_image - ## \macro_code - ## - ## \date February 2018 -diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C ---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C 2021-08-11 03:55:11.783151020 +0200 -@@ -11,7 +11,6 @@ - /// greater than 100. - /// - /// \macro_code --/// \macro_image - /// - /// \date March 2018 - /// \authors Danilo Piparo (CERN), Andre Vieira Silva -diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py ---- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py 2021-08-11 03:55:11.846151177 +0200 -@@ -7,7 +7,6 @@ - ## model typically adopted in HEP for analysis. - ## - ## \macro_code --## \macro_image - ## - ## \date March 2018 - ## \authors Danilo Piparo (CERN), Andre Vieira Silva -diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.C root-6.24.02/tutorials/dataframe/df019_Cache.C ---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df019_Cache.C 2021-08-11 03:55:11.910151337 +0200 -@@ -18,7 +18,6 @@ - /// only when the event loop is triggered on it. - /// - /// \macro_code --/// \macro_image - /// - /// \date June 2018 - /// \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.py root-6.24.02/tutorials/dataframe/df019_Cache.py ---- root-6.24.02.orig/tutorials/dataframe/df019_Cache.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df019_Cache.py 2021-08-11 03:55:11.973151495 +0200 -@@ -18,7 +18,6 @@ - ## only when the event loop is triggered on it. - ## - ## \macro_code --## \macro_image - ## - ## \date June 2018 - ## \author Danilo Piparo (CERN) -diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C root-6.24.02/tutorials/dataframe/df021_createTGraph.C ---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.C 2021-08-11 03:55:12.037151655 +0200 -@@ -4,7 +4,6 @@ - /// Fill a TGraph using RDataFrame. - /// - /// \macro_code --/// \macro_image - /// - /// \date July 2018 - /// \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino) -diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py root-6.24.02/tutorials/dataframe/df021_createTGraph.py ---- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.py 2021-08-11 03:55:12.100151813 +0200 -@@ -4,7 +4,6 @@ - ## Fill a TGraph using RDataFrame. - ## - ## \macro_code --## \macro_image - ## - ## \date July 2018 - ## \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino) -diff -ur root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C root-6.24.02/tutorials/tmva/tmva003_RReader.C ---- root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/tmva003_RReader.C 2021-08-11 04:16:33.833359421 +0200 -@@ -5,7 +5,6 @@ - /// TMVA XML files. - /// - /// \macro_code --/// \macro_output - /// - /// \date July 2019 - /// \author Stefan Wunsch -diff -ur root-6.24.02.orig/tutorials/tmva/tmva103_Application.C root-6.24.02/tutorials/tmva/tmva103_Application.C ---- root-6.24.02.orig/tutorials/tmva/tmva103_Application.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/tmva103_Application.C 2021-08-11 21:56:49.387390340 +0200 -@@ -6,7 +6,6 @@ - /// event-by-event inference, batch inference and pipelines with RDataFrame. - /// - /// \macro_code --/// \macro_output - /// - /// \date December 2018 - /// \author Stefan Wunsch -diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C ---- root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C 2021-08-10 15:21:03.306171069 +0200 -@@ -6,7 +6,6 @@ - /// This is an example of using a CNN in TMVA. We do classification using a toy image data set - /// that is generated when running the example macro - /// --/// \macro_image - /// \macro_output - /// \macro_code - /// -diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C ---- root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C 2021-08-10 15:21:33.974251559 +0200 -@@ -7,7 +7,6 @@ - /// used in this paper: Baldi, P., P. Sadowski, and D. Whiteson. “Searching for Exotic Particles in High-energy Physics - /// with Deep Learning.” Nature Communications 5 (July 2, 2014). - /// --/// \macro_image - /// \macro_output - /// \macro_code - /// -diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C ---- root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C 2021-08-10 15:21:15.657203486 +0200 -@@ -6,7 +6,6 @@ - /// This is an example of using a RNN in TMVA. We do classification using a toy time dependent data set - /// that is generated when running this example macro - /// --/// \macro_image - /// \macro_output - /// \macro_code - /// -diff -ur root-6.24.02.orig/tutorials/v7/line.cxx root-6.24.02/tutorials/v7/line.cxx ---- root-6.24.02.orig/tutorials/v7/line.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/v7/line.cxx 2021-08-16 14:25:32.528867781 +0200 -@@ -6,7 +6,6 @@ - /// "normal" coordinates' system and changing the line color linearly from black - /// to red. - /// --/// \macro_image (line.png) - /// \macro_code - /// - /// \date 2018-03-18 -diff -ur root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C ---- root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C 2021-08-10 15:22:06.504336763 +0200 -@@ -4,7 +4,6 @@ - /// Write and read an RNTuple from a user-defined class. Adapted from tv3.C - /// Illustrates various RNTuple introspection methods. - /// --/// \macro_image - /// \macro_code - /// - /// \date April 2020 diff --git a/root-doxygen-fix1.patch b/root-doxygen-fix1.patch deleted file mode 100644 index 9525bf4..0000000 --- a/root-doxygen-fix1.patch +++ /dev/null @@ -1,87 +0,0 @@ -From e303e0105b6f7bd7848a4385fcb62bedb847abb4 Mon Sep 17 00:00:00 2001 -From: Olivier Couet -Date: Mon, 12 Apr 2021 16:22:49 +0200 -Subject: [PATCH] RLogScopedVerbosity doxygen doc fix (#7830) - -* RLogScopedVerbosity doxygen doc was not visible because source code was under ``` instead of ~~~ - -* [foundation] RLogger doc (NFC) - thanks, Sergey! - -Co-authored-by: Axel Naumann ---- - core/foundation/inc/ROOT/RLogger.hxx | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/core/foundation/inc/ROOT/RLogger.hxx b/core/foundation/inc/ROOT/RLogger.hxx -index d753bbc358..c1a1b22690 100644 ---- a/core/foundation/inc/ROOT/RLogger.hxx -+++ b/core/foundation/inc/ROOT/RLogger.hxx -@@ -109,7 +109,7 @@ public: - /// Construct an anonymous channel. - RLogChannel() = default; - -- /// Construct an anonymous channel with a default vebosity. -+ /// Construct an anonymous channel with a default verbosity. - explicit RLogChannel(ELogLevel verbosity) : fVerbosity(verbosity) {} - - /// Construct a log channel given its name, which is part of the diagnostics. -@@ -202,11 +202,11 @@ namespace Detail { - - This builder can be used through the utility preprocessor macros R__LOG_ERROR, - R__LOG_WARNING etc like this: -- ```c++ -+~~~ {.cpp} - R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; - const int decreasedInfoLevel = 5; - R__LOG_XDEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; -- ``` -+~~~ - This will automatically capture the current class and function name, the file and line number. - */ - -@@ -235,10 +235,10 @@ public: - Change the verbosity level (global or specific to the RLogChannel passed to the - constructor) for the lifetime of this object. - Example: -- ```c++ -+~~~ {.cpp} - RLogScopedVerbosity debugThis(gFooLog, ELogLevel::kDebug); - Foo::SomethingToDebug(); -- ``` -+~~~ - */ - class RLogScopedVerbosity { - RLogChannel *fChannel; -@@ -331,10 +331,10 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons - - - The conditional `RLogBuilder` use prevents stream operators from being called if - verbosity is too low, i.e.: -- ```` -+ ~~~ - RLogScopedVerbosity silence(RLogLevel::kFatal); - R__LOG_DEBUG(7) << WillNotBeCalled(); -- ``` -+ ~~~ - - To update counts of warnings / errors / fatal errors, those RLogEntries must - always be created, even if in the end their emission will be silenced. This - should be fine, performance-wise, as they should not happen frequently. -@@ -350,13 +350,13 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons - - /// \name LogMacros - /// Macros to log diagnostics. --/// ```c++ -+/// ~~~ {.cpp} - /// R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42; - /// - /// RLogScopedVerbosity verbose(kDebug + 5); - /// const int decreasedInfoLevel = 5; --/// R__LOG_DEBUG(decreasedInfoLevel, ROOT::Experimental::WebGUILog()) << "nitty-gritty details"; --/// ``` -+/// R__LOG_DEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details"; -+/// ~~~ - ///\{ - #define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__) - #define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__) --- -2.33.1 - diff --git a/root-doxygen-fix2.patch b/root-doxygen-fix2.patch deleted file mode 100644 index 1fa75e7..0000000 --- a/root-doxygen-fix2.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 37a1a43347bc1ecb492b13e2f06d80c16779c84f Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 5 Dec 2021 21:51:32 +0100 -Subject: [PATCH] Fix doxygen warning - -warning: reached end of file while inside a ~~~ block! ---- - gui/webdisplay/src/RWebDisplayHandle.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx -index 44a544bb51..84ff7a6990 100644 ---- a/gui/webdisplay/src/RWebDisplayHandle.cxx -+++ b/gui/webdisplay/src/RWebDisplayHandle.cxx -@@ -608,7 +608,7 @@ std::unique_ptr RWebDisplayHandle::Display(const RWebDisplayA - /// Browser can specified when starting `root --web=firefox` - /// Returns true when browser started - /// It is convenience method, equivalent to: --/// ~~~ -+/// ~~~ - /// RWebDisplayArgs args; - /// args.SetUrl(url); - /// args.SetStandalone(false); --- -2.33.1 - diff --git a/root-endian-warn.patch b/root-endian-warn.patch new file mode 100644 index 0000000..77cd6b9 --- /dev/null +++ b/root-endian-warn.patch @@ -0,0 +1,33 @@ +From ba0dc65e558fd916dbe18f8dbe8208a3be932c25 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 28 Mar 2022 09:20:18 +0200 +Subject: [PATCH 2/2] Ignore warnings about RooNaNPacker not being implemented + for big endian + +This warning is triggered in many tests, so it makes sense to put it +in the default ignored set. +--- + test/unit_testing_support/ROOTUnitTestSupport.cxx | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/test/unit_testing_support/ROOTUnitTestSupport.cxx b/test/unit_testing_support/ROOTUnitTestSupport.cxx +index 259ab4e09c..79cd476950 100644 +--- a/test/unit_testing_support/ROOTUnitTestSupport.cxx ++++ b/test/unit_testing_support/ROOTUnitTestSupport.cxx +@@ -73,6 +73,13 @@ static struct ForbidDiagnostics { + return; + } + ++ // FIXME: RooNaNPacker warns about not being implemented for big endian ++ if (level == kWarning ++ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) { ++ std::cerr << "Warning in " << location << " " << msg << std::endl; ++ return; ++ } ++ + FAIL() << "Received unexpected diagnostic of severity " + << level + << " at '" << location << "' reading '" << msg << "'.\n" +-- +2.35.1 + diff --git a/root-epel7-ppc64le-pyroot.patch b/root-epel7-ppc64le-pyroot.patch deleted file mode 100644 index 4619bf0..0000000 --- a/root-epel7-ppc64le-pyroot.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -ur root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py ---- root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-13 11:42:09.000000000 +0100 -+++ root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-14 15:38:24.462463625 +0100 -@@ -19,6 +19,12 @@ - # Prevent cppyy from filtering ROOT libraries - environ['CPPYY_NO_ROOT_FILTER'] = '1' - -+try: -+ from ctypes import cdll -+ libCore = cdll.LoadLibrary("libCore.so") -+except: -+ print("An exception occurred while loading libCore.so with ctypes") -+ - import cppyy - if not 'ROOTSYS' in environ: - # Revert setting made by cppyy diff --git a/root-fix-TMVA-tutorial-using-internally-python.patch b/root-fix-TMVA-tutorial-using-internally-python.patch new file mode 100644 index 0000000..e1cae2a --- /dev/null +++ b/root-fix-TMVA-tutorial-using-internally-python.patch @@ -0,0 +1,177 @@ +From db974bbe72b97c798b7db52d2481aa24c2ce2b76 Mon Sep 17 00:00:00 2001 +From: moneta +Date: Thu, 17 Mar 2022 16:28:42 +0100 +Subject: [PATCH] Fix TMVA tutorial using internally pyton for MacOS 12.3 + +With the new MacOS update python (and python2) is not existing anymore, only python3. +Add then a new function TMVA::Python_executable() using ROOT config to determine if ROOT is using python version 2 or 3. In case of 3 returns as executable "python3". + +Fix also the correct location of the input ONNX file for TMVA_SOFIE_ONNX.C (copying the file at configure time) +--- + tmva/pymva/inc/TMVA/PyMethodBase.h | 6 ++++++ + tmva/pymva/src/PyMethodBase.cxx | 20 ++++++++++++++++++++ + tutorials/CMakeLists.txt | 5 ++++- + tutorials/tmva/TMVA_CNN_Classification.C | 5 +++-- + tutorials/tmva/TMVA_RNN_Classification.C | 2 +- + tutorials/tmva/TMVA_SOFIE_Keras.C | 2 +- + tutorials/tmva/TMVA_SOFIE_ONNX.C | 2 +- + tutorials/tmva/TMVA_SOFIE_PyTorch.C | 2 +- + 8 files changed, 37 insertions(+), 7 deletions(-) + +diff --git a/tmva/pymva/inc/TMVA/PyMethodBase.h b/tmva/pymva/inc/TMVA/PyMethodBase.h +index 31a5caada9..a213c3fbad 100644 +--- a/tmva/pymva/inc/TMVA/PyMethodBase.h ++++ b/tmva/pymva/inc/TMVA/PyMethodBase.h +@@ -53,6 +53,12 @@ namespace TMVA { + class MethodBoost; + class DataSetInfo; + ++ /// Function to find current Python executable ++ /// used by ROOT ++ /// If Python2 is installed return "python" ++ /// Instead if "Python3" return "python3" ++ TString Python_Executable(); ++ + class PyMethodBase : public MethodBase { + + friend class Factory; +diff --git a/tmva/pymva/src/PyMethodBase.cxx b/tmva/pymva/src/PyMethodBase.cxx +index 86f979e006..26b0f31135 100644 +--- a/tmva/pymva/src/PyMethodBase.cxx ++++ b/tmva/pymva/src/PyMethodBase.cxx +@@ -19,6 +19,9 @@ + #include "TMVA/MsgLogger.h" + #include "TMVA/Results.h" + #include "TMVA/Timer.h" ++#include "TMVA/Tools.h" ++ ++#include "TSystem.h" + + #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION + #include +@@ -37,6 +40,23 @@ public: + ~PyGILRAII() { PyGILState_Release(m_GILState); } + }; + } // namespace Internal ++ ++/// get current Python executable used by ROOT ++TString Python_Executable() { ++ TString python_version = gSystem->GetFromPipe("root-config --python-version"); ++ if (python_version.IsNull()) { ++ TMVA::gTools().Log() << kFATAL << "Can't find a valid Python version used to build ROOT" << Endl; ++ return nullptr; ++ } ++ if(python_version[0] == '2') ++ return "python"; ++ else if (python_version[0] == '3') ++ return "python3"; ++ ++ TMVA::gTools().Log() << kFATAL << "Invalid Python version used to build ROOT : " << python_version << Endl; ++ return nullptr; ++} ++ + } // namespace TMVA + + ClassImp(PyMethodBase); +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index de77aaa787..f1f1abda71 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -281,8 +281,11 @@ else() + endif() + if (NOT tmva-sofie) + list(APPEND tmva_veto tmva/TMVA_SOFIE_ONNX.C) ++ else() ++ #copy ONNX file needed for the tutorial ++ configure_file(${CMAKE_SOURCE_DIR}/tmva/sofie/test/input_models/Linear_16.onnx ${CMAKE_BINARY_DIR}/tutorials/tmva/Linear_16.onnx COPYONLY) + endif() +- ++ + endif() + + if (NOT ROOT_pythia6_FOUND) +diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C +index fa03562a8f..31172bb729 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.C ++++ b/tutorials/tmva/TMVA_CNN_Classification.C +@@ -145,6 +145,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + TMVA::PyMethodBase::PyInitialize(); + #else + useKerasCNN = false; ++ usePyTorchCNN = false; + #endif + + TFile *outputFile = nullptr; +@@ -445,7 +446,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + + m.SaveSource("make_cnn_model.py"); + // execute +- gSystem->Exec("python make_cnn_model.py"); ++ gSystem->Exec(TMVA::Python_Executable() + " make_cnn_model.py"); + + if (gSystem->AccessPathName("model_cnn.h5")) { + Warning("TMVA_CNN_Classification", "Error creating Keras model file - skip using Keras"); +@@ -465,7 +466,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + Info("TMVA_CNN_Classification", "Using Convolutional PyTorch Model"); + TString pyTorchFileName = gROOT->GetTutorialDir() + TString("/tmva/PyTorch_Generate_CNN_Model.py"); + // check that pytorch can be imported and file defining the model and used later when booking the method is existing +- if (gSystem->Exec("python -c 'import torch'") || gSystem->AccessPathName(pyTorchFileName) ) { ++ if (gSystem->Exec(TMVA::Python_Executable() + " -c 'import torch'") || gSystem->AccessPathName(pyTorchFileName) ) { + Warning("TMVA_CNN_Classification", "PyTorch is not installed or model building file is not existing - skip using PyTorch"); + } + else { +diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C +index eb26d03a2f..b49e4d91c4 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.C ++++ b/tutorials/tmva/TMVA_RNN_Classification.C +@@ -431,7 +431,7 @@ the option string + + m.SaveSource("make_rnn_model.py"); + // execute +- gSystem->Exec("python make_rnn_model.py"); ++ gSystem->Exec(TMVA::Python_Executable() + " make_rnn_model.py"); + + if (gSystem->AccessPathName(modelName)) { + Warning("TMVA_RNN_Classification", "Error creating Keras recurrent model file - Skip using Keras"); +diff --git a/tutorials/tmva/TMVA_SOFIE_Keras.C b/tutorials/tmva/TMVA_SOFIE_Keras.C +index e9fdbba21a..a87269f7f4 100644 +--- a/tutorials/tmva/TMVA_SOFIE_Keras.C ++++ b/tutorials/tmva/TMVA_SOFIE_Keras.C +@@ -45,7 +45,7 @@ void TMVA_SOFIE_Keras(){ + TMacro m; + m.AddLine(pythonSrc); + m.SaveSource("make_keras_model.py"); +- gSystem->Exec("python make_keras_model.py"); ++ gSystem->Exec(TMVA::Python_Executable() + " make_keras_model.py"); + + //Parsing the saved Keras .h5 file into RModel object + SOFIE::RModel model = SOFIE::PyKeras::Parse("KerasModel.h5"); +diff --git a/tutorials/tmva/TMVA_SOFIE_ONNX.C b/tutorials/tmva/TMVA_SOFIE_ONNX.C +index 30148db4fa..bf66c38896 100644 +--- a/tutorials/tmva/TMVA_SOFIE_ONNX.C ++++ b/tutorials/tmva/TMVA_SOFIE_ONNX.C +@@ -13,7 +13,7 @@ using namespace TMVA::Experimental; + void TMVA_SOFIE_ONNX(){ + //Creating parser object to parse ONNX files + SOFIE::RModelParser_ONNX Parser; +- SOFIE::RModel model = Parser.Parse("../../tmva/sofie/test/input_models/Linear_16.onnx"); ++ SOFIE::RModel model = Parser.Parse(std::string(gROOT->GetTutorialsDir()) + "/tmva/Linear_16.onnx"); + + //Generating inference code + model.Generate(); +diff --git a/tutorials/tmva/TMVA_SOFIE_PyTorch.C b/tutorials/tmva/TMVA_SOFIE_PyTorch.C +index b208b042d7..580787cae1 100644 +--- a/tutorials/tmva/TMVA_SOFIE_PyTorch.C ++++ b/tutorials/tmva/TMVA_SOFIE_PyTorch.C +@@ -47,7 +47,7 @@ void TMVA_SOFIE_PyTorch(){ + TMacro m; + m.AddLine(pythonSrc); + m.SaveSource("make_pytorch_model.py"); +- gSystem->Exec("python make_pytorch_model.py"); ++ gSystem->Exec(TMVA::Python_Executable() + " make_pytorch_model.py"); + + //Parsing a PyTorch model requires the shape and data-type of input tensor + //Data-type of input tensor defaults to Float if not specified +-- +2.35.1 + diff --git a/root-fix-multicore-tests-with-few-cores.patch b/root-fix-multicore-tests-with-few-cores.patch deleted file mode 100644 index 55ad56e..0000000 --- a/root-fix-multicore-tests-with-few-cores.patch +++ /dev/null @@ -1,168 +0,0 @@ -From 153f1c3de0e24f5678fd3a706f902ac12b11048e Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 18 Apr 2021 07:28:41 +0200 -Subject: [PATCH] Fix multicore tests when running on machines with few cores - -When running on machines with few cores, enabling multithreading can -give you fewer cores than requested. For most of the tests this does -not matter. However, some tests verify the number of threads used. -This commit adapts those tests for this situation. ---- - tree/dataframe/test/dataframe_concurrency.cxx | 18 +++++++++------- - tree/dataframe/test/dataframe_interface.cxx | 7 +++++-- - tree/dataframe/test/dataframe_simple.cxx | 2 +- - tree/dataframe/test/dataframe_snapshot.cxx | 6 ++++-- - .../test/treeprocmt/treeprocessormt.cxx | 21 +++++++++++++++---- - 5 files changed, 37 insertions(+), 17 deletions(-) - -diff --git a/tree/dataframe/test/dataframe_concurrency.cxx b/tree/dataframe/test/dataframe_concurrency.cxx -index d1b25493e5..a4bce595f8 100644 ---- a/tree/dataframe/test/dataframe_concurrency.cxx -+++ b/tree/dataframe/test/dataframe_concurrency.cxx -@@ -57,33 +57,35 @@ TEST(RDFConcurrency, NestedParallelismBetweenDefineCalls) - // [DF] Warn on mismatch between slot pool size and effective number of slots - TEST(RDFSimpleTests, ThrowOnPoolSizeMismatch) - { -+ const unsigned int nslots = std::min(3u, std::thread::hardware_concurrency()); -+ - // pool created after RDF -- { -+ if (nslots > 1) { - ROOT::RDataFrame df(1); -- ROOT::EnableImplicitMT(3); -+ ROOT::EnableImplicitMT(nslots); - try { - df.Count().GetValue(); - } catch (const std::runtime_error &e) { - const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required " -- "was 1, but when starting the event loop it was 3. Maybe EnableImplicitMT() was " -+ "was 1, but when starting the event loop it was " + std::to_string(nslots) + ". Maybe EnableImplicitMT() was " - "called after the RDataFrame was constructed?"; -- EXPECT_STREQ(e.what(), expected_msg); -+ EXPECT_STREQ(e.what(), expected_msg.c_str()); - } - ROOT::DisableImplicitMT(); - } - - // pool deleted after RDF creation -- { -- ROOT::EnableImplicitMT(3); -+ if (nslots > 1) { -+ ROOT::EnableImplicitMT(nslots); - ROOT::RDataFrame df(1); - ROOT::DisableImplicitMT(); - try { - df.Count().GetValue(); - } catch (const std::runtime_error &e) { - const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required " -- "was 3, but when starting the event loop it was 1. Maybe DisableImplicitMT() was " -+ "was " + std::to_string(nslots) + ", but when starting the event loop it was 1. Maybe DisableImplicitMT() was " - "called after the RDataFrame was constructed?"; -- EXPECT_STREQ(e.what(), expected_msg); -+ EXPECT_STREQ(e.what(), expected_msg.c_str()); - } - } - } -diff --git a/tree/dataframe/test/dataframe_interface.cxx b/tree/dataframe/test/dataframe_interface.cxx -index afdd8360ef..90e052f1a7 100644 ---- a/tree/dataframe/test/dataframe_interface.cxx -+++ b/tree/dataframe/test/dataframe_interface.cxx -@@ -7,6 +7,8 @@ - - #include "gtest/gtest.h" - -+#include -+ - using namespace ROOT; - using namespace ROOT::RDF; - -@@ -351,9 +353,10 @@ TEST(RDataFrameInterface, GetNSlots) - ROOT::RDataFrame df0(1); - EXPECT_EQ(1U, df0.GetNSlots()); - #ifdef R__USE_IMT -- ROOT::EnableImplicitMT(3); -+ unsigned int nslots = std::min(3U, std::thread::hardware_concurrency()); -+ ROOT::EnableImplicitMT(nslots); - ROOT::RDataFrame df3(1); -- EXPECT_EQ(3U, df3.GetNSlots()); -+ EXPECT_EQ(nslots, df3.GetNSlots()); - ROOT::DisableImplicitMT(); - ROOT::RDataFrame df1(1); - EXPECT_EQ(1U, df1.GetNSlots()); -diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx -index c6aba48b3e..e6b92be776 100644 ---- a/tree/dataframe/test/dataframe_simple.cxx -+++ b/tree/dataframe/test/dataframe_simple.cxx -@@ -26,7 +26,7 @@ using namespace ROOT::VecOps; - // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially - class RDFSimpleTests : public ::testing::TestWithParam { - protected: -- RDFSimpleTests() : NSLOTS(GetParam() ? 4u : 1u) -+ RDFSimpleTests() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u) - { - if (GetParam()) - ROOT::EnableImplicitMT(NSLOTS); -diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx -index 3ce9254442..92444feff1 100644 ---- a/tree/dataframe/test/dataframe_snapshot.cxx -+++ b/tree/dataframe/test/dataframe_snapshot.cxx -@@ -10,6 +10,7 @@ - #include "gtest/gtest.h" - #include - #include -+#include - using namespace ROOT; // RDataFrame - using namespace ROOT::RDF; // RInterface - using namespace ROOT::VecOps; // RVec -@@ -1041,9 +1042,10 @@ TEST(RDFSnapshotMore, EmptyBuffersMT) - { - const auto fname = "emptybuffersmt.root"; - const auto treename = "t"; -- ROOT::EnableImplicitMT(4); -+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency()); -+ ROOT::EnableImplicitMT(nslots); - ROOT::RDataFrame d(10); -- auto dd = d.DefineSlot("x", [](unsigned int s) { return s == 3 ? 0 : 1; }) -+ auto dd = d.DefineSlot("x", [&](unsigned int s) { return s == nslots - 1 ? 0 : 1; }) - .Filter([](int x) { return x == 0; }, {"x"}, "f"); - auto r = dd.Report(); - dd.Snapshot(treename, fname, {"x"}); -diff --git a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx -index 5d5b2cbf42..963ce8a1b1 100644 ---- a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx -+++ b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx -@@ -294,14 +294,27 @@ TEST(TreeProcessorMT, LimitNTasks_CheckEntries) - } - }; - -- ROOT::EnableImplicitMT(4); -+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency()); -+ ROOT::EnableImplicitMT(nslots); - - ROOT::TTreeProcessorMT p(filename, treename); - p.Process(f); - -- EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n"; -- EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n"; -- EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n"; -+ if (nslots == 4) { -+ EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n"; -+ EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n"; -+ EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n"; -+ } -+ else if (nslots == 2) { -+ EXPECT_EQ(nTasks, 48U) << "Wrong number of tasks generated!\n"; -+ EXPECT_EQ(nEntriesCountsMap[20], 17U) << "Wrong number of tasks with 20 clusters each!\n"; -+ EXPECT_EQ(nEntriesCountsMap[21], 31U) << "Wrong number of tasks with 21 clusters each!\n"; -+ } -+ else if (nslots == 1) { -+ EXPECT_EQ(nTasks, 24U) << "Wrong number of tasks generated!\n"; -+ EXPECT_EQ(nEntriesCountsMap[41], 17U) << "Wrong number of tasks with 41 clusters each!\n"; -+ EXPECT_EQ(nEntriesCountsMap[42], 7U) << "Wrong number of tasks with 42 clusters each!\n"; -+ } - - gSystem->Unlink(filename); - ROOT::DisableImplicitMT(); --- -2.30.2 - diff --git a/root-fix-ppc64le-compilation-with-gcc-10.patch b/root-fix-ppc64le-compilation-with-gcc-10.patch deleted file mode 100644 index 2624de8..0000000 --- a/root-fix-ppc64le-compilation-with-gcc-10.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 5b8e969ca045aa238c685009e0aa48d74cbdbf22 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 13 Mar 2020 17:09:03 +0100 -Subject: [PATCH 1/2] Fix ppc64le compilation with gcc 10 - -Reapply fix lost in the LLVM 9 upgrade. This fix is in LLVM 10. - -Backported from llvm upstream -https://reviews.llvm.org/D74129 ---- - interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp -index c8ed42d266..16bb00d2e9 100644 ---- a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp -+++ b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp -@@ -2546,7 +2546,7 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr, - '/', '/', '/', '/', '/', '/', '/', '/' - }; - while (CurPtr+16 <= BufferEnd && -- !vec_any_eq(*(const vector unsigned char*)CurPtr, Slashes)) -+ !vec_any_eq(*(const __vector unsigned char*)CurPtr, Slashes)) - CurPtr += 16; - #else - // Scan for '/' quickly. Many block comments are very large. --- -2.30.2 - diff --git a/root-get-src.sh b/root-get-src.sh new file mode 100755 index 0000000..d83c34a --- /dev/null +++ b/root-get-src.sh @@ -0,0 +1,6 @@ +#!/bin/sh +VERSION=$1 +wget -N https://root.cern/download/root_v${VERSION}.source.tar.gz +tar -z -x -f root_v${VERSION}.source.tar.gz +find root-${VERSION}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';' +tar -J -c --group root --owner root -f root-${VERSION}.tar.xz root-${VERSION} diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch index a81848a..2550f4d 100644 --- a/root-jsmva-static.patch +++ b/root-jsmva-static.patch @@ -29,7 +29,7 @@ diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/noteb (function(factory){ -- var JSROOT_source_dir = "https://root.cern.ch/js/notebook/scripts/"; +- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/"; + var JSROOT_source_dir = "/static/scripts/"; var url = ""; diff --git a/root-longlong.patch b/root-longlong.patch new file mode 100644 index 0000000..856e015 --- /dev/null +++ b/root-longlong.patch @@ -0,0 +1,52 @@ +From 7fe5ef049baf614626d985b05cb0b335f9764a3c Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 16:15:00 +0100 +Subject: [PATCH] Fix test when long is 32 bits + +This test tests support for 64 bit values. But it uses a long type, +which fails on platforme where a long is 32 bits. + +This commit changes the test to use a long long type instead. +--- + tree/dataframe/test/dataframe_snapshot.cxx | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx +index 05354e83d5..a30440558e 100644 +--- a/tree/dataframe/test/dataframe_snapshot.cxx ++++ b/tree/dataframe/test/dataframe_snapshot.cxx +@@ -470,11 +470,11 @@ void ReadWriteCarray(const char *outFileNameBase) + auto size = 0; + int v[maxArraySize]; + bool vb[maxArraySize]; +- long int vl[maxArraySize]; ++ long long int vl[maxArraySize]; + t.Branch("size", &size, "size/I"); + t.Branch("v", v, "v[size]/I"); + t.Branch("vb", vb, "vb[size]/O"); +- t.Branch("vl", vl, "vl[size]/G"); ++ t.Branch("vl", vl, "vl[size]/L"); + + // Size 1 + size = 1; +@@ -518,7 +518,7 @@ void ReadWriteCarray(const char *outFileNameBase) + TTreeReader r(treename, &f2); + TTreeReaderArray rv(r, "v"); + TTreeReaderArray rvb(r, "vb"); +- TTreeReaderArray rvl(r, "vl"); ++ TTreeReaderArray rvl(r, "vl"); + + // Size 1 + EXPECT_TRUE(r.Next()); +@@ -571,7 +571,7 @@ void ReadWriteCarray(const char *outFileNameBase) + + const auto outfname2 = outFileNameBaseStr + "_out2.root"; + RDataFrame(treename, fname) +- .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); ++ .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); + outputChecker(outfname2.c_str()); + + gSystem->Unlink(fname.c_str()); +-- +2.35.1 + diff --git a/root-make-dyld-based-library-search-behavior-default.patch b/root-make-dyld-based-library-search-behavior-default.patch new file mode 100644 index 0000000..9b88576 --- /dev/null +++ b/root-make-dyld-based-library-search-behavior-default.patch @@ -0,0 +1,147 @@ +From 6ae602bba7d33c900a117c9de0187ab5a28e14b8 Mon Sep 17 00:00:00 2001 +From: Vassil Vassilev +Date: Mon, 21 Mar 2022 22:16:54 +0000 +Subject: [PATCH] Make the dyld-based library search behavior default for + non-modules. + +The dyld-based system was developed in the context on C++ modules but it turned +into a modules-agnostic feature. Instead of having to maintain more code, we +should rely on it even for non-modules build of ROOT. +--- + core/metacling/src/TCling.cxx | 109 +++------------------------------- + 1 file changed, 8 insertions(+), 101 deletions(-) + +diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx +index dec399cf2b..3eae1c8570 100644 +--- a/core/metacling/src/TCling.cxx ++++ b/core/metacling/src/TCling.cxx +@@ -6501,14 +6501,18 @@ bool TCling::LibraryLoadingFailed(const std::string& errmessage, const std::stri + return false; + } + +-static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_name, +- const cling::DynamicLibraryManager &DLM) { ++//////////////////////////////////////////////////////////////////////////////// ++/// Autoload a library based on a missing symbol. ++ ++void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { ++ ++ const cling::DynamicLibraryManager &DLM = *GetInterpreterImpl()->getDynamicLibraryManager(); + R__LOCKGUARD(gInterpreterMutex); + + auto LibLoader = [](const std::string& LibName) -> bool { + if (gSystem->Load(LibName.c_str(), "", false) < 0) { +- Error("TCling__LazyFunctionCreatorAutoloadForModule", +- "Failed to load library %s", LibName.c_str()); ++ ::Error("TCling__LazyFunctionCreatorAutoloadForModule", ++ "Failed to load library %s", LibName.c_str()); + return false; + } + return true; //success. +@@ -6536,103 +6540,6 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_nam + return nullptr; + + return llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name); +- +-} +- +-//////////////////////////////////////////////////////////////////////////////// +-/// Autoload a library based on a missing symbol. +- +-void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { +- if (fCxxModulesEnabled) +- return LazyFunctionCreatorAutoloadForModule(mangled_name, +- *GetInterpreterImpl()->getDynamicLibraryManager()); +- +- // First see whether the symbol is in the library that we are currently +- // loading. It will have access to the symbols of its dependent libraries, +- // thus checking "back()" is sufficient. +- if (!fRegisterModuleDyLibs.empty()) { +- if (void* addr = dlsym(fRegisterModuleDyLibs.back(), +- mangled_name.c_str())) { +- return addr; +- } +- } +- +- int err = 0; +- char* demangled_name_c = TClassEdit::DemangleName(mangled_name.c_str(), err); +- if (err) { +- return 0; +- } +- +- std::string name(demangled_name_c); +- free(demangled_name_c); +- +- //fprintf(stderr, "demangled name: '%s'\n", demangled_name); +- // +- // Separate out the class or namespace part of the +- // function name. +- // +- +- std::string::size_type pos = name.find("__thiscall "); +- if (pos != std::string::npos) { +- name.erase(0, pos + sizeof("__thiscall ")-1); +- } +- pos = name.find("__cdecl "); +- if (pos != std::string::npos) { +- name.erase(0, pos + sizeof("__cdecl ")-1); +- } +- if (!strncmp(name.c_str(), "typeinfo for ", sizeof("typeinfo for ")-1)) { +- name.erase(0, sizeof("typeinfo for ")-1); +- } else if (!strncmp(name.c_str(), "vtable for ", sizeof("vtable for ")-1)) { +- name.erase(0, sizeof("vtable for ")-1); +- } else if (!strncmp(name.c_str(), "operator", sizeof("operator")-1) +- && !isalnum(name[sizeof("operator")])) { +- // operator...(A, B) - let's try with A! +- name.erase(0, sizeof("operator")-1); +- pos = name.rfind('('); +- if (pos != std::string::npos) { +- name.erase(0, pos + 1); +- pos = name.find(","); +- if (pos != std::string::npos) { +- // remove next arg up to end, leaving only the first argument type. +- name.erase(pos); +- } +- pos = name.rfind(" const"); +- if (pos != std::string::npos) { +- name.erase(pos, strlen(" const")); +- } +- while (!name.empty() && strchr("&*", name.back())) +- name.erase(name.length() - 1); +- } +- } else { +- TClassEdit::FunctionSplitInfo fsi; +- TClassEdit::SplitFunction(name, fsi); +- name = fsi.fScopeName; +- } +- //fprintf(stderr, "name: '%s'\n", name.c_str()); +- // Now we have the class or namespace name, so do the lookup. +- TString libs = GetClassSharedLibs(name.c_str()); +- if (libs.IsNull()) { +- // Not found in the map, all done. +- return 0; +- } +- //fprintf(stderr, "library: %s\n", iter->second.c_str()); +- // Now we have the name of the libraries to load, so load them. +- +- TString lib; +- Ssiz_t posLib = 0; +- while (libs.Tokenize(lib, posLib)) { +- if (gSystem->Load(lib, "", kFALSE /*system*/) < 0) { +- // The library load failed, all done. +- //fprintf(stderr, "load failed: %s\n", errmsg.c_str()); +- return 0; +- } +- } +- +- //fprintf(stderr, "load succeeded.\n"); +- // Get the address of the function being called. +- void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); +- //fprintf(stderr, "addr: %016lx\n", reinterpret_cast(addr)); +- return addr; + } + + //////////////////////////////////////////////////////////////////////////////// +-- +2.35.1 + diff --git a/root-memory-usage.patch b/root-memory-usage.patch index aad7f1c..713d565 100644 --- a/root-memory-usage.patch +++ b/root-memory-usage.patch @@ -1,43 +1,30 @@ -From 21395b23947df7e2b5e0c93626453aeacdee026c Mon Sep 17 00:00:00 2001 +From 5618a02bd7ca4107f545e07a19b8a0762f31e45a Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Tue, 16 Jan 2018 10:25:50 +0100 -Subject: [PATCH] Reduce the needed memory for compilation +Date: Mon, 16 Aug 2021 19:45:00 +0200 +Subject: [PATCH] Reduce memory usage for all builds - not only debug builds -The linking of rootcling_stage1 and libCling requires a lot of memory. -Since these are linked from mostly the same objects, the build is -ready to link them at the same time. If you make a parallel build this -means that the two targets that require the most amount of memory are -being linked in parallel. This exhausts the available memory, and the -computer starts swapping. - -This commit adds a dependency of one of the targets to the other. The -dependency is not really there since it is not needed for building, -but it prevents the two memory consuming targets to be built in -parallel. - -A similar dependency existed before the latest code changes (see -commit 2638f6fc7f54b0995f2f9d60363daaf8aae2386e), then between -rootcling and libCling. --- - core/metacling/src/CMakeLists.txt | 5 +++++ - 1 file changed, 5 insertions(+) + core/metacling/src/CMakeLists.txt | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt -index 2923345f7c..b44a4d4115 100644 +index 8cbbe4ba08..f205b24602 100644 --- a/core/metacling/src/CMakeLists.txt +++ b/core/metacling/src/CMakeLists.txt -@@ -114,6 +114,11 @@ ROOT_LINKER_LIBRARY(Cling +@@ -107,11 +107,8 @@ ROOT_LINKER_LIBRARY(Cling $ LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS}) -+# The dependency on rootcling_stage1 was added to prevent Cling (libCling) and -+# rootcling_stage1 from being linked in parallel. -+# This avoids doing two memory consuming operations in parallel. +-string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE) +-if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO) +- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. +- add_dependencies(Cling rootcling_stage1) +-endif() ++# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. +add_dependencies(Cling rootcling_stage1) -+ + if(MSVC) set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) - set(cling_exports -- -2.26.2 +2.35.1 diff --git a/root-missing-include.patch b/root-missing-include.patch new file mode 100644 index 0000000..8c6bc17 --- /dev/null +++ b/root-missing-include.patch @@ -0,0 +1,32 @@ +From 235e446b0ac14170e49c15d5725fbe6dd315351f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 15 Mar 2022 09:08:39 +0100 +Subject: [PATCH] Add #include for std::memcpy + +In file included from /builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/RModel.hxx:14, + from /builddir/build/BUILD/root-6.26.00/tmva/sofie/src/RModel.cxx:3: +/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx: In member function 'void TMVA::Experimental::SOFIE::InitializedTensor::CastPersistentToShared()': +/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx:75:12: error: 'memcpy' is not a member of 'std'; did you mean 'wmemcpy'? + 75 | std::memcpy(tData.get(), fPersistentData,fSize * sizeof(float)); + | ^~~~~~ + | wmemcpy +gmake[2]: *** [tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/build.make:79: tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/src/RModel.cxx.o] Error 1 +--- + tmva/sofie/inc/TMVA/SOFIE_common.hxx | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx +index a663855004..7876727eef 100644 +--- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx ++++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx +@@ -6,6 +6,7 @@ + + #include + #include ++#include + #include + #include + #include +-- +2.35.1 + diff --git a/root-move-private-decl.patch b/root-move-private-decl.patch new file mode 100644 index 0000000..aa81617 --- /dev/null +++ b/root-move-private-decl.patch @@ -0,0 +1,405 @@ +From 9cdd51029f54aba874608f34580ea0ba94b670c7 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 17 Mar 2022 07:40:28 +0100 +Subject: [PATCH] Move private declarations away from the public header file + +This fixes warnings such as these: + +IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE8INTERNAL19make_ROperator_SeluERKN4onnx9NodeProtoERKNS3_10GraphProtoERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_11ETensorTypeESt4hashISG_ESt8equal_toISG_ESaISt4pairIKSG_SH_EEE' unresolved while linking function '_GLOBAL__sub_I_cling_module_0'! +You are probably missing the definition of TMVA::Experimental::SOFIE::INTERNAL::make_ROperator_Selu(onnx::NodeProto const&, onnx::GraphProto const&, std::unordered_map, std::allocator >, TMVA::Experimental::SOFIE::ETensorType, std::hash, std::allocator > >, std::equal_to, std::allocator > >, std::allocator, std::allocator > const, TMVA::Experimental::SOFIE::ETensorType> > >&) +Maybe you need to load the corresponding shared library? +--- + .../inc/TMVA/RModelParser_ONNX.hxx | 61 ------- + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 164 +++++++++++++++--- + 2 files changed, 139 insertions(+), 86 deletions(-) + +diff --git a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx +index 9e9764c0b6..09bcd34fe1 100644 +--- a/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx ++++ b/tmva/sofie_parsers/inc/TMVA/RModelParser_ONNX.hxx +@@ -1,81 +1,20 @@ + #ifndef TMVA_SOFIE_RMODELPARSER_ONNX + #define TMVA_SOFIE_RMODELPARSER_ONNX + +- +- + #include "TMVA/SOFIE_common.hxx" + #include "TMVA/RModel.hxx" +-#include "TMVA/OperatorList.hxx" + + #include +-#include +-#include +-#include +- +-//forward delcaration +-namespace onnx{ +- class NodeProto; +- class GraphProto; +-} + + namespace TMVA{ + namespace Experimental{ + namespace SOFIE{ + +-namespace INTERNAL{ +- +-std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_BatchNormalization(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-std::unique_ptr make_ROperator_Add(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map &tensor_type); +-std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map &tensor_type); +-std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, const onnx::GraphProto &graphproto, std::unordered_map &tensor_type); +-std::unique_ptr make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +- +- +-using factoryMethodMap = std::unordered_map (*)(const onnx::NodeProto&, const onnx::GraphProto&, std::unordered_map&)>; +-const factoryMethodMap mapOptypeOperator = { +- {"Gemm", &make_ROperator_Gemm}, +- {"Transpose", &make_ROperator_Transpose}, +- {"Relu", &make_ROperator_Relu}, +- {"Conv", &make_ROperator_Conv}, +- {"RNN", &make_ROperator_RNN}, +- {"Selu", &make_ROperator_Selu}, +- {"Sigmoid", &make_ROperator_Sigmoid}, +- {"LSTM", &make_ROperator_LSTM}, +- {"GRU", &make_ROperator_GRU}, +- {"BatchNormalization", &make_ROperator_BatchNormalization}, +- {"AveragePool", &make_ROperator_Pool}, +- {"GlobalAveragePool", &make_ROperator_Pool}, +- {"MaxPool", &make_ROperator_Pool}, +- {"Add", &make_ROperator_Add}, +- {"Reshape", &make_ROperator_Reshape}, +- {"Flatten", &make_ROperator_Reshape}, +- {"Slice", &make_ROperator_Slice}, +- {"Squeeze", &make_ROperator_Reshape}, +- {"Unsqueeze", &make_ROperator_Reshape}, +- {"Flatten", &make_ROperator_Reshape} +-}; +- +-std::unique_ptr make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type); +-}//INTERNAL +- +- +- + class RModelParser_ONNX{ + public: + RModel Parse(std::string filename); + }; + +- +- + }//SOFIE + }//Experimental + }//TMVA +diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +index 3b0a30cdb0..5f89bf66bd 100644 +--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx ++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +@@ -1,9 +1,12 @@ + #include "TMVA/RModelParser_ONNX.hxx" ++#include "TMVA/OperatorList.hxx" + #include "onnx_proto3.pb.h" + + #include ++#include + #include + #include ++#include + + namespace TMVA{ + namespace Experimental{ +@@ -11,7 +14,84 @@ namespace SOFIE{ + + namespace INTERNAL{ + +-std::unique_ptr make_ROperator(size_t idx, const onnx::GraphProto& graphproto, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Relu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Selu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Conv(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_RNN(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Pool(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Add(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator_GRU(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++using factoryMethodMap = ++ std::unordered_map (*)(const onnx::NodeProto &, const onnx::GraphProto &, ++ std::unordered_map &)>; ++ ++static const factoryMethodMap mapOptypeOperator = { ++ {"Gemm", &make_ROperator_Gemm}, {"Transpose", &make_ROperator_Transpose}, ++ {"Relu", &make_ROperator_Relu}, {"Conv", &make_ROperator_Conv}, ++ {"RNN", &make_ROperator_RNN}, {"Selu", &make_ROperator_Selu}, ++ {"Sigmoid", &make_ROperator_Sigmoid}, {"LSTM", &make_ROperator_LSTM}, ++ {"GRU", &make_ROperator_GRU}, {"BatchNormalization", &make_ROperator_BatchNorm}, ++ {"AveragePool", &make_ROperator_Pool}, {"GlobalAveragePool", &make_ROperator_Pool}, ++ {"MaxPool", &make_ROperator_Pool}, {"Add", &make_ROperator_Add}, ++ {"Reshape", &make_ROperator_Reshape}, {"Flatten", &make_ROperator_Reshape}, ++ {"Slice", &make_ROperator_Slice}, {"Squeeze", &make_ROperator_Reshape}, ++ {"Unsqueeze", &make_ROperator_Reshape}, {"Flatten", &make_ROperator_Reshape}}; ++ ++static std::unique_ptr make_ROperator(size_t idx, const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type); ++ ++static std::unique_ptr make_ROperator(size_t idx, const onnx::GraphProto &graphproto, ++ std::unordered_map &tensor_type) ++{ + const auto& nodeproto = graphproto.node(idx); + auto find = mapOptypeOperator.find(nodeproto.op_type()); + if (find == mapOptypeOperator.end()){ +@@ -24,7 +104,10 @@ std::unique_ptr make_ROperator(size_t idx, const onnx::GraphProto& gr + } + } + +-std::unique_ptr make_ROperator_Add(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Add(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type = ETensorType::UNDEFINED; + +@@ -59,7 +142,11 @@ std::unique_ptr make_ROperator_Add(const onnx::NodeProto& nodeproto, + + return op; + } +-std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto*/, std::unordered_map& tensor_type){ ++ ++static std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto*/, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -99,7 +186,10 @@ std::unique_ptr make_ROperator_Transpose(const onnx::NodeProto& nodep + return op; + } + +-std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Relu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -131,7 +221,10 @@ std::unique_ptr make_ROperator_Relu(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Selu(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -163,7 +256,10 @@ std::unique_ptr make_ROperator_Selu(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /*graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -195,7 +291,10 @@ std::unique_ptr make_ROperator_Sigmoid(const onnx::NodeProto& nodepro + return op; + } + +-std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type){ ++static std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -252,7 +351,11 @@ std::unique_ptr make_ROperator_Gemm(const onnx::NodeProto& nodeproto, + + return op; + } +-std::unique_ptr make_ROperator_GRU(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++ ++static std::unique_ptr make_ROperator_GRU(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -344,7 +447,10 @@ std::unique_ptr make_ROperator_GRU(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_Conv(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -408,7 +514,10 @@ std::unique_ptr make_ROperator_Conv(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Pool(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_Pool(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -485,14 +594,13 @@ std::unique_ptr make_ROperator_Pool(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, +- const onnx::GraphProto & /*graphproto */, +- std::unordered_map &tensor_type) ++static std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) + { + // make Reshape operator + ETensorType input_type = ETensorType::UNDEFINED; + +- + ReshapeOpMode opMode = Reshape; + if (nodeproto.op_type() == "Flatten") + opMode = Flatten; +@@ -501,7 +609,6 @@ std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodepro + else if (nodeproto.op_type() == "Unsqueeze") + opMode = Unsqueeze; + +- + //bool hasShapeInput = (opMode == Reshape) ? true : false; + + // reshape has as extra input shape tensor (int64) but +@@ -553,9 +660,9 @@ std::unique_ptr make_ROperator_Reshape(const onnx::NodeProto &nodepro + return op; + } + +-std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, +- const onnx::GraphProto & /*graphproto */, +- std::unordered_map &tensor_type) ++static std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto */, ++ std::unordered_map &tensor_type) + { + // make Slice operator + ETensorType input_type = ETensorType::UNDEFINED; +@@ -634,7 +741,10 @@ std::unique_ptr make_ROperator_Slice(const onnx::NodeProto &nodeproto + return op; + } + +-std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_RNN(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -722,7 +832,10 @@ std::unique_ptr make_ROperator_RNN(const onnx::NodeProto& nodeproto, + return op; + } + +-std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto& nodeproto, const onnx::GraphProto& /* graphproto */, std::unordered_map& tensor_type) { ++static std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /* graphproto */, ++ std::unordered_map &tensor_type) ++{ + + ETensorType input_type; + +@@ -825,9 +938,10 @@ std::unique_ptr make_ROperator_LSTM(const onnx::NodeProto& nodeproto, + + return op; + } +-std::unique_ptr make_ROperator_BatchNormalization(const onnx::NodeProto &nodeproto, +- const onnx::GraphProto &/*graphproto*/, +- std::unordered_map &tensor_type) ++ ++static std::unique_ptr make_ROperator_BatchNorm(const onnx::NodeProto &nodeproto, ++ const onnx::GraphProto & /*graphproto*/, ++ std::unordered_map &tensor_type) + { + + ETensorType input_type; +@@ -843,8 +957,8 @@ std::unique_ptr make_ROperator_BatchNormalization(const onnx::NodePro + + std::unique_ptr op; + float fepsilon = 1e-05; +- float fmomentum = 0.9; +- std::size_t ftraining_mode = 0; ++ float fmomentum = 0.9; ++ std::size_t ftraining_mode = 0; + + switch(input_type) { + case ETensorType::FLOAT: +-- +2.35.1 + diff --git a/root-namespace-pymva.patch b/root-namespace-pymva.patch new file mode 100644 index 0000000..cd2fa57 --- /dev/null +++ b/root-namespace-pymva.patch @@ -0,0 +1,31 @@ +From 0a969f5376af248e76cbcee45c9bdb6463e18c05 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 21:20:07 +0100 +Subject: [PATCH 3/3] Add namespaces to LinkDef + +Fixes error: + +IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE7PyTorch5ParseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS9_ImSaImEESaISB_EE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'! +You are probably missing the definition of TMVA::Experimental::SOFIE::PyTorch::Parse(std::__cxx11::basic_string, std::allocator >, std::vector >, std::allocator > > >) +Maybe you need to load the corresponding shared library? +Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'? +--- + tmva/pymva/inc/LinkDef.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tmva/pymva/inc/LinkDef.h b/tmva/pymva/inc/LinkDef.h +index 92da99a4f7..83145077dd 100644 +--- a/tmva/pymva/inc/LinkDef.h ++++ b/tmva/pymva/inc/LinkDef.h +@@ -15,6 +15,8 @@ + #pragma link C++ class TMVA::MethodPyGTB+; + #pragma link C++ class TMVA::MethodPyKeras+; + #pragma link C++ class TMVA::MethodPyTorch+; ++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyKeras; + #pragma link C++ function TMVA::Experimental::SOFIE::PyKeras::Parse+; ++#pragma link C++ namespace TMVA::Experimental::SOFIE::PyTorch; + #pragma link C++ function TMVA::Experimental::SOFIE::PyTorch::Parse+; + #endif +-- +2.35.1 + diff --git a/root-namespace-roofit.patch b/root-namespace-roofit.patch new file mode 100644 index 0000000..c8aa92e --- /dev/null +++ b/root-namespace-roofit.patch @@ -0,0 +1,43 @@ +From 4a4df0190ad24c0a3636994c2c23cb6c22e04589 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 15:41:33 +0100 +Subject: [PATCH 2/3] Remove namespace RooFit from libRooFitCore's LinkDef + +The namespace is listed in the LinkDef's for both libRooFit and libRooFitCore. + +ROOT only autoloads one of the libraries, for some reason usually +libRooFitCore. After this only symbols in the namespace from that +library are present. By removing the namespace from liRooFitCore's +LinkDef, only libRooFit can be chosen when autoloading. Since +libRooFit depends on libRooFitCore, both libraries are loaded, and the +symbols from the namespace in both libraries are available. + +Fixes error: + +IncrementalExecutor::executeFunction: symbol '_ZN6RooFit12bindFunctionEPKcPFddER10RooAbsReal' unresolved while linking function '_GLOBAL__sub_I_cling_module_217'! +You are probably missing the definition of RooFit::bindFunction(char const*, double (*)(double), RooAbsReal&) +Maybe you need to load the corresponding shared library? +Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'? +--- + roofit/roofitcore/inc/LinkDef.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/roofit/roofitcore/inc/LinkDef.h b/roofit/roofitcore/inc/LinkDef.h +index d421fd95cd..72c66db33b 100644 +--- a/roofit/roofitcore/inc/LinkDef.h ++++ b/roofit/roofitcore/inc/LinkDef.h +@@ -105,7 +105,10 @@ + + + // Old LinkDef2.h +-#pragma link C++ namespace RooFit ; ++ ++// "namespace RooFit" is in roofit/roofit/inc/Linkdef1.h ++// should not be in the dictionary for two different libraries ++// #pragma link C++ namespace RooFit ; + #pragma link C++ namespace RooFitShortHand ; + #pragma link C++ class RooDouble+ ; + #pragma link C++ class RooEffGenContext+ ; +-- +2.35.1 + diff --git a/root-namespace-sofie.patch b/root-namespace-sofie.patch new file mode 100644 index 0000000..a011634 --- /dev/null +++ b/root-namespace-sofie.patch @@ -0,0 +1,30 @@ +From c66ae9d9c035090584f465a41ce2e438e502be81 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 15:23:59 +0100 +Subject: [PATCH 1/3] Add namespace TMVA::Experimental::SOFIE to LinkDef + +Fixes error: + +IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE19ConvertTypeToStringB5cxx11ENS1_11ETensorTypeE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'! +You are probably missing the definition of TMVA::Experimental::SOFIE::ConvertTypeToString[abi:cxx11](TMVA::Experimental::SOFIE::ETensorType) +Maybe you need to load the corresponding shared library? +Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'? +--- + tmva/sofie/inc/LinkDef.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tmva/sofie/inc/LinkDef.h b/tmva/sofie/inc/LinkDef.h +index 715cf35560..3282ff22c1 100644 +--- a/tmva/sofie/inc/LinkDef.h ++++ b/tmva/sofie/inc/LinkDef.h +@@ -7,6 +7,7 @@ + + #pragma link C++ nestedclass; + ++#pragma link C++ namespace TMVA::Experimental::SOFIE; + #pragma link C++ class TMVA::Experimental::SOFIE::RModel-; + #pragma link C++ class TMVA::Experimental::SOFIE::ROperator+; + #pragma link C++ struct TMVA::Experimental::SOFIE::InitializedTensor+; +-- +2.35.1 + diff --git a/root-ntuplewait.patch b/root-ntuplewait.patch new file mode 100644 index 0000000..b464b69 --- /dev/null +++ b/root-ntuplewait.patch @@ -0,0 +1,39 @@ +From ad043f8e3304aab4f0ee3ad9e0cf8480c4bbadf0 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 16:10:22 +0100 +Subject: [PATCH] Always call WaitForInFlightClusters before checking cluster + IDs + +--- + tree/ntuple/v7/test/ntuple_cluster.cxx | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tree/ntuple/v7/test/ntuple_cluster.cxx b/tree/ntuple/v7/test/ntuple_cluster.cxx +index afc2fc32e9..0c299d97de 100644 +--- a/tree/ntuple/v7/test/ntuple_cluster.cxx ++++ b/tree/ntuple/v7/test/ntuple_cluster.cxx +@@ -213,6 +213,7 @@ TEST(ClusterPool, GetClusterBasics) + RPageSourceMock p1; + RClusterPool c1(p1, 1); + c1.GetCluster(3, {0}); ++ c1.WaitForInFlightClusters(); + ASSERT_EQ(2U, p1.fReqsClusterIds.size()); + EXPECT_EQ(3U, p1.fReqsClusterIds[0]); + EXPECT_EQ(4U, p1.fReqsClusterIds[1]); +@@ -267,11 +268,13 @@ TEST(ClusterPool, GetClusterIncrementally) + RPageSourceMock p1; + RClusterPool c1(p1, 1); + c1.GetCluster(3, {0}); ++ c1.WaitForInFlightClusters(); + ASSERT_EQ(2U, p1.fReqsClusterIds.size()); + EXPECT_EQ(3U, p1.fReqsClusterIds[0]); + EXPECT_EQ(RCluster::ColumnSet_t({0}), p1.fReqsColumns[0]); + + c1.GetCluster(3, {1}); ++ c1.WaitForInFlightClusters(); + ASSERT_EQ(4U, p1.fReqsClusterIds.size()); + EXPECT_EQ(3U, p1.fReqsClusterIds[2]); + EXPECT_EQ(RCluster::ColumnSet_t({1}), p1.fReqsColumns[2]); +-- +2.35.1 + diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch index bcba732..078a5f9 100644 --- a/root-old-gtest-compat.patch +++ b/root-old-gtest-compat.patch @@ -1,6 +1,39 @@ -diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hist/hist/test/test_THBinIterator.cxx ---- root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/hist/hist/test/test_THBinIterator.cxx 2021-08-06 22:59:45.039518775 +0200 +From 99e9ad9ea54369296537ceb012ccdcb333b5f513 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 26 Mar 2022 10:55:38 +0100 +Subject: [PATCH 2/2] Backward compatibility with older googletest versions in + EPEL + +--- + hist/hist/test/test_THBinIterator.cxx | 5 +++++ + math/mathcore/test/stress/testGenVector.cxx | 10 ++++++++++ + math/mathcore/test/stress/testSMatrix.cxx | 10 ++++++++++ + math/mathcore/test/stress/testVector.cxx | 10 ++++++++++ + math/mathcore/test/stress/testVector34.cxx | 10 ++++++++++ + math/mathcore/test/testGradient.cxx | 4 ++++ + math/mathcore/test/testGradientFitting.cxx | 10 ++++++++++ + math/mathmore/test/testStress.cxx | 10 ++++++++++ + roofit/histfactory/test/testHistFactory.cxx | 4 ++++ + roofit/multiprocess/test/test_Job.cxx | 5 +++++ + roofit/roofitZMQ/test/test_ZMQ.cpp | 4 ++++ + roofit/roofitcore/test/TestStatistics/RooRealL.cpp | 4 ++++ + .../test/TestStatistics/testLikelihoodGradientJob.cpp | 5 +++++ + roofit/roofitcore/test/testProxiesAndCategories.cxx | 3 +++ + roofit/roofitcore/test/testRooDataHist.cxx | 4 ++++ + roofit/roofitcore/test/testRooGradMinimizerFcn.cxx | 5 +++++ + tree/dataframe/test/dataframe_definepersample.cxx | 4 ++++ + tree/dataframe/test/dataframe_merge_results.cxx | 2 +- + tree/dataframe/test/dataframe_regression.cxx | 4 ++++ + tree/dataframe/test/dataframe_samplecallback.cxx | 4 ++++ + tree/dataframe/test/dataframe_simple.cxx | 5 +++++ + tree/dataframe/test/dataframe_vary.cxx | 4 ++++ + tree/tree/test/TOffsetGeneration.cxx | 4 ++++ + 23 files changed, 129 insertions(+), 1 deletion(-) + +diff --git a/hist/hist/test/test_THBinIterator.cxx b/hist/hist/test/test_THBinIterator.cxx +index e30585b8cb..04f1e1487b 100644 +--- a/hist/hist/test/test_THBinIterator.cxx ++++ b/hist/hist/test/test_THBinIterator.cxx @@ -1,5 +1,10 @@ #include "gtest/gtest.h" @@ -12,9 +45,10 @@ diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hi // test iterating histogram bins and using the new THistRange and // THBinIterator classes -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24.02/math/mathcore/test/stress/testGenVector.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testGenVector.cxx 2021-08-06 09:31:38.795835283 +0200 +diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx +index 93c0bb6aec..b3259158da 100644 +--- a/math/mathcore/test/stress/testGenVector.cxx ++++ b/math/mathcore/test/stress/testGenVector.cxx @@ -4,6 +4,16 @@ #include "gtest/gtest.h" @@ -32,9 +66,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24 #include "StatFunction.h" #include "TestHelper.h" #include "VectorTest.h" -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx 2021-08-06 09:31:38.796835286 +0200 +diff --git a/math/mathcore/test/stress/testSMatrix.cxx b/math/mathcore/test/stress/testSMatrix.cxx +index a4d7fc4cd5..a35d88b7c2 100644 +--- a/math/mathcore/test/stress/testSMatrix.cxx ++++ b/math/mathcore/test/stress/testSMatrix.cxx @@ -7,6 +7,16 @@ #include "TestHelper.h" #include "gtest/gtest.h" @@ -52,29 +87,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.0 #include "VectorTest.h" #include "TROOT.h" #include "TSystem.h" -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.02/math/mathcore/test/stress/testVector34.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testVector34.cxx 2021-08-06 09:31:38.796835286 +0200 -@@ -4,6 +4,16 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - #include "StatFunction.h" - #include "VectorTest.h" - -diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02/math/mathcore/test/stress/testVector.cxx ---- root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/stress/testVector.cxx 2021-08-06 09:31:38.796835286 +0200 +diff --git a/math/mathcore/test/stress/testVector.cxx b/math/mathcore/test/stress/testVector.cxx +index 72e933f0d5..938e27d83c 100644 +--- a/math/mathcore/test/stress/testVector.cxx ++++ b/math/mathcore/test/stress/testVector.cxx @@ -4,6 +4,16 @@ #include "gtest/gtest.h" @@ -92,9 +108,31 @@ diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02 #include "StatFunction.h" #include "TestHelper.h" #include "VectorTest.h" -diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math/mathcore/test/testGradient.cxx ---- root-6.24.02.orig/math/mathcore/test/testGradient.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/testGradient.cxx 2021-08-06 09:31:38.796835286 +0200 +diff --git a/math/mathcore/test/stress/testVector34.cxx b/math/mathcore/test/stress/testVector34.cxx +index 4b31184559..80d6dd6314 100644 +--- a/math/mathcore/test/stress/testVector34.cxx ++++ b/math/mathcore/test/stress/testVector34.cxx +@@ -4,6 +4,16 @@ + + #include "gtest/gtest.h" + ++#ifndef TYPED_TEST_SUITE_P ++#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P ++#endif ++#ifndef REGISTER_TYPED_TEST_SUITE_P ++#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P ++#endif ++#ifndef INSTANTIATE_TYPED_TEST_SUITE_P ++#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P ++#endif ++ + #include "StatFunction.h" + #include "VectorTest.h" + +diff --git a/math/mathcore/test/testGradient.cxx b/math/mathcore/test/testGradient.cxx +index 49a5391b7b..271e89e43c 100644 +--- a/math/mathcore/test/testGradient.cxx ++++ b/math/mathcore/test/testGradient.cxx @@ -22,6 +22,10 @@ #include "gtest/gtest.h" @@ -106,10 +144,11 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math #include #include #include -diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.02/math/mathcore/test/testGradientFitting.cxx ---- root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathcore/test/testGradientFitting.cxx 2021-08-06 09:31:38.797835288 +0200 -@@ -12,6 +12,16 @@ +diff --git a/math/mathcore/test/testGradientFitting.cxx b/math/mathcore/test/testGradientFitting.cxx +index f85f826d9f..1818d1c22f 100644 +--- a/math/mathcore/test/testGradientFitting.cxx ++++ b/math/mathcore/test/testGradientFitting.cxx +@@ -13,6 +13,16 @@ #include "gtest/gtest.h" @@ -126,9 +165,10 @@ diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24. #include #include -diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/mathmore/test/testStress.cxx ---- root-6.24.02.orig/math/mathmore/test/testStress.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/math/mathmore/test/testStress.cxx 2021-08-06 09:31:38.797835288 +0200 +diff --git a/math/mathmore/test/testStress.cxx b/math/mathmore/test/testStress.cxx +index 47bcdd250f..5cf20e69a1 100644 +--- a/math/mathmore/test/testStress.cxx ++++ b/math/mathmore/test/testStress.cxx @@ -26,6 +26,16 @@ #include "gtest/gtest.h" @@ -146,9 +186,87 @@ diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/m using ::testing::TestWithParam; using ::testing::Values; -diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx ---- root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-08-06 09:31:38.798835290 +0200 +diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx +index 71d7b632d2..9063e51070 100644 +--- a/roofit/histfactory/test/testHistFactory.cxx ++++ b/roofit/histfactory/test/testHistFactory.cxx +@@ -22,6 +22,10 @@ + #include "TCanvas.h" + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + + using namespace RooStats; +diff --git a/roofit/multiprocess/test/test_Job.cxx b/roofit/multiprocess/test/test_Job.cxx +index 22e66fc73c..61cc11771d 100644 +--- a/roofit/multiprocess/test/test_Job.cxx ++++ b/roofit/multiprocess/test/test_Job.cxx +@@ -24,6 +24,11 @@ + #include "RooFit/MultiProcess/Queue.h" // ... JobManager::queue() + + #include "gtest/gtest.h" ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include "utils.h" + + class xSquaredPlusBVectorSerial { +diff --git a/roofit/roofitZMQ/test/test_ZMQ.cpp b/roofit/roofitZMQ/test/test_ZMQ.cpp +index 6dcceaff08..73e75be147 100644 +--- a/roofit/roofitZMQ/test/test_ZMQ.cpp ++++ b/roofit/roofitZMQ/test/test_ZMQ.cpp +@@ -16,6 +16,10 @@ + + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include // fork, usleep + + #include +diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp +index f8421613ac..3ae6285a12 100644 +--- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp ++++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp +@@ -34,6 +34,10 @@ + + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + class RooRealL + : public ::testing::TestWithParam> { + }; +diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp +index f4adf63eec..05164277f0 100644 +--- a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp ++++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp +@@ -33,6 +33,11 @@ + #include // runtime_error + + #include "gtest/gtest.h" ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include "../test_lib.h" // generate_1D_gaussian_pdf_nll + + using RooFit::TestStatistics::LikelihoodWrapper; +diff --git a/roofit/roofitcore/test/testProxiesAndCategories.cxx b/roofit/roofitcore/test/testProxiesAndCategories.cxx +index bed3c399bb..550e0c5ac9 100644 +--- a/roofit/roofitcore/test/testProxiesAndCategories.cxx ++++ b/roofit/roofitcore/test/testProxiesAndCategories.cxx @@ -16,6 +16,9 @@ #include "gtest/gtest.h" @@ -159,10 +277,42 @@ diff -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx r TEST(RooCategory, CategoryDefineMultiState) { RooCategory myCat("myCat", "A category", { {"0Lep", 0}, {"1Lep", 1}, {"2Lep", 2}, {"3Lep", 3} }); -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-08-06 09:31:38.801835298 +0200 -@@ -11,6 +11,10 @@ +diff --git a/roofit/roofitcore/test/testRooDataHist.cxx b/roofit/roofitcore/test/testRooDataHist.cxx +index 90782e0749..f6b5e087ae 100644 +--- a/roofit/roofitcore/test/testRooDataHist.cxx ++++ b/roofit/roofitcore/test/testRooDataHist.cxx +@@ -18,6 +18,10 @@ + + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + #include + +diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +index c1978ae47e..877ab1525f 100644 +--- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx ++++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx +@@ -22,6 +22,11 @@ + #include // remove redundant workspace files + + #include "gtest/gtest.h" ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include "test_lib.h" + + #include +diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx +index 772b8baa70..37da9f3f95 100644 +--- a/tree/dataframe/test/dataframe_definepersample.cxx ++++ b/tree/dataframe/test/dataframe_definepersample.cxx +@@ -6,6 +6,10 @@ #include @@ -170,13 +320,14 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx r +#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P +#endif + - #include // std::min - #include // std::hardware_concurrency - -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx 2021-08-06 09:31:38.802835300 +0200 -@@ -308,7 +308,7 @@ + #include + #include + #include // std::thread::hardware_concurrency +diff --git a/tree/dataframe/test/dataframe_merge_results.cxx b/tree/dataframe/test/dataframe_merge_results.cxx +index 9354b75a39..ea439ea006 100644 +--- a/tree/dataframe/test/dataframe_merge_results.cxx ++++ b/tree/dataframe/test/dataframe_merge_results.cxx +@@ -340,7 +340,7 @@ TEST(RDataFrameMergeResults, Merge5Hists) EXPECT_FALSE(mh3); EXPECT_FALSE(mh4); EXPECT_FALSE(mh5); @@ -185,9 +336,10 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root- const auto &mh = mergedptr->GetValue(); -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.24.02/tree/dataframe/test/dataframe_regression.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_regression.cxx 2021-08-06 09:31:38.802835300 +0200 +diff --git a/tree/dataframe/test/dataframe_regression.cxx b/tree/dataframe/test/dataframe_regression.cxx +index 9801067cf4..8a991f40c5 100644 +--- a/tree/dataframe/test/dataframe_regression.cxx ++++ b/tree/dataframe/test/dataframe_regression.cxx @@ -9,6 +9,10 @@ #include "gtest/gtest.h" @@ -199,9 +351,25 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.2 // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially class RDFRegressionTests : public ::testing::TestWithParam { protected: -diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02/tree/dataframe/test/dataframe_simple.cxx ---- root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/tree/dataframe/test/dataframe_simple.cxx 2021-08-06 09:31:38.803835303 +0200 +diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx +index 188d58dd31..7734586eb3 100644 +--- a/tree/dataframe/test/dataframe_samplecallback.cxx ++++ b/tree/dataframe/test/dataframe_samplecallback.cxx +@@ -11,6 +11,10 @@ + + #include + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include // std::min + #include + #include +diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx +index 6006f99017..b507edc13f 100644 +--- a/tree/dataframe/test/dataframe_simple.cxx ++++ b/tree/dataframe/test/dataframe_simple.cxx @@ -1,5 +1,10 @@ /****** Run RDataFrame tests both with and without IMT enabled *******/ #include @@ -213,3 +381,36 @@ diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02 #include #include #include +diff --git a/tree/dataframe/test/dataframe_vary.cxx b/tree/dataframe/test/dataframe_vary.cxx +index 2284b21f53..5a26c43cdc 100644 +--- a/tree/dataframe/test/dataframe_vary.cxx ++++ b/tree/dataframe/test/dataframe_vary.cxx +@@ -7,6 +7,10 @@ + + #include + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + using ROOT::RDF::Experimental::VariationsFor; + + class RDFVary : public ::testing::TestWithParam { +diff --git a/tree/tree/test/TOffsetGeneration.cxx b/tree/tree/test/TOffsetGeneration.cxx +index 7b6b7647aa..77f125ca60 100644 +--- a/tree/tree/test/TOffsetGeneration.cxx ++++ b/tree/tree/test/TOffsetGeneration.cxx +@@ -9,6 +9,10 @@ + #include "ROOTUnitTestSupport.h" + #include "gtest/gtest.h" + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define SetUpTestSuite SetUpTestCase ++#endif ++ + #include "ElementStruct.h" + + class TOffsetGeneration : public ::testing::Test { +-- +2.35.1 + diff --git a/root-ppc-codemodel.patch b/root-ppc-codemodel.patch deleted file mode 100644 index 223dc7c..0000000 --- a/root-ppc-codemodel.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 774ab9358d852e2c004564183de4a60eaaa5ac98 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 23 Apr 2021 21:40:14 +0200 -Subject: [PATCH 2/2] Actually request the use of the large code model for - ppc64/ppc64le - -Instead of erroring out with an assert. ---- - interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -index 46771aa8c0..93a48f31f3 100644 ---- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp -@@ -73,14 +73,14 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) { - JTMB->getOptions().EmulatedTLS = false; - #endif // _WIN32 - -- std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); -- - #if defined(__powerpc64__) || defined(__PPC64__) - // We have to use large code model for PowerPC64 because TOC and text sections - // can be more than 2GB apart. -- assert(TM->getCodeModel() >= CodeModel::Large); -+ JTMB->setCodeModel(CodeModel::Large); - #endif - -+ std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); -+ - // Forcefully disable GlobalISel, it might be enabled on AArch64 without - // optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this - // new instruction selection framework emits branches / calls that expect all --- -2.30.2 - diff --git a/root-ppc-segfault-fix.patch b/root-ppc-segfault-fix.patch deleted file mode 100644 index b9cba0f..0000000 --- a/root-ppc-segfault-fix.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 55ae047b70e927de5c84cfa5ad42905cbd58d499 Mon Sep 17 00:00:00 2001 -From: Vassil Vassilev -Date: Sat, 4 Dec 2021 00:06:19 +0000 -Subject: [PATCH] [llvm] Restore the ppc64le support that we lost in llvm8. - -This patch is backported from https://reviews.llvm.org/D94183 - -For more discussion see https://github.com/numba/numba/issues/4026 - -Fixes root-project/root#8072 and root-project/root#9297 ---- - .../src/lib/Target/PowerPC/PPCISelLowering.cpp | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) - -diff --git a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp -index 24d50074860d..a922b40aa902 100644 ---- a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp -+++ b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp -@@ -4463,7 +4463,15 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, - if (!G) - return false; - -- const GlobalValue *GV = G->getGlobal(); -+ const GlobalValue *GV = G->getGlobal(); -+ -+ // If the GV is not a strong definition then we need to assume it can be -+ // replaced by another function at link time. The function that replaces -+ // it may not share the same TOC as the caller since the callee may be -+ // replaced by a PC Relative version of the same function. -+ if (!GV->isStrongDefinitionForLinker()) -+ return false; -+ - // The medium and large code models are expected to provide a sufficiently - // large TOC to provide all data addressing needs of a module with a - // single TOC. Since each module will be addressed with a single TOC then we -@@ -4472,13 +4480,6 @@ callsShareTOCBase(const Function *Caller, SDValue Callee, - CodeModel::Large == TM.getCodeModel()) - return TM.shouldAssumeDSOLocal(*Caller->getParent(), GV); - -- // Otherwise we need to ensure callee and caller are in the same section, -- // since the linker may allocate multiple TOCs, and we don't know which -- // sections will belong to the same TOC base. -- -- if (!GV->isStrongDefinitionForLinker()) -- return false; -- - // Any explicitly-specified sections and section prefixes must also match. - // Also, if we're using -ffunction-sections, then each function is always in - // a different section (the same is true for COMDAT functions). diff --git a/root-ptr-is-null-RooFit-TMVA.patch b/root-ptr-is-null-RooFit-TMVA.patch deleted file mode 100644 index 3aa3acd..0000000 --- a/root-ptr-is-null-RooFit-TMVA.patch +++ /dev/null @@ -1,80 +0,0 @@ -From c65f3d96f3f4433bff9d40fa9cf1dec100867a07 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 8 Jun 2021 10:12:37 +0200 -Subject: [PATCH] Fix 'this' pointer is null warnings - -.../roofit/roofitcore/src/RooDataHist.cxx: In member function 'void RooDataHist::_adjustBinning(RooRealVar&, const TAxis&, RooRealVar*, Int_t*)': -.../roofit/roofitcore/src/RooDataHist.cxx:595:122: warning: 'this' pointer is null [-Wnonnull] - 595 | coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ; - | ^~~~~~~~~~~~~~~ - -.../roofit/roofitcore/src/RooRealSumFunc.cxx: In constructor 'RooRealSumFunc::RooRealSumFunc(const char*, const char*, const RooArgList&, const RooArgList&)': -.../roofit/roofitcore/src/RooRealSumFunc.cxx:156:35: warning: 'this' pointer is null [-Wnonnull] - 156 | << " is not of type RooAbsReal, fatal error" << endl; - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx: In member function 'void TMVA::DNN::TDataLoader >::CopyInput(TMatrixT&, TMVA::DNN::IndexIterator_t) [with AData = std::tuple >&, const TMVA::DataSetInfo&>; AReal = float]': -.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:131:34: warning: 'this' pointer is null [-Wnonnull] - 131 | Int_t n = event->GetNVariables(); - | ~~~~~~~~~~~~~~~~~~~~^~ -In file included from .../tmva/tmva/inc/TMVA/VariableTransformBase.h:48, - from .../tmva/tmva/inc/TMVA/Tools.h:58, - from .../tmva/tmva/inc/TMVA/DNN/GeneralLayer.h:36, - from .../tmva/tmva/inc/TMVA/DNN/CNN/ConvLayer.h:32, - from .../tmva/tmva/inc/TMVA/DNN/Architectures/Reference.h:24, - from .../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:17: -.../tmva/tmva/inc/TMVA/Event.h:88:16: note: in a call to non-static member function 'UInt_t TMVA::Event::GetNVariables() const' - 88 | UInt_t GetNVariables() const; - | ^~~~~~~~~~~~~ ---- - roofit/roofitcore/src/RooDataHist.cxx | 2 +- - roofit/roofitcore/src/RooRealSumFunc.cxx | 4 ++-- - tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx -index 84cf2c0f68..8dddb88e2b 100644 ---- a/roofit/roofitcore/src/RooDataHist.cxx -+++ b/roofit/roofitcore/src/RooDataHist.cxx -@@ -591,7 +591,7 @@ void RooDataHist::importDHistSet(const RooArgList& /*vars*/, RooCategory& indexC - void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis, - RooRealVar *ourVar, Int_t *offset) - { -- if (!dynamic_cast(ourVar)) { -+ if (!dynamic_cast(static_cast(ourVar))) { - coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ; - assert(0) ; - } -diff --git a/roofit/roofitcore/src/RooRealSumFunc.cxx b/roofit/roofitcore/src/RooRealSumFunc.cxx -index 3f78020acd..a1625d7e35 100644 ---- a/roofit/roofitcore/src/RooRealSumFunc.cxx -+++ b/roofit/roofitcore/src/RooRealSumFunc.cxx -@@ -149,10 +149,10 @@ RooRealSumFunc::RooRealSumFunc(const char *name, const char *title, const RooArg - _coefList.add(*coef); - } - -- func = (RooAbsReal *)funcIter->Next(); -+ func = (RooAbsArg *)funcIter->Next(); - if (func) { - if (!dynamic_cast(func)) { -- coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << coef->GetName() -+ coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << func->GetName() - << " is not of type RooAbsReal, fatal error" << endl; - assert(0); - } -diff --git a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx -index 2465abf308..24a09d1fc0 100644 ---- a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx -+++ b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx -@@ -128,7 +128,7 @@ void TDataLoader>::CopyInput(TMatrixT &m - Event *event = nullptr; - - Int_t m = matrix.GetNrows(); -- Int_t n = event->GetNVariables(); -+ Int_t n = matrix.GetNcols(); - - // Copy input variables. - --- -2.31.1 - diff --git a/root-ptr-is-null-TStreamerInfo.patch b/root-ptr-is-null-TStreamerInfo.patch deleted file mode 100644 index 869715c..0000000 --- a/root-ptr-is-null-TStreamerInfo.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 1ca221f010fdcfb6249ae7b1cac77fbe29b86214 Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Mon, 7 Jun 2021 11:02:48 +0200 -Subject: [PATCH] [io] Avoid nullptr deref when printing warning in - TStreamerInfo - ---- - io/io/src/TStreamerInfo.cxx | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx -index d545ab7be8..a026635890 100644 ---- a/io/io/src/TStreamerInfo.cxx -+++ b/io/io/src/TStreamerInfo.cxx -@@ -1109,12 +1109,12 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */) - fClassVersion, GetName(), GetName(), GetName(), fClassVersion); - } else { - Warning("BuildCheck", "\n\ -- The StreamerInfo from %s does not match existing one (%s:%d)\n\ -+ The StreamerInfo does not match existing one (%s:%d)\n\ - The existing one has not been used yet and will be discarded.\n\ - Reading should work properly, however writing object of\n\ - type %s will not work properly. Most likely the version number\n\ - of the class was not properly updated [See ClassDef(%s,%d)].", -- file->GetName(), GetName(), fClassVersion, GetName(), GetName(), fClassVersion); -+ GetName(), fClassVersion, GetName(), GetName(), fClassVersion); - } - } - } --- -2.31.1 - diff --git a/root-rcolor-static-init.patch b/root-rcolor-static-init.patch new file mode 100644 index 0000000..18e4299 --- /dev/null +++ b/root-rcolor-static-init.patch @@ -0,0 +1,42 @@ +From c4df90861879f45b281c2a8e55212b711cfdbfa0 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 29 Mar 2022 15:30:20 +0200 +Subject: [PATCH] Avoid crashes due to static initialization order + +Most commonly seen on ppc64le. Backtrace: + +=========================================================== +The lines below might hint at the cause of the crash. +You may get help by asking at the ROOT forum https://root.cern/forum +Only if you are really convinced it is a bug in ROOT then please submit a +report at https://root.cern/bugs Please post the ENTIRE stack trace +from above as an attachment in addition to anything else +that might help us fixing this issue. +=========================================================== + #11 ROOT::Experimental::RColor::toHex[abi:cxx11](unsigned char) (v=) at /usr/include/c++/11/ext/new_allocator.h:82 + #12 0x00007fff90c220ec in ROOT::Experimental::RColor::SetRGB (this=0x7fffeadf5d10, r=, g=, b=) at /usr/include/c++/11/ext/new_allocator.h:89 +--- + graf2d/gpadv7/src/RColor.cxx | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/graf2d/gpadv7/src/RColor.cxx b/graf2d/gpadv7/src/RColor.cxx +index de325f1ea3..6878360073 100644 +--- a/graf2d/gpadv7/src/RColor.cxx ++++ b/graf2d/gpadv7/src/RColor.cxx +@@ -232,10 +232,10 @@ std::vector RColor::AsRGBA() const + + std::string RColor::toHex(uint8_t v) + { +- static const char *digits = "0123456789ABCDEF"; ++ auto digits = [](auto d) { return d < 10 ? '0' + d : 'A' - 10 + d; }; + std::string res(2,'0'); +- res[0] = digits[v >> 4]; +- res[1] = digits[v & 0xf]; ++ res[0] = digits(v >> 4); ++ res[1] = digits(v & 0xf); + return res; + } + +-- +2.35.1 + diff --git a/root-roofit-overflow.patch b/root-roofit-overflow.patch new file mode 100644 index 0000000..e368aa9 --- /dev/null +++ b/root-roofit-overflow.patch @@ -0,0 +1,59 @@ +From 8b6a10aefa5ae660e9d13a8e55933125b257ab6c Mon Sep 17 00:00:00 2001 +From: moneta +Date: Fri, 25 Feb 2022 09:54:40 +0100 +Subject: [PATCH] Fix an array overflow in interpolating RooHistPdf when the + interpolation order is >= 10. + +--- + roofit/roofitcore/src/RooDataHist.cxx | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx +index c293a8fbb1..2159f73093 100644 +--- a/roofit/roofitcore/src/RooDataHist.cxx ++++ b/roofit/roofitcore/src/RooDataHist.cxx +@@ -1206,9 +1206,9 @@ double RooDataHist::weightInterpolated(const RooArgSet& bin, int intOrder, bool + + auto idxMultY = _idxMult[varInfo.realVarIdx2]; + auto offsetIdx = centralIdx - idxMultY * ybinC; +- +- double yarr[10] = {} ; +- double xarr[10] = {} ; ++ ++ std::vector yarr(intOrder+1); ++ std::vector xarr(intOrder+1); + for (int i=ybinLo ; i<=intOrder+ybinLo ; i++) { + int ibin ; + if (i>=0 && i yarr(intOrder+1) ; ++ std::vector xarr(intOrder+1); + for (int i=fbinLo ; i<=intOrder+fbinLo ; i++) { + int ibin ; + if (i>=0 && i +Date: Mon, 28 Mar 2022 09:32:24 +0200 +Subject: [PATCH] Use calls from Python directly + +The rf105_funcbinding.py tutorial used to trigger errors due to unknown +symbols. In particular the custum new and delete operators used in RooFit +were not autoloaded when needed. + +In the tutorial there was a workaround implemented to call ProcessLine +instead of making calls directly form Python, to make the autoloading +from the C++ side of ROOT instead. This did not quite fix the problem, +and the tutorial still randomly failed due to missing symbols. + +After changing the algorthm used for autoloading in commit +6ae602bba7d33c900a117c9de0187ab5a28e14b8 these problems were solved. + +After this fix using the direct calls from Python also works, so this +PR suggests updating the tutorial to do that. +--- + tutorials/roofit/rf105_funcbinding.py | 30 ++++++--------------------- + 1 file changed, 6 insertions(+), 24 deletions(-) + +diff --git a/tutorials/roofit/rf105_funcbinding.py b/tutorials/roofit/rf105_funcbinding.py +index 72d9cf62fc..b9de2a095a 100644 +--- a/tutorials/roofit/rf105_funcbinding.py ++++ b/tutorials/roofit/rf105_funcbinding.py +@@ -17,15 +17,8 @@ import ROOT + # --------------------------------------------------- + + # Bind one-dimensional ROOT.TMath.Erf function as ROOT.RooAbsReal function +-# Directly trying this in python doesn't work: +-# x = ROOT.RooRealVar("x", "x", -3, 3) +-# erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x) +-# Need to go through C interface +-ROOT.gInterpreter.ProcessLine( +- 'auto x = RooRealVar("x", "x", -3, 3); auto myerf = RooFit::bindFunction("erf", TMath::Erf, x)' +-) +-x = ROOT.x +-erf = ROOT.myerf ++x = ROOT.RooRealVar("x", "x", -3, 3) ++erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x) + + # Print erf definition + erf.Print() +@@ -38,21 +31,10 @@ erf.plotOn(frame1) + # ----------------------------------------------------------------------- + + # Bind pdf ROOT.Math.Beta with three variables as ROOT.RooAbsPdf function +-# As above, this does not work directly in python +-# x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999) +-# a = ROOT.RooRealVar("a", "a", 5, 0, 10) +-# b = ROOT.RooRealVar("b", "b", 2, 0, 10) +-# beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b) +-ROOT.gInterpreter.ProcessLine( +- 'auto x2 = RooRealVar("x2", "x2", 0, 0.999);\ +- auto a = RooRealVar("a", "a", 5, 0, 10);\ +- auto b = RooRealVar("b", "b", 5, 0, 10);\ +- auto beta = RooFit::bindPdf("beta", ROOT::Math::beta_pdf, x2, a, b)' +-) +-x2 = ROOT.x2 +-a = ROOT.a +-b = ROOT.b +-beta = ROOT.beta ++x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999) ++a = ROOT.RooRealVar("a", "a", 5, 0, 10) ++b = ROOT.RooRealVar("b", "b", 2, 0, 10) ++beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b) + + # Perf beta definition + beta.Print() +-- +2.35.1 + diff --git a/root-stress-s390x.patch b/root-stress-s390x.patch deleted file mode 100644 index b1d9b9d..0000000 --- a/root-stress-s390x.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 30cbc0d44364586ac64a3ac0fd6641e338549bbe Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 10 Aug 2021 06:33:17 +0200 -Subject: [PATCH] Adjust tests for s390x - ---- - math/mathcore/test/stress/testGenVector.cxx | 2 +- - test/stressMathCore.cxx | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx -index 8da429c395..df9061c88e 100644 ---- a/math/mathcore/test/stress/testGenVector.cxx -+++ b/math/mathcore/test/stress/testGenVector.cxx -@@ -79,7 +79,7 @@ TYPED_TEST_P(GenVectorTest, TestGenVectors) - scale = this->fDim * 20; - if (this->fDim == 3 && this->V2Name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi - if (this->fDim == 4 && ( this->V2Name() == "PtEtaPhiMVector" || this->V2Name() == "PxPyPzMVector")) { --#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__)) -+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__)) - scale *= 1.E7; - #else - scale *= 10; -diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx -index 4d4695a8a0..b6d2d2c9e7 100644 ---- a/test/stressMathCore.cxx -+++ b/test/stressMathCore.cxx -@@ -1120,7 +1120,7 @@ int testVector(int ngen, bool testio=false) { - scale = Dim*20; - if (Dim==3 && VecType::name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi - if (Dim==4 && ( VecType::name() == "PtEtaPhiMVector" || VecType::name() == "PxPyPzMVector")) { --#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__)) -+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__)) - scale *= 1.E7; - #else - scale *= 10; --- -2.31.1 - diff --git a/root-threadsh1-avoid-heap-use-after-free.patch b/root-threadsh1-avoid-heap-use-after-free.patch new file mode 100644 index 0000000..6111f2b --- /dev/null +++ b/root-threadsh1-avoid-heap-use-after-free.patch @@ -0,0 +1,48 @@ +From 493c4210168fa475aa4130c12e8fdff3b7d85c09 Mon Sep 17 00:00:00 2001 +From: Philippe Canal +Date: Mon, 7 Mar 2022 13:32:37 -0600 +Subject: [PATCH] threadsh1: Avoid heap-use-after-free. + +Previously, the Canvas `Close` signal which triggers a call to the local function `close` which +was unconditionally call `Kill` on its associated thread would call it on an already deleted +object if the `TThread` was deleted before the `TCanvas`. + +This fix #10015 (detected by using ASAN). +--- + tutorials/legacy/thread/threadsh1.C | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/tutorials/legacy/thread/threadsh1.C b/tutorials/legacy/thread/threadsh1.C +index b819f5d020..d6abc67e36 100644 +--- a/tutorials/legacy/thread/threadsh1.C ++++ b/tutorials/legacy/thread/threadsh1.C +@@ -67,7 +67,8 @@ void *joiner(void *) + void closed(Int_t id) + { + // kill the thread matching the canvas being closed +- t[id]->Kill(); ++ if (t[id]) ++ t[id]->Kill(); + // and set the canvas pointer to 0 + c[id] = 0; + } +@@ -142,11 +143,11 @@ void threadsh1() + t[4]->Join(); + TThread::Ps(); + +- delete t[0]; +- delete t[1]; +- delete t[2]; +- delete t[3]; +- delete t[4]; ++ delete t[0]; t[0] = nullptr; // Prevents after deletion access. ++ delete t[1]; t[1] = nullptr; ++ delete t[2]; t[2] = nullptr; ++ delete t[3]; t[3] = nullptr; ++ delete t[4]; t[4] = nullptr; + + delete rng[0]; + delete rng[1]; +-- +2.35.1 + diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch new file mode 100644 index 0000000..459062d --- /dev/null +++ b/root-tmva-threads.patch @@ -0,0 +1,62 @@ +From f525fe375840cda2bf5b51e018eab8ad74dcd736 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 30 Mar 2022 15:51:07 +0200 +Subject: [PATCH] Limit the number of threads in TMVA CNN/DNN test to save + memory + +Processing /builddir/build/BUILD/root-6.26.00/tutorials/tmva/TMVA_CNN_Classification.C... +Running with nthreads = 224 + +[ ... ] + +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. +OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation + *** Break *** segmentation violation +--- + tutorials/tmva/TMVA_CNN_Classification.C | 2 +- + tutorials/tmva/TMVA_RNN_Classification.C | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C +index 3e590c5958..4abfc6a4d1 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.C ++++ b/tutorials/tmva/TMVA_CNN_Classification.C +@@ -125,7 +125,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + + bool writeOutputFile = true; + +- int num_threads = 0; // use default threads ++ int num_threads = 32; + + TMVA::Tools::Instance(); + +diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C +index 5be80824f9..791b9aecf5 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.C ++++ b/tutorials/tmva/TMVA_RNN_Classification.C +@@ -190,7 +190,7 @@ void TMVA_RNN_Classification(int use_type = 1) + useKeras = false; + #endif + +- int num_threads = 0; // use by default all threads ++ int num_threads = 32; + // do enable MT running + if (num_threads >= 0) { + ROOT::EnableImplicitMT(num_threads); +-- +2.35.1 + diff --git a/root-unbundle-gtest.patch b/root-unbundle-gtest.patch index ae180a2..1bdf869 100644 --- a/root-unbundle-gtest.patch +++ b/root-unbundle-gtest.patch @@ -1,111 +1,202 @@ -diff -ur root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake ---- root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake 2021-08-11 10:56:26.680731609 +0200 -@@ -1699,102 +1699,17 @@ +From 29884ae01fde27204d92f554da4e92227a2ed1e6 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 26 Mar 2022 10:22:07 +0100 +Subject: [PATCH 1/2] Implement builtin_gtest option + +By setting the option to OFF the system gtest and gmock are used. +This allows doing tests without network available, e.g. during a +package build for Fedora/EPEL. +--- + cmake/modules/FindGTest.cmake | 81 +++++++++++++++++++++ + cmake/modules/RootBuildOptions.cmake | 2 + + cmake/modules/RootMacros.cmake | 2 +- + cmake/modules/SearchInstalledSoftware.cmake | 44 ++++++++--- + 4 files changed, 118 insertions(+), 11 deletions(-) + create mode 100644 cmake/modules/FindGTest.cmake + +diff --git a/cmake/modules/FindGTest.cmake b/cmake/modules/FindGTest.cmake +new file mode 100644 +index 0000000000..438ec501c2 +--- /dev/null ++++ b/cmake/modules/FindGTest.cmake +@@ -0,0 +1,81 @@ ++# Find the gtest and gmock includes and library. ++# ++# This module defines ++# GTEST_LIBRARIES ++# GTEST_MAIN_LIBRARIES ++# GTEST_INCLUDE_DIRS ++# GMOCK_LIBRARIES ++# GMOCK_MAIN_LIBRARIES ++# GMOCK_INCLUDE_DIRS ++# ++# GTEST_FOUND true if all libraries present ++ ++find_package(Threads QUIET) ++ ++find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h) ++find_library(GTEST_LIBRARIES NAMES gtest) ++find_library(GTEST_MAIN_LIBRARIES NAMES gtest_main) ++ ++find_path(GMOCK_INCLUDE_DIRS NAMES gmock/gmock.h) ++find_library(GMOCK_LIBRARIES NAMES gmock) ++find_library(GMOCK_MAIN_LIBRARIES NAMES gmock_main) ++ ++# Special for EPEL 7's gmock ++if(NOT GMOCK_LIBRARIES) ++ find_path(GMOCK_SRC_DIR NAMES gmock-all.cc PATHS /usr/src/gmock) ++endif() ++ ++if(NOT GMOCK_MAIN_LIBRARIES) ++ find_path(GMOCK_MAIN_SRC_DIR NAMES gmock_main.cc PATHS /usr/src/gmock) ++endif() ++ ++if (GTEST_INCLUDE_DIRS AND ++ GTEST_LIBRARIES AND ++ GTEST_MAIN_LIBRARIES AND ++ GMOCK_INCLUDE_DIRS AND ++ (GMOCK_LIBRARIES OR GMOCK_SRC_DIR) AND ++ (GMOCK_MAIN_LIBRARIES OR GMOCK_MAIN_SRC_DIR)) ++ ++ add_library(gtest UNKNOWN IMPORTED) ++ set_target_properties(gtest PROPERTIES ++ IMPORTED_LOCATION ${GTEST_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS}) ++ target_link_libraries(gtest INTERFACE Threads::Threads) ++ ++ add_library(gtest_main UNKNOWN IMPORTED) ++ set_target_properties(gtest_main PROPERTIES ++ IMPORTED_LOCATION ${GTEST_MAIN_LIBRARIES}) ++ target_link_libraries(gtest_main INTERFACE gtest Threads::Threads) ++ ++ if(GMOCK_LIBRARIES) ++ add_library(gmock UNKNOWN IMPORTED) ++ set_target_properties(gmock PROPERTIES ++ IMPORTED_LOCATION ${GMOCK_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIRS}) ++ else() ++ add_library(gmock STATIC ${GMOCK_SRC_DIR}/gmock-all.cc) ++ target_include_directories(gmock PUBLIC ${GMOCK_INCLUDE_DIRS}) ++ set(GMOCK_LIBRARIES gmock) ++ endif() ++ target_link_libraries(gmock INTERFACE gtest Threads::Threads) ++ ++ if(GMOCK_MAIN_LIBRARIES) ++ add_library(gmock_main UNKNOWN IMPORTED) ++ set_target_properties(gmock_main PROPERTIES ++ IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARIES}) ++ else() ++ add_library(gmock_main STATIC ${GMOCK_MAIN_SRC_DIR}/gmock_main.cc) ++ set(GMOCK_MAIN_LIBRARIES gmock_main) ++ endif() ++ target_link_libraries(gmock_main INTERFACE gmock Threads::Threads) ++ ++endif() ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(GTest DEFAULT_MSG ++ GTEST_LIBRARIES ++ GTEST_MAIN_LIBRARIES ++ GTEST_INCLUDE_DIRS ++ GMOCK_LIBRARIES ++ GMOCK_MAIN_LIBRARIES ++ GMOCK_INCLUDE_DIRS) +diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake +index 7886c5f3e9..01108a18c9 100644 +--- a/cmake/modules/RootBuildOptions.cmake ++++ b/cmake/modules/RootBuildOptions.cmake +@@ -94,6 +94,7 @@ ROOT_BUILD_OPTION(builtin_ftgl OFF "Build bundled copy of FTGL") + ROOT_BUILD_OPTION(builtin_gl2ps OFF "Build bundled copy of gl2ps") + ROOT_BUILD_OPTION(builtin_glew OFF "Build bundled copy of GLEW") + ROOT_BUILD_OPTION(builtin_gsl OFF "Build GSL internally (requires network)") ++ROOT_BUILD_OPTION(builtin_gtest OFF "Build googletest internally (requires network)") + ROOT_BUILD_OPTION(builtin_llvm ON "Build bundled copy of LLVM") + ROOT_BUILD_OPTION(builtin_lz4 OFF "Build bundled copy of lz4") + ROOT_BUILD_OPTION(builtin_lzma OFF "Build bundled copy of lzma") +@@ -293,6 +294,7 @@ if(builtin_all) + set(builtin_gl2ps_defvalue ON) + set(builtin_glew_defvalue ON) + set(builtin_gsl_defvalue ON) ++ set(builtin_gtest_defvalue ON) + set(builtin_llvm_defvalue ON) + set(builtin_lz4_defvalue ON) + set(builtin_lzma_defvalue ON) +diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake +index cb75c0b1da..38fd5d6baf 100644 +--- a/cmake/modules/RootMacros.cmake ++++ b/cmake/modules/RootMacros.cmake +@@ -1671,7 +1671,7 @@ function(ROOT_ADD_TEST test) - #---Download googletest-------------------------------------------------------------- - if (testing) -- # FIXME: Remove our version of gtest in roottest. We can reuse this one. -- # Add googletest -- # http://stackoverflow.com/questions/9689183/cmake-googletest -+ # Workaround for missing libraries in Fedora's gmock packaging < 1.8.0 -+ if(EXISTS ${CMAKE_SOURCE_DIR}/googlemock) -+ set(_G_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/googlemock) + set_property(TEST ${test} APPEND PROPERTY ENVIRONMENT ROOT_HIST=0) -- set(_gtest_byproduct_binary_dir -- ${CMAKE_CURRENT_BINARY_DIR}/googletest-prefix/src/googletest-build) -- set(_gtest_byproducts -- ${_gtest_byproduct_binary_dir}/lib/libgtest.a -- ${_gtest_byproduct_binary_dir}/lib/libgtest_main.a -- ${_gtest_byproduct_binary_dir}/lib/libgmock.a -- ${_gtest_byproduct_binary_dir}/lib/libgmock_main.a -- ) -- -- if(MSVC) -- set(EXTRA_GTEST_OPTS -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH=${_gtest_byproduct_binary_dir}/lib/ -- -Dgtest_force_shared_crt=ON -- BUILD_COMMAND ${CMAKE_COMMAND} --build --config Release) -- endif() -- if(APPLE) -- set(EXTRA_GTEST_OPTS -- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}) -- endif() -- -- ExternalProject_Add( -- googletest -- GIT_REPOSITORY https://github.com/google/googletest.git -- GIT_SHALLOW 1 -- GIT_TAG release-1.10.0 -- UPDATE_COMMAND "" -- # TIMEOUT 10 -- # # Force separate output paths for debug and release builds to allow easy -- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands -- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs -- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs -- # -Dgtest_force_shared_crt=ON -- CMAKE_ARGS -G ${CMAKE_GENERATOR} -- -DCMAKE_BUILD_TYPE=Release -- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -- -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS} -- -DCMAKE_AR=${CMAKE_AR} -- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -- ${EXTRA_GTEST_OPTS} -- # Disable install step -- INSTALL_COMMAND "" -- BUILD_BYPRODUCTS ${_gtest_byproducts} -- # Wrap download, configure and build steps in a script to log output -- LOG_DOWNLOAD ON -- LOG_CONFIGURE ON -- LOG_BUILD ON -- TIMEOUT 600 -- ) -- -- # Specify include dirs for gtest and gmock -- ExternalProject_Get_Property(googletest source_dir) -- set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include) -- set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include) -- # Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052 -- file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR}) -- -- # Libraries -- ExternalProject_Get_Property(googletest binary_dir) -- set(_G_LIBRARY_PATH ${binary_dir}/lib/) -- -- # Use gmock_main instead of gtest_main because it initializes gtest as well. -- # Note: The libraries are listed in reverse order of their dependancies. -- foreach(lib gtest gtest_main gmock gmock_main) -+ foreach(lib gmock gmock_main) - add_library(${lib} IMPORTED STATIC GLOBAL) -- set_target_properties(${lib} PROPERTIES -- IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}" -- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}" -- ) -- add_dependencies(${lib} googletest) -- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND -- ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 9) -- target_compile_options(${lib} INTERFACE -Wno-deprecated-copy) -- endif() - endforeach() -- # Once we require at least cmake 3.11, target_include_directories will work for imported targets -- # Because of https://gitlab.kitware.com/cmake/cmake/-/merge_requests/1264 -- # We need this workaround: -- SET_PROPERTY(TARGET gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}) -- SET_PROPERTY(TARGET gmock APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}) -- #target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIR}) -- #target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIR}) -- -- set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}) -- set_property(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}) - set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}) - set_property(TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}) - -+ endif() +- #- Handle TIMOUT and DEPENDS arguments ++ #- Handle TIMEOUT and DEPENDS arguments + if(ARG_TIMEOUT) + set_property(TEST ${test} PROPERTY TIMEOUT ${ARG_TIMEOUT}) + endif() +diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake +index fe40898d12..b6a3cc4c76 100644 +--- a/cmake/modules/SearchInstalledSoftware.cmake ++++ b/cmake/modules/SearchInstalledSoftware.cmake +@@ -1860,15 +1860,6 @@ if (mpi) + endif() endif() - #------------------------------------------------------------------------------------ +-if(testing AND NO_CONNECTION) +- if(fail-on-missing) +- message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access") +- else() +- message(STATUS "No internet connection, disabling 'testing' option") +- set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) +- endif() +-endif() +- + #---Check for ZeroMQ when building RooFit::MultiProcess-------------------------------------------- + + if (roofit_multiprocess) +@@ -1942,8 +1933,41 @@ if (roofit_multiprocess) + target_compile_definitions(cppzmq INTERFACE ZMQ_NO_EXPORT) + endif (roofit_multiprocess) + +-#---Download googletest-------------------------------------------------------------- ++#---Check for googletest--------------------------------------------------------------- + if (testing) ++ if (NOT builtin_gtest) ++ if(fail-on-missing) ++ find_package(GTest REQUIRED) ++ else() ++ find_package(GTest) ++ if(NOT GTEST_FOUND) ++ if(NO_CONNECTION) ++ if(fail-on-missing) ++ message(FATAL_ERROR "No internet connection and GTest was not found. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access") ++ else() ++ message(STATUS "GTest not found, and no internet connection. Disabing the 'testing' option.") ++ set(testing OFF CACHE BOOL "Disabled because testing requested and GTest not found (${builtin_gtest_description}) and there is no internet connection" FORCE) ++ endif() ++ else() ++ message(STATUS "GTest not found, switching ON 'builtin_gtest' option.") ++ set(builtin_gtest ON CACHE BOOL "Enabled because testing requested and GTest not found (${builtin_gtest_description})" FORCE) ++ endif() ++ endif() ++ endif() ++ else() ++ if(NO_CONNECTION) ++ if(fail-on-missing) ++ message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'builtin_gtest' option or the 'fail-on-missing' option to automatically disable options requiring internet access") ++ else() ++ message(STATUS "No internet connection, disabling the 'testing' and 'builtin_gtest' options") ++ set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) ++ set(builtin_gtest OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) ++ endif() ++ endif() ++ endif() ++endif() ++ ++if (builtin_gtest) + # FIXME: Remove our version of gtest in roottest. We can reuse this one. + # Add googletest + # http://stackoverflow.com/questions/9689183/cmake-googletest +-- +2.35.1 + diff --git a/root-uring-warn.patch b/root-uring-warn.patch new file mode 100644 index 0000000..05cfd56 --- /dev/null +++ b/root-uring-warn.patch @@ -0,0 +1,43 @@ +From 580fcf8fe95c45e337d222a7fd2338fdef2f52c5 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 24 Mar 2022 16:18:57 +0100 +Subject: [PATCH 1/2] Ignore warnings about uring failing during test + +--- + tree/ntuple/v7/test/ntuple_extended.cxx | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx +index 8e3998996c..98d65ef319 100644 +--- a/tree/ntuple/v7/test/ntuple_extended.cxx ++++ b/tree/ntuple/v7/test/ntuple_extended.cxx +@@ -4,6 +4,8 @@ + + #include "TROOT.h" + ++#include "ROOTUnitTestSupport.h" ++ + TEST(RNTuple, RealWorld1) + { + ROOT::EnableImplicitMT(); +@@ -111,6 +113,17 @@ TEST(RNTuple, RandomAccess) + #if !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS) + TEST(RNTuple, LargeFile) + { ++ ROOTUnitTestSupport::CheckDiagsRAII raii; ++ raii.optionalDiag(kWarning, "RIoUring", ++ "io_uring is unexpectedly not available because:", false); ++ raii.optionalDiag(kWarning, "RRawFileUnix", ++ "io_uring setup failed, falling back to blocking I/O in ReadV", true); ++ ++ raii.optionalDiag(kWarning, "ROOT.NTuple", ++ "The RNTuple file format will change. Do not store real data with this version of RNTuple!", true); ++ raii.optionalDiag(kWarning, "ROOT.NTuple", ++ "Pre-release format version: ", false); ++ + ROOT::EnableImplicitMT(); + FileRaii fileGuard("test_large_file.root"); + +-- +2.35.1 + diff --git a/root-uring.patch b/root-uring.patch deleted file mode 100644 index 129c38e..0000000 --- a/root-uring.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/io/io/src/RRawFileUnix.cxx b/io/io/src/RRawFileUnix.cxx -index 829c5e4cb6..417c3adf30 100644 ---- a/io/io/src/RRawFileUnix.cxx -+++ b/io/io/src/RRawFileUnix.cxx -@@ -115,26 +115,33 @@ void ROOT::Internal::RRawFileUnix::OpenImpl() - void ROOT::Internal::RRawFileUnix::ReadVImpl(RIOVec *ioVec, unsigned int nReq) - { - #ifdef R__HAS_URING -- if (RIoUring::IsAvailable()) { -- RIoUring ring; -- std::vector reads; -- reads.reserve(nReq); -- for (std::size_t i = 0; i < nReq; ++i) { -- RIoUring::RReadEvent ev; -- ev.fBuffer = ioVec[i].fBuffer; -- ev.fOffset = ioVec[i].fOffset; -- ev.fSize = ioVec[i].fSize; -- ev.fFileDes = fFileDes; -- reads.push_back(ev); -+ thread_local bool uring_failed = false; -+ if (!uring_failed) { -+ try { -+ RIoUring ring; // throws std::runtime_error -+ std::vector reads; -+ reads.reserve(nReq); -+ for (std::size_t i = 0; i < nReq; ++i) { -+ RIoUring::RReadEvent ev; -+ ev.fBuffer = ioVec[i].fBuffer; -+ ev.fOffset = ioVec[i].fOffset; -+ ev.fSize = ioVec[i].fSize; -+ ev.fFileDes = fFileDes; -+ reads.push_back(ev); -+ } -+ ring.SubmitReadsAndWait(reads.data(), nReq); -+ for (std::size_t i = 0; i < nReq; ++i) { -+ ioVec[i].fOutBytes = reads.at(i).fOutBytes; -+ } -+ return; - } -- ring.SubmitReadsAndWait(reads.data(), nReq); -- for (std::size_t i = 0; i < nReq; ++i) { -- ioVec[i].fOutBytes = reads.at(i).fOutBytes; -+ catch(const std::runtime_error &e) { -+ Warning("RIoUring", "io_uring is unexpectedly not available because:\n%s", e.what()); -+ Warning("RRawFileUnix", -+ "io_uring setup failed, falling back to blocking I/O in ReadV"); -+ uring_failed = true; - } -- return; - } -- Warning("RRawFileUnix", -- "io_uring setup failed, falling back to default ReadV implementation"); - #endif - RRawFile::ReadVImpl(ioVec, nReq); - } diff --git a/root-use-unique-filenames-in-fillrandom-tutorials.patch b/root-use-unique-filenames-in-fillrandom-tutorials.patch new file mode 100644 index 0000000..724eb79 --- /dev/null +++ b/root-use-unique-filenames-in-fillrandom-tutorials.patch @@ -0,0 +1,25 @@ +From b781f954ac80cc227777992dcb4fbe1837c7e351 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 29 Mar 2022 15:44:17 +0200 +Subject: [PATCH] Use unique filenames in fillrandom.py and fillrandom.C + +--- + tutorials/hist/fillrandom.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tutorials/hist/fillrandom.py b/tutorials/hist/fillrandom.py +index d5eb3f6f38..4b1a94a37e 100644 +--- a/tutorials/hist/fillrandom.py ++++ b/tutorials/hist/fillrandom.py +@@ -41,7 +41,7 @@ h1f.FillRandom("sqroot",10000) + h1f.Draw() + c1.Update() + +-f = ROOT.TFile("fillrandom.root","RECREATE") ++f = ROOT.TFile("fillrandom-py.root","RECREATE") + form1.Write() + sqroot.Write() + h1f.Write() +-- +2.35.1 + diff --git a/root.spec b/root.spec index 3a305ae..4fbd388 100644 --- a/root.spec +++ b/root.spec @@ -17,9 +17,9 @@ %endif %global python3_version_uscore %(tr . _ <<< "%{python3_version}") -%if %{?fedora}%{!?fedora:0} >= 24 || %{?rhel}%{!?rhel:0} >= 8 -# Building the experimental ROOT 7 classes requires c++-14. -# This is the default for gcc 6.1 and later. +%if %{?fedora}%{!?fedora:0} >= 34 || %{?rhel}%{!?rhel:0} >= 9 +# Building the experimental ROOT 7 classes requires c++-17. +# This is the default for gcc 11 and later. %global root7 1 %else %global root7 0 @@ -31,12 +31,27 @@ %global xrootd5 0 %endif -%if %{?fedora}%{!?fedora:0} >= 35 -# The required __malloc_hook was removed from glibc 2.33.9000-48 -# The memstat module is deprecated and will be removed in root 6.26 -%global memstat 0 +%global webgui 1 + +%if %{?rhel}%{!?rhel:0} == 9 +# GFAL2 not available in EPEL 9 +%global gfal2 0 %else -%global memstat 1 +%global gfal2 1 +%endif + +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +# The SOFIE parser requires protobuf 3.0 +%global tmvasofieparser 1 +%else +%global tmvasofieparser 0 +%endif + +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +# DistRDF requires Python 3.7+ +%global distrdf 1 +%else +%global distrdf 0 %endif %if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 @@ -53,18 +68,15 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.24.06 +Version: 6.26.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 6%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ URL: https://root.cern/ -# The upstream source is modified to exclude proprietary fonts: -# wget -N https://root.cern/download/root_v%%{version}.source.tar.gz -# tar -z -x -f root_v%%{version}.source.tar.gz -# find root-%%{version}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';' -# tar -J -c --group root --owner root -f root-%%{version}.tar.xz root-%%{version} +# The upstream source is modified to exclude proprietary fonts +# See Source8 for how to create Source0 Source0: %{name}-%{version}.tar.xz # Input data for the tests Source1: %{name}-testfiles.tar.xz @@ -79,94 +91,107 @@ Source6: application-x-root.png # Instructions for setting up a python virtual environment # for running the JupyROOT notebook on EPEL Source7: JupyROOT-on-EPEL +# Script to generate Source0 +Source8: %{name}-get-src.sh # Use system fonts Patch0: %{name}-fontconfig.patch # Revert the removal of DataFrame for 32 bit architectures +# https://github.com/root-project/root/pull/10300 Patch1: %{name}-32bit-dataframe.patch # Unbundle gtest +# Add builtin_gtest cmake option +# Compatibility with older gtest +# https://github.com/root-project/root/pull/10301 Patch2: %{name}-unbundle-gtest.patch +Patch3: %{name}-old-gtest-compat.patch # Reduce memory usage of build # Do not link rootcling_stage1 and libCling in parallel -Patch3: %{name}-memory-usage.patch +Patch4: %{name}-memory-usage.patch # Reduce memory usage during linking on ARM and x86 by generating -# smaller debuginfo for the llmv libraries. -# Fedora builders run out of memory with the default setting. -Patch4: %{name}-memory-arm-x86.patch +# smaller debuginfo for the llvm libraries +# Fedora builders run out of memory with the default setting +Patch5: %{name}-memory-arm-x86.patch # Don't install minicern static library -Patch5: %{name}-dont-install-minicern.patch +Patch6: %{name}-dont-install-minicern.patch # Do not export Python modules in CMake config -Patch6: %{name}-no-export-python-modules.patch -# Don't create documentation notebooks -Patch7: %{name}-doc-no-notebooks.patch -# Don't run tutorials that crash during doc generation -Patch8: %{name}-doxygen-crash.patch -# Compatibility with older gtest -Patch9: %{name}-old-gtest-compat.patch +Patch7: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled -Patch10: %{name}-32bit-tests.patch -# Workaround for initialization problems for PyROOT on -# EPEL7 ppc64le -# https://sft.its.cern.ch/jira/browse/ROOT-10622 -Patch11: %{name}-epel7-ppc64le-pyroot.patch +Patch8: %{name}-32bit-tests.patch # Use local static script and style files for JsMVA -Patch12: %{name}-jsmva-static.patch +Patch9: %{name}-jsmva-static.patch +# Fix python bytecode compilation on EPEL 7 # Compatibility with older python versions (no f-strings) -Patch13: %{name}-older-python.patch -# Fix multicore tests when running on machines with few cores -# https://github.com/root-project/root/pull/8068 -Patch14: %{name}-fix-multicore-tests-with-few-cores.patch -# Reapply altivec fix lost in the LLVM 9 upgrade -# https://github.com/root-project/root/pull/8069 -Patch15: %{name}-fix-ppc64le-compilation-with-gcc-10.patch -# Actually request the use of the large code model for ppc64le -# https://github.com/root-project/root/pull/8230 -Patch16: %{name}-ppc-codemodel.patch -# Fix segfaults on ppc64le when using the large code model -# PR by Vassil Vassilev based on upstream fix -# https://reviews.llvm.org/D91983 -# https://github.com/root-project/root/pull/9380 -Patch17: %{name}-ppc-segfault-fix.patch -# Fall back to blocking I/O if uring fails -# Backported -# - commit 691403b2cc504fd4e3e7227894023913014a61ff -# - commit 956951ee2af83426d73ad72b2d966f9f1acbea83 -# - commit 16e64da11edf91fcf31c2fc474f573fca2ee863c -# - commit 311a6822f9b0fd438c4210ed60617b45f2ddbe74 -Patch18: %{name}-uring.patch -# Add missing classes in LinkDef.h files -# Backported -Patch19: %{name}-add-TTreeProcessorMP-to-LinkDef-file.patch -Patch20: %{name}-add-RDisplay-to-LinkDef-file.patch -Patch21: %{name}-add-RCutFlowReport-to-LinkDef-file.patch -# Fix "pointer is null" warnings -# Backported -Patch22: %{name}-ptr-is-null-RooFit-TMVA.patch -Patch23: %{name}-ptr-is-null-TStreamerInfo.patch -# Fix two failing tests on s390x -# https://github.com/root-project/root/pull/8826 -Patch24: %{name}-stress-s390x.patch -# Doxygen warning fixes -# Backported from upstream -Patch25: root-doxygen-fix1.patch -# Doxygen warning fixes -# https://github.com/root-project/root/pull/9388 -Patch26: root-doxygen-fix2.patch -# Don't run tutorials that crash during doc generation -# EPEL 7 specific -Patch27: %{name}-doxygen-crash-el7.patch +Patch10: %{name}-older-python.patch # Backported fix from LLVM upstream -Patch28: %{name}-symbol-rewrite.patch +Patch11: %{name}-symbol-rewrite.patch # Backport gcc 12 fix from LLVM # https://github.com/root-project/root/pull/9586 -Patch29: %{name}-fix-compilation-with-gcc-12.patch +Patch12: %{name}-fix-compilation-with-gcc-12.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 -Patch30: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +# Add #include for std::memcpy +# https://github.com/root-project/root/pull/10116 +Patch14: %{name}-missing-include.patch +# Fixes for tmva-sofie test compilation +# https://github.com/root-project/root/pull/10117 +Patch15: %{name}-blas-linking-and-ignore-prefix.patch +# Move private declarations away from the public header file +# https://github.com/root-project/root/pull/10145 +Patch16: %{name}-move-private-decl.patch +# Fix test when long is 32 bits +# https://github.com/root-project/root/pull/10302 +Patch17: %{name}-longlong.patch +# Ignore warnings (uring and RooNaNPacker) +# https://github.com/root-project/root/pull/10303 +Patch18: %{name}-uring-warn.patch +Patch19: %{name}-endian-warn.patch +# Always call WaitForInFlightClusters before checking cluster IDs +# https://github.com/root-project/root/pull/10304 +Patch20: %{name}-ntuplewait.patch +# NENTRIES is not always a multiple of the expected size +# https://github.com/root-project/root/pull/10305 +Patch21: %{name}-dataframe-callback.patch +# Add/remove namespaces from Linkdef +# https://github.com/root-project/root/pull/10306 +Patch22: %{name}-namespace-sofie.patch +Patch23: %{name}-namespace-roofit.patch +Patch24: %{name}-namespace-pymva.patch +# Use calls from Python directly in tutorial +# https://github.com/root-project/root/pull/10307 +Patch25: %{name}-roofit-tutorial.patch +# Byte swap values read from the protobuf raw data stream on +# big endian architectures +# https://github.com/root-project/root/pull/10308 +Patch26: %{name}-big-endian-byte-swap.patch +# Avoid crashes due to static initialization order +# https://github.com/root-project/root/pull/10309 +Patch27: %{name}-rcolor-static-init.patch +# Avoid deleting TFormulas twice +# https://github.com/root-project/root/pull/10310 +Patch28: %{name}-avoid-deleting-TFormulas-twice.patch +# Use unique filenames in fillrandom.py and fillrandom.C +# https://github.com/root-project/root/pull/10311 +Patch29: %{name}-use-unique-filenames-in-fillrandom-tutorials.patch +# Limit the number of threads in TMVA CNN/DNN test to save memory +# https://github.com/root-project/root/pull/10312 +Patch30: %{name}-tmva-threads.patch +# Fix library link order +# https://github.com/root-project/root/pull/10313 +Patch31: %{name}-core-base-test.patch +# Backports +Patch32: %{name}-roofit-overflow.patch +Patch33: %{name}-make-dyld-based-library-search-behavior-default.patch +Patch34: %{name}-fix-TMVA-tutorial-using-internally-python.patch +Patch35: %{name}-threadsh1-avoid-heap-use-after-free.patch -BuildRequires: make %if %{?rhel}%{!?rhel:0} == 7 +BuildRequires: devtoolset-8-toolchain BuildRequires: cmake3 >= 3.9 %else +BuildRequires: gcc-c++ +BuildRequires: gcc-gfortran +BuildRequires: make BuildRequires: cmake >= 3.9 %endif BuildRequires: libX11-devel @@ -177,8 +202,8 @@ BuildRequires: fontconfig-devel BuildRequires: freetype-devel BuildRequires: fcgi-devel BuildRequires: ftgl-devel -BuildRequires: glew-devel BuildRequires: gl2ps-devel +BuildRequires: glew-devel BuildRequires: pcre-devel BuildRequires: zlib-devel BuildRequires: xz-devel @@ -200,8 +225,8 @@ BuildRequires: mysql-devel %endif BuildRequires: sqlite-devel BuildRequires: unixODBC-devel -BuildRequires: mesa-libGL-devel -BuildRequires: mesa-libGLU-devel +BuildRequires: libGL-devel +BuildRequires: libGLU-devel %if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8 BuildRequires: libpq-devel %else @@ -215,7 +240,7 @@ BuildRequires: python2-numpy BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy -%if %{root7} +%if %{webgui} %ifarch %{qt5_qtwebengine_arches} BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtwebengine-devel @@ -232,22 +257,23 @@ BuildRequires: xrootd-client-devel >= 1:3.3.5 BuildRequires: xrootd-private-devel >= 1:3.3.5 %endif BuildRequires: cfitsio-devel -BuildRequires: davix-devel >= 0.2.8 +BuildRequires: davix-devel >= 0.6.4 +%if %{gfal2} BuildRequires: gfal2-devel +%endif BuildRequires: R-Rcpp-devel BuildRequires: R-RInside-devel BuildRequires: readline-devel %if %{tbb} BuildRequires: tbb-devel >= 2018 %endif +BuildRequires: libuuid-devel BuildRequires: emacs BuildRequires: emacs-el -BuildRequires: gcc-c++ -BuildRequires: gcc-gfortran BuildRequires: graphviz-devel BuildRequires: expat-devel BuildRequires: pythia8-devel >= 8.1.80 -%if %{?fedora}%{!?fedora:0} >= 33 +%if %{?fedora}%{!?fedora:0} >= 33 || %{?rhel}%{!?rhel:0} >= 9 BuildRequires: flexiblas-devel # Required for FlexiBLAS support in FindBLAS.cmake # (in cmake 3.19.0, backported to cmake 3.18.3-1 in Fedora) @@ -259,17 +285,16 @@ BuildRequires: json-devel %if %{?fedora}%{!?fedora:0} BuildRequires: liburing-devel %endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 +%if %{tmvasofieparser} +BuildRequires: protobuf-devel >= 3.0 +%endif +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif -BuildRequires: doxygen -BuildRequires: graphviz BuildRequires: yuicompressor BuildRequires: perl-generators BuildRequires: gtest-devel BuildRequires: gmock-devel -# Some of the tests call lsb_release -BuildRequires: redhat-lsb-core # Fonts BuildRequires: font(freesans) BuildRequires: font(freeserif) @@ -340,16 +365,6 @@ Requires: %{name}-core = %{version}-%{release} This package contains fonts used by ROOT that are not available in Fedora. In particular it contains STIX version 0.9 that is used by TMathText. -%package doc -Summary: Documentation for the ROOT system -BuildArch: noarch -License: LGPLv2+ and GPLv2+ and BSD -Requires: mathjax - -%description doc -This package contains the automatically generated ROOT class -documentation. - %package tutorial Summary: ROOT tutorial scripts and test suite BuildArch: noarch @@ -422,8 +437,28 @@ Obsoletes: python%{?python3_other_pkgversion}-%{name} < 6.22.00 Obsoletes: python%{?python3_other_pkgversion}-jupyroot < 6.22.00 Obsoletes: python%{?python3_other_pkgversion}-jsmva < 6.22.00 %endif -%if ! %{memstat} -Obsoletes: %{name}-memstat < %{version}-%{release} +Obsoletes: %{name}-memstat < 6.26.00 +Obsoletes: %{name}-montecarlo-vmc < 6.26.00 +Obsoletes: %{name}-doc < 6.26.00 +%if %{?rhel}%{!?rhel:0} == 8 +# Obsolete the ROOT 7 packages in EPEL 8 +# Minimum C++ version changed from 14 to 17 +Obsoletes: %{name}-graf-gpadv7 < 6.26.00 +Obsoletes: %{name}-graf-primitives < 6.26.00 +Obsoletes: %{name}-graf3d-eve7 < 6.26.00 +Obsoletes: %{name}-gui-browsable < 6.26.00 +Obsoletes: %{name}-gui-browserv7 < 6.26.00 +Obsoletes: %{name}-gui-canvaspainter < 6.26.00 +Obsoletes: %{name}-gui-fitpanelv7 < 6.26.00 +Obsoletes: %{name}-histv7 < 6.26.00 +Obsoletes: %{name}-hist-draw < 6.26.00 +Obsoletes: %{name}-tree-ntuple < 6.26.00 +%endif +%if %{buildpy2} +Obsoletes: python2-distrdf < 6.26.00 +%endif +%if ! %{distrdf} +Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00 %endif %description core @@ -449,10 +484,14 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} # not work with the system libraries. The bundled llvm and # clang are compiled using -fvisibility=hidden, and are not # visible outside of the libCling module. -Requires: gcc-c++ -Requires: redhat-rpm-config Provides: bundled(clang-libs) Provides: bundled(llvm-libs) +%if %{?rhel}%{!?rhel:0} == 7 +Requires: devtoolset-8-toolchain +%else +Requires: gcc-c++ +%endif +Requires: redhat-rpm-config Obsoletes: %{name}-cint7 < 5.26.00c Obsoletes: %{name}-cint < 6.00.00 Obsoletes: %{name}-cintex < 6.00.00 @@ -516,17 +555,6 @@ Requires: %{name}-tmva = %{version}-%{release} %description -n python2-jsmva TMVA interface used by JupyROOT. - -%package -n python2-distrdf -Summary: Distributed RDataFrame -BuildArch: noarch -%{?python_provide:%python_provide python2-distrdf} -Requires: python2-%{name} = %{version}-%{release} -Requires: %{name}-tree-dataframe = %{version}-%{release} - -%description -n python2-distrdf -A layer on top of RDataFrame to enable distributed computations. It is -a port of the previously known PyRDF python package. %endif %package -n python%{python3_pkgversion}-%{name} @@ -573,6 +601,7 @@ Requires: %{name}-tmva = %{version}-%{release} %description -n python%{python3_pkgversion}-jsmva TMVA interface used by JupyROOT. +%if %{distrdf} %package -n python%{python3_pkgversion}-distrdf Summary: Distributed RDataFrame BuildArch: noarch @@ -583,6 +612,7 @@ Requires: %{name}-tree-dataframe = %{version}-%{release} %description -n python%{python3_pkgversion}-distrdf A layer on top of RDataFrame to enable distributed computations. It is a port of the previously known PyRDF python package. +%endif %package r Summary: R interface for ROOT @@ -956,6 +986,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} Requires: %{name}-roostats%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} @@ -988,6 +1019,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-dcache This package contains the dCache extension for ROOT. +%if %{gfal2} %package io-gfal Summary: Grid File Access Library input/output library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -995,6 +1027,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-gfal This package contains the Grid File Access Library extension for ROOT. +%endif %package io-sql Summary: SQL input/output library for ROOT @@ -1226,19 +1259,6 @@ Obsoletes: %{name}-tree-player < 6.14.00 %description vecops This package contains a vector operation extension for ROOT. -%if %{memstat} -%package memstat -Summary: Memory statistics tool for use with ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} - -%description memstat -This package contains the memory statistics tool for debugging memory -leaks and such. -%endif - %package montecarlo-eg Summary: Event generator library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1261,17 +1281,6 @@ package provide the ROOT user with transparent interface to the Pythia (version 8) event generators for hadronic interactions. If the term "hadronic" does not ring any bells, this package is not for you. -%package montecarlo-vmc -Summary: Virtual Monte-Carlo (simulation) library for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-geom%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release} -Requires: %{name}-physics%{?_isa} = %{version}-%{release} - -%description montecarlo-vmc -This package contains the VMC library for ROOT. - %package net Summary: Net library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1298,7 +1307,7 @@ This package contains the basic authentication algorithms used by ROOT. %package net-davix Summary: Davix extension for ROOT -Requires: davix-libs%{?_isa} >= 0.2.8 +Requires: davix-libs%{?_isa} >= 0.6.4 Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1456,6 +1465,26 @@ suitable for adoption in different disciplines as well. This package contains the RooFit toolkit classes. +%package roofit-common +Summary: ROOT extension for modeling expected distributions - common +License: BSD +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description roofit-common +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains the RooFit common classes. + %package roofit-core Summary: ROOT extension for modeling expected distributions - core License: BSD @@ -1467,7 +1496,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-minuit%{?_isa} = %{version}-%{release} +Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-common%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1516,8 +1547,9 @@ This package contains RooFit classes that use the mathmore library. %package roofit-batchcompute Summary: Optimized computation functions for PDFs Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description roofit-batchcompute While fitting, a significant amount of time and processing power is @@ -1532,6 +1564,43 @@ multiple times for different vector instuction set architectures and the optimal code is executed during runtime, as a result of an automatic hardware detection mechanism that this library contains. +%package roofit-dataframe-helpers +Summary: RooFit DaraFrame helpers +License: BSD +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description roofit-dataframe-helpers +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains DaraFrame helper classes for RooFit + +%package roofit-hs3 +Summary: RooFit HS3 +License: BSD +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description roofit-hs3 +When using RooFit, statistical models can be conveniently handled and +stored as a RooWorkspace. However, for the sake of interoperability +with other statistical frameworks, and also ease of manipulation, it +may be useful to store statistical models in text form. This library +sets out to achieve exactly that, exporting to and importing from JSON +and YML. + %package roostats Summary: Statistical tools built on top of RooFit License: BSD @@ -1639,6 +1708,7 @@ Summary: Toolkit for multivariate data analysis (Python) License: BSD Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-tmva%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} Requires: python%{python3_pkgversion}-numpy %description tmva-python @@ -1655,6 +1725,27 @@ Requires: %{name}-tmva%{?_isa} = %{version}-%{release} %description tmva-r R integration with TMVA. +%package tmva-sofie +Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description tmva-sofie +ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +generates C++ functions easily invokable for the fast inference of +trained neural network models. It takes ONNX model files as inputs and +produces C++ header files that can be included and utilized in a +"plug-and-go" style. + +%if %{tmvasofieparser} +%package tmva-sofie-parser +Summary: ROOT/TMVA SOFIE Parsers +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} + +%description tmva-sofie-parser +Parsers for ROOT/TMVA SOFIE +%endif + %package tmva-gui Summary: Toolkit for multivariate data analysis GUI License: BSD @@ -1692,6 +1783,7 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} %endif Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} +Requires: %{name}-vecops%{?_isa} = %{version}-%{release} # Library split (tree-dataframe and vecops from tree-player) Obsoletes: %{name}-tree-player < 6.14.00 @@ -1765,6 +1857,41 @@ Requires: jupyter-notebook %description notebook Javascript and style files for the Jupyter ROOT Notebook. +%if %{webgui} +%package gui-webdisplay +Summary: Web display (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} + +%description gui-webdisplay +This package contains a web display extension for ROOT 7. + +%ifarch %{qt5_qtwebengine_arches} +%package gui-qt5webdisplay +Summary: Qt5 Web display (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} + +%description gui-qt5webdisplay +This package contains a Qt5 web display extension for ROOT 7. +%endif + +%package gui-webgui6 +Summary: Web based GUI for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description gui-webgui6 +This package provides a Web based GUI for ROOT. +%endif + %if %{root7} %package graf-gpadv7 Summary: Canvas and pad library for ROOT (ROOT 7) @@ -1787,6 +1914,7 @@ Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browserv7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1808,6 +1936,7 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-hist-draw%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} %description gui-browsable This package contains GUI browsable components for ROOT 7. @@ -1815,9 +1944,9 @@ This package contains GUI browsable components for ROOT 7. %package gui-browserv7 Summary: Browser (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} -Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d-eve7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} @@ -1850,39 +1979,6 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} This package contains a library to show a pop-up dialog when fitting various kinds of data. -%ifarch %{qt5_qtwebengine_arches} -%package gui-qt5webdisplay -Summary: Qt5 Web display (ROOT 7) -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} -Requires: %{name}-net-http%{?_isa} = %{version}-%{release} - -%description gui-qt5webdisplay -This package contains a Qt5 web display extension for ROOT 7. -%endif - -%package gui-webdisplay -Summary: Web display (ROOT 7) -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-net-http%{?_isa} = %{version}-%{release} - -%description gui-webdisplay -This package contains a web display extension for ROOT 7. - -%package gui-webgui6 -Summary: Web based GUI for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-gui%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} - -%description gui-webgui6 -This package provides a Web based GUI for ROOT. - %package histv7 Summary: Histogram library for ROOT (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1902,6 +1998,7 @@ This package contains an histogram drawing extension for ROOT 7. Summary: Ntuple (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-vecops%{?_isa} = %{version}-%{release} %description tree-ntuple This package contains an ntuple extension for ROOT 7. @@ -1937,12 +2034,15 @@ This package contains an ntuple extension for ROOT 7. %patch24 -p1 %patch25 -p1 %patch26 -p1 -%if %{?rhel}%{!?rhel:0} == 7 %patch27 -p1 -%endif %patch28 -p1 %patch29 -p1 %patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 +%patch35 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1959,7 +2059,9 @@ rm -rf builtins/nlohmann rm -rf builtins/openssl rm -rf builtins/pcre rm -rf builtins/tbb +rm -rf builtins/xrootd rm -rf builtins/xxhash +rm -rf builtins/zeromq rm -rf builtins/zlib rm -rf builtins/zstd # * lzma @@ -1969,40 +2071,26 @@ rm graf3d/gl/src/gl2ps.cxx graf3d/gl/src/gl2ps/gl2ps.h # * unuran rm -rf math/unuran/src/*.tar.gz # * xrootd-private-devel headers -rm -rf proof/xrdinc +rm -rf proof/xrdinc/* # * x11 extension headers rm -rf graf2d/x11/inc/X11 # * mathjax rm -rf documentation/doxygen/mathjax.tar.gz -sed /mathjax.tar.gz/d -i documentation/doxygen/Makefile -%if %{root7} -# * string_view ( requires c++-14) -rm core/foundation/inc/ROOT/libcpp_string_view.h \ - core/foundation/inc/ROOT/RWrap_libcpp_string_view.h -sed /RWrap_libcpp_string_view.h/d -i build/unix/module.modulemap -%endif # * jsroot -rm -rf js/* +rm -rf js/[^f]* js/files/draw.htm js/files/online.htm # Remove unsupported man page macros sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* -# Work around missing libraries in Fedora's gmock packaging < 1.8.0 -if [ ! -r %{_libdir}/libgmock.so ] ; then -mkdir googlemock -pushd googlemock -g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock-all.o /usr/src/gmock/gmock-all.cc -ar rv libgmock.a gmock-all.o -g++ %{optflags} -DGTEST_HAS_PTHREAD=1 -c -o gmock_main.o /usr/src/gmock/gmock_main.cc -ar rv libgmock_main.a gmock_main.o -popd -fi - # Remove pre-minified script and style files rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css %build +%if %{?rhel}%{!?rhel:0} == 7 +. /opt/rh/devtoolset-8/enable +%endif + # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO %define _lto_cflags %{nil} @@ -2033,6 +2121,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_cfitsio:BOOL=OFF \ -Dbuiltin_clang:BOOL=ON \ -Dbuiltin_cling:BOOL=ON \ + -Dbuiltin_cppzmq:BOOL=OFF \ -Dbuiltin_davix:BOOL=OFF \ -Dbuiltin_fftw3:BOOL=OFF \ -Dbuiltin_freetype:BOOL=OFF \ @@ -2040,6 +2129,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_gl2ps:BOOL=OFF \ -Dbuiltin_glew:BOOL=OFF \ -Dbuiltin_gsl:BOOL=OFF \ + -Dbuiltin_gtest:BOOL=OFF \ -Dbuiltin_llvm:BOOL=ON \ -Dbuiltin_lz4:BOOL=OFF \ -Dbuiltin_lzma:BOOL=OFF \ @@ -2054,6 +2144,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_veccore:BOOL=OFF \ -Dbuiltin_xrootd:BOOL=OFF \ -Dbuiltin_xxhash:BOOL=OFF \ + -Dbuiltin_zeromq:BOOL=OFF \ -Dbuiltin_zlib:BOOL=OFF \ -Dbuiltin_zstd:BOOL=OFF \ -Dalien:BOOL=OFF \ @@ -2065,14 +2156,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dclad:BOOL=OFF \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ -%if %{root7} - -Droot7:BOOL=ON \ - -Dwebgui:BOOL=ON \ -%else - -Droot7:BOOL=OFF \ - -Dwebgui:BOOL=OFF \ -%endif -Dcxxmodules:BOOL=OFF \ + -Ddaos:BOOL=OFF \ -Ddataframe:BOOL=ON \ -Ddavix:BOOL=ON \ -Ddcache:BOOL=ON \ @@ -2084,7 +2169,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dfitsio:BOOL=ON \ -Dfortran:BOOL=ON \ -Dgdml:BOOL=ON \ +%if %{gfal2} -Dgfal:BOOL=ON \ +%else + -Dgfal:BOOL=OFF \ +%endif -Dgsl_shared:BOOL=ON \ -Dgviz:BOOL=ON \ -Dhttp:BOOL=ON \ @@ -2097,11 +2186,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ -%if %{memstat} - -Dmemstat:BOOL=ON \ -%else - -Dmemstat:BOOL=OFF \ -%endif -Dminuit2:BOOL=ON \ -Dmlp:BOOL=ON \ -Dmonalisa:BOOL=OFF \ @@ -2120,8 +2204,16 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %else -Dqt5web:BOOL=OFF \ %endif + -Dqt6web:BOOL=OFF \ -Dr:BOOL=ON \ -Droofit:BOOL=ON \ + -Droofit_multiprocess:BOOL=OFF \ + -Droofit_hs3_ryml:BOOL=OFF \ +%if %{root7} + -Droot7:BOOL=ON \ +%else + -Droot7:BOOL=OFF \ +%endif -Drpath:BOOL=OFF \ -Druby:BOOL=OFF \ -Druntime_cxxmodules:BOOL=OFF \ @@ -2141,6 +2233,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva-gpu:BOOL=OFF \ -Dtmva-pymva:BOOL=ON \ -Dtmva-rmva:BOOL=ON \ +%if %{tmvasofieparser} + -Dtmva-sofie:BOOL=ON \ +%else + -Dtmva-sofie:BOOL=OFF \ +%endif -Dunuran:BOOL=ON \ %if %{?fedora}%{!?fedora:0} -During:BOOL=ON \ @@ -2151,7 +2248,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dvdt:BOOL=OFF \ -Dveccore:BOOL=OFF \ -Dvecgeom:BOOL=OFF \ - -Dvmc:BOOL=ON \ +%if %{webgui} + -Dwebgui:BOOL=ON \ +%else + -Dwebgui:BOOL=OFF \ +%endif -Dx11:BOOL=ON \ -Dxml:BOOL=ON \ -Dxrootd:BOOL=ON \ @@ -2162,6 +2263,8 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %endif -Dfail-on-missing:BOOL=ON \ -Dtesting:BOOL=ON \ + -Dtest_distrdf_pyspark:BOOL=OFF \ + -Dtest_distrdf_dask:BOOL=OFF \ -Dclingtest:BOOL=OFF \ -Dcoverage:BOOL=OFF \ -Droottest:BOOL=OFF \ @@ -2243,7 +2346,6 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so mkdir -p %{buildroot}%{python2_sitelib} cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib} -cp -pr %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python2_sitelib} # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2258,10 +2360,6 @@ echo 'Name: JsMVA' > \ %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info -echo 'Name: DistRDF' > \ - %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitelib}/DistRDF-%{version}.egg-info %endif @@ -2290,7 +2388,9 @@ rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so mkdir -p %{buildroot}%{python3_sitelib} mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib} +%if %{distrdf} mv %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python3_sitelib} +%endif # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2305,10 +2405,12 @@ echo 'Name: JsMVA' > \ %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info +%if %{distrdf} echo 'Name: DistRDF' > \ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info echo 'Version: %{version}' >> \ %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info +%endif # Put jupyter stuff in the right places mkdir -p %{buildroot}%{_datadir}/jupyter/kernels @@ -2398,11 +2500,14 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins rm TBrowserImp/P030_RWebBrowserImp.C %endif rm TDataSetManager/P020_TDataSetManagerAliEn.C +%if ! %{gfal2} +rm TFile/P050_TGFALFile.C +%endif rm TFile/P070_TAlienFile.C rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TGrid/P010_TAlien.C -%if ! %{root7} +%if ! %{webgui} rm TGuiFactory/P030_TWebGuiFactory.C %endif %if %{xrootd5} @@ -2429,9 +2534,10 @@ rmdir TSlave rmdir TVirtualGeoConverter popd -# Replace bundled jsroot with symlink to system version -rmdir %{buildroot}%{_datadir}/%{name}/js -ln -s /usr/share/javascript/jsroot %{buildroot}%{_datadir}/%{name}/js +# Replace bundled jsroot with symlinks to system version +for x in img libs scripts style files/draw.htm files/online.htm ; do + ln -s /usr/share/javascript/jsroot/$x %{buildroot}%{_datadir}/%{name}/js/$x +done # Create ldconfig configuration mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d @@ -2458,30 +2564,6 @@ cp -p interpreter/llvm/src/CREDITS.TXT interpreter/llvm/src/llvm-CREDITS.TXT cp -p interpreter/llvm/src/LICENSE.TXT interpreter/llvm/src/llvm-LICENSE.TXT cp -p interpreter/llvm/src/README.txt interpreter/llvm/src/llvm-README.txt -# Generate documentation -pushd documentation/doxygen -mkdir -p doc/html -ln -s /usr/share/javascript/mathjax doc/html/mathjax -ln -s ../../files files -for x in df014_CsvDataSource_MuRun2010B_cpp.csv \ - df014_CsvDataSource_MuRun2010B_py.csv \ - df015_CsvDataSource_MuRun2010B.csv ; do - ln -sf ../../files/tutorials/df014_CsvDataSource_MuRun2010B.csv $x -done -# Create the py-hsimple.root file in advance (needed as input) -ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \ - ROOTSYS=${PWD}/../../%{_vpath_builddir} \ - LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \ - PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \ - %{__python3} ../../tutorials/pyroot/hsimple.py -ROOTIGNOREPREFIX=1 PATH=${PWD}/../../%{_vpath_builddir}/bin:${PATH} \ - ROOTSYS=${PWD}/../../%{_vpath_builddir} \ - LD_LIBRARY_PATH=${PWD}/../../%{_vpath_builddir}/lib \ - PYTHONPATH=${PWD}/../../%{_vpath_builddir}/lib \ - make DOXYGEN_OUTPUT_DIRECTORY=${PWD}/doc PYTHON_EXECUTABLE=%{__python3} -mv doc/html %{buildroot}%{_pkgdocdir}/html -popd - # Create includelist files ... for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm/*'` ; do l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f` @@ -2507,6 +2589,10 @@ cat includelist-net-netx >> includelist-netx %endif %check +%if %{?rhel}%{!?rhel:0} == 7 +. /opt/rh/devtoolset-8/enable +%endif + pushd %{_vpath_builddir} pushd test ln -s ../../files files @@ -2525,6 +2611,15 @@ popd pushd tmva/tmva/test/envelope ln -s ../../../../../files files popd + +# Some of the tests call lsb_release -d -s +# Provide a replacement script instead of build requiring redhat-lsb-core +cat > bin/lsb_release << EOF +#! /bin/sh +cat /etc/redhat-release +EOF +chmod +x bin/lsb_release + # Exclude some tests that can not be run # # - test-stressIOPlugins-* @@ -2545,8 +2640,13 @@ popd # reads sqlite data over network: # http://root.cern.ch/files/root_download_stats.sqlite # -# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles +# - tutorial-dataframe-df033_Describe-py # - tutorial-dataframe-df102_NanoAODDimuonAnalysis(-py)? +# reads input data over network: +# root://eospublic.cern.ch//eos/opendata/cms/derived-data/ +# AOD2NanoAODOutreachTool/Run2012BC_DoubleMuParked_Muons.root +# +# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles # - tutorial-dataframe-df103_NanoAODHiggsAnalysis(-py)? # reads input data over network: # root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/ @@ -2555,12 +2655,14 @@ popd # - tutorial-dataframe-df105_WBosonAnalysis-py # - tutorial-dataframe-df106_HiggsToFourLeptons-py # - tutorial-dataframe-df107_SingleTopAnalysis-py +# - tutorial-rcanvas-df104-py +# - tutorial-rcanvas-df105-py # reads input data over network: # root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ # -# - tutorial-v7-climate-global_temperatures +# - tutorial-v7-global_temperatures.cxx # reads input data over network -# http://root.cern./files/tutorials/GlobalLandTemperaturesByCity.csv +# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv # # - tutorial-v7-ntuple-ntpl003_lhcbOpenData # reads input data over network @@ -2570,13 +2672,13 @@ popd # reads input data over network # http://root.cern.ch/files/NanoAOD_DoubleMuon_CMS2011OpenData.root (1.5 GB) # -# - tutorial-v7-line.cxx -# requires a web browser (and js-jsroot) to render javascript graphics -# # - gtest-net-davix-test-RRawFileDavix # reads input file over network # http://root.cern.ch/files/davix.test # +# - gtest-net-netxng-test-RRawFileNetXNG +# root://eospublic.cern.ch/eos/root-eos/xrootd.test +# # - gtest-tmva-tmva-test-rreader # - gtest-tmva-tmva-test-rstandardscaler # - tutorial-tmva-tmva003_RReader @@ -2593,6 +2695,9 @@ popd # - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py # these tests require the numba python module which is not available +# +# - test-webgui-ping +# error: Cannot display window in native excluded="\ test-stressIOPlugins|\ tutorial-dataframe-df101_h1Analysis|\ @@ -2603,18 +2708,21 @@ tutorial-multicore-mp104_processH1|\ tutorial-multicore-mp105_processEntryList|\ tutorial-multicore-imt101_parTreeProcessing|\ tutorial-dataframe-df..._SQlite|\ -gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\ +tutorial-dataframe-df033_Describe-py|\ tutorial-dataframe-df102_NanoAODDimuonAnalysis|\ +gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\ tutorial-dataframe-df103_NanoAODHiggsAnalysis|\ tutorial-dataframe-df104_HiggsToTwoPhotons-py|\ tutorial-dataframe-df105_WBosonAnalysis-py|\ tutorial-dataframe-df106_HiggsToFourLeptons-py|\ tutorial-dataframe-df107_SingleTopAnalysis-py|\ -tutorial-v7-climate-global_temperatures|\ +tutorial-rcanvas-df104-py|\ +tutorial-rcanvas-df105-py|\ +tutorial-v7-global_temperatures.cxx|\ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ -tutorial-v7-line.cxx|\ gtest-net-davix-test-RRawFileDavix|\ +gtest-net-netxng-test-RRawFileNetXNG|\ gtest-tmva-tmva-test-rreader|\ gtest-tmva-tmva-test-rstandardscaler|\ tutorial-tmva-tmva003_RReader|\ @@ -2623,107 +2731,31 @@ tutorial-tmva-tmva103_Application|\ pyunittests-pyroot-dependency-versions|\ pyunittests-pyroot-numbadeclare|\ test-import-numba|\ -tutorial-pyroot-pyroot004_NumbaDeclare-py" +tutorial-pyroot-pyroot004_NumbaDeclare-py|\ +test-webgui-ping" -# - tutorial-v7-concurrentfill.cxx -# - tutorial-v7-draw.cxx -# - tutorial-v7-draw_frame.cxx -# - tutorial-v7-draw_legend.cxx -# - tutorial-v7-draw_mt.cxx -# - tutorial-v7-draw_rh1.cxx -# - tutorial-v7-draw_rh1_large.cxx -# - tutorial-v7-draw_rh2.cxx -# - tutorial-v7-draw_rh2_colz.cxx -# - tutorial-v7-draw_rh2_large.cxx -# - tutorial-v7-draw_rh3.cxx -# - tutorial-v7-draw_rh3_large.cxx -# - tutorial-v7-draw_subpads.cxx -# - tutorial-v7-histops.cxx -# - tutorial-v7-perf.cxx -# - tutorial-v7-perfcomp.cxx -# - tutorial-v7-simple.cxx -# Fails with "already deserialized this template specialization" -# https://github.com/root-project/root/issues/8073 -excluded="${excluded}|\ -tutorial-v7-concurrentfill.cxx|\ -tutorial-v7-draw.cxx|\ -tutorial-v7-draw_frame.cxx|\ -tutorial-v7-draw_legend.cxx|\ -tutorial-v7-draw_mt.cxx|\ -tutorial-v7-draw_rh1.cxx|\ -tutorial-v7-draw_rh1_large.cxx|\ -tutorial-v7-draw_rh2.cxx|\ -tutorial-v7-draw_rh2_colz.cxx|\ -tutorial-v7-draw_rh2_large.cxx|\ -tutorial-v7-draw_rh3.cxx|\ -tutorial-v7-draw_rh3_large.cxx|\ -tutorial-v7-draw_subpads.cxx|\ -tutorial-v7-histops.cxx|\ -tutorial-v7-perf.cxx|\ -tutorial-v7-perfcomp.cxx|\ -tutorial-v7-simple.cxx" - -%if %{?rhel}%{!?rhel:0} == 7 +%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py +# - tutorial-roofit-rf409_NumPyPandasToRooFit-py # requires the pandas python module which is not available in EPEL 7 -# -# - tutorial-multicore-mp001_fillHistos -# - tutorial-multicore-mp101_fillNtuples -# - tutorial-multicore-mp102_readNtuplesFillHistosAndFit -# - tutorial-multicore-mp201_parallelHistoFill -# fails intermittently on EPEL 7 with the error -# symbol '_Z6MPRecvP7TSocket' unresolved while linking -# symbol '_Z6MPSendP7TSocketj' unresolved while linking +# or EPEL 9 excluded="${excluded}|\ test-import-pandas|\ tutorial-dataframe-df026_AsNumpyArrays-py|\ -tutorial-multicore-mp001_fillHistos|\ -tutorial-multicore-mp101_fillNtuples|\ -tutorial-multicore-mp102_readNtuplesFillHistosAndFit|\ -tutorial-multicore-mp201_parallelHistoFill" +tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif %ifarch %{ix86} %{arm} +%if %{?fedora}%{!?fedora:0} <= 35 # Tests failing on 32 bit architectures (dataframe) -# A bit random - not all the tests fail every time... -# - gtest-tree-dataframe-test-dataframe-cache -# - gtest-tree-dataframe-test-dataframe-callbacks -# - gtest-tree-dataframe-test-dataframe-colnames -# - gtest-tree-dataframe-test-dataframe-concurrency -# - gtest-tree-dataframe-test-dataframe-display -# - gtest-tree-dataframe-test-dataframe-friends -# - gtest-tree-dataframe-test-dataframe-helpers -# - gtest-tree-dataframe-test-dataframe-interface -# - gtest-tree-dataframe-test-dataframe-leaves -# - gtest-tree-dataframe-test-dataframe-ranges -# - gtest-tree-dataframe-test-dataframe-regression -# - gtest-tree-dataframe-test-dataframe-simple -# - gtest-tree-dataframe-test-dataframe-snapshot -# - gtest-tree-dataframe-test-dataframe-vecops -# - gtest-tree-dataframe-test-datasource-csv -# - gtest-tree-dataframe-test-datasource-more -# - gtest-tree-dataframe-test-datasource-sqlite -# - gtest-tree-dataframe-test-datasource-trivial +# +# - gtest-tree-dataframe-test-dataframe-* +# - gtest-tree-dataframe-test-datasource-* excluded="${excluded}|\ -gtest-tree-dataframe-test-dataframe-cache|\ -gtest-tree-dataframe-test-dataframe-callbacks|\ -gtest-tree-dataframe-test-dataframe-colnames|\ -gtest-tree-dataframe-test-dataframe-concurrency|\ -gtest-tree-dataframe-test-dataframe-display|\ -gtest-tree-dataframe-test-dataframe-friends|\ -gtest-tree-dataframe-test-dataframe-helpers|\ -gtest-tree-dataframe-test-dataframe-interface|\ -gtest-tree-dataframe-test-dataframe-leaves|\ -gtest-tree-dataframe-test-dataframe-ranges|\ -gtest-tree-dataframe-test-dataframe-regression|\ -gtest-tree-dataframe-test-dataframe-simple|\ -gtest-tree-dataframe-test-dataframe-snapshot|\ -gtest-tree-dataframe-test-dataframe-vecops|\ -gtest-tree-dataframe-test-datasource-csv|\ -gtest-tree-dataframe-test-datasource-more|\ -gtest-tree-dataframe-test-datasource-sqlite|\ -gtest-tree-dataframe-test-datasource-trivial" +gtest-tree-dataframe-test-dataframe|\ +gtest-tree-dataframe-test-datasource" +%endif %endif %ifarch %{arm} @@ -2731,82 +2763,17 @@ gtest-tree-dataframe-test-datasource-trivial" # # - gtest-tree-tree-test-testBulkApi # - gtest-tree-tree-test-testBulkApiSillyStruct -# segmentation fault - bus error -# -# - gtest-tree-dataframe-test-dataframe-histomodels -# - gtest-tree-ntuple-v7-test-ntuple-rdf -# - pyunittests-dataframe-cache -# - pyunittests-dataframe-histograms +# - gtest-tree-dataframe-test-dataframe-snapshot +# - gtest-tree-dataframe-test-dataframe-vary # - pyunittests-dataframe-merge-results -# - pyunittests-dataframe-misc -# - pyunittests-pyroot-pyz-rdataframe-makenumpy -# - pyunittests-pyroot-pyz-tf-pycallables -# - test-stressiterators-interpreted -# - tutorial-dataframe-df001_introduction(-py) -# - tutorial-dataframe-df002_dataModel(-py) -# - tutorial-dataframe-df003_profiles(-py) -# - tutorial-dataframe-df005_fillAnyObject -# - tutorial-dataframe-df006_ranges(-py) -# - tutorial-dataframe-df007_snapshot(-py) -# - tutorial-dataframe-df010_trivialDataSource(-py) -# - tutorial-dataframe-df012_DefinesAndFiltersAsStrings(-py) -# - tutorial-dataframe-df014_CSVDataSource(-py) -# - tutorial-dataframe-df015_LazyDataSource -# - tutorial-dataframe-df016_vecOps(-py) -# - tutorial-dataframe-df017_vecOpsHEP(-py) -# - tutorial-dataframe-df019_Cache(-py) -# - tutorial-dataframe-df020_helpers -# - tutorial-dataframe-df021_createTGraph(-py) -# - tutorial-dataframe-df022_useKahan -# - tutorial-dataframe-df025_RNode -# - tutorial-dataframe-df031_Stats(-py) -# - tutorial-hist-sparsehist -# - tutorial-r-example -# - tutorial-r-DataFrame -# - tutorial-r-Function -# - tutorial-r-Functor -# - tutorial-r-GlobalMinimization -# - tutorial-r-Integration -# - tutorial-r-Minimization -# Not implemented relocation type! +# - pyunittests-distrdf-unit-test-headnode excluded="${excluded}|\ gtest-tree-tree-test-testBulkApi\$\$|\ gtest-tree-tree-test-testBulkApiSillyStruct|\ -gtest-tree-dataframe-test-dataframe-histomodels|\ -gtest-tree-ntuple-v7-test-ntuple-rdf|\ -pyunittests-dataframe-cache|\ -pyunittests-dataframe-histograms|\ +gtest-tree-dataframe-test-dataframe-snapshot|\ +gtest-tree-dataframe-test-dataframe-vary|\ pyunittests-dataframe-merge-results|\ -pyunittests-dataframe-misc|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -pyunittests-pyroot-pyz-tf-pycallables|\ -test-stressiterators-interpreted|\ -tutorial-dataframe-df001_introduction|\ -tutorial-dataframe-df002_dataModel|\ -tutorial-dataframe-df003_profiles|\ -tutorial-dataframe-df005_fillAnyObject|\ -tutorial-dataframe-df006_ranges|\ -tutorial-dataframe-df007_snapshot|\ -tutorial-dataframe-df010_trivialDataSource|\ -tutorial-dataframe-df012_DefinesAndFiltersAsStrings|\ -tutorial-dataframe-df014_CSVDataSource|\ -tutorial-dataframe-df015_LazyDataSource|\ -tutorial-dataframe-df016_vecOps|\ -tutorial-dataframe-df017_vecOpsHEP|\ -tutorial-dataframe-df019_Cache|\ -tutorial-dataframe-df020_helpers|\ -tutorial-dataframe-df021_createTGraph|\ -tutorial-dataframe-df022_useKahan|\ -tutorial-dataframe-df025_RNode|\ -tutorial-dataframe-df031_Stats|\ -tutorial-hist-sparsehist|\ -tutorial-r-example|\ -tutorial-r-DataFrame|\ -tutorial-r-Function|\ -tutorial-r-Functor|\ -tutorial-r-GlobalMinimization|\ -tutorial-r-Integration|\ -tutorial-r-Minimization" +pyunittests-distrdf-unit-test-headnode" %endif %ifarch %{power64} aarch64 @@ -2823,16 +2790,66 @@ excluded="${excluded}|test-stresshistofit\$\$" # - test-stresshistogram-interpreted # - test-stressmathcore-interpreted # - test-stressroostats-interpreted +# +# Always timeout (hang?) +# - pyunittests-pyroot-pyz-rdataframe-makenumpy +# - tutorial-dataframe-df032_MakeNumpyDataFrame-py excluded="${excluded}|\ test-stresshistofit-interpreted|\ test-stresshistogram-interpreted|\ test-stressmathcore-interpreted|\ -test-stressroostats-interpreted" +test-stressroostats-interpreted|\ +pyunittests-pyroot-pyz-rdataframe-makenumpy|\ +tutorial-dataframe-df032_MakeNumpyDataFrame-py" + +%if %{?fedora}%{!?fedora:0} == 34 || %{?fedora}%{!?fedora:0} == 35 || %{?rhel}%{!?rhel:0} == 9 +# tmva/tmva/test/branchlessForest.cxx:215: Failure +# Expected equality of these values: +# predictions[1] +# Which is: -1 +# -1.0 + 2.0 +# Which is: 1 +# - gtest-tmva-tmva-test-branchlessForest +# +# Error in : bins must be in increasing order +# Error in : X must be in increasing order +# - tutorial-math-kdTreeBinning +# +# Segmentation violation - malloc(): unaligned tcache chunk detected +# - tutorial-unfold-testUnfold7c +# +# TFormula double free in Python +# - tutorial-hist-fillrandom-py +# - tutorial-pyroot-fillrandom-py +# - tutorial-pyroot-fit1-py (uses output of tutorial-pyroot-fillrandom-py) +# - tutorial-pyroot-formula1-py +excluded="${excluded}|\ +gtest-tmva-tmva-test-branchlessForest|\ +tutorial-gl-gltf3|\ +tutorial-math-kdTreeBinning|\ +tutorial-unfold-testUnfold7c|\ +tutorial-hist-fillrandom-py|\ +tutorial-pyroot-fillrandom-py|\ +tutorial-pyroot-fit1-py|\ +tutorial-pyroot-formula1-py" +%endif + +%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8 +# crash - free(): corrupted unsorted chunks +# - gtest-roofit-RDataFrameHelpers-test-testActionHelpers +# - gtest-tmva-tmva-test-rtensor-utils +# - gtest-tree-dataframe-test-dataframe-* +# - gtest-tree-dataframe-test-datasource-* +# - tutorial-dataframe-df004_cutFlowReport +excluded="${excluded}|\ +gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ +gtest-tmva-tmva-test-rtensor-utils|\ +gtest-tree-dataframe-test-dataframe|\ +gtest-tree-dataframe-test-datasource|\ +tutorial-dataframe-df004_cutFlowReport" +%endif %if %{?rhel}%{!?rhel:0} == 8 -# Random segmentation faults -# - gtest-tree-dataframe-test-dataframe-snapshot -# # Fails on ppc64le since RHEL 8.5 update # Exception: Found not whitelisted libraries after importing ROOT: # - libpthread-2.28 @@ -2840,16 +2857,16 @@ test-stressroostats-interpreted" # - libc-2.28 # - librt-2.28 # - pyunittests-pyroot-import-load-libs +# +# crash - double free or corruption (out) +# - tutorial-multicore-mt201_parallelHistoFill +# +# segmentation violation +# - tutorial-multicore-mt304_fillHistos excluded="${excluded}|\ -gtest-tree-dataframe-test-dataframe-snapshot|\ -pyunittests-pyroot-import-load-libs" -%endif - -%if %{?fedora}%{!?fedora:0} >= 36 -# Fails on Fedora 36 ppc64le -# - test-stressHistFactory(-interpreted) -excluded="${excluded}|\ -test-stressHistFactory" +pyunittests-pyroot-import-load-libs|\ +tutorial-multicore-mt201_parallelHistoFill|\ +tutorial-multicore-mt304_fillHistos" %endif %endif @@ -2857,28 +2874,36 @@ test-stressHistFactory" # s390x specific failures # # - gtest-roofit-roofitcore-test-testNaNPacker +# - gtest-roofit-roofitcore-test-testRooProdPdf +# - gtest-tree-dataframe-test-datasource-ntuple # - gtest-tree-ntuple-v7-test-ntuple-basics # - gtest-tree-ntuple-v7-test-ntuple-extended +# - gtest-tree-ntuple-v7-test-ntuple-merger # - gtest-tree-ntuple-v7-test-ntuple-minifile +# - gtest-tree-ntuple-v7-test-ntuple-serialize # - pyunittests-pyroot-pyz-rtensor -# - test-stresshistogram(-interpreted) +# - pyunittests-pyroot-pyz-stl-vector # - test-stresshistofit(-interpreted) +# - test-stresshistogram(-interpreted) # - tutorial-dataframe-df006_ranges-py -# - tutorial-roofit-rf203_ranges-py +# - tutorial-math-exampleFunction-py # - tutorial-roofit-rf612_recoverFromInvalidParameters -# - tutorial-roofit-rf902_numgenconfig-py excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker|\ +gtest-roofit-roofitcore-test-testRooProdPdf|\ +gtest-tree-dataframe-test-datasource-ntuple|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ +gtest-tree-ntuple-v7-test-ntuple-merger|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ +gtest-tree-ntuple-v7-test-ntuple-serialize|\ pyunittests-pyroot-pyz-rtensor|\ -test-stresshistogram|\ +pyunittests-pyroot-pyz-stl-vector|\ test-stresshistofit|\ +test-stresshistogram|\ tutorial-dataframe-df006_ranges-py|\ -tutorial-roofit-rf203_ranges-py|\ -tutorial-roofit-rf612_recoverFromInvalidParameters|\ -tutorial-roofit-rf902_numgenconfig-py" +tutorial-math-exampleFunction-py|\ +tutorial-roofit-rf612_recoverFromInvalidParameters" %if %{?rhel}%{!?rhel:0} == 8 # Issues with file sizes on EPEL 8 s390x @@ -2915,6 +2940,22 @@ update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : %endif +%pretrans net-http -p +path = "%{_datadir}/%{name}/js" +st = posix.stat(path) +if st and st.type == "link" then + os.remove(path) +end + +%post net-http +# Replace bundled jsroot with symlinks to system version +for x in img libs scripts style files/draw.htm files/online.htm ; do + ln -fs /usr/share/javascript/jsroot/$x %{_datadir}/%{name}/js/$x +done +%{?ldconfig} + +%ldconfig_postun net-http + %if %{buildpy2} %pre -n python2-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then @@ -2926,11 +2967,7 @@ fi %pre -n python%{python3_pkgversion}-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then -%if %{?rhel}%{!?rhel:0} == 7 - for alt in `grep python%{python3_version}/.*.so /var/lib/alternatives/libPyROOT.so` ; do -%else for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do -%endif %{_sbindir}/update-alternatives --remove libPyROOT.so $alt done fi @@ -3017,7 +3054,9 @@ fi %ldconfig_scriptlets html %ldconfig_scriptlets io %ldconfig_scriptlets io-dcache +%if %{gfal2} %ldconfig_scriptlets io-gfal +%endif %ldconfig_scriptlets io-sql %ldconfig_scriptlets io-xml %ldconfig_scriptlets io-xmlparser @@ -3037,17 +3076,12 @@ fi %ldconfig_scriptlets splot %ldconfig_scriptlets unuran %ldconfig_scriptlets vecops -%if %{memstat} -%ldconfig_scriptlets memstat -%endif %ldconfig_scriptlets montecarlo-eg %ldconfig_scriptlets montecarlo-pythia8 -%ldconfig_scriptlets montecarlo-vmc %ldconfig_scriptlets net %ldconfig_scriptlets net-rpdutils %ldconfig_scriptlets net-auth %ldconfig_scriptlets net-davix -%ldconfig_scriptlets net-http %ldconfig_scriptlets net-httpsniff %ldconfig_scriptlets netx %ldconfig_scriptlets proof @@ -3058,9 +3092,12 @@ fi %ldconfig_scriptlets xproof %endif %ldconfig_scriptlets roofit +%ldconfig_scriptlets roofit-common %ldconfig_scriptlets roofit-core %ldconfig_scriptlets roofit-more %ldconfig_scriptlets roofit-batchcompute +%ldconfig_scriptlets roofit-dataframe-helpers +%ldconfig_scriptlets roofit-hs3 %ldconfig_scriptlets roostats %ldconfig_scriptlets sql-mysql %ldconfig_scriptlets sql-odbc @@ -3069,12 +3106,23 @@ fi %ldconfig_scriptlets tmva %ldconfig_scriptlets tmva-python %ldconfig_scriptlets tmva-r +%ldconfig_scriptlets tmva-sofie +%if %{tmvasofieparser} +%ldconfig_scriptlets tmva-sofie-parser +%endif %ldconfig_scriptlets tmva-gui %ldconfig_scriptlets tree %ldconfig_scriptlets tree-dataframe %ldconfig_scriptlets tree-player %ldconfig_scriptlets tree-viewer %ldconfig_scriptlets unfold +%if %{webgui} +%ldconfig_scriptlets gui-webdisplay +%ifarch %{qt5_qtwebengine_arches} +%ldconfig_scriptlets gui-qt5webdisplay +%endif +%ldconfig_scriptlets gui-webgui6 +%endif %if %{root7} %ldconfig_scriptlets graf-gpadv7 %ldconfig_scriptlets graf-primitives @@ -3083,11 +3131,6 @@ fi %ldconfig_scriptlets gui-browserv7 %ldconfig_scriptlets gui-canvaspainter %ldconfig_scriptlets gui-fitpanelv7 -%ifarch %{qt5_qtwebengine_arches} -%ldconfig_scriptlets gui-qt5webdisplay -%endif -%ldconfig_scriptlets gui-webdisplay -%ldconfig_scriptlets gui-webgui6 %ldconfig_scriptlets histv7 %ldconfig_scriptlets hist-draw %ldconfig_scriptlets tree-ntuple @@ -3119,17 +3162,12 @@ fi %files fonts %{_datadir}/%{name}/fonts -%files doc -%doc %{_pkgdocdir}/html - %files tutorial %doc %{_pkgdocdir}/tutorials %files core -f includelist-core -%{_bindir}/memprobe %{_bindir}/rmkdepend %{_bindir}/root-config -%{_mandir}/man1/memprobe.1* %{_mandir}/man1/rmkdepend.1* %{_mandir}/man1/root-config.1* %dir %{_libdir}/%{name} @@ -3228,10 +3266,6 @@ fi %files -n python2-jsmva %{python2_sitelib}/JsMVA %{python2_sitelib}/JsMVA-*.egg-info - -%files -n python2-distrdf -%{python2_sitelib}/DistRDF -%{python2_sitelib}/DistRDF-*.egg-info %endif %files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot @@ -3257,9 +3291,11 @@ fi %{python3_sitelib}/JsMVA %{python3_sitelib}/JsMVA-*.egg-info +%if %{distrdf} %files -n python%{python3_pkgversion}-distrdf %{python3_sitelib}/DistRDF %{python3_sitelib}/DistRDF-*.egg-info +%endif %files r -f includelist-bindings-r %{_libdir}/%{name}/libRInterface.* @@ -3454,10 +3490,12 @@ fi %{_datadir}/%{name}/plugins/TFile/P040_TDCacheFile.C %{_datadir}/%{name}/plugins/TSystem/P020_TDCacheSystem.C +%if %{gfal2} %files io-gfal -f includelist-io-gfal %{_libdir}/%{name}/libGFAL.* %{_libdir}/%{name}/libGFAL_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P050_TGFALFile.C +%endif %files io-sql -f includelist-io-sql %{_libdir}/%{name}/libSQLIO.* @@ -3569,12 +3607,6 @@ fi %{_libdir}/%{name}/libROOTVecOps.* %{_libdir}/%{name}/libROOTVecOps_rdict.pcm -%if %{memstat} -%files memstat -f includelist-misc-memstat -%{_libdir}/%{name}/libMemStat.* -%{_libdir}/%{name}/libMemStat_rdict.pcm -%endif - %files montecarlo-eg -f includelist-montecarlo-eg %{_libdir}/%{name}/libEG.* %{_libdir}/%{name}/libEG_rdict.pcm @@ -3585,11 +3617,6 @@ fi %{_libdir}/%{name}/libEGPythia8.* %{_libdir}/%{name}/libEGPythia8_rdict.pcm -%files montecarlo-vmc -f includelist-montecarlo-vmc -%{_libdir}/%{name}/libVMC.* -%{_libdir}/%{name}/libVMC_rdict.pcm -%{_datadir}/%{name}/vmc - %files net -f includelist-net-net %{_libdir}/%{name}/libNet.* %{_libdir}/%{name}/libNet_rdict.pcm @@ -3622,7 +3649,17 @@ fi %files net-http -f includelist-net-http %{_libdir}/%{name}/libRHTTP.* %{_libdir}/%{name}/libRHTTP_rdict.pcm -%{_datadir}/%{name}/js +%dir %{_datadir}/%{name}/js +%dir %{_datadir}/%{name}/js/files +%{_datadir}/%{name}/js/files/canv_batch.htm +%{_datadir}/%{name}/js/files/web.config +%{_datadir}/%{name}/js/files/wslist.htm +%ghost %{_datadir}/%{name}/js/img +%ghost %{_datadir}/%{name}/js/libs +%ghost %{_datadir}/%{name}/js/scripts +%ghost %{_datadir}/%{name}/js/style +%ghost %{_datadir}/%{name}/js/files/draw.htm +%ghost %{_datadir}/%{name}/js/files/online.htm %doc net/http/README.txt net/http/civetweb/*.md %files net-httpsniff -f includelist-net-httpsniff @@ -3639,6 +3676,7 @@ fi %{_datadir}/%{name}/plugins/TFile/P100_TXNetFile.C %{_datadir}/%{name}/plugins/TFileStager/P010_TXNetFileStager.C %{_datadir}/%{name}/plugins/TSystem/P040_TXNetSystem.C +%{_datadir}/%{name}/plugins/ROOT@@Internal@@RRawFile/P020_RRawFileNetXNG.C %files proof -f includelist-proof-proof %{_bindir}/proofserv @@ -3699,6 +3737,9 @@ fi %{_libdir}/%{name}/libRooFit.* %{_libdir}/%{name}/libRooFit_rdict.pcm +%files roofit-common +%{_libdir}/%{name}/libRooFitCommon.* + %files roofit-core -f includelist-roofit-roofitcore %{_libdir}/%{name}/libRooFitCore.* %{_libdir}/%{name}/libRooFitCore_rdict.pcm @@ -3716,6 +3757,17 @@ fi %{_libdir}/%{name}/libRooBatchCompute_* %doc roofit/batchcompute/README.md +%files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers +%{_libdir}/%{name}/libRooFitRDataFrameHelpers.* +%{_libdir}/%{name}/libRooFitRDataFrameHelpers_rdict.pcm + +%files roofit-hs3 -f includelist-roofit-hs3 +%{_libdir}/%{name}/libRooFitHS3.* +%{_libdir}/%{name}/libRooFitHS3_rdict.pcm +%{_datadir}/%{name}/RooFitHS3_wsexportkeys.json +%{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json +%doc roofit/hs3/README.md + %files roostats -f includelist-roofit-roostats %{_libdir}/%{name}/libRooStats.* %{_libdir}/%{name}/libRooStats_rdict.pcm @@ -3761,6 +3813,17 @@ fi %{_libdir}/%{name}/libRMVA.* %{_libdir}/%{name}/libRMVA_rdict.pcm +%files tmva-sofie -f includelist-tmva-sofie +%{_libdir}/%{name}/libROOTTMVASofie.* +%{_libdir}/%{name}/libROOTTMVASofie_rdict.pcm +%doc tmva/sofie/README.md + +%if %{tmvasofieparser} +%files tmva-sofie-parser -f includelist-tmva-sofie_parsers +%{_libdir}/%{name}/libROOTTMVASofieParser.* +%{_libdir}/%{name}/libROOTTMVASofieParser_rdict.pcm +%endif + %files tmva-gui -f includelist-tmva-tmvagui %{_libdir}/%{name}/libTMVAGui.* %{_libdir}/%{name}/libTMVAGui_rdict.pcm @@ -3807,6 +3870,23 @@ fi %{_datadir}/%{name}/notebook %doc %{_pkgdocdir}/JupyROOT-on-EPEL +%if %{webgui} +%files gui-webdisplay -f includelist-gui-webdisplay +%{_libdir}/%{name}/libROOTWebDisplay.* +%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm +%{_datadir}/%{name}/ui5 + +%ifarch %{qt5_qtwebengine_arches} +%files gui-qt5webdisplay +%{_libdir}/%{name}/libROOTQt5WebDisplay.* +%endif + +%files gui-webgui6 -f includelist-gui-webgui6 +%{_libdir}/%{name}/libWebGui6.* +%{_libdir}/%{name}/libWebGui6_rdict.pcm +%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C +%endif + %if %{root7} %files graf-gpadv7 -f includelist-graf2d-gpadv7 %{_libdir}/%{name}/libROOTGpadv7.* @@ -3828,6 +3908,9 @@ fi %{_libdir}/%{name}/libROOTHistDrawProvider.* %{_libdir}/%{name}/libROOTLeafDraw6Provider.* %{_libdir}/%{name}/libROOTLeafDraw7Provider.* +%{_libdir}/%{name}/libROOTNTupleBrowseProvider.* +%{_libdir}/%{name}/libROOTNTupleDraw6Provider.* +%{_libdir}/%{name}/libROOTNTupleDraw7Provider.* %{_libdir}/%{name}/libROOTObjectDraw6Provider.* %{_libdir}/%{name}/libROOTObjectDraw7Provider.* @@ -3847,21 +3930,6 @@ fi %{_libdir}/%{name}/libROOTFitPanelv7.* %{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm -%ifarch %{qt5_qtwebengine_arches} -%files gui-qt5webdisplay -%{_libdir}/%{name}/libROOTQt5WebDisplay.* -%endif - -%files gui-webdisplay -f includelist-gui-webdisplay -%{_libdir}/%{name}/libROOTWebDisplay.* -%{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm -%{_datadir}/%{name}/ui5 - -%files gui-webgui6 -f includelist-gui-webgui6 -%{_libdir}/%{name}/libWebGui6.* -%{_libdir}/%{name}/libWebGui6_rdict.pcm -%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C - %files histv7 -f includelist-hist-histv7 %{_libdir}/%{name}/libROOTHist.* %{_libdir}/%{name}/libROOTHist_rdict.pcm @@ -3876,13 +3944,23 @@ fi %endif %changelog +* Sat Mar 26 2022 Mattias Ellert - 6.26.00-1 +- Update to 6.24.04 +- New subpackages: root-roofit-common, root-roofit-dataframe-helpers, + root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser +- Removed subpackages: root-memstat and root-montecarlo-vmc +- Drop the doxygen generated root-doc package (doxygen runs out of memory) +- Dropped patches: 17 +- New patches: 22 +- Updated patches: 5 + * Thu Feb 10 2022 Orion Poplawski - 6.24.06-6 - Rebuild for glew 2.2 * Fri Jan 28 2022 Mattias Ellert - 6.24.06-5 - Exclude failing test on Fedora 36 ppc64le: test-stressHistFactory(-interpreted) -# Disable package note flags +- Disable package note flags * Fri Jan 21 2022 Fedora Release Engineering - 6.24.06-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index 31dae3c..31ddb3c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.24.06.tar.xz) = fe316283503dae60acb26d2ae3e838e6f9c01e1f89ff9973aa2b666a30c00f99f5e0df02b54e3744cd14a45a49ca2fc7d1f19fbac6b69071b9c9e0c98f2e0645 +SHA512 (root-6.26.00.tar.xz) = 0a98e973eeda98550200635d5d566fe4191aba953d3f993af750761a23e2b86caa5eb9674837bf1b070b9056b3a8ce7ee2d43295c56d22d120ca78edb97ea1c8 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 4a99ec915cc6fa5180a59dfd68402fd60d25f03a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 18 Apr 2022 04:04:24 +0200 Subject: [PATCH 023/127] Update to 6.26.02 Drop patch root-roofit-overflow.patch (previously backported) --- root-old-gtest-compat.patch | 27 +++++++++++++++++++++++++++ root.spec | 16 +++++++++------- sources | 2 +- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch index 078a5f9..e9f4140 100644 --- a/root-old-gtest-compat.patch +++ b/root-old-gtest-compat.patch @@ -414,3 +414,30 @@ index 7b6b7647aa..77f125ca60 100644 -- 2.35.1 +From 33e5da8c1f678382ab2fd65d000d388bb0dbf3ab Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 17 Apr 2022 22:17:56 +0200 +Subject: [PATCH] Backward compatibility with older googletest versions in EPEL + +--- + math/vecops/test/vecops_rvec.cxx | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx +index 7b513a858b..bea39636ce 100644 +--- a/math/vecops/test/vecops_rvec.cxx ++++ b/math/vecops/test/vecops_rvec.cxx +@@ -13,6 +13,10 @@ + #include + #include + ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + using namespace ROOT; + using namespace ROOT::VecOps; + using namespace ROOT::Detail::VecOps; // for `IsSmall` and `IsAdopting` +-- +2.35.1 + diff --git a/root.spec b/root.spec index 4fbd388..54db8be 100644 --- a/root.spec +++ b/root.spec @@ -68,7 +68,7 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.26.00 +Version: 6.26.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -180,10 +180,9 @@ Patch30: %{name}-tmva-threads.patch # https://github.com/root-project/root/pull/10313 Patch31: %{name}-core-base-test.patch # Backports -Patch32: %{name}-roofit-overflow.patch -Patch33: %{name}-make-dyld-based-library-search-behavior-default.patch -Patch34: %{name}-fix-TMVA-tutorial-using-internally-python.patch -Patch35: %{name}-threadsh1-avoid-heap-use-after-free.patch +Patch32: %{name}-make-dyld-based-library-search-behavior-default.patch +Patch33: %{name}-fix-TMVA-tutorial-using-internally-python.patch +Patch34: %{name}-threadsh1-avoid-heap-use-after-free.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -2042,7 +2041,6 @@ This package contains an ntuple extension for ROOT 7. %patch32 -p1 %patch33 -p1 %patch34 -p1 -%patch35 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3944,8 +3942,12 @@ fi %endif %changelog +* Thu Apr 14 2022 Mattias Ellert - 6.26.02-1 +- Update to 6.26.02 +- Drop patch root-roofit-overflow.patch (previously backported) + * Sat Mar 26 2022 Mattias Ellert - 6.26.00-1 -- Update to 6.24.04 +- Update to 6.26.00 - New subpackages: root-roofit-common, root-roofit-dataframe-helpers, root-roofit-hs3, root-tmva-sofie and root-tmva-sofie-parser - Removed subpackages: root-memstat and root-montecarlo-vmc diff --git a/sources b/sources index 31ddb3c..053a299 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.00.tar.xz) = 0a98e973eeda98550200635d5d566fe4191aba953d3f993af750761a23e2b86caa5eb9674837bf1b070b9056b3a8ce7ee2d43295c56d22d120ca78edb97ea1c8 +SHA512 (root-6.26.02.tar.xz) = 016b1176564ba31f9ac22c9b62cdd11ba9dda2e6d656c587d0b77e57c8a34d52343ba5da8ecf185c0a73ded80109a5cd28438611441ba5ee6ab14ba986ed3b94 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 51dd64e00251deee776c69216335a7d58672d71a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 29 Apr 2022 14:26:18 +0200 Subject: [PATCH 024/127] Rebuild for gcc 11.3 (Fedora 35) Use upstream's version of the dataframe-snapshot on 32 bit patch --- root-longlong.patch | 64 +++++++++++++++++++-------------------------- root.spec | 6 ++++- 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/root-longlong.patch b/root-longlong.patch index 856e015..3c43542 100644 --- a/root-longlong.patch +++ b/root-longlong.patch @@ -1,52 +1,42 @@ -From 7fe5ef049baf614626d985b05cb0b335f9764a3c Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 16:15:00 +0100 -Subject: [PATCH] Fix test when long is 32 bits +From 2aa02353663674a338c92fa4e72a0c0e529c410e Mon Sep 17 00:00:00 2001 +From: Enrico Guiraud +Date: Fri, 8 Apr 2022 17:52:18 +0200 +Subject: [PATCH] [DF] Fix long int + Snapshot test on 32 bit platforms -This test tests support for 64 bit values. But it uses a long type, -which fails on platforme where a long is 32 bits. - -This commit changes the test to use a long long type instead. +Co-authored-by: Mattias Ellert --- - tree/dataframe/test/dataframe_snapshot.cxx | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + tree/dataframe/test/dataframe_snapshot.cxx | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx -index 05354e83d5..a30440558e 100644 +index f41848e96a..ddbacaba0f 100644 --- a/tree/dataframe/test/dataframe_snapshot.cxx +++ b/tree/dataframe/test/dataframe_snapshot.cxx -@@ -470,11 +470,11 @@ void ReadWriteCarray(const char *outFileNameBase) - auto size = 0; - int v[maxArraySize]; - bool vb[maxArraySize]; -- long int vl[maxArraySize]; -+ long long int vl[maxArraySize]; - t.Branch("size", &size, "size/I"); - t.Branch("v", v, "v[size]/I"); +@@ -495,11 +495,14 @@ void ReadWriteCarray(const char *outFileNameBase) t.Branch("vb", vb, "vb[size]/O"); -- t.Branch("vl", vl, "vl[size]/G"); -+ t.Branch("vl", vl, "vl[size]/L"); + t.Branch("vl", vl, "vl[size]/G"); ++ // use 2**33 as a larger-than-int value on 64 bits, otherwise just something larger than short (2**30) ++ static constexpr long int longintTestValue = sizeof(long int) == 8 ? 8589934592 : 1073741824; ++ // Size 1 size = 1; -@@ -518,7 +518,7 @@ void ReadWriteCarray(const char *outFileNameBase) - TTreeReader r(treename, &f2); - TTreeReaderArray rv(r, "v"); - TTreeReaderArray rvb(r, "vb"); -- TTreeReaderArray rvl(r, "vl"); -+ TTreeReaderArray rvl(r, "vl"); + v[0] = 12; + vb[0] = true; +- vl[0] = 8589934592; // 2**33 ++ vl[0] = longintTestValue; + t.Fill(); - // Size 1 + // Size 0 (see ROOT-9860) +@@ -546,7 +549,7 @@ void ReadWriteCarray(const char *outFileNameBase) + EXPECT_EQ(rvb.GetSize(), 1u); + EXPECT_TRUE(rvb[0]); + EXPECT_EQ(rvl.GetSize(), 1u); +- EXPECT_EQ(rvl[0], 8589934592); ++ EXPECT_EQ(rvl[0], longintTestValue); + + // Size 0 EXPECT_TRUE(r.Next()); -@@ -571,7 +571,7 @@ void ReadWriteCarray(const char *outFileNameBase) - - const auto outfname2 = outFileNameBaseStr + "_out2.root"; - RDataFrame(treename, fname) -- .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); -+ .Snapshot, RVec, RVec>(treename, outfname2, {"size", "v", "vb", "vl"}); - outputChecker(outfname2.c_str()); - - gSystem->Unlink(fname.c_str()); -- 2.35.1 diff --git a/root.spec b/root.spec index 54db8be..5e7704d 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3942,6 +3942,10 @@ fi %endif %changelog +* Fri Apr 29 2022 Mattias Ellert - 6.26.02-2 +- Rebuild for gcc 11.3 (Fedora 35) +- Use upstream's version of the dataframe-snapshot on 32 bit patch + * Thu Apr 14 2022 Mattias Ellert - 6.26.02-1 - Update to 6.26.02 - Drop patch root-roofit-overflow.patch (previously backported) From 44203f1d1dd61c551b95fc241932681076e36c98 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 20 May 2022 14:43:55 +0200 Subject: [PATCH 025/127] Rebuild for gcc 12.1 (Fedora 36) Update the root-tmva-threads patch --- root-tmva-threads.patch | 33 +++++++++++++++++++++++++-------- root.spec | 6 +++++- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch index 459062d..7506abc 100644 --- a/root-tmva-threads.patch +++ b/root-tmva-threads.patch @@ -1,4 +1,4 @@ -From f525fe375840cda2bf5b51e018eab8ad74dcd736 Mon Sep 17 00:00:00 2001 +From 589ac491519446191b7d480a476ab831dc09b5f9 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 30 Mar 2022 15:51:07 +0200 Subject: [PATCH] Limit the number of threads in TMVA CNN/DNN test to save @@ -27,15 +27,15 @@ OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for t *** Break *** segmentation violation *** Break *** segmentation violation --- - tutorials/tmva/TMVA_CNN_Classification.C | 2 +- - tutorials/tmva/TMVA_RNN_Classification.C | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + tutorials/tmva/TMVA_CNN_Classification.C | 6 ++++-- + tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C -index 3e590c5958..4abfc6a4d1 100644 +index 3e590c5958..b748fcee6c 100644 --- a/tutorials/tmva/TMVA_CNN_Classification.C +++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -125,7 +125,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) +@@ -125,14 +125,16 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) bool writeOutputFile = true; @@ -44,11 +44,21 @@ index 3e590c5958..4abfc6a4d1 100644 TMVA::Tools::Instance(); + // do enable MT running + if (num_threads >= 0) { + ROOT::EnableImplicitMT(num_threads); +- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); ++ if (ROOT::GetThreadPoolSize() > 0) ++ gSystem->Setenv("OMP_NUM_THREADS", ++ TString::Format("%u", ROOT::GetThreadPoolSize())); + } + else + gSystem->Setenv("OMP_NUM_THREADS", "1"); diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C -index 5be80824f9..791b9aecf5 100644 +index 5be80824f9..f902025875 100644 --- a/tutorials/tmva/TMVA_RNN_Classification.C +++ b/tutorials/tmva/TMVA_RNN_Classification.C -@@ -190,7 +190,7 @@ void TMVA_RNN_Classification(int use_type = 1) +@@ -190,11 +190,13 @@ void TMVA_RNN_Classification(int use_type = 1) useKeras = false; #endif @@ -57,6 +67,13 @@ index 5be80824f9..791b9aecf5 100644 // do enable MT running if (num_threads >= 0) { ROOT::EnableImplicitMT(num_threads); +- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); ++ if (ROOT::GetThreadPoolSize() > 0) ++ gSystem->Setenv("OMP_NUM_THREADS", ++ TString::Format("%u", ROOT::GetThreadPoolSize())); + } + else + gSystem->Setenv("OMP_NUM_THREADS", "1"); -- 2.35.1 diff --git a/root.spec b/root.spec index 5e7704d..ce65428 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3942,6 +3942,10 @@ fi %endif %changelog +* Fri May 20 2022 Mattias Ellert - 6.26.02-3 +- Rebuild for gcc 12.1 (Fedora 36) +- Update the root-tmva-threads patch + * Fri Apr 29 2022 Mattias Ellert - 6.26.02-2 - Rebuild for gcc 11.3 (Fedora 35) - Use upstream's version of the dataframe-snapshot on 32 bit patch From a9b86f482f2392f4bfd413d08f24e2df52aeeb16 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 14 Jun 2022 16:02:47 +0200 Subject: [PATCH 026/127] Update to 6.26.04 Drop patch root-missing-include.patch (accepted upstream) --- root-missing-include.patch | 32 -------------------------------- root.spec | 12 ++++++------ sources | 2 +- 3 files changed, 7 insertions(+), 39 deletions(-) delete mode 100644 root-missing-include.patch diff --git a/root-missing-include.patch b/root-missing-include.patch deleted file mode 100644 index 8c6bc17..0000000 --- a/root-missing-include.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 235e446b0ac14170e49c15d5725fbe6dd315351f Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 15 Mar 2022 09:08:39 +0100 -Subject: [PATCH] Add #include for std::memcpy - -In file included from /builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/RModel.hxx:14, - from /builddir/build/BUILD/root-6.26.00/tmva/sofie/src/RModel.cxx:3: -/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx: In member function 'void TMVA::Experimental::SOFIE::InitializedTensor::CastPersistentToShared()': -/builddir/build/BUILD/root-6.26.00/tmva/sofie/inc/TMVA/SOFIE_common.hxx:75:12: error: 'memcpy' is not a member of 'std'; did you mean 'wmemcpy'? - 75 | std::memcpy(tData.get(), fPersistentData,fSize * sizeof(float)); - | ^~~~~~ - | wmemcpy -gmake[2]: *** [tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/build.make:79: tmva/sofie/CMakeFiles/ROOTTMVASofie.dir/src/RModel.cxx.o] Error 1 ---- - tmva/sofie/inc/TMVA/SOFIE_common.hxx | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tmva/sofie/inc/TMVA/SOFIE_common.hxx b/tmva/sofie/inc/TMVA/SOFIE_common.hxx -index a663855004..7876727eef 100644 ---- a/tmva/sofie/inc/TMVA/SOFIE_common.hxx -+++ b/tmva/sofie/inc/TMVA/SOFIE_common.hxx -@@ -6,6 +6,7 @@ - - #include - #include -+#include - #include - #include - #include --- -2.35.1 - diff --git a/root.spec b/root.spec index ce65428..2130700 100644 --- a/root.spec +++ b/root.spec @@ -68,9 +68,9 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.26.02 +Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -130,9 +130,6 @@ Patch12: %{name}-fix-compilation-with-gcc-12.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch -# Add #include for std::memcpy -# https://github.com/root-project/root/pull/10116 -Patch14: %{name}-missing-include.patch # Fixes for tmva-sofie test compilation # https://github.com/root-project/root/pull/10117 Patch15: %{name}-blas-linking-and-ignore-prefix.patch @@ -2020,7 +2017,6 @@ This package contains an ntuple extension for ROOT 7. %patch11 -p1 %patch12 -p1 %patch13 -p1 -%patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 @@ -3942,6 +3938,10 @@ fi %endif %changelog +* Tue Jun 14 2022 Mattias Ellert - 6.26.04-1 +- Update to 6.26.04 +- Drop patch root-missing-include.patch (accepted upstream) + * Fri May 20 2022 Mattias Ellert - 6.26.02-3 - Rebuild for gcc 12.1 (Fedora 36) - Update the root-tmva-threads patch diff --git a/sources b/sources index 053a299..0ac5ec5 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.02.tar.xz) = 016b1176564ba31f9ac22c9b62cdd11ba9dda2e6d656c587d0b77e57c8a34d52343ba5da8ecf185c0a73ded80109a5cd28438611441ba5ee6ab14ba986ed3b94 +SHA512 (root-6.26.04.tar.xz) = 0ca0efa082cedce8017293d06ec92c76948f70b6b565efbc6cf4cc78da54017b5022d249dd69abd3588fb874942437318f9a136ed4b144adc820ff41fc1154ee SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 9505e4b28aa7d2da3dbeda88ccb75d33ae77503a Mon Sep 17 00:00:00 2001 From: Python Maint Date: Wed, 15 Jun 2022 14:00:40 +0200 Subject: [PATCH 027/127] Rebuilt for Python 3.11 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 2130700..ff143a3 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3938,6 +3938,9 @@ fi %endif %changelog +* Wed Jun 15 2022 Python Maint - 6.26.04-2 +- Rebuilt for Python 3.11 + * Tue Jun 14 2022 Mattias Ellert - 6.26.04-1 - Update to 6.26.04 - Drop patch root-missing-include.patch (accepted upstream) From dacf8d779ae7ee3db6d1ea09327963f857946c94 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 3 Jul 2022 10:21:52 +0200 Subject: [PATCH 028/127] Backport python 3.11 fixes from upstream Backport additional python 3.11 fixes from CPyCppyy upstream Exclude some failing tests on Fedora 37+ (segfaults during Python garbage collection with Python 3.11) Adjust some test timeouts --- ...ast-error-when-calling-PyTuple_SET_I.patch | 29 +++ ...ust-not-be-included-directly-in-3.11.patch | 34 +++ ....11-support-backported-from-CPyCppyy.patch | 220 ++++++++++++++++++ root-test-timeout.patch | 48 ++++ root.spec | 44 +++- 5 files changed, 374 insertions(+), 1 deletion(-) create mode 100644 root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch create mode 100644 root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch create mode 100644 root-Python-3.11-support-backported-from-CPyCppyy.patch create mode 100644 root-test-timeout.patch diff --git a/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch b/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch new file mode 100644 index 0000000..ca908b8 --- /dev/null +++ b/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch @@ -0,0 +1,29 @@ +From a12f3b736a9c69e0d69e7f483e50e7cdf59d9fd2 Mon Sep 17 00:00:00 2001 +From: Enric Tejedor Saavedra +Date: Fri, 10 Jun 2022 16:42:49 +0200 +Subject: [PATCH] [PyROOT] Prevent cast error when calling PyTuple_SET_ITEM in + 3.11 + +PyTuple_SET_ITEM ends up calling _PyObject_CAST(nullptr) which +causes "error: invalid cast from type 'std::nullptr_t' to type +'const PyObject*' {aka 'const _object*'} +--- + bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx +index 685ad3dc60..2189348594 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx +@@ -580,7 +580,7 @@ PyObject* CPyCppyy::CPPMethod::ProcessKeywords(PyObject* self, PyObject* args, P + // set all values to zero to be able to check them later (this also guarantees normal + // cleanup by the tuple deallocation) + for (Py_ssize_t i = 0; i < nArgs+nKeys; ++i) +- PyTuple_SET_ITEM(newArgs, i, nullptr); ++ PyTuple_SET_ITEM(newArgs, i, static_cast(nullptr)); + + // next, insert the keyword values + PyObject *key, *value; +-- +2.36.1 + diff --git a/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch b/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch new file mode 100644 index 0000000..a845fa4 --- /dev/null +++ b/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch @@ -0,0 +1,34 @@ +From 484deb056dacf768aba4954073b41105c431bffc Mon Sep 17 00:00:00 2001 +From: Enric Tejedor Saavedra +Date: Thu, 9 Jun 2022 12:24:07 +0200 +Subject: [PATCH] [PyROOT] code.h must not be included directly in 3.11 + +It has been moved to Include/cpython, and it is included by Python.h. + +See: +https://docs.python.org/3.11/whatsnew/3.11.html +--- + bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +index 59997e390d..28bbd635c2 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +@@ -1,10 +1,10 @@ + // Bindings + #include "CPyCppyy.h" + #include "structmember.h" // from Python +-#if PY_VERSION_HEX >= 0x02050000 +-#include "code.h" // from Python +-#else ++#if PY_VERSION_HEX < 0x02050000 + #include "compile.h" // from Python ++#elif PY_VERSION_HEX < 0x030b0000 ++#include "code.h" // from Python + #endif + #ifndef CO_NOFREE + // python2.2 does not have CO_NOFREE defined +-- +2.36.1 + diff --git a/root-Python-3.11-support-backported-from-CPyCppyy.patch b/root-Python-3.11-support-backported-from-CPyCppyy.patch new file mode 100644 index 0000000..734e22e --- /dev/null +++ b/root-Python-3.11-support-backported-from-CPyCppyy.patch @@ -0,0 +1,220 @@ +From 07693d05ad785d495a9c1d5af27399481b43c3f5 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 1 Jul 2022 06:50:31 +0200 +Subject: [PATCH] Python 3.11 support - backported from CPyCppyy + +--- + bindings/pyroot/cppyy/CPyCppyy/src/API.cxx | 11 ++++++++++- + .../pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx | 1 - + .../pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx | 8 +++++--- + bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h | 5 ++++- + .../cppyy/CPyCppyy/src/CPyCppyyModule.cxx | 19 +++++++++++++++++++ + .../cppyy/CPyCppyy/src/MemoryRegulator.cxx | 2 +- + .../pyroot/cppyy/CPyCppyy/src/Utility.cxx | 2 ++ + bindings/pyroot/cppyy/CPyCppyy/src/Utility.h | 2 ++ + 8 files changed, 43 insertions(+), 7 deletions(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx +index 0cc4c8247b..4c17f54bb0 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/API.cxx +@@ -49,7 +49,14 @@ static bool Initialize() + #if PY_VERSION_HEX < 0x03020000 + PyEval_InitThreads(); + #endif ++#if PY_VERSION_HEX < 0x03080000 + Py_Initialize(); ++#else ++ PyConfig config; ++ PyConfig_InitPythonConfig(&config); ++ PyConfig_SetString(&config, &config.program_name, L"cppyy"); ++ Py_InitializeFromConfig(&config); ++#endif + #if PY_VERSION_HEX >= 0x03020000 + #if PY_VERSION_HEX < 0x03090000 + PyEval_InitThreads(); +@@ -66,10 +73,12 @@ static bool Initialize() + // set the command line arguments on python's sys.argv + #if PY_VERSION_HEX < 0x03000000 + char* argv[] = {const_cast("cppyy")}; +-#else ++#elif PY_VERSION_HEX < 0x03080000 + wchar_t* argv[] = {const_cast(L"cppyy")}; + #endif ++#if PY_VERSION_HEX < 0x03080000 + PySys_SetArgv(sizeof(argv)/sizeof(argv[0]), argv); ++#endif + + // force loading of the cppyy module + PyRun_SimpleString(const_cast("import cppyy")); +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx +index 73fb8099b5..f2eea396af 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPInstance.cxx +@@ -764,7 +764,6 @@ PyTypeObject CPPInstance_Type = { + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE | +- Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_CHECKTYPES, // tp_flags + (char*)"cppyy object proxy (internal)", // tp_doc + 0, // tp_traverse +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +index 28bbd635c2..7eb2de8b01 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx +@@ -1,11 +1,13 @@ + // Bindings + #include "CPyCppyy.h" + #include "structmember.h" // from Python +-#if PY_VERSION_HEX < 0x02050000 +-#include "compile.h" // from Python +-#elif PY_VERSION_HEX < 0x030b0000 ++#if PY_VERSION_HEX >= 0x02050000 ++#if PY_VERSION_HEX < 0x030b0000 + #include "code.h" // from Python + #endif ++#else ++#include "compile.h" // from Python ++#endif + #ifndef CO_NOFREE + // python2.2 does not have CO_NOFREE defined + #define CO_NOFREE 0x0040 +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h +index 11221cd7ef..35af3c8a56 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyy.h +@@ -68,7 +68,10 @@ typedef dim_t* dims_t; + #if PY_VERSION_HEX < 0x03030000 + typedef PyDictEntry* (*dict_lookup_func)(PyDictObject*, PyObject*, long); + #else +-#if PY_VERSION_HEX >= 0x03060000 ++#if PY_VERSION_HEX >= 0x030b0000 ++ typedef Py_ssize_t (*dict_lookup_func)( ++ PyDictObject*, PyObject*, Py_hash_t, PyObject**); ++#elif PY_VERSION_HEX >= 0x03060000 + typedef Py_ssize_t (*dict_lookup_func)( + PyDictObject*, PyObject*, Py_hash_t, PyObject***, Py_ssize_t*); + #else +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx +index 411a57a862..7a32ab365f 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPyCppyyModule.cxx +@@ -26,6 +26,11 @@ + #include + + ++// Note: as of py3.11, dictionary objects no longer carry a function pointer for ++// the lookup, so it can no longer be shimmed and "from cppyy.interactive import *" ++// thus no longer works. ++#if PY_VERSION_HEX < 0x030b0000 ++ + //- from Python's dictobject.c ------------------------------------------------- + #if PY_VERSION_HEX >= 0x03030000 + typedef struct PyDictKeyEntry { +@@ -65,6 +70,8 @@ + + #endif + ++#endif // PY_VERSION_HEX < 0x030b0000 ++ + //- data ----------------------------------------------------------------------- + static PyObject* nullptr_repr(PyObject*) + { +@@ -177,7 +184,9 @@ namespace { + + using namespace CPyCppyy; + ++ + //---------------------------------------------------------------------------- ++#if PY_VERSION_HEX < 0x030b0000 + namespace { + + class GblGetter { +@@ -330,9 +339,12 @@ PyDictEntry* CPyCppyyLookDictString(PyDictObject* mp, PyObject* key, long hash) + return ep; + } + ++#endif // PY_VERSION_HEX < 0x030b0000 ++ + //---------------------------------------------------------------------------- + static PyObject* SetCppLazyLookup(PyObject*, PyObject* args) + { ++#if PY_VERSION_HEX < 0x030b0000 + // Modify the given dictionary to install the lookup function that also + // tries the global C++ namespace before failing. Called on a module's dictionary, + // this allows for lazy lookups. This works fine for p3.2 and earlier, but should +@@ -343,6 +355,11 @@ static PyObject* SetCppLazyLookup(PyObject*, PyObject* args) + return nullptr; + + CPYCPPYY_GET_DICT_LOOKUP(dict) = CPyCppyyLookDictString; ++#else ++// As of py3.11, there is no longer a lookup function pointer in the dict object ++// to replace. Since this feature is not widely advertised, it's simply droped ++ PyErr_Warn(PyExc_RuntimeWarning, (char*)"lazy lookup is no longer supported"); ++#endif + + Py_RETURN_NONE; + } +@@ -813,6 +830,7 @@ LIBCPPYY_INIT_FUNCTION(extern "C" void initlibcppyy, PY_MAJOR_VERSION, _, PY_MIN + PyEval_InitThreads(); + #endif + ++#if PY_VERSION_HEX < 0x030b0000 + // prepare for lazyness (the insert is needed to capture the most generic lookup + // function, just in case ...) + PyObject* dict = PyDict_New(); +@@ -825,6 +843,7 @@ LIBCPPYY_INIT_FUNCTION(extern "C" void initlibcppyy, PY_MAJOR_VERSION, _, PY_MIN + gDictLookupOrg = (dict_lookup_func)((PyDictObject*)dict)->ma_lookup; + #endif + Py_DECREF(dict); ++#endif // PY_VERSION_HEX < 0x030b0000 + + // setup this module + #if PY_VERSION_HEX >= 0x03000000 +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx +index f9e92f9c8c..5da48364ac 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/MemoryRegulator.cxx +@@ -45,7 +45,7 @@ struct InitCPyCppyy_NoneType_t { + ((PyVarObject&)CPyCppyy_NoneType).ob_size = 0; + + CPyCppyy_NoneType.tp_name = const_cast("CPyCppyy_NoneType"); +- CPyCppyy_NoneType.tp_flags = Py_TPFLAGS_HAVE_RICHCOMPARE | Py_TPFLAGS_HAVE_GC; ++ CPyCppyy_NoneType.tp_flags = Py_TPFLAGS_HAVE_RICHCOMPARE; + + CPyCppyy_NoneType.tp_traverse = (traverseproc)0; + CPyCppyy_NoneType.tp_clear = (inquiry)0; +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx +index 14ea1b83e8..1cf8f89bd2 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx +@@ -24,8 +24,10 @@ + + + //- data _____________________________________________________________________ ++#if PY_VERSION_HEX < 0x030b0000 + dict_lookup_func CPyCppyy::gDictLookupOrg = 0; + bool CPyCppyy::gDictLookupActive = false; ++#endif + + typedef std::map TC2POperatorMapping_t; + static TC2POperatorMapping_t gC2POperatorMapping; +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h +index 6bc9314b99..2db76b31b0 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.h +@@ -10,8 +10,10 @@ namespace CPyCppyy { + + class PyCallable; + ++#if PY_VERSION_HEX < 0x030b0000 + extern dict_lookup_func gDictLookupOrg; + extern bool gDictLookupActive; ++#endif + + // additional converter functions + unsigned long PyLongOrInt_AsULong(PyObject* pyobject); +-- +2.36.1 + diff --git a/root-test-timeout.patch b/root-test-timeout.patch new file mode 100644 index 0000000..acbedcc --- /dev/null +++ b/root-test-timeout.patch @@ -0,0 +1,48 @@ +From bfa7b7e59c3bcee4d6a5501c800b49334af326e5 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 3 Jul 2022 08:18:57 +0200 +Subject: [PATCH] Increase test timeout + +--- + tmva/tmva/test/DNN/CMakeLists.txt | 2 +- + tutorials/CMakeLists.txt | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tmva/tmva/test/DNN/CMakeLists.txt b/tmva/tmva/test/DNN/CMakeLists.txt +index a9233682f6..653540e9e3 100644 +--- a/tmva/tmva/test/DNN/CMakeLists.txt ++++ b/tmva/tmva/test/DNN/CMakeLists.txt +@@ -144,7 +144,7 @@ ROOT_ADD_TEST(TMVA-DNN-MethodDL-SGD-Optimization-Cpu COMMAND testMethodDLSGDOpti + + # DNN - MethodDL Adam Optimization CPU + ROOT_EXECUTABLE(testMethodDLAdamOptimizationCpu TestMethodDLAdamOptimizationCpu.cxx LIBRARIES ${Libraries}) +-ROOT_ADD_TEST(TMVA-DNN-MethodDL-Adam-Optimization-Cpu COMMAND testMethodDLAdamOptimizationCpu) ++ROOT_ADD_TEST(TMVA-DNN-MethodDL-Adam-Optimization-Cpu COMMAND testMethodDLAdamOptimizationCpu TIMEOUT 1800) + + # DNN - MethodDL Adagrad Optimization CPU + ROOT_EXECUTABLE(testMethodDLAdagradOptimizationCpu TestMethodDLAdagradOptimizationCpu.cxx LIBRARIES ${Libraries}) +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index 520d682d2d..a846e7552f 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -532,7 +532,7 @@ foreach(t ${tutorials}) + + # These tests on ARM64 need much more than 20 minutes - increase the timeout + if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) +- set(thisTestTimeout 2400) # 40m ++ set(thisTestTimeout 3000) # 50m + else() + set(thisTestTimeout 1200) # 20m + endif() +@@ -566,7 +566,7 @@ foreach(t ${mpi_tutorials}) + + # These tests on ARM64 need much more than 20 minutes - increase the timeout + if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) +- set(thisTestTimeout 2400) # 40m ++ set(thisTestTimeout 3000) # 50m + else() + set(thisTestTimeout 1200) # 20m + endif() +-- +2.36.1 + diff --git a/root.spec b/root.spec index ff143a3..b92f433 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -130,6 +130,9 @@ Patch12: %{name}-fix-compilation-with-gcc-12.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +# Adjust some test timeouts +# https://github.com/root-project/root/pull/10886 +Patch14: %{name}-test-timeout.patch # Fixes for tmva-sofie test compilation # https://github.com/root-project/root/pull/10117 Patch15: %{name}-blas-linking-and-ignore-prefix.patch @@ -180,6 +183,10 @@ Patch31: %{name}-core-base-test.patch Patch32: %{name}-make-dyld-based-library-search-behavior-default.patch Patch33: %{name}-fix-TMVA-tutorial-using-internally-python.patch Patch34: %{name}-threadsh1-avoid-heap-use-after-free.patch +Patch35: %{name}-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch +Patch36: %{name}-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch +# Backport additional python 3.11 fixes from CPyCppyy upstream +Patch37: %{name}-Python-3.11-support-backported-from-CPyCppyy.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -2017,6 +2024,7 @@ This package contains an ntuple extension for ROOT 7. %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 @@ -2037,6 +2045,9 @@ This package contains an ntuple extension for ROOT 7. %patch32 -p1 %patch33 -p1 %patch34 -p1 +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2911,6 +2922,30 @@ test-stressgraphics" %endif %endif +%if %{?fedora}%{!?fedora:0} >= 37 +# Fails during garbage collection with Python 3.11 +# See: https://github.com/root-project/root/issues/10799 +excluded="${excluded}|\ +pyunittests-dataframe-histograms|\ +pyunittests-distrdf-unit-backend-test-dist|\ +pyunittests-distrdf-unit-test-buildranges|\ +pyunittests-distrdf-unit-test-friendinfo|\ +pyunittests-distrdf-unit-test-headnode|\ +pyunittests-pyroot-pyz-tfile-attrsyntax-get-writeobject-open|\ +pyunittests-pyroot-pyz-ttree-branch|\ +pyunittests-pyroot-pyz-ttree-branch-attr|\ +pyunittests-pyroot-pyz-ttree-iterable|\ +pyunittests-pyroot-pyz-ttree-setbranchaddress|\ +tutorial-dataframe-df014_CSVDataSource-py|\ +tutorial-dataframe-df017_vecOpsHEP-py|\ +tutorial-pyroot-h1ReadAndDraw-py|\ +tutorial-pyroot-hsimple-py|\ +tutorial-pyroot-ntuple1-py|\ +tutorial-pyroot-staff-py|\ +tutorial-pyroot-tornado-py|\ +tutorial-roofit-rf503_wspaceread-py" +%endif + # Filter out parts of tests that require remote network access GTEST_FILTER=-RCsvDS.Remote:RRawFile.Remote:RSqliteDS.Davix \ make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" @@ -3938,6 +3973,13 @@ fi %endif %changelog +* Sun Jul 03 2022 Mattias Ellert - 6.26.04-3 +- Backport python 3.11 fixes from upstream +- Backport additional python 3.11 fixes from CPyCppyy upstream +- Exclude some failing tests on Fedora 37+ + (segfaults during Python garbage collection with Python 3.11) +- Adjust some test timeouts + * Wed Jun 15 2022 Python Maint - 6.26.04-2 - Rebuilt for Python 3.11 From b2e4c897d28dee2ecfb4e35c14b58889dd699206 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 18 Jul 2022 23:37:13 +0200 Subject: [PATCH 029/127] Don't use yuicompressor on Fedora (Java no longer available on ix86) --- root.spec | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index b92f433..7f2fc8f 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -294,7 +294,12 @@ BuildRequires: protobuf-devel >= 3.0 %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif +%if %{?fedora}%{!?fedora:0} +BuildRequires: python3-rcssmin +BuildRequires: uglify-js +%else BuildRequires: yuicompressor +%endif BuildRequires: perl-generators BuildRequires: gtest-devel BuildRequires: gmock-devel @@ -2106,10 +2111,18 @@ unset QTINC # Minify script and style files for s in etc/notebook/JsMVA/js/*.js ; do +%if %{?fedora}%{!?fedora:0} + uglifyjs ${s} -c -m -o ${s%.js}.min.js +%else yuicompressor ${s} -o ${s%.js}.min.js +%endif done for s in etc/notebook/JsMVA/css/*.css ; do +%if %{?fedora}%{!?fedora:0} + python3 -m rcssmin < ${s} > ${s%.css}.min.css +%else yuicompressor ${s} -o ${s%.css}.min.css +%endif done # Avoid overlinking (this used to be the default with the old configure script) @@ -3973,6 +3986,9 @@ fi %endif %changelog +* Mon Jul 18 2022 Mattias Ellert - 6.26.04-4 +- Don't use yuicompressor on Fedora (Java no longer available on ix86) + * Sun Jul 03 2022 Mattias Ellert - 6.26.04-3 - Backport python 3.11 fixes from upstream - Backport additional python 3.11 fixes from CPyCppyy upstream From ddfa4e1c9bb29155f99efc17c568eebde31eb026 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 00:57:28 +0000 Subject: [PATCH 030/127] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 7f2fc8f..e548c21 100644 --- a/root.spec +++ b/root.spec @@ -70,7 +70,7 @@ Name: root Version: 6.26.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3986,6 +3986,9 @@ fi %endif %changelog +* Sat Jul 23 2022 Fedora Release Engineering - 6.26.04-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Mon Jul 18 2022 Mattias Ellert - 6.26.04-4 - Don't use yuicompressor on Fedora (Java no longer available on ix86) From 4a05ecac340abced89d52c6f4b54cc37e41f05ae Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 4 Aug 2022 05:35:58 +0200 Subject: [PATCH 031/127] Update to 6.26.06 --- root-get-rid-of-lsb_release.patch | 245 ++++++++++++++++++++++++++++++ root-old-gtest-compat.patch | 34 +++++ root.spec | 44 ++++-- sources | 2 +- 4 files changed, 311 insertions(+), 14 deletions(-) create mode 100644 root-get-rid-of-lsb_release.patch diff --git a/root-get-rid-of-lsb_release.patch b/root-get-rid-of-lsb_release.patch new file mode 100644 index 0000000..8dca2cc --- /dev/null +++ b/root-get-rid-of-lsb_release.patch @@ -0,0 +1,245 @@ +From 2dde3d060aa21ff9d4a0612b991bd300b7704bdc Mon Sep 17 00:00:00 2001 +From: Axel Naumann +Date: Fri, 22 Jul 2022 15:54:03 +0200 +Subject: [PATCH] [cmake,test] Get rid of `lsb_release`: + +It is available less and less often, and we do not actually +benefit a lot from printing the distro (stress) or we can get +the same info from /etc/os-release (cmake). +--- + cmake/modules/RootCPack.cmake | 11 +++++++++-- + math/mathcore/test/stressGoFTest.cxx | 4 ---- + test/bench.cxx | 4 ---- + test/stress.cxx | 4 ---- + test/stressFit.cxx | 4 ---- + test/stressGUI.cxx | 4 ---- + test/stressGeometry.cxx | 4 ---- + test/stressGraphics.cxx | 4 ---- + test/stressHepix.cxx | 4 ---- + test/stressHistFactory.cxx | 4 ---- + test/stressLinear.cxx | 4 ---- + test/stressRooFit.cxx | 4 ---- + test/stressRooStats.cxx | 4 ---- + test/stressTMVA.cxx | 4 ---- + 14 files changed, 9 insertions(+), 54 deletions(-) + +diff --git a/cmake/modules/RootCPack.cmake b/cmake/modules/RootCPack.cmake +index a960eb81fd..807eac6ef2 100644 +--- a/cmake/modules/RootCPack.cmake ++++ b/cmake/modules/RootCPack.cmake +@@ -107,8 +107,15 @@ elseif(WIN32) + set(OS_NAME_VERSION win32) + endif() + else() +- execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE osid OUTPUT_STRIP_TRAILING_WHITESPACE) +- execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE osvers OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(EXISTS "/etc/os-release") ++ file(STRINGS /etc/os-release osid REGEX "^NAME=") ++ string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" osid "${osid}") ++ file(STRINGS /etc/os-release osvers REGEX "^VERSION_ID=") ++ string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" osvers "${osvers}") ++ else() ++ execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE osid OUTPUT_STRIP_TRAILING_WHITESPACE) ++ execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE osvers OUTPUT_STRIP_TRAILING_WHITESPACE) ++ endif() + if(osid MATCHES Ubuntu) + string(REGEX REPLACE "([0-9]+)[.].*" "\\1" osvers "${osvers}") + set(OS_NAME_VERSION Linux-ubuntu${osvers}-${arch}) +diff --git a/math/mathcore/test/stressGoFTest.cxx b/math/mathcore/test/stressGoFTest.cxx +index a78ca99c90..5aa1b4ef70 100644 +--- a/math/mathcore/test/stressGoFTest.cxx ++++ b/math/mathcore/test/stressGoFTest.cxx +@@ -56,10 +56,6 @@ struct GoFTStress { + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/bench.cxx b/test/bench.cxx +index 82bc537e05..e89024e9d9 100644 +--- a/test/bench.cxx ++++ b/test/bench.cxx +@@ -295,10 +295,6 @@ int main(int argc, char **argv) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stress.cxx b/test/stress.cxx +index d3087fdd56..29dba1625d 100644 +--- a/test/stress.cxx ++++ b/test/stress.cxx +@@ -200,10 +200,6 @@ void stress(Int_t nevent, Int_t style = 1, + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressFit.cxx b/test/stressFit.cxx +index 667142eff9..80bbd0200f 100644 +--- a/test/stressFit.cxx ++++ b/test/stressFit.cxx +@@ -646,10 +646,6 @@ Int_t stressFit(const char *type, const char *algo, Int_t N) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressGUI.cxx b/test/stressGUI.cxx +index 1a92df5341..9daae5f5fe 100644 +--- a/test/stressGUI.cxx ++++ b/test/stressGUI.cxx +@@ -307,10 +307,6 @@ void stressGUI() + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx +index 5e81f5f2ca..2dc366cbf8 100644 +--- a/test/stressGeometry.cxx ++++ b/test/stressGeometry.cxx +@@ -295,10 +295,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressGraphics.cxx b/test/stressGraphics.cxx +index 5fe958774d..8b6aa9af9a 100644 +--- a/test/stressGraphics.cxx ++++ b/test/stressGraphics.cxx +@@ -419,10 +419,6 @@ void stressGraphics(Int_t verbose = 0) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressHepix.cxx b/test/stressHepix.cxx +index d8d2a65a64..01dfc67a54 100644 +--- a/test/stressHepix.cxx ++++ b/test/stressHepix.cxx +@@ -143,10 +143,6 @@ int main(int argc, char **argv) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressHistFactory.cxx b/test/stressHistFactory.cxx +index b84fa70f86..ec6deac031 100644 +--- a/test/stressHistFactory.cxx ++++ b/test/stressHistFactory.cxx +@@ -139,10 +139,6 @@ Int_t stressHistFactory(const char* refFile, Bool_t writeRef, Int_t verbose, Boo + if (UNIX) { + TString sp = gSystem->GetFromPipe("uname -a"); + cout << "* SYS: " << sp << endl; +- if (strstr(gSystem->GetBuildNode(), "Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- cout << "* SYS: " << sp << endl; +- } + if (strstr(gSystem->GetBuildNode(), "Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressLinear.cxx b/test/stressLinear.cxx +index ce2e1af23d..e34ddf85a2 100644 +--- a/test/stressLinear.cxx ++++ b/test/stressLinear.cxx +@@ -296,10 +296,6 @@ void stressLinear(Int_t maxSizeReq,Int_t verbose) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressRooFit.cxx b/test/stressRooFit.cxx +index 18e214ec0c..4f7c5a3d83 100644 +--- a/test/stressRooFit.cxx ++++ b/test/stressRooFit.cxx +@@ -197,10 +197,6 @@ Int_t stressRooFit(const char* refFile, Bool_t writeRef, Int_t doVerbose, Int_t + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressRooStats.cxx b/test/stressRooStats.cxx +index 35598b5919..adb3dc4cd8 100644 +--- a/test/stressRooStats.cxx ++++ b/test/stressRooStats.cxx +@@ -232,10 +232,6 @@ Int_t stressRooStats(const char* refFile, Bool_t writeRef, Int_t verbose, Bool_t + if (UNIX) { + TString sp = gSystem->GetFromPipe("uname -a"); + cout << "* SYS: " << sp << endl; +- if (strstr(gSystem->GetBuildNode(), "Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- cout << "* SYS: " << sp << endl; +- } + if (strstr(gSystem->GetBuildNode(), "Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +diff --git a/test/stressTMVA.cxx b/test/stressTMVA.cxx +index f7638a73f6..22e3feaf65 100644 +--- a/test/stressTMVA.cxx ++++ b/test/stressTMVA.cxx +@@ -3193,10 +3193,6 @@ int main(int argc, char **argv) + TString sp = gSystem->GetFromPipe("uname -a"); + sp.Resize(60); + printf("* SYS: %s\n",sp.Data()); +- if (strstr(gSystem->GetBuildNode(),"Linux")) { +- sp = gSystem->GetFromPipe("lsb_release -d -s"); +- printf("* SYS: %s\n",sp.Data()); +- } + if (strstr(gSystem->GetBuildNode(),"Darwin")) { + sp = gSystem->GetFromPipe("sw_vers -productVersion"); + sp += " Mac OS X "; +-- +2.37.1 + diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch index e9f4140..7bce796 100644 --- a/root-old-gtest-compat.patch +++ b/root-old-gtest-compat.patch @@ -441,3 +441,37 @@ index 7b513a858b..bea39636ce 100644 -- 2.35.1 +From cae450e0210fe584ef30d155a4217cfe2f5aa358 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 30 Jul 2022 17:05:31 +0200 +Subject: [PATCH] Backward compatibility with older googletest versions in EPEL + +--- + tree/dataframe/test/dataframe_datasetspec.cxx | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/tree/dataframe/test/dataframe_datasetspec.cxx b/tree/dataframe/test/dataframe_datasetspec.cxx +index b422dcf28b..14329102af 100644 +--- a/tree/dataframe/test/dataframe_datasetspec.cxx ++++ b/tree/dataframe/test/dataframe_datasetspec.cxx +@@ -1,4 +1,9 @@ + #include ++ ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + #include + #include +@@ -36,6 +41,7 @@ protected: + + ~RDatasetSpecTest() {} + ++public: + static void SetUpTestCase() + { + auto dfWriter0 = RDataFrame(5).Define("z", [](ULong64_t e) { return e + 100; }, {"rdfentry_"}); +-- +2.37.1 + diff --git a/root.spec b/root.spec index e548c21..89a6c6e 100644 --- a/root.spec +++ b/root.spec @@ -68,9 +68,9 @@ %global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ Name: root -Version: 6.26.04 +Version: 6.26.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -187,6 +187,8 @@ Patch35: %{name}-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch Patch36: %{name}-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch # Backport additional python 3.11 fixes from CPyCppyy upstream Patch37: %{name}-Python-3.11-support-backported-from-CPyCppyy.patch +# Backport +Patch38: %{name}-get-rid-of-lsb_release.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -2053,6 +2055,7 @@ This package contains an ntuple extension for ROOT 7. %patch35 -p1 %patch36 -p1 %patch37 -p1 +%patch38 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2096,6 +2099,17 @@ sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css +%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8 +# Allow older json on EPEL 7/8 +sed 's!nlohmann_json 3.9! nlohmann_json 3.6!' \ + -i cmake/modules/SearchInstalledSoftware.cmake +%endif + +%if %{?rhel}%{!?rhel:0} == 7 +# On EPEL 7 disable test that fails to compile +sed 's!.*dataframe_datasetspec!### &!' -i tree/dataframe/test/CMakeLists.txt +%endif + %build %if %{?rhel}%{!?rhel:0} == 7 . /opt/rh/devtoolset-8/enable @@ -2630,14 +2644,6 @@ pushd tmva/tmva/test/envelope ln -s ../../../../../files files popd -# Some of the tests call lsb_release -d -s -# Provide a replacement script instead of build requiring redhat-lsb-core -cat > bin/lsb_release << EOF -#! /bin/sh -cat /etc/redhat-release -EOF -chmod +x bin/lsb_release - # Exclude some tests that can not be run # # - test-stressIOPlugins-* @@ -2764,13 +2770,20 @@ tutorial-dataframe-df026_AsNumpyArrays-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif +%ifarch %{ix86} +# Test failing on ix86 only +# - gtest-tree-dataframe-test-dataframe-snapshot +excluded="${excluded}|gtest-tree-dataframe-test-dataframe-snapshot" +%endif + %ifarch %{ix86} %{arm} %if %{?fedora}%{!?fedora:0} <= 35 # Tests failing on 32 bit architectures (dataframe) -# +# - gtest-roofit-RDataFrameHelpers-test-testActionHelpers # - gtest-tree-dataframe-test-dataframe-* # - gtest-tree-dataframe-test-datasource-* excluded="${excluded}|\ +gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ gtest-tree-dataframe-test-dataframe|\ gtest-tree-dataframe-test-datasource" %endif @@ -2843,7 +2856,6 @@ tutorial-dataframe-df032_MakeNumpyDataFrame-py" # - tutorial-pyroot-formula1-py excluded="${excluded}|\ gtest-tmva-tmva-test-branchlessForest|\ -tutorial-gl-gltf3|\ tutorial-math-kdTreeBinning|\ tutorial-unfold-testUnfold7c|\ tutorial-hist-fillrandom-py|\ @@ -2951,12 +2963,15 @@ pyunittests-pyroot-pyz-ttree-iterable|\ pyunittests-pyroot-pyz-ttree-setbranchaddress|\ tutorial-dataframe-df014_CSVDataSource-py|\ tutorial-dataframe-df017_vecOpsHEP-py|\ +tutorial-pyroot-fit1-py|\ tutorial-pyroot-h1ReadAndDraw-py|\ tutorial-pyroot-hsimple-py|\ +tutorial-pyroot-hsum-py|\ tutorial-pyroot-ntuple1-py|\ tutorial-pyroot-staff-py|\ tutorial-pyroot-tornado-py|\ -tutorial-roofit-rf503_wspaceread-py" +tutorial-roofit-rf503_wspaceread-py|\ +tutorial-roofit-rf512_wsfactory_oper-py" %endif # Filter out parts of tests that require remote network access @@ -3986,6 +4001,9 @@ fi %endif %changelog +* Sat Jul 30 2022 Mattias Ellert - 6.26.06-1 +- Update to 6.26.06 + * Sat Jul 23 2022 Fedora Release Engineering - 6.26.04-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/sources b/sources index 0ac5ec5..bd0e6ae 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.04.tar.xz) = 0ca0efa082cedce8017293d06ec92c76948f70b6b565efbc6cf4cc78da54017b5022d249dd69abd3588fb874942437318f9a136ed4b144adc820ff41fc1154ee +SHA512 (root-6.26.06.tar.xz) = 6002de6c8b1f43647356d008ca4ed369107ed67ba129271f01180544ad38120f0a26180cd297065fab3669e55671b7ceb53a5ead0c4f61b2ed31b68753bc8adb SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From ee45de2db7a5920c94903a76db4b879cba983b12 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 17 Aug 2022 23:19:25 +0200 Subject: [PATCH 032/127] Compatibility with nlohmann json 3.11+ Enable gfal support in EPEL 9 (gfal2 now available) --- root-json-3.11.patch | 181 ++++++++++++++++++ ...ct-against-empty-COMPILE_DEFINITIONS.patch | 63 ++++++ root-roofit-overflow.patch | 59 ------ root.spec | 17 +- 4 files changed, 255 insertions(+), 65 deletions(-) create mode 100644 root-json-3.11.patch create mode 100644 root-protect-against-empty-COMPILE_DEFINITIONS.patch delete mode 100644 root-roofit-overflow.patch diff --git a/root-json-3.11.patch b/root-json-3.11.patch new file mode 100644 index 0000000..359de6d --- /dev/null +++ b/root-json-3.11.patch @@ -0,0 +1,181 @@ +From 154f930e1f4f05a268782f67bb77c5fb327fd408 Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Wed, 17 Aug 2022 12:15:12 +0200 +Subject: [PATCH 1/4] [tmva][sofie] Add missing cassert includes + +--- + tmva/sofie/inc/TMVA/ROperator_Reshape.hxx | 1 + + tmva/sofie/inc/TMVA/ROperator_Slice.hxx | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx b/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx +index ab24d5bc169f..9ad9eff72189 100644 +--- a/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx ++++ b/tmva/sofie/inc/TMVA/ROperator_Reshape.hxx +@@ -5,6 +5,7 @@ + #include "TMVA/ROperator.hxx" + #include "TMVA/RModel.hxx" + ++#include + #include + + namespace TMVA{ +diff --git a/tmva/sofie/inc/TMVA/ROperator_Slice.hxx b/tmva/sofie/inc/TMVA/ROperator_Slice.hxx +index c6496f291c2c..946523e0832f 100644 +--- a/tmva/sofie/inc/TMVA/ROperator_Slice.hxx ++++ b/tmva/sofie/inc/TMVA/ROperator_Slice.hxx +@@ -5,6 +5,7 @@ + #include "TMVA/ROperator.hxx" + #include "TMVA/RModel.hxx" + ++#include + #include + + namespace TMVA{ + +From 6fc3c85be94f9fe117c07301302dccd8b7554744 Mon Sep 17 00:00:00 2001 +From: Vassil Vassilev +Date: Fri, 5 Nov 2021 19:46:49 +0000 +Subject: [PATCH 2/4] [cxxmodules] Enable a module if json is present. + +(cherry picked from commit 0cdfa69f216854d7319a6a31a61021a1e5ac45de) +--- + core/clingutils/CMakeLists.txt | 4 +++- + graf3d/eve7/CMakeLists.txt | 2 ++ + interpreter/cling/include/cling/json.modulemap | 4 ++++ + interpreter/cling/lib/Interpreter/CIFactory.cpp | 6 ++++++ + 4 files changed, 15 insertions(+), 1 deletion(-) + create mode 100644 interpreter/cling/include/cling/json.modulemap + +diff --git a/core/clingutils/CMakeLists.txt b/core/clingutils/CMakeLists.txt +index f1573f31dfa7..13632a09dd3a 100644 +--- a/core/clingutils/CMakeLists.txt ++++ b/core/clingutils/CMakeLists.txt +@@ -108,7 +108,9 @@ set(clinginclude ${CMAKE_SOURCE_DIR}/interpreter/cling/include) + + set(custom_modulemaps) + if (runtime_cxxmodules) +- set(custom_modulemaps boost.modulemap tinyxml2.modulemap cuda.modulemap module.modulemap.build) ++ set(custom_modulemaps boost.modulemap tinyxml2.modulemap cuda.modulemap ++ module.modulemap.build ++ json.modulemap) + # FIXME: We should install vc.modulemap only when Vc is found (Vc_FOUND) but + # some systems install it under /usr/include/Vc/Vc which allows rootcling to + # discover it and assert that the modulemap is not found. +diff --git a/graf3d/eve7/CMakeLists.txt b/graf3d/eve7/CMakeLists.txt +index 0a87d4ecca62..332ce77eb8ae 100644 +--- a/graf3d/eve7/CMakeLists.txt ++++ b/graf3d/eve7/CMakeLists.txt +@@ -125,6 +125,8 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTEve + src/REveViewer.cxx + src/REveVSD.cxx + src/REveVSDStructs.cxx ++ DICTIONARY_OPTIONS ++ -mByproduct Json + DEPENDENCIES + Core + Geom +diff --git a/interpreter/cling/include/cling/json.modulemap b/interpreter/cling/include/cling/json.modulemap +new file mode 100644 +index 000000000000..758cf2d779e2 +--- /dev/null ++++ b/interpreter/cling/include/cling/json.modulemap +@@ -0,0 +1,4 @@ ++module Json { ++ header "nlohmann/json.hpp" ++ export * ++} +diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp +index 4ce0d75c92ed..a5cbea75fb57 100644 +--- a/interpreter/cling/lib/Interpreter/CIFactory.cpp ++++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp +@@ -581,6 +581,7 @@ namespace { + llvm::SmallString<256> tinyxml2IncLoc(getIncludePathForHeader(HS, "tinyxml2.h")); + llvm::SmallString<256> cudaIncLoc(getIncludePathForHeader(HS, "cuda.h")); + llvm::SmallString<256> vcVcIncLoc(getIncludePathForHeader(HS, "Vc/Vc")); ++ llvm::SmallString<256> jsonIncLoc(getIncludePathForHeader(HS, "nlohmann/json.hpp")); + llvm::SmallString<256> clingIncLoc(getIncludePathForHeader(HS, + "cling/Interpreter/RuntimeUniverse.h")); + +@@ -706,6 +707,11 @@ namespace { + clingIncLoc.str(), MOverlay, + /*RegisterModuleMap=*/ true, + /*AllowModulemapOverride=*/ false); ++ if (!jsonIncLoc.empty()) ++ maybeAppendOverlayEntry(jsonIncLoc.str(), "json.modulemap", ++ clingIncLoc.str(), MOverlay, ++ /*RegisterModuleMap=*/ true, ++ /*AllowModulemapOverride=*/ false); + if (!boostIncLoc.empty()) { + // Add the modulemap in the include/boost folder not in include. + llvm::sys::path::append(boostIncLoc, "boost"); + +From 853eab0c8acf6c689ed413bb02bc8492d95916dc Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Wed, 17 Aug 2022 11:39:56 +0200 +Subject: [PATCH 3/4] [eve7] Properly include nlohmann/json.hpp + +Now that we have a module, this should work. + +Fixes #11130 +--- + graf3d/eve7/inc/ROOT/REveElement.hxx | 18 ++---------------- + 1 file changed, 2 insertions(+), 16 deletions(-) + +diff --git a/graf3d/eve7/inc/ROOT/REveElement.hxx b/graf3d/eve7/inc/ROOT/REveElement.hxx +index 2a127888a2c5..4163129c77ce 100644 +--- a/graf3d/eve7/inc/ROOT/REveElement.hxx ++++ b/graf3d/eve7/inc/ROOT/REveElement.hxx +@@ -16,26 +16,12 @@ + #include + #include + +-#include ++#include ++ + #include + + class TGeoMatrix; + +-namespace nlohmann { +-template +-struct adl_serializer; +- +-template

    --/// In the above example RooSimPdfBuilder -+/// In the above example RooSimPdfBuilder - /// will first replicate k and s into - /// k_C1,k_C2 and s_C1,s_C2, as prescribed in the - /// configuration. Then it will recursively replicate all PDF nodes that depend on -@@ -383,7 +383,7 @@ - /// pdfA(x;p,q) and pdfB(x;p,r) that have a common parameter p. - /// We want to build a RooSimultaneous for both pdfA and B, - /// which involves a split of parameter p and we would like to build the --/// simultaneous pdfs simA and simB such that still share their (now split) parameters -+/// simultaneous pdfs simA and simB such that still share their (now split) parameters - /// p_XXX. This is accomplished by letting a single instance of RooSimPdfBuilder handle - /// the builds of both pdfA and pdfB, as illustrated in this example: - ///