From bcb1ddcccf7115e8e31efead61522aaf674c8ad2 Mon Sep 17 00:00:00 2001 From: Maxwell G Date: Thu, 29 Dec 2022 09:45:29 -1000 Subject: [PATCH 01/89] Rebuild for cfitsio 4.2 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index bead5ca..b40be96 100644 --- a/root.spec +++ b/root.spec @@ -65,7 +65,7 @@ Name: root Version: 6.26.10 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3985,6 +3985,9 @@ fi %endif %changelog +* Thu Dec 29 2022 Maxwell G - 6.26.10-2 +- Rebuild for cfitsio 4.2 + * Wed Nov 16 2022 Mattias Ellert - 6.26.10-1 - Update to 6.26.10 - Drop patches root-Fixes-for-garbage-collection-in-Python-3.11.patch From 6d31b558eef8167f0d09704df669da1de6e1a4ef Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 20 Jan 2023 19:53:22 +0000 Subject: [PATCH 02/89] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_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 b40be96..11e148a 100644 --- a/root.spec +++ b/root.spec @@ -65,7 +65,7 @@ Name: root Version: 6.26.10 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3985,6 +3985,9 @@ fi %endif %changelog +* Fri Jan 20 2023 Fedora Release Engineering - 6.26.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Thu Dec 29 2022 Maxwell G - 6.26.10-2 - Rebuild for cfitsio 4.2 From 635da91690ffdb72e0fb1b401d970c663b0eedfb Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 21 Jan 2023 08:32:07 +0100 Subject: [PATCH 03/89] Add missing #include --- root-add-missing-include-cstdint.patch | 38 +++++++++++++ root-fix-compilation-with-gcc13.patch | 25 +++++++++ root-test-timeout.patch | 2 +- root.spec | 78 +++++++++++++++----------- 4 files changed, 109 insertions(+), 34 deletions(-) create mode 100644 root-add-missing-include-cstdint.patch create mode 100644 root-fix-compilation-with-gcc13.patch diff --git a/root-add-missing-include-cstdint.patch b/root-add-missing-include-cstdint.patch new file mode 100644 index 0000000..f86f0ee --- /dev/null +++ b/root-add-missing-include-cstdint.patch @@ -0,0 +1,38 @@ +From cf6a925dfda2411b979da368e4cea769dbe6238a Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 20 Jan 2023 06:34:11 +0100 +Subject: [PATCH] Add missing #include + +Fixes compilation error with gcc 13 +--- + tree/ntuple/v7/inc/ROOT/RDaos.hxx | 1 + + tree/ntuple/v7/test/CustomStruct.hxx | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/tree/ntuple/v7/inc/ROOT/RDaos.hxx b/tree/ntuple/v7/inc/ROOT/RDaos.hxx +index 69ee9ba99d..6367dfa93f 100644 +--- a/tree/ntuple/v7/inc/ROOT/RDaos.hxx ++++ b/tree/ntuple/v7/inc/ROOT/RDaos.hxx +@@ -22,6 +22,7 @@ + // Also, this header file is known to provide macros that conflict with std::min()/std::max(). + extern "C" void d_rank_list_free(d_rank_list_t *rank_list); + ++#include + #include + #include + #include +diff --git a/tree/ntuple/v7/test/CustomStruct.hxx b/tree/ntuple/v7/test/CustomStruct.hxx +index a975b5ce5d..be08eba924 100644 +--- a/tree/ntuple/v7/test/CustomStruct.hxx ++++ b/tree/ntuple/v7/test/CustomStruct.hxx +@@ -1,6 +1,7 @@ + #ifndef ROOT7_RNTuple_Test_CustomStruct + #define ROOT7_RNTuple_Test_CustomStruct + ++#include + #include + #include + +-- +2.39.0 + diff --git a/root-fix-compilation-with-gcc13.patch b/root-fix-compilation-with-gcc13.patch new file mode 100644 index 0000000..bf411a8 --- /dev/null +++ b/root-fix-compilation-with-gcc13.patch @@ -0,0 +1,25 @@ +From 37ac6654194f90db625e760dcb2d48fd7938ba6d Mon Sep 17 00:00:00 2001 +From: scott snyder +Date: Tue, 29 Nov 2022 22:05:39 -0500 +Subject: [PATCH] Fix compilation with gcc13. + +Missing #include . +--- + math/mathcore/inc/Math/Random.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/math/mathcore/inc/Math/Random.h b/math/mathcore/inc/Math/Random.h +index 87eaaee5af..23bfabc4a1 100644 +--- a/math/mathcore/inc/Math/Random.h ++++ b/math/mathcore/inc/Math/Random.h +@@ -25,6 +25,7 @@ + + #include + #include ++#include + + + namespace ROOT { +-- +2.39.0 + diff --git a/root-test-timeout.patch b/root-test-timeout.patch index 1943318..a07aa39 100644 --- a/root-test-timeout.patch +++ b/root-test-timeout.patch @@ -79,7 +79,7 @@ index dbe664f8a0..6284e3c4c5 100644 ROOT_STANDARD_LIBRARY_PACKAGE(SillyStruct NO_INSTALL_HEADERS HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/SillyStruct.h SOURCES SillyStruct.cxx LINKDEF SillyStructLinkDef.h DEPENDENCIES RIO) ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer) -ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer) -+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 2400) ++ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000) ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer) ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct) ROOT_ADD_GTEST(testTBasket TBasket.cxx LIBRARIES RIO Tree) diff --git a/root.spec b/root.spec index 11e148a..6df3ae4 100644 --- a/root.spec +++ b/root.spec @@ -25,11 +25,7 @@ %global root7 0 %endif -%if %{?fedora}%{!?fedora:0} >= 33 || %{?rhel}%{!?rhel:0} >= 7 %global xrootd5 1 -%else -%global xrootd5 0 -%endif %global webgui 1 @@ -65,7 +61,7 @@ Name: root Version: 6.26.10 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -183,6 +179,11 @@ Patch36: %{name}-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch # Avoid race condition between C++ an Python version of test # https://github.com/root-project/root/pull/11643 Patch37: %{name}-avoid-race-condition-tutorial-roofit-rf512.patch +# Add missing #include +# https://github.com/root-project/root/pull/12065 +Patch38: %{name}-add-missing-include-cstdint.patch +# Backport from upstream +Patch39: %{name}-fix-compilation-with-gcc13.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -519,7 +520,7 @@ to call Python from ROOT. %if %{buildpy2} %package -n python2-%{name} Summary: Python extension for ROOT -%{?python_provide:%python_provide python2-%{name}} +%py_provides python2-%{name} Provides: %{name}-python = %{version}-%{release} Obsoletes: %{name}-python < 6.08.00 Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -532,7 +533,7 @@ possible to use ROOT classes in Python. %package -n python2-jupyroot Summary: ROOT Jupyter kernel -%{?python_provide:%python_provide python2-jupyroot} +%py_provides python2-jupyroot Requires: python2-%{name}%{?_isa} = %{version}-%{release} Requires: python2-jsmva = %{version}-%{release} Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -554,7 +555,7 @@ The Jupyter kernel for the ROOT notebook. %package -n python2-jsmva Summary: TMVA interface used by JupyROOT BuildArch: noarch -%{?python_provide:%python_provide python2-jsmva} +%py_provides python2-jsmva Requires: %{name}-tmva = %{version}-%{release} %description -n python2-jsmva @@ -563,7 +564,7 @@ TMVA interface used by JupyROOT. %package -n python%{python3_pkgversion}-%{name} Summary: Python extension for ROOT -%{?python_provide:%python_provide python%{python3_pkgversion}-%{name}} +%py_provides python%{python3_pkgversion}-%{name} Provides: %{name}-python%{python3_pkgversion} = %{version}-%{release} Obsoletes: %{name}-python%{python3_pkgversion} < 6.08.00 Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -578,7 +579,7 @@ possible to use ROOT classes in Python. %package -n python%{python3_pkgversion}-jupyroot Summary: ROOT Jupyter kernel -%{?python_provide:%python_provide python%{python3_pkgversion}-jupyroot} +%py_provides python%{python3_pkgversion}-jupyroot Requires: python%{python3_pkgversion}-%{name}%{?_isa} = %{version}-%{release} Requires: python%{python3_pkgversion}-jsmva = %{version}-%{release} Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -599,7 +600,7 @@ The Jupyter kernel for the ROOT notebook. %package -n python%{python3_pkgversion}-jsmva Summary: TMVA interface used by JupyROOT BuildArch: noarch -%{?python_provide:%python_provide python%{python3_pkgversion}-jsmva} +%py_provides python%{python3_pkgversion}-jsmva Requires: %{name}-tmva = %{version}-%{release} %description -n python%{python3_pkgversion}-jsmva @@ -609,7 +610,7 @@ TMVA interface used by JupyROOT. %package -n python%{python3_pkgversion}-distrdf Summary: Distributed RDataFrame BuildArch: noarch -%{?python_provide:%python_provide python%{python3_pkgversion}-distrdf} +%py_provides python%{python3_pkgversion}-distrdf Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} Requires: %{name}-tree-dataframe = %{version}-%{release} @@ -2049,6 +2050,8 @@ This package contains an ntuple extension for ROOT 7. %patch35 -p1 %patch36 -p1 %patch37 -p1 +%patch38 -p1 +%patch39 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2771,17 +2774,11 @@ excluded="${excluded}|\ pyunittests-pyroot-roofit-roodataset-numpy" %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-* +%if %{?fedora}%{!?fedora:0} >= 38 +# Failures with Fedora 38 (GCC 13 related?) excluded="${excluded}|\ -gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ -gtest-tree-dataframe-test-dataframe|\ -gtest-tree-dataframe-test-datasource" -%endif +pyunittests-dataframe-histograms|\ +tutorial-legacy-rootenv" %endif %ifarch %{arm} @@ -2828,7 +2825,7 @@ 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 +%if %{?rhel}%{!?rhel:0} == 9 # tmva/tmva/test/branchlessForest.cxx:215: Failure # Expected equality of these values: # predictions[1] @@ -2942,19 +2939,31 @@ test-stressgraphics" %endif %if %{?fedora}%{!?fedora:0} >= 38 -# - pyunittests-pyroot-pyz-rdataframe-asnumpy -# - pyunittests-pyroot-pyz-rdataframe-makenumpy -# - tutorial-dataframe-df024_Display(-py) -# - tutorial-dataframe-df026_AsNumpyArrays-py -# - tutorial-dataframe-df032_MakeNumpyDataFrame-py -# - tutorial-tmva-tmva002_RDataFrameAsTensor +# Segmentation faults and invalid pointers +# Mainly related to DataFrame excluded="${excluded}|\ +pyunittests-dataframe|\ +pyunittests-distrdf-unit-backend-test-dist|\ +pyunittests-distrdf-unit-test-headnode|\ pyunittests-pyroot-pyz-rdataframe-asnumpy|\ pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -tutorial-dataframe-df024_Display|\ -tutorial-dataframe-df026_AsNumpyArrays-py|\ -tutorial-dataframe-df032_MakeNumpyDataFrame-py|\ -tutorial-tmva-tmva002_RDataFrameAsTensor" +pyunittests-pyroot-rdfdescription|\ +gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ +gtest-tree-dataframe-test-dataframe|\ +gtest-tree-dataframe-test-datasource|\ +gtest-tree-ntuple-v7-test-ntuple-rdf|\ +tutorial-dataframe-df|\ +tutorial-graphs-timeSeriesFromCSV_TDF|\ +tutorial-multicore-mt304_fillHistos|\ +tutorial-rcanvas|\ +tutorial-roofit-rf408_RDataFrameToRooFit-py|\ +tutorial-roofit-rf508_listsetmanip-py|\ +tutorial-tmva-tmva002_RDataFrameAsTensor|\ +tutorial-v7-concurrentfill.cxx|\ +tutorial-v7-histops.cxx|\ +tutorial-v7-perf.cxx|\ +tutorial-v7-perfcomp.cxx|\ +tutorial-v7-simple.cxx" %endif %endif @@ -3985,6 +3994,9 @@ fi %endif %changelog +* Fri Jan 20 2023 Mattias Ellert - 6.26.10-4 +- Add missing #include + * Fri Jan 20 2023 Fedora Release Engineering - 6.26.10-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 1801745923d911ad2b2b0d529a86e2bdd8836fb3 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 30 Jan 2023 19:16:25 +0100 Subject: [PATCH 04/89] Adapt to numpy 1.24 --- root-avoid-deprecated-numpy.object.patch | 22 ++++++++++++++++ root.spec | 32 +++++++++++++----------- 2 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 root-avoid-deprecated-numpy.object.patch diff --git a/root-avoid-deprecated-numpy.object.patch b/root-avoid-deprecated-numpy.object.patch new file mode 100644 index 0000000..9330bac --- /dev/null +++ b/root-avoid-deprecated-numpy.object.patch @@ -0,0 +1,22 @@ +From 1e7dc9fcd60133375c3b725d8317fab339c2bf38 Mon Sep 17 00:00:00 2001 +From: Vincenzo Eduardo Padulano +Date: Mon, 30 Jan 2023 10:31:29 +0100 +Subject: [PATCH] [DF][PyROOT] Avoid deprecated numpy.object + +--- + .../pythonizations/python/ROOT/_pythonization/_rdataframe.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py +index 59cb0cd260dd..01cb08b0365f 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py +@@ -287,7 +287,7 @@ def GetValue(self): + tmp = numpy.asarray(cpp_reference) # This adopts the memory of the C++ object. + self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) + else: +- tmp = numpy.empty(len(cpp_reference), dtype=numpy.object) ++ tmp = numpy.empty(len(cpp_reference), dtype=object) + for i, x in enumerate(cpp_reference): + tmp[i] = x # This creates only the wrapping of the objects and does not copy. + self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) diff --git a/root.spec b/root.spec index 6df3ae4..7b8e3be 100644 --- a/root.spec +++ b/root.spec @@ -61,7 +61,7 @@ Name: root Version: 6.26.10 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -184,6 +184,10 @@ Patch37: %{name}-avoid-race-condition-tutorial-roofit-rf512.patch Patch38: %{name}-add-missing-include-cstdint.patch # Backport from upstream Patch39: %{name}-fix-compilation-with-gcc13.patch +# numpy.object obsolete since numpy 1.20 and removed since 1.24 +# https://github.com/root-project/root/issues/12148 +# https://github.com/root-project/root/pull/12159 +Patch40: %{name}-avoid-deprecated-numpy.object.patch %if %{?rhel}%{!?rhel:0} == 7 BuildRequires: devtoolset-8-toolchain @@ -291,12 +295,8 @@ 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: uglify-js3 BuildRequires: perl-generators BuildRequires: gtest-devel BuildRequires: gmock-devel @@ -2052,6 +2052,7 @@ This package contains an ntuple extension for ROOT 7. %patch37 -p1 %patch38 -p1 %patch39 -p1 +%patch40 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2122,18 +2123,10 @@ 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 + uglifyjs-3 ${s} -c -m -o ${s%.js}.min.js 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) @@ -2779,6 +2772,12 @@ pyunittests-pyroot-roofit-roodataset-numpy" excluded="${excluded}|\ pyunittests-dataframe-histograms|\ tutorial-legacy-rootenv" + +%ifarch %{ix86} +# Failures with Fedora 38 i686 (after numpy 1.24 update) +excluded="${excluded}|\ +pyunittests-pyroot-roofit-roodataset-numpy" +%endif %endif %ifarch %{arm} @@ -3994,6 +3993,9 @@ fi %endif %changelog +* Mon Jan 30 2023 Mattias Ellert - 6.26.10-5 +- Adapt to numpy 1.24 + * Fri Jan 20 2023 Mattias Ellert - 6.26.10-4 - Add missing #include From e41288dd187d613cfcbd4760a6bb92e33b0f1797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Mon, 30 Jan 2023 22:16:05 +0100 Subject: [PATCH 05/89] Rebuilt to change Python shebangs to /usr/bin/python3.6 on EPEL 8 See https://lists.fedoraproject.org/archives/list/epel-devel@lists.fedoraproject.org/thread/RE3PG72B5AX7NTACPDSBGOWCMN7I3OQJ/ --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index bead5ca..0cb36c8 100644 --- a/root.spec +++ b/root.spec @@ -65,7 +65,7 @@ Name: root Version: 6.26.10 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPLv2+ @@ -3985,6 +3985,9 @@ fi %endif %changelog +* Mon Jan 30 2023 Miro Hrončok - 6.26.10-2 +- Rebuilt to change Python shebangs to /usr/bin/python3.6 on EPEL 8 + * Wed Nov 16 2022 Mattias Ellert - 6.26.10-1 - Update to 6.26.10 - Drop patches root-Fixes-for-garbage-collection-in-Python-3.11.patch From a08fcbc5ad2eb7bbf4e170ffe106d439909c9867 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 19 Mar 2023 07:53:00 +0100 Subject: [PATCH 06/89] Update to 6.28.00 ROOT now uses llvm/clang version 13 (updated from version 9) Clean up specfile by removing EPEL 7 conditionals Drop dataframe, roofit and tmva-sofieparser on EPEL 8 ppc64le due to "pure virtual method called" errors Split the root-geom sub-package into three separate sub-packages: root-geom, root-geom-builder and root-geom-painter Enable uring support in EPEL 9 (liburing now available) New sub-packages: root-geom-webviewer, root-roofit-jsoninterface, root-testsupport, root-tree-ntuple-utils, root-tree-webviewer, root-xroofit Dropped patches: 31 New patches: 17 Updated patches: 4 --- root-32bit-dataframe.patch | 170 --- ...ast-error-when-calling-PyTuple_SET_I.patch | 29 - ...ust-not-be-included-directly-in-3.11.patch | 34 - ...t-and-TMVA-pythonizations-if-enabled.patch | 117 ++ ...ProdPdf.TestGetPartIntList-unit-test.patch | 168 +++ ...et-DataLayout-from-our-TargetMachine.patch | 32 + root-Simplify-creation-of-TargetMachine.patch | 94 ++ root-add-missing-include-cstdint.patch | 10 +- root-avoid-deleting-TFormulas-twice.patch | 37 - root-avoid-deprecated-numpy.object.patch | 22 - ...race-condition-tutorial-roofit-rf512.patch | 50 - root-big-endian-byte-swap.patch | 56 +- ...g-Disable-outline-atomics-on-AArch64.patch | 35 + root-core-base-test.patch | 31 - root-dataframe-callback.patch | 45 - root-different-filename.patch | 48 - root-do-not-remove-Wp-before-D-and-U.patch | 44 + root-dont-install-roofit-files-fix.patch | 26 + ...roofit-files-when-roofit-is-disabled.patch | 75 + root-endian-warn.patch | 33 - root-fix-compilation-with-gcc-12.patch | 63 - root-fix-compilation-with-gcc13.patch | 25 - ...e-on-ppc64le-and-aarch64-with-gcc-12.patch | 21 +- root-fixes-for-32bit-builds.patch | 185 +++ root-fontconfig.patch | 132 +- root-get-rid-of-lsb_release.patch | 245 ---- root-gtest-compat.patch | 85 ++ root-ignore-prefix.patch | 36 - root-longlong.patch | 42 - root-make-DistRDF-optional.patch | 32 + ...ased-library-search-behavior-default.patch | 147 -- root-namespace-pymva.patch | 31 - root-namespace-roofit.patch | 43 - root-namespace-sofie.patch | 30 - ...kBuf-add-missing-call-to-ReleasePage.patch | 30 + root-ntuplewait.patch | 39 - root-old-gtest-compat.patch | 477 ------- root-older-python.patch | 46 - root-rcolor-static-init.patch | 42 - root-roofit-tutorial.patch | 74 - root-stressvector-test-fails-on-ix86.patch | 37 + root-symbol-rewrite.patch | 31 - root-test-timeout.patch | 110 -- ...-test-compares-two-doubles-and-fails.patch | 49 + ...-threadsh1-avoid-heap-use-after-free.patch | 48 - ...-Speed-up-TMVA-CNN-and-RNN-tutorials.patch | 239 ++++ root-tmva-threads.patch | 79 -- root-unbundle-gtest.patch | 202 --- root-uring-warn.patch | 43 - ...t-minimum-python-version-for-DistRDF.patch | 27 + ...ue-filenames-in-fillrandom-tutorials.patch | 25 - ...sts-using-clad-when-clad-is-disabled.patch | 66 + root.spec | 1240 +++++++---------- sources | 2 +- 54 files changed, 1982 insertions(+), 3197 deletions(-) delete mode 100644 root-32bit-dataframe.patch delete mode 100644 root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch delete mode 100644 root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch create mode 100644 root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch create mode 100644 root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch create mode 100644 root-Set-DataLayout-from-our-TargetMachine.patch create mode 100644 root-Simplify-creation-of-TargetMachine.patch delete mode 100644 root-avoid-deleting-TFormulas-twice.patch delete mode 100644 root-avoid-deprecated-numpy.object.patch delete mode 100644 root-avoid-race-condition-tutorial-roofit-rf512.patch create mode 100644 root-cling-Disable-outline-atomics-on-AArch64.patch delete mode 100644 root-core-base-test.patch delete mode 100644 root-dataframe-callback.patch delete mode 100644 root-different-filename.patch create mode 100644 root-do-not-remove-Wp-before-D-and-U.patch create mode 100644 root-dont-install-roofit-files-fix.patch create mode 100644 root-dont-install-roofit-files-when-roofit-is-disabled.patch delete mode 100644 root-endian-warn.patch delete mode 100644 root-fix-compilation-with-gcc-12.patch delete mode 100644 root-fix-compilation-with-gcc13.patch create mode 100644 root-fixes-for-32bit-builds.patch delete mode 100644 root-get-rid-of-lsb_release.patch create mode 100644 root-gtest-compat.patch delete mode 100644 root-ignore-prefix.patch delete mode 100644 root-longlong.patch create mode 100644 root-make-DistRDF-optional.patch delete mode 100644 root-make-dyld-based-library-search-behavior-default.patch delete mode 100644 root-namespace-pymva.patch delete mode 100644 root-namespace-roofit.patch delete mode 100644 root-namespace-sofie.patch create mode 100644 root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch delete mode 100644 root-ntuplewait.patch delete mode 100644 root-old-gtest-compat.patch delete mode 100644 root-older-python.patch delete mode 100644 root-rcolor-static-init.patch delete mode 100644 root-roofit-tutorial.patch create mode 100644 root-stressvector-test-fails-on-ix86.patch delete mode 100644 root-symbol-rewrite.patch delete mode 100644 root-test-timeout.patch create mode 100644 root-testRooAbsL-test-compares-two-doubles-and-fails.patch delete mode 100644 root-threadsh1-avoid-heap-use-after-free.patch create mode 100644 root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch delete mode 100644 root-tmva-threads.patch delete mode 100644 root-unbundle-gtest.patch delete mode 100644 root-uring-warn.patch create mode 100644 root-use-consistent-minimum-python-version-for-DistRDF.patch delete mode 100644 root-use-unique-filenames-in-fillrandom-tutorials.patch create mode 100644 root-veto-tests-using-clad-when-clad-is-disabled.patch diff --git a/root-32bit-dataframe.patch b/root-32bit-dataframe.patch deleted file mode 100644 index 89e3c95..0000000 --- a/root-32bit-dataframe.patch +++ /dev/null @@ -1,170 +0,0 @@ -From 686d5011df607fde2a42c729d6bd446486163784 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 13 Mar 2020 16:20:17 +0100 -Subject: [PATCH] Restore 32-bit dataframe - ---- - build/unix/makepchinput.py | 3 --- - cmake/modules/RootBuildOptions.cmake | 5 ----- - tree/dataframe/test/dataframe_cache.cxx | 4 ---- - tree/dataframe/test/datasource_arrow.cxx | 4 ---- - tree/dataframe/test/datasource_csv.cxx | 4 ---- - tree/dataframe/test/datasource_root.cxx | 4 ---- - tree/dataframe/test/datasource_trivial.cxx | 4 ---- - tutorials/CMakeLists.txt | 5 ----- - 8 files changed, 33 deletions(-) - -diff --git a/build/unix/makepchinput.py b/build/unix/makepchinput.py -index 1adff487de..eec73f946d 100755 ---- a/build/unix/makepchinput.py -+++ b/build/unix/makepchinput.py -@@ -252,9 +252,6 @@ def isDirForPCH(dirName, legacyPyROOT): - "math/vdt", - "tmva/rmva"] - -- if (sys.platform != 'win32' and sys.maxsize <= 2**32): # https://docs.python.org/3/library/platform.html#cross-platform -- PCHPatternsBlacklist.append("tree/dataframe") -- - accepted = isAnyPatternInString(PCHPatternsWhitelist,dirName) and \ - not isAnyPatternInString(PCHPatternsBlacklist,dirName) - -diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake -index 7886c5f3e9..6fbd8873f1 100644 ---- a/cmake/modules/RootBuildOptions.cmake -+++ b/cmake/modules/RootBuildOptions.cmake -@@ -344,11 +344,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) - set(runtime_cxxmodules_defvalue OFF) - endif() - --# Disable RDataFrame on 32-bit UNIX platforms due to ROOT-9236 --if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4) -- set(dataframe_defvalue OFF) --endif() -- - # MultiProcess is not possible on Windows, so fail if it is manually set: - if(roofit_multiprocess AND WIN32) - message(FATAL_ERROR ">>> Option 'roofit_multiprocess' is not supported on Windows.") -diff --git a/tree/dataframe/test/dataframe_cache.cxx b/tree/dataframe/test/dataframe_cache.cxx -index 77be488052..8475b98acb 100644 ---- a/tree/dataframe/test/dataframe_cache.cxx -+++ b/tree/dataframe/test/dataframe_cache.cxx -@@ -224,8 +224,6 @@ TEST(Cache, evtCounter) - - } - --#ifdef R__B64 -- - TEST(Cache, Regex) - { - -@@ -329,8 +327,6 @@ TEST(Cache, Carrays) - gSystem->Unlink(fileName); - } - --#endif // R__B64 -- - // ROOT-10563 - TEST(Cache, Alias) - { -diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx -index 5ac9fcf09a..5f5f94a666 100644 ---- a/tree/dataframe/test/datasource_arrow.cxx -+++ b/tree/dataframe/test/datasource_arrow.cxx -@@ -177,8 +177,6 @@ TEST(RArrowDS, SetNSlotsTwice) - } - #endif - --#ifdef R__B64 -- - TEST(RArrowDS, FromARDF) - { - std::unique_ptr tds(new RArrowDS(createTestTable(), {})); -@@ -250,5 +248,3 @@ TEST(RArrowDS, FromARDFWithJittingMT) - } - - #endif // R__USE_IMT -- --#endif // R__B64 -diff --git a/tree/dataframe/test/datasource_csv.cxx b/tree/dataframe/test/datasource_csv.cxx -index 6554719f98..d93117b67a 100644 ---- a/tree/dataframe/test/datasource_csv.cxx -+++ b/tree/dataframe/test/datasource_csv.cxx -@@ -210,8 +210,6 @@ TEST(RCsvDS, SetNSlotsTwice) - } - #endif - --#ifdef R__B64 -- - TEST(RCsvDS, FromARDF) - { - std::unique_ptr tds(new RCsvDS(fileName0)); -@@ -324,5 +322,3 @@ TEST(RCsvDS, ProgressiveReadingRDFMT) - } - - #endif // R__USE_IMT -- --#endif // R__B64 -diff --git a/tree/dataframe/test/datasource_root.cxx b/tree/dataframe/test/datasource_root.cxx -index 79840d9fff..4c795fee6f 100644 ---- a/tree/dataframe/test/datasource_root.cxx -+++ b/tree/dataframe/test/datasource_root.cxx -@@ -117,8 +117,6 @@ TEST(TRootTDS, SetNSlotsTwice) - } - #endif - --#ifdef R__B64 -- - TEST(TRootTDS, FromARDF) - { - std::unique_ptr tds(new ROOT::Internal::RDF::RRootDS(treeName, fileGlob)); -@@ -190,5 +188,3 @@ TEST(TRootTDS, FromARDFWithJittingMT) - } - - #endif // R__USE_IMT -- --#endif // R__B64 -diff --git a/tree/dataframe/test/datasource_trivial.cxx b/tree/dataframe/test/datasource_trivial.cxx -index 7da675c83b..deb89301c7 100644 ---- a/tree/dataframe/test/datasource_trivial.cxx -+++ b/tree/dataframe/test/datasource_trivial.cxx -@@ -141,8 +141,6 @@ TEST(RTrivialDS, EarlyQuitWithRange) - EXPECT_EQ(df.Range(10).Count().GetValue(), 10); - } - --#ifdef R__B64 -- - TEST(RTrivialDS, FromARDFWithJitting) - { - std::unique_ptr tds(new RTrivialDS(32)); -@@ -245,5 +243,3 @@ TEST(RTrivialDS, SkipEntriesMT) - } - - #endif // R__USE_IMT -- --#endif // R__B64 -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index a6e5c97703..12bb610d67 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -332,10 +332,6 @@ else() - list(APPEND root7_veto ${v7_veto_files}) - endif() - --if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) -- set(bits32_veto dataframe/*.C graphs/timeSeriesFrom*.C v7/ntuple/ntpl004_dimuon.C) --endif() -- - if (APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES arm64) - set(macm1_veto dataframe/df107_SingleTopAnalysis.py) - endif() -@@ -391,7 +387,6 @@ set(all_veto hsimple.C - ${classic_veto} - ${pythia_veto} - ${root7_veto} -- ${bits32_veto} - ${xrootd_veto} - ${mlp_veto} - ${spectrum_veto} --- -2.35.1 - diff --git a/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch b/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch deleted file mode 100644 index ca908b8..0000000 --- a/root-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch +++ /dev/null @@ -1,29 +0,0 @@ -From a12f3b736a9c69e0d69e7f483e50e7cdf59d9fd2 Mon Sep 17 00:00:00 2001 -From: Enric Tejedor Saavedra -Date: Fri, 10 Jun 2022 16:42:49 +0200 -Subject: [PATCH] [PyROOT] Prevent cast error when calling PyTuple_SET_ITEM in - 3.11 - -PyTuple_SET_ITEM ends up calling _PyObject_CAST(nullptr) which -causes "error: invalid cast from type 'std::nullptr_t' to type -'const PyObject*' {aka 'const _object*'} ---- - bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx -index 685ad3dc60..2189348594 100644 ---- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx -+++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPMethod.cxx -@@ -580,7 +580,7 @@ PyObject* CPyCppyy::CPPMethod::ProcessKeywords(PyObject* self, PyObject* args, P - // set all values to zero to be able to check them later (this also guarantees normal - // cleanup by the tuple deallocation) - for (Py_ssize_t i = 0; i < nArgs+nKeys; ++i) -- PyTuple_SET_ITEM(newArgs, i, nullptr); -+ PyTuple_SET_ITEM(newArgs, i, static_cast(nullptr)); - - // next, insert the keyword values - PyObject *key, *value; --- -2.36.1 - diff --git a/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch b/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch deleted file mode 100644 index a845fa4..0000000 --- a/root-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 484deb056dacf768aba4954073b41105c431bffc Mon Sep 17 00:00:00 2001 -From: Enric Tejedor Saavedra -Date: Thu, 9 Jun 2022 12:24:07 +0200 -Subject: [PATCH] [PyROOT] code.h must not be included directly in 3.11 - -It has been moved to Include/cpython, and it is included by Python.h. - -See: -https://docs.python.org/3.11/whatsnew/3.11.html ---- - bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx -index 59997e390d..28bbd635c2 100644 ---- a/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx -+++ b/bindings/pyroot/cppyy/CPyCppyy/src/CPPOverload.cxx -@@ -1,10 +1,10 @@ - // Bindings - #include "CPyCppyy.h" - #include "structmember.h" // from Python --#if PY_VERSION_HEX >= 0x02050000 --#include "code.h" // from Python --#else -+#if PY_VERSION_HEX < 0x02050000 - #include "compile.h" // from Python -+#elif PY_VERSION_HEX < 0x030b0000 -+#include "code.h" // from Python - #endif - #ifndef CO_NOFREE - // python2.2 does not have CO_NOFREE defined --- -2.36.1 - diff --git a/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch b/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch new file mode 100644 index 0000000..0ca4387 --- /dev/null +++ b/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch @@ -0,0 +1,117 @@ +From d759a42a33fe6a9195c3c79275fe05e4da2b4195 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Sat, 14 Jan 2023 12:25:20 +0100 +Subject: [PATCH] [PyROOT] Only build RooFit and TMVA pythonizations if needed + +Like this, we are polluting the build and install directories less with +unneeded files and it also speeds up the build process a bit if RooFit +and/or TMVA are disabled. Their pythonization files don't need to be +compiled to `.pyc` files. +--- + bindings/pyroot/pythonizations/CMakeLists.txt | 76 ++++++++++--------- + 1 file changed, 42 insertions(+), 34 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt +index 9e853d1885..8395785b24 100644 +--- a/bindings/pyroot/pythonizations/CMakeLists.txt ++++ b/bindings/pyroot/pythonizations/CMakeLists.txt +@@ -25,6 +25,48 @@ if(dataframe) + inc/RNumpyDS.hxx) + endif() + ++if(roofit) ++ list(APPEND PYROOT_EXTRA_PY2_PY3_SOURCE ++ ROOT/_pythonization/_roofit/__init__.py ++ ROOT/_pythonization/_roofit/_rooabscollection.py ++ ROOT/_pythonization/_roofit/_rooabsdata.py ++ ROOT/_pythonization/_roofit/_rooabspdf.py ++ ROOT/_pythonization/_roofit/_rooabsreallvalue.py ++ ROOT/_pythonization/_roofit/_rooabsreal.py ++ ROOT/_pythonization/_roofit/_rooarglist.py ++ ROOT/_pythonization/_roofit/_rooargset.py ++ ROOT/_pythonization/_roofit/_roocategory.py ++ ROOT/_pythonization/_roofit/_roochi2var.py ++ ROOT/_pythonization/_roofit/_roodatahist.py ++ ROOT/_pythonization/_roofit/_roodataset.py ++ ROOT/_pythonization/_roofit/_roodecays.py ++ ROOT/_pythonization/_roofit/_roogenfitstudy.py ++ ROOT/_pythonization/_roofit/_rooglobalfunc.py ++ ROOT/_pythonization/_roofit/_roojsonfactorywstool.py ++ ROOT/_pythonization/_roofit/_roomcstudy.py ++ ROOT/_pythonization/_roofit/_roomsgservice.py ++ ROOT/_pythonization/_roofit/_roonllvar.py ++ ROOT/_pythonization/_roofit/_rooprodpdf.py ++ ROOT/_pythonization/_roofit/_roorealvar.py ++ ROOT/_pythonization/_roofit/_roosimultaneous.py ++ ROOT/_pythonization/_roofit/_roosimwstool.py ++ ROOT/_pythonization/_roofit/_roovectordatastore.py ++ ROOT/_pythonization/_roofit/_rooworkspace.py ++ ROOT/_pythonization/_roofit/_utils.py) ++endif() ++ ++if(tmva) ++ list(APPEND PYROOT_EXTRA_PY2_PY3_SOURCE ++ ROOT/_pythonization/_tmva/_crossvalidation.py ++ ROOT/_pythonization/_tmva/_dataloader.py ++ ROOT/_pythonization/_tmva/_factory.py ++ ROOT/_pythonization/_tmva/__init__.py ++ ROOT/_pythonization/_tmva/_rbdt.py ++ ROOT/_pythonization/_tmva/_rtensor.py ++ ROOT/_pythonization/_tmva/_tree_inference.py ++ ROOT/_pythonization/_tmva/_utils.py) ++endif() ++ + list(APPEND PYROOT_EXTRA_HEADERS + inc/TPyDispatcher.h) + +@@ -39,32 +81,6 @@ set(py2_py3_sources + ROOT/_pythonization/_generic.py + ROOT/_pythonization/__init__.py + ROOT/_pythonization/_pyz_utils.py +- ROOT/_pythonization/_roofit/__init__.py +- ROOT/_pythonization/_roofit/_rooabscollection.py +- ROOT/_pythonization/_roofit/_rooabsdata.py +- ROOT/_pythonization/_roofit/_rooabspdf.py +- ROOT/_pythonization/_roofit/_rooabsreallvalue.py +- ROOT/_pythonization/_roofit/_rooabsreal.py +- ROOT/_pythonization/_roofit/_rooarglist.py +- ROOT/_pythonization/_roofit/_rooargset.py +- ROOT/_pythonization/_roofit/_roocategory.py +- ROOT/_pythonization/_roofit/_roochi2var.py +- ROOT/_pythonization/_roofit/_roodatahist.py +- ROOT/_pythonization/_roofit/_roodataset.py +- ROOT/_pythonization/_roofit/_roodecays.py +- ROOT/_pythonization/_roofit/_roogenfitstudy.py +- ROOT/_pythonization/_roofit/_rooglobalfunc.py +- ROOT/_pythonization/_roofit/_roojsonfactorywstool.py +- ROOT/_pythonization/_roofit/_roomcstudy.py +- ROOT/_pythonization/_roofit/_roomsgservice.py +- ROOT/_pythonization/_roofit/_roonllvar.py +- ROOT/_pythonization/_roofit/_rooprodpdf.py +- ROOT/_pythonization/_roofit/_roorealvar.py +- ROOT/_pythonization/_roofit/_roosimultaneous.py +- ROOT/_pythonization/_roofit/_roosimwstool.py +- ROOT/_pythonization/_roofit/_roovectordatastore.py +- ROOT/_pythonization/_roofit/_rooworkspace.py +- ROOT/_pythonization/_roofit/_utils.py + ROOT/_pythonization/_rvec.py + ROOT/_pythonization/_stl_vector.py + ROOT/_pythonization/_tarray.py +@@ -79,14 +95,6 @@ set(py2_py3_sources + ROOT/_pythonization/_tgraph.py + ROOT/_pythonization/_th1.py + ROOT/_pythonization/_titer.py +- ROOT/_pythonization/_tmva/_crossvalidation.py +- ROOT/_pythonization/_tmva/_dataloader.py +- ROOT/_pythonization/_tmva/_factory.py +- ROOT/_pythonization/_tmva/__init__.py +- ROOT/_pythonization/_tmva/_rbdt.py +- ROOT/_pythonization/_tmva/_rtensor.py +- ROOT/_pythonization/_tmva/_tree_inference.py +- ROOT/_pythonization/_tmva/_utils.py + ROOT/_pythonization/_tobject.py + ROOT/_pythonization/_tobjstring.py + ROOT/_pythonization/_tseqcollection.py +-- +2.39.2 + diff --git a/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch b/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch new file mode 100644 index 0000000..d295c53 --- /dev/null +++ b/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch @@ -0,0 +1,168 @@ +From c20004230608a5679ee6c0a7648af5f190c415c9 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Tue, 7 Mar 2023 11:53:01 +0100 +Subject: [PATCH] [RF] Rewrite `RooProdPdf.TestGetPartIntList` unit test + +In the ROOT 6.26 development cycle, the RooProdPdf was partially +rewritten in moden C++ with less manual memory allocation to improve +performance (PR #7907). + +In that PR, a unit test that verifies the RooProdPdf can correctly deal +with factorizing PDFs was implemented. However, that test used an +arbitrary PDF where the correct factorization was checked in a rather +crude way: check by hashing the content of the RooProdPdf cache element +for a given normalization set that said PR doesn't change any behavior +(the reference hash was hardcoded in the unit test). + +This commit suggests a better alternative for the unit test, checking +for a multidimensional product pdf of factorizing uniform pdfs that the +pdf values for differenc normalization sets is as expected. This should +cover the same functionality and is less fragile and implementation +dependend than hashing the cache elements. + +This closes GitHub issue #12430, as the rewritten test is not affected +anymore by the problem reported in that issue. +--- + roofit/roofitcore/inc/RooProdPdf.h | 2 - + roofit/roofitcore/src/RooProdPdf.cxx | 4 -- + roofit/roofitcore/test/testRooProdPdf.cxx | 88 +++++++---------------- + 3 files changed, 26 insertions(+), 68 deletions(-) + +diff --git a/roofit/roofitcore/inc/RooProdPdf.h b/roofit/roofitcore/inc/RooProdPdf.h +index 3d779a4901..0a76c839aa 100644 +--- a/roofit/roofitcore/inc/RooProdPdf.h ++++ b/roofit/roofitcore/inc/RooProdPdf.h +@@ -96,8 +96,6 @@ public: + + RooArgSet* findPdfNSet(RooAbsPdf const& pdf) const ; + +- void writeCacheToStream(std::ostream& os, RooArgSet const* nset) const; +- + std::unique_ptr compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext & ctx) const override; + + private: +diff --git a/roofit/roofitcore/src/RooProdPdf.cxx b/roofit/roofitcore/src/RooProdPdf.cxx +index 8c8c7e01c6..6af7279603 100644 +--- a/roofit/roofitcore/src/RooProdPdf.cxx ++++ b/roofit/roofitcore/src/RooProdPdf.cxx +@@ -2324,10 +2324,6 @@ void RooProdPdf::CacheElem::writeToStream(std::ostream& os) const { + } + } + +-void RooProdPdf::writeCacheToStream(std::ostream& os, RooArgSet const* nset) const { +- getCacheElem(nset)->writeToStream(os); +-} +- + std::unique_ptr RooProdPdf::fillNormSetForServer(RooArgSet const &normSet, RooAbsArg const &server) const + { + if (normSet.empty()) +diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx +index d794fb415a..ff334211d2 100644 +--- a/roofit/roofitcore/test/testRooProdPdf.cxx ++++ b/roofit/roofitcore/test/testRooProdPdf.cxx +@@ -74,76 +74,40 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, + return ss.str(); + }); + +-std::vector> allPossibleSubset(RooAbsCollection const &arr) ++TEST(RooProdPdf, TestGetPartIntList) + { +- std::vector> out; +- std::size_t n = arr.size(); +- +- std::size_t count = std::pow(2, n); +- for (std::size_t i = 0; i < count; i++) { +- out.emplace_back(); +- auto &back = out.back(); +- for (std::size_t j = 0; j < n; j++) { +- if ((i & (1 << j)) != 0) { +- back.push_back(arr[j]); +- } +- } +- } +- return out; +-} ++ RooHelpers::LocalChangeMsgLevel chmsglvl1{RooFit::ERROR, 0u, RooFit::InputArguments, true}; ++ RooHelpers::LocalChangeMsgLevel chmsglvl2{RooFit::WARNING, 0u, RooFit::NumIntegration, true}; + +-// Hash the integral configuration for all possible normalization sets. +-unsigned int hashRooProduct(RooProdPdf const &prod) +-{ +- RooArgSet params; +- prod.getParameters(nullptr, params); +- auto subsets = allPossibleSubset(params); ++ // This test checks if RooProdPdf::getPartIntList factorizes the integrals ++ // as expected, for the example of a three dimensional RooProdPdf. + +- std::stringstream ss; ++ RooWorkspace ws; + +- for (auto const &subset : subsets) { +- // this can't be on the stack, otherwise we will always get the same +- // address and therefore get wrong cache hits! +- auto nset = std::make_unique(subset.begin(), subset.end()); +- prod.writeCacheToStream(ss, nset.get()); +- } ++ double a = 10.; ++ double b = 4.; ++ double c = 2.5; + +- std::string s = ss.str(); +- return TString::Hash(s.c_str(), s.size()); +-} ++ auto &x = static_cast(*ws.factory("x[0, 0, " + std::to_string(a) + "]")); ++ auto &y = static_cast(*ws.factory("y[0, 0, " + std::to_string(b) + "]")); ++ auto &z = static_cast(*ws.factory("z[0, 0, " + std::to_string(c) + "]")); + +-TEST(RooProdPdf, TestGetPartIntList) +-{ +- // This test checks if RooProdPdf::getPartIntList factorizes the integrals +- // as expected. +- // Instead of trying to construct tests for all possible cases by hand, +- // this test creates a product where the factors have different patters of +- // overlapping parameters. To make sure all possible cases are covered, we +- // are using all possible subsets of the parameters one after the other to +- // create the reference test result. +- +- RooRealVar x{"x", "x", 1., 0, 10}; +- RooRealVar y{"y", "y", 1., 0, 10}; +- RooRealVar z{"z", "z", 1., 0, 10}; +- +- RooRealVar m1{"m1", "m1", 1., 0, 10}; +- RooRealVar m2{"m2", "m2", 1., 0, 10}; +- RooRealVar m3{"m3", "m3", 1., 0, 10}; +- +- RooGenericPdf gauss1{"gauss1", "gauss1", "x+m1", {x, m1}}; +- RooGenericPdf gauss2{"gauss2", "gauss2", "x+m2", {x, m2}}; +- RooGenericPdf gauss3{"gauss3", "gauss3", "y+m3", {y, m3}}; +- RooGenericPdf gauss4{"gauss4", "gauss4", "z+m1", {z, m1}}; +- RooGenericPdf gauss5{"gauss5", "gauss5", "x+m1", {x, m1}}; ++ // Factorize the product in one 1D and one 2D pdf to get a more complicated ++ // and complete test case. ++ ws.factory("Uniform::pdf1({x})"); ++ ws.factory("Uniform::pdf2({y, z})"); + + // Product of all the pdfs. +- RooProdPdf prod{"prod", "prod", RooArgList{gauss1, gauss2, gauss3, gauss4, gauss5}}; +- +- // We hash the string serializations of caches for all possible +- // normalization sets and compare it to the expected hash. +- // This value must be updated if the convention for integral names in +- // RooProdPdf changes. +- EXPECT_EQ(hashRooProduct(prod), 2448666198); ++ auto &prod = static_cast(*ws.factory("PROD::prod(pdf1, pdf2)")); ++ ++ EXPECT_DOUBLE_EQ(prod.getVal({}), 1.0); ++ EXPECT_DOUBLE_EQ(prod.getVal({x}), 1. / a); ++ EXPECT_DOUBLE_EQ(prod.getVal({y}), 1. / b); ++ EXPECT_DOUBLE_EQ(prod.getVal({z}), 1. / c); ++ EXPECT_DOUBLE_EQ(prod.getVal({x, y}), 1. / a / b); ++ EXPECT_DOUBLE_EQ(prod.getVal({x, z}), 1. / a / c); ++ EXPECT_DOUBLE_EQ(prod.getVal({y, z}), 1. / b / c); ++ EXPECT_DOUBLE_EQ(prod.getVal({x, y, z}), 1. / a / b / c); + } + + TEST(RooProdPdf, TestDepsAreCond) +-- +2.39.2 + diff --git a/root-Set-DataLayout-from-our-TargetMachine.patch b/root-Set-DataLayout-from-our-TargetMachine.patch new file mode 100644 index 0000000..d936302 --- /dev/null +++ b/root-Set-DataLayout-from-our-TargetMachine.patch @@ -0,0 +1,32 @@ +From d4c66a41ae50ecfb905ebe66eb296de4e5c146d7 Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Thu, 16 Feb 2023 16:40:16 +0100 +Subject: [PATCH 2/2] [cling] Set DataLayout from our TargetMachine + +Otherwise LLJIT's constructor will ask the LLJITBuilder's JTMB to +create a DataLayout. As we don't propagate the JTMB (yet -- we +probably should!), this will be wrong if target features influence +the DataLayout. + +This should fix #12293. + +(cherry picked from commit 254bac6cfad78ed671ec3af3d2001c52487b4c86) +--- + interpreter/cling/lib/Interpreter/IncrementalJIT.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +index 80b6761491..e1721a4d45 100644 +--- a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp ++++ b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +@@ -358,6 +358,7 @@ IncrementalJIT::IncrementalJIT( + ErrorAsOutParameter _(&Err); + + LLJITBuilder Builder; ++ Builder.setDataLayout(TM->createDataLayout()); + Builder.setExecutorProcessControl(std::move(EPC)); + + // Create ObjectLinkingLayer with our own MemoryManager. +-- +2.39.2 + diff --git a/root-Simplify-creation-of-TargetMachine.patch b/root-Simplify-creation-of-TargetMachine.patch new file mode 100644 index 0000000..8eaa5d8 --- /dev/null +++ b/root-Simplify-creation-of-TargetMachine.patch @@ -0,0 +1,94 @@ +From 63d16de24e695a847274fa3044127cefffc7b0b6 Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Fri, 3 Feb 2023 11:52:22 +0100 +Subject: [PATCH 1/2] [cling] Simplify creation of TargetMachine + +We know exactly which target triple and features the CompilerInstance +wants, we don't need to (and probably must not) second-guess that. This +brings us closer to upstream clang-repl and also includes the change of +https://reviews.llvm.org/D128853 which is crucial for RISC-V. + +(cherry picked from commit df0905c499a541eaac3be63c0455a07946022983) +--- + .../cling/lib/Interpreter/IncrementalJIT.cpp | 34 ++++++------------- + 1 file changed, 11 insertions(+), 23 deletions(-) + +diff --git a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +index 5342945ed1..80b6761491 100644 +--- a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp ++++ b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp +@@ -15,6 +15,7 @@ + #include "cling/Utils/Output.h" + #include "cling/Utils/Utils.h" + ++#include + #include + #include + +@@ -292,45 +293,32 @@ Error RTDynamicLibrarySearchGenerator::tryToGenerate( + } + + static std::unique_ptr +-CreateHostTargetMachine(const clang::CompilerInstance& CI) { +- const clang::TargetOptions& TargetOpts = CI.getTargetOpts(); +- const clang::CodeGenOptions& CGOpt = CI.getCodeGenOpts(); +- const std::string& Triple = TargetOpts.Triple; +- +- std::string Error; +- const Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error); +- if (!TheTarget) { +- cling::errs() << "cling::IncrementalExecutor: unable to find target:\n" +- << Error; +- return std::unique_ptr(); +- } +- ++CreateTargetMachine(const clang::CompilerInstance& CI) { + CodeGenOpt::Level OptLevel = CodeGenOpt::Default; +- switch (CGOpt.OptimizationLevel) { ++ switch (CI.getCodeGenOpts().OptimizationLevel) { + case 0: OptLevel = CodeGenOpt::None; break; + case 1: OptLevel = CodeGenOpt::Less; break; + case 2: OptLevel = CodeGenOpt::Default; break; + case 3: OptLevel = CodeGenOpt::Aggressive; break; + default: OptLevel = CodeGenOpt::Default; + } ++ + using namespace llvm::orc; +- auto JTMB = JITTargetMachineBuilder::detectHost(); +- if (!JTMB) +- logAllUnhandledErrors(JTMB.takeError(), llvm::errs(), +- "Error detecting host"); ++ auto JTMB = JITTargetMachineBuilder(CI.getTarget().getTriple()); ++ JTMB.addFeatures(CI.getTargetOpts().Features); + +- JTMB->setCodeGenOptLevel(OptLevel); ++ JTMB.setCodeGenOptLevel(OptLevel); + #ifdef _WIN32 +- JTMB->getOptions().EmulatedTLS = false; ++ JTMB.getOptions().EmulatedTLS = false; + #endif // _WIN32 + + #if defined(__powerpc64__) || defined(__PPC64__) + // We have to use large code model for PowerPC64 because TOC and text sections + // can be more than 2GB apart. +- JTMB->setCodeModel(CodeModel::Large); ++ JTMB.setCodeModel(CodeModel::Large); + #endif + +- std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); ++ std::unique_ptr TM = cantFail(JTMB.createTargetMachine()); + + // Forcefully disable GlobalISel, it might be enabled on AArch64 without + // optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this +@@ -365,7 +353,7 @@ IncrementalJIT::IncrementalJIT( + std::unique_ptr EPC, Error& Err, + void *ExtraLibHandle, bool Verbose) + : SkipHostProcessLookup(false), +- TM(CreateHostTargetMachine(CI)), ++ TM(CreateTargetMachine(CI)), + SingleThreadedContext(std::make_unique()) { + ErrorAsOutParameter _(&Err); + +-- +2.39.2 + diff --git a/root-add-missing-include-cstdint.patch b/root-add-missing-include-cstdint.patch index f86f0ee..0572ac3 100644 --- a/root-add-missing-include-cstdint.patch +++ b/root-add-missing-include-cstdint.patch @@ -1,4 +1,4 @@ -From cf6a925dfda2411b979da368e4cea769dbe6238a Mon Sep 17 00:00:00 2001 +From 87d302b9192538e18645f4c3efadc70e9a20a913 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 20 Jan 2023 06:34:11 +0100 Subject: [PATCH] Add missing #include @@ -14,8 +14,8 @@ index 69ee9ba99d..6367dfa93f 100644 --- a/tree/ntuple/v7/inc/ROOT/RDaos.hxx +++ b/tree/ntuple/v7/inc/ROOT/RDaos.hxx @@ -22,6 +22,7 @@ - // Also, this header file is known to provide macros that conflict with std::min()/std::max(). - extern "C" void d_rank_list_free(d_rank_list_t *rank_list); + + #include +#include #include @@ -31,8 +31,8 @@ index a975b5ce5d..be08eba924 100644 +#include #include + #include #include - -- -2.39.0 +2.39.1 diff --git a/root-avoid-deleting-TFormulas-twice.patch b/root-avoid-deleting-TFormulas-twice.patch deleted file mode 100644 index af758ed..0000000 --- a/root-avoid-deleting-TFormulas-twice.patch +++ /dev/null @@ -1,37 +0,0 @@ -From c7dd58f3bc012690bab16763b1d73a4b7106ced9 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 29 Mar 2022 15:40:35 +0200 -Subject: [PATCH] Avoid deleting TFormulas twice - -Example failure: - - 562/1224 Test #541: tutorial-gl-gltf3 ...................................................***Failed Error regular expression found in output. Regex=[Error in <] 1.36 sec -Processing /builddir/build/BUILD/root-6.26.00/tutorials/gl/gltf3.C... -Error in : A list is accessing an object (0x7fffd1c959a0) already deleted (list name = Functions) -Error in : A list is accessing an object (0x7fffd1c95750) already deleted (list name = Functions) - -The commit also changes the filename used in -tutorials/hist/fillrandom.py to be different form the one used in -tutorials/hist/fillrandom.C (and tutorials/pyroot/fillrandom.py) ---- - tutorials/gl/gltf3.C | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tutorials/gl/gltf3.C b/tutorials/gl/gltf3.C -index 3697e69b7a..4089f0d2b7 100644 ---- a/tutorials/gl/gltf3.C -+++ b/tutorials/gl/gltf3.C -@@ -27,8 +27,8 @@ void gltf3() - TPad *tf3Pad = new TPad("box", "box", 0.04, 0.04, 0.96, 0.8); - tf3Pad->Draw(); - -- TFormula f1 = TFormula("f1", "x*x + y*y + z*z + 2*y - 1"); -- TFormula f2 = TFormula("f2", "x*x + y*y + z*z - 2*y - 1"); -+ TFormula *f1 = new TFormula("f1", "x*x + y*y + z*z + 2*y - 1"); -+ TFormula *f2 = new TFormula("f2", "x*x + y*y + z*z - 2*y - 1"); - - // Klein bottle with cut top&bottom parts - // The Klein bottle is a closed non-orientable surface that has no --- -2.35.1 - diff --git a/root-avoid-deprecated-numpy.object.patch b/root-avoid-deprecated-numpy.object.patch deleted file mode 100644 index 9330bac..0000000 --- a/root-avoid-deprecated-numpy.object.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 1e7dc9fcd60133375c3b725d8317fab339c2bf38 Mon Sep 17 00:00:00 2001 -From: Vincenzo Eduardo Padulano -Date: Mon, 30 Jan 2023 10:31:29 +0100 -Subject: [PATCH] [DF][PyROOT] Avoid deprecated numpy.object - ---- - .../pythonizations/python/ROOT/_pythonization/_rdataframe.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -index 59cb0cd260dd..01cb08b0365f 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -@@ -287,7 +287,7 @@ def GetValue(self): - tmp = numpy.asarray(cpp_reference) # This adopts the memory of the C++ object. - self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) - else: -- tmp = numpy.empty(len(cpp_reference), dtype=numpy.object) -+ tmp = numpy.empty(len(cpp_reference), dtype=object) - for i, x in enumerate(cpp_reference): - tmp[i] = x # This creates only the wrapping of the objects and does not copy. - self._py_arrays[column] = ndarray(tmp, self._result_ptrs[column]) diff --git a/root-avoid-race-condition-tutorial-roofit-rf512.patch b/root-avoid-race-condition-tutorial-roofit-rf512.patch deleted file mode 100644 index d0c40e8..0000000 --- a/root-avoid-race-condition-tutorial-roofit-rf512.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 91de99623d0e945610be46d46e84b54985415aeb Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 28 Oct 2022 06:27:10 +0200 -Subject: [PATCH] Avoid race condition between - tutorial/roofit/rf512_wsfactory_oper.C and - tutorial/roofit/rf512_wsfactory_oper.py - -When run in parallel they delete eachother's files: - -cc1plus: fatal error: /builddir/build/BUILD/root-6.26.08/redhat-linux-build/runtutorials/RooCFAuto000Pdf_cxx_ACLiC_dict.cxx: No such file or directory -compilation terminated. -/usr/bin/ld: cannot find /builddir/build/BUILD/root-6.26.08/redhat-linux-build/runtutorials/RooCFAuto000Pdf_cxx_ACLiC_dict.o: No such file or directory -collect2: error: ld returned 1 exit status ---- - tutorials/CMakeLists.txt | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index cfba4d3ed9..6ae9be5869 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -483,7 +483,7 @@ set(hist-hbars-depends tutorial-tree-cernbuild) - set(benchmarks-depends tutorial-hsimple - tutorial-fit-fit1 - tutorial-fit-myfit -- tutorial-hist-h1ReadAndDraw -+ tutorial-hist-h1ReadAndDraw - tutorial-hist-FirstContour - tutorial-geom-na49view - tutorial-tree-ntuple1 -@@ -731,7 +731,7 @@ if(ROOT_pyroot_FOUND) - set(pyroot-benchmarks-depends tutorial-pyroot-hsimple-py - tutorial-pyroot-fit1-py - tutorial-pyroot-na49view-py -- tutorial-pyroot-h1ReadAndDraw-py -+ tutorial-pyroot-h1ReadAndDraw-py - tutorial-pyroot-ntuple1-py) - set(pyroot-fit1-depends tutorial-pyroot-fillrandom-py) - set(pyroot-na49view-depends tutorial-pyroot-geometry-py) -@@ -739,6 +739,7 @@ if(ROOT_pyroot_FOUND) - - # Avoid a race condition: make sure Python tutorial is ran after C++ tutorial - set(roofit-rf104_classfactory-depends tutorial-roofit-rf104_classfactory) -+ set(roofit-rf512_wsfactory_oper-depends tutorial-roofit-rf512_wsfactory_oper) - - #---------------------------------------------------------------------- - # List requirements for python tutorials. --- -2.37.3 - diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch index 63490b5..caa3076 100644 --- a/root-big-endian-byte-swap.patch +++ b/root-big-endian-byte-swap.patch @@ -1,15 +1,15 @@ -From d9e03aad7a5132fe9db9992eecb47ee4e91c354c Mon Sep 17 00:00:00 2001 +From b32c7a1b080cb5d14f242070bf906ea6929d604d Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 25 Mar 2022 11:13:12 +0100 Subject: [PATCH] Byte swap values read from the protobuf raw data stream on big endian --- - tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 23 +++++++++++++++----- + 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -index 3b0a30cdb0..23e41d746f 100644 +index ab457dcddc..d701fb3299 100644 --- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx @@ -1,3 +1,4 @@ @@ -17,24 +17,42 @@ index 3b0a30cdb0..23e41d746f 100644 #include "TMVA/RModelParser_ONNX.hxx" #include "onnx_proto3.pb.h" -@@ -980,9 +981,14 @@ RModel RModelParser_ONNX::Parse(std::string filename){ - //void* data = malloc (fLength * sizeof(float)); - std::shared_ptr data(malloc(fLength * sizeof(float)), free); +@@ -335,9 +336,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose) + case ETensorType::FLOAT: { + std::shared_ptr data(malloc(fLength * sizeof(float)), free); -- if (tensorproto->raw_data().empty() == false){ -- auto raw_data_ptr = reinterpret_cast(const_cast(tensorproto->raw_data().c_str())); -- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float)); -+ if (!tensorproto->raw_data().empty()) { +- if (tensorproto->raw_data().empty() == false) { +- auto raw_data_ptr = reinterpret_cast(const_cast(tensorproto->raw_data().c_str())); +- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float)); ++ if (!tensorproto->raw_data().empty()) { +#ifdef R__BYTESWAP -+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float)); ++ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float)); +#else -+ for (std::size_t k = 0; k < fLength; ++k) -+ (reinterpret_cast(data.get()))[k] = -+ R__bswap_32((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); ++ for (std::size_t k = 0; k < fLength; ++k) ++ (reinterpret_cast(data.get()))[k] = ++ Rbswap_32((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); +#endif - }else{ - tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), static_cast(data.get())); - } + } else { + tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), + static_cast(data.get())); +@@ -350,9 +356,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose) + case ETensorType::INT64: { + std::shared_ptr data(malloc(fLength * sizeof(int64_t)), free); + +- if (tensorproto->raw_data().empty() == false) { +- auto raw_data_ptr = reinterpret_cast(const_cast(tensorproto->raw_data().c_str())); +- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(int64_t)); ++ if (!tensorproto->raw_data().empty()) { ++#ifdef R__BYTESWAP ++ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(int64_t)); ++#else ++ for (std::size_t k = 0; k < fLength; ++k) ++ (reinterpret_cast(data.get()))[k] = ++ Rbswap_64((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); ++#endif + } else { + tensorproto->mutable_int64_data()->ExtractSubrange(0, tensorproto->int64_data_size(), + static_cast(data.get())); -- -2.35.1 +2.39.2 diff --git a/root-cling-Disable-outline-atomics-on-AArch64.patch b/root-cling-Disable-outline-atomics-on-AArch64.patch new file mode 100644 index 0000000..ca00e5f --- /dev/null +++ b/root-cling-Disable-outline-atomics-on-AArch64.patch @@ -0,0 +1,35 @@ +From ddf9a8c3d113e3a3d48dbe13b6b4a6bf2338fb7a Mon Sep 17 00:00:00 2001 +From: Jonas Hahnfeld +Date: Mon, 20 Feb 2023 10:08:00 +0100 +Subject: [PATCH] [cling] Disable outline-atomics on AArch64 + +The routines __aarch64_* are defined in the static library libgcc.a +and not necessarily included in libCling or otherwise present in the +process, so the interpreter has a hard time finding them. + +Fixes #12294 +--- + interpreter/cling/lib/Interpreter/CIFactory.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp +index b135bf21aa..b5b5df2e8e 100644 +--- a/interpreter/cling/lib/Interpreter/CIFactory.cpp ++++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp +@@ -1254,6 +1254,13 @@ namespace { + #if __APPLE__ && __arm64__ + argvCompile.push_back("--target=arm64-apple-darwin20.3.0"); + #endif ++#if __aarch64__ ++ // Disable outline-atomics on AArch64; the routines __aarch64_* are defined ++ // in the static library libgcc.a and not necessarily included in libCling ++ // or otherwise present in the process, so the interpreter has a hard time ++ // finding them. ++ argvCompile.push_back("-mno-outline-atomics"); ++#endif + + // Variables for storing the memory of the C-string arguments. + // FIXME: We shouldn't use C-strings in the first place, but just use +-- +2.39.2 + diff --git a/root-core-base-test.patch b/root-core-base-test.patch deleted file mode 100644 index c268390..0000000 --- a/root-core-base-test.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 12d52a60629e1639ced23a1919bd85628d9135ea Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 3 Apr 2022 23:23:00 +0200 -Subject: [PATCH] Fix library link order - -Fixes undefined references when linking CoreBaseTests - -../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::TMemFile(char const*, TMemFile::ZeroCopyView_t const&)' -../../../lib/libCling.so.6.26.00: undefined reference to `TFile::TFile(char const*, char const*, char const*, int)' -../../../lib/libCling.so.6.26.00: undefined reference to `TFile::~TFile()' -../../../lib/libCling.so.6.26.00: undefined reference to `TStreamerInfo::TStreamerInfo()' -../../../lib/libCling.so.6.26.00: undefined reference to `TMemFile::~TMemFile()' ---- - core/base/test/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/core/base/test/CMakeLists.txt b/core/base/test/CMakeLists.txt -index 4b08cb0390..9b52e83405 100644 ---- a/core/base/test/CMakeLists.txt -+++ b/core/base/test/CMakeLists.txt -@@ -22,6 +22,6 @@ ROOT_ADD_GTEST(CoreBaseTests - TExceptionHandlerTests.cxx - TStringTest.cxx - TBitsTests.cxx -- LIBRARIES Core RIO ${extralibs}) -+ LIBRARIES ${extralibs} RIO Core) - - ROOT_ADD_GTEST(CoreErrorTests TErrorTests.cxx LIBRARIES Core) --- -2.35.1 - diff --git a/root-dataframe-callback.patch b/root-dataframe-callback.patch deleted file mode 100644 index 57ffc08..0000000 --- a/root-dataframe-callback.patch +++ /dev/null @@ -1,45 +0,0 @@ -From d849bc502eec4ec95d15ca41319ba0467ab22759 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 15:55:29 +0100 -Subject: [PATCH] =?UTF-8?q?NENTRIES=20is=20not=20always=20a=20multiple=20o?= - =?UTF-8?q?f=20the=20expected=20size.=20NENTRIES=20is=2010.=20On=20a=204?= - =?UTF-8?q?=20core=20machine=20the=20expected=20size=20in=202=20=C3=97=204?= - =?UTF-8?q?=20=3D=208.=20Looping=20over=20the=208=20IDs,=202=20have=202=20?= - =?UTF-8?q?entries=20the=20remaining=206=20have=201=20entry=20for=20a=20to?= - =?UTF-8?q?tal=20of=2010=20(NENTRIES)=20entries.=20The=20test=20checked=20?= - =?UTF-8?q?that=20each=20ID=20had=20NENTRIES/(expected=20size)=20entries,?= - =?UTF-8?q?=20which=20in=20this=20case=20with=20integer=20division=20equal?= - =?UTF-8?q?s=201=20entry,=20which=20was=20not=20the=20correct=20test.=20Th?= - =?UTF-8?q?is=20commit=20chenges=20to=20test=20to=20check=20that=20the=20t?= - =?UTF-8?q?otal=20number=20of=20entries=20summed=20for=20all=20IDs=20equal?= - =?UTF-8?q?s=20NENTRIES.?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - ---- - tree/dataframe/test/dataframe_samplecallback.cxx | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx -index 188d58dd31..d387ea5f86 100644 ---- a/tree/dataframe/test/dataframe_samplecallback.cxx -+++ b/tree/dataframe/test/dataframe_samplecallback.cxx -@@ -125,11 +125,13 @@ TEST_P(RDFSampleCallback, EmptySourceSampleID) { - // RDF with empty sources tries to produce 2 tasks per slot when MT is enabled - const auto expectedSize = std::min(NENTRIES, df.GetNSlots() * 2ull); - ASSERT_EQ(result->size(), expectedSize); -+ ULong64_t entries = 0; - for (auto &id : *result) { - // check that all entries start with the expected string - EXPECT_TRUE(id.AsString().rfind("Empty source, range: {", 0) == 0); -- EXPECT_EQ(id.NEntries(), NENTRIES / expectedSize); -+ entries += id.NEntries(); - } -+ EXPECT_EQ(entries, NENTRIES); - } else { - ASSERT_EQ(result->size(), 1); - const auto &id = result->at(0); --- -2.35.1 - diff --git a/root-different-filename.patch b/root-different-filename.patch deleted file mode 100644 index ef42c3d..0000000 --- a/root-different-filename.patch +++ /dev/null @@ -1,48 +0,0 @@ -From a486081a8065154308b23381c3a77f3fdb73de97 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 16 Nov 2022 20:44:48 +0100 -Subject: [PATCH] Use different filename in loopdir.C and loopdir11.C to avoid - race condition - - Start 672: tutorial-io-loopdir - 690/1156 Test #666: tutorial-io-double32 ................................................ Passed 2.42 sec - Start 673: tutorial-io-loopdir11 - 691/1156 Test #673: tutorial-io-loopdir11 ............................................... Passed 0.76 sec - Start 674: tutorial-io-mergeSelective - 692/1156 Test #672: tutorial-io-loopdir .................................................***Failed Error regular expression found in output. Regex=[Error in <] 1.23 sec -Processing /builddir/build/BUILD/root-6.26.10/tutorials/io/loopdir.C... -Info in : ps file hsimple.ps has been created -Info in : Current canvas added to ps file hsimple.ps -Info in : Current canvas added to ps file hsimple.ps -Info in : Current canvas added to ps file hsimple.ps -Info in : ps file hsimple.ps has been closed -Error in : Cannot open temporary file: hsimple.ps_tmp_2089748 ---- - tutorials/io/loopdir11.C | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/tutorials/io/loopdir11.C b/tutorials/io/loopdir11.C -index b5f9f4719c..bf8c33b442 100644 ---- a/tutorials/io/loopdir11.C -+++ b/tutorials/io/loopdir11.C -@@ -12,14 +12,14 @@ - void loopdir11() { - TFile *f1 = TFile::Open("hsimple.root"); - TCanvas c1; -- c1.Print("hsimple.ps["); -+ c1.Print("hsimple11.ps["); - for(auto k : *f1->GetListOfKeys()) { - TKey *key = static_cast(k); - TClass *cl = gROOT->GetClass(key->GetClassName()); - if (!cl->InheritsFrom("TH1")) continue; - TH1 *h = key->ReadObject(); - h->Draw(); -- c1.Print("hsimple.ps"); -+ c1.Print("hsimple11.ps"); - } -- c1.Print("hsimple.ps]"); -+ c1.Print("hsimple11.ps]"); - } --- -2.38.1 - diff --git a/root-do-not-remove-Wp-before-D-and-U.patch b/root-do-not-remove-Wp-before-D-and-U.patch new file mode 100644 index 0000000..820b7af --- /dev/null +++ b/root-do-not-remove-Wp-before-D-and-U.patch @@ -0,0 +1,44 @@ +From 0191a987b7583c2aa84b1293105db353fee40b1d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 10 Mar 2023 20:49:02 +0100 +Subject: [PATCH] Do not remove -Wp, before -D and -U when recording used + compiler flags + +This breaks the pattern used when undefining and then defining a +variable in the same flag: + +$ echo | g++ -Wp,-UVAR,-DVAR=1 -c -x c++ - + +Here -Wp,-UVAR,-DVAR=1 will first undefine VAR and then define it to 1 + +If the -Wp, is dropped, this fails: +$ echo | g++ -UVAR,-DVAR=1 -c -x c++ - +: warning: extra tokens at end of #undef directive + +Now it will only undefine VAR, but not defin it. I.e. + +insted of + +you get + +which explains the rather cryptic warning about extra token after #undef. +--- + cmake/modules/RootConfiguration.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake +index 3d1ae9be53..042b43f039 100644 +--- a/cmake/modules/RootConfiguration.cmake ++++ b/cmake/modules/RootConfiguration.cmake +@@ -729,7 +729,7 @@ if (cxxmodules) + endif() + + string(REGEX REPLACE "(^|[ ]*)-W[^ ]*" "" __fflags "${CMAKE_Fortran_FLAGS}") +-string(REGEX MATCHALL "-(D|U)[^ ]*" __defs "${CMAKE_CXX_FLAGS}") ++string(REGEX MATCHALL "(-Wp,)?-(D|U)[^ ]*" __defs "${CMAKE_CXX_FLAGS}") + set(ROOT_COMPILER_FLAG_HINTS "# + set(ROOT_DEFINITIONS \"${__defs}\") + set(ROOT_CXX_FLAGS \"${__cxxflags}\") +-- +2.39.2 + diff --git a/root-dont-install-roofit-files-fix.patch b/root-dont-install-roofit-files-fix.patch new file mode 100644 index 0000000..295a4b7 --- /dev/null +++ b/root-dont-install-roofit-files-fix.patch @@ -0,0 +1,26 @@ +From 74aaf99530443a712f9b0577d8edde615ea8902d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 4 Mar 2023 21:27:35 +0100 +Subject: [PATCH] Use FILTER instead of REMOVE_ITEM since GLOB returns absolute + paths + +--- + build/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index e964b5e255..2b24b1d6e6 100644 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -30,7 +30,7 @@ ROOT_EXECUTABLE(rmkdepend + if(NOT MSVC AND _BUILD_TYPE_UPPER MATCHES "DEBUG|RELWITHDEBINFO") + file(GLOB PRETTY_PRINTERS "gdbPrinters/*.so-gdb.py") + if(NOT roofit) +- list(REMOVE_ITEM PRETTY_PRINTERS gdbPrinters/libRooFitCore.so-gdb.py) ++ list(FILTER PRETTY_PRINTERS EXCLUDE REGEX libRooFitCore.so-gdb.py) + endif() + set(PRETTY_PRINTER_DESTS) + foreach(PRETTY_PRINTER ${PRETTY_PRINTERS}) +-- +2.39.2 + diff --git a/root-dont-install-roofit-files-when-roofit-is-disabled.patch b/root-dont-install-roofit-files-when-roofit-is-disabled.patch new file mode 100644 index 0000000..7b4881d --- /dev/null +++ b/root-dont-install-roofit-files-when-roofit-is-disabled.patch @@ -0,0 +1,75 @@ +From df636dcc05d0284f39427ea5be1d72e7faca90d8 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 1 Mar 2023 18:30:35 +0100 +Subject: [PATCH] Don't install roofit files when roofit is disabled + +--- + CMakeLists.txt | 14 ++++++++++++-- + build/CMakeLists.txt | 3 +++ + core/base/CMakeLists.txt | 2 ++ + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e1d998fde2..7992e27b64 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -591,7 +591,14 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_INSTALL_PREFIX) + else() + install(DIRECTORY README DESTINATION ${CMAKE_INSTALL_DOCDIR}) + endif() ++ set(ETC_PATT_EXCL) ++ if(NOT roofit) ++ list(APPEND ETC_PATT_EXCL PATTERN HistFactorySchema.dtd EXCLUDE) ++ list(APPEND ETC_PATT_EXCL PATTERN RooFitHS3_wsexportkeys.json EXCLUDE) ++ list(APPEND ETC_PATT_EXCL PATTERN RooFitHS3_wsfactoryexpressions.json EXCLUDE) ++ endif() + install(DIRECTORY etc/ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR} USE_SOURCE_PERMISSIONS ++ ${ETC_PATT_EXCL} + PATTERN "system.rootrc" EXCLUDE + PATTERN "system.rootauthrc" EXCLUDE + PATTERN "system.rootdaemonrc" EXCLUDE +@@ -612,8 +619,11 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_INSTALL_PREFIX) + set(MAN_PATT_EXCL PATTERN xproofd.1 EXCLUDE) + endif() + if(NOT fortran OR NOT CMAKE_Fortran_COMPILER) +- set(MAN_PATT_EXCL ${MAN_PATT_EXCL} PATTERN h2root.1 EXCLUDE) +- set(MAN_PATT_EXCL ${MAN_PATT_EXCL} PATTERN g2root.1 EXCLUDE) ++ list(APPEND MAN_PATT_EXCL PATTERN h2root.1 EXCLUDE) ++ list(APPEND MAN_PATT_EXCL PATTERN g2root.1 EXCLUDE) ++ endif() ++ if(NOT roofit) ++ list(APPEND MAN_PATT_EXCL PATTERN prepareHistFactory.1 EXCLUDE) + endif() + install(DIRECTORY man/ DESTINATION ${CMAKE_INSTALL_MANDIR} ${MAN_PATT_EXCL}) + install(DIRECTORY tutorials/ DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests) +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index 9f60c813ac..e964b5e255 100644 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -29,6 +29,9 @@ ROOT_EXECUTABLE(rmkdepend + + if(NOT MSVC AND _BUILD_TYPE_UPPER MATCHES "DEBUG|RELWITHDEBINFO") + file(GLOB PRETTY_PRINTERS "gdbPrinters/*.so-gdb.py") ++ if(NOT roofit) ++ list(REMOVE_ITEM PRETTY_PRINTERS gdbPrinters/libRooFitCore.so-gdb.py) ++ endif() + set(PRETTY_PRINTER_DESTS) + foreach(PRETTY_PRINTER ${PRETTY_PRINTERS}) + get_filename_component(PRETTY_PRINTER_DEST ${PRETTY_PRINTER} NAME) +diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt +index 0c9df7c896..df701fedea 100644 +--- a/core/base/CMakeLists.txt ++++ b/core/base/CMakeLists.txt +@@ -224,7 +224,9 @@ if(NOT MSVC) + #---addRootC++CmdMan------------------------------------------------------------------------- + generateManual(rootMan ${CMAKE_CURRENT_SOURCE_DIR}/src/root-argparse.py ${CMAKE_BINARY_DIR}/man/root.1) + generateManual(haddMan ${CMAKE_SOURCE_DIR}/main/src/hadd-argparse.py ${CMAKE_BINARY_DIR}/man/hadd.1) ++if (roofit) + generateManual(hist2workspaceMan ${CMAKE_SOURCE_DIR}/roofit/histfactory/src/hist2workspace-argparse.py ${CMAKE_BINARY_DIR}/man/hist2workspace.1) ++endif() + generateManual(rootclingMan ${CMAKE_SOURCE_DIR}/core/dictgen/src/rootcling-argparse.py ${CMAKE_BINARY_DIR}/man/rootcling.1) + + #---addRootPyCmdMan--------------------------------------------------------------------------- +-- +2.39.2 + diff --git a/root-endian-warn.patch b/root-endian-warn.patch deleted file mode 100644 index 77cd6b9..0000000 --- a/root-endian-warn.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ba0dc65e558fd916dbe18f8dbe8208a3be932c25 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 28 Mar 2022 09:20:18 +0200 -Subject: [PATCH 2/2] Ignore warnings about RooNaNPacker not being implemented - for big endian - -This warning is triggered in many tests, so it makes sense to put it -in the default ignored set. ---- - test/unit_testing_support/ROOTUnitTestSupport.cxx | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/test/unit_testing_support/ROOTUnitTestSupport.cxx b/test/unit_testing_support/ROOTUnitTestSupport.cxx -index 259ab4e09c..79cd476950 100644 ---- a/test/unit_testing_support/ROOTUnitTestSupport.cxx -+++ b/test/unit_testing_support/ROOTUnitTestSupport.cxx -@@ -73,6 +73,13 @@ static struct ForbidDiagnostics { - return; - } - -+ // FIXME: RooNaNPacker warns about not being implemented for big endian -+ if (level == kWarning -+ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) { -+ std::cerr << "Warning in " << location << " " << msg << std::endl; -+ return; -+ } -+ - FAIL() << "Received unexpected diagnostic of severity " - << level - << " at '" << location << "' reading '" << msg << "'.\n" --- -2.35.1 - diff --git a/root-fix-compilation-with-gcc-12.patch b/root-fix-compilation-with-gcc-12.patch deleted file mode 100644 index 2c34516..0000000 --- a/root-fix-compilation-with-gcc-12.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 3bc55ece1db8b32c5e86fd6b85856addd67265fb Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 15 Jan 2022 06:35:58 +0100 -Subject: [PATCH] Fix compilation with gcc 12 - -Fixes error: use of deleted function - -/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp: In member function 'std::string llvm::NVPTXAsmPrinter::getPTXFundamentalTypeStr(llvm::Type*, bool) const': -/builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:1319:10: error: use of deleted function 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::nullptr_t) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator; std::nullptr_t = std::nullptr_t]' - 1319 | return nullptr; - | ^~~~~~~ -In file included from /usr/include/c++/12/string:53, - from /usr/include/c++/12/bits/locale_classes.h:40, - from /usr/include/c++/12/bits/ios_base.h:41, - from /usr/include/c++/12/streambuf:41, - from /usr/include/c++/12/bits/streambuf_iterator.h:35, - from /usr/include/c++/12/iterator:66, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/iterator_range.h:21, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/SmallVector.h:16, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/STLExtras.h:20, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/ADT/StringRef.h:12, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/include/llvm/Pass.h:31, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTX.h:17, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.h:17, - from /builddir/build/BUILD/root-6.24.06/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:14: -/usr/include/c++/12/bits/basic_string.h:732:7: note: declared here - 732 | basic_string(nullptr_t) = delete; - | ^~~~~~~~~~~~ - -Fix backported from LLVM upstrea https://reviews.llvm.org/D87697 ---- - interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp -index 5f38b4a3c4..bfa74bd98f 100644 ---- a/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp -+++ b/interpreter/llvm/src/lib/Target/NVPTX/NVPTXAsmPrinter.cpp -@@ -1281,9 +1281,6 @@ void NVPTXAsmPrinter::emitPTXAddressSpace(unsigned int AddressSpace, - std::string - NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const { - switch (Ty->getTypeID()) { -- default: -- llvm_unreachable("unexpected type"); -- break; - case Type::IntegerTyID: { - unsigned NumBits = cast(Ty)->getBitWidth(); - if (NumBits == 1) -@@ -1314,9 +1311,10 @@ NVPTXAsmPrinter::getPTXFundamentalTypeStr(Type *Ty, bool useB4PTR) const { - return "b32"; - else - return "u32"; -+ default: -+ break; - } - llvm_unreachable("unexpected type"); -- return nullptr; - } - - void NVPTXAsmPrinter::emitPTXGlobalVariable(const GlobalVariable *GVar, --- -2.34.1 - diff --git a/root-fix-compilation-with-gcc13.patch b/root-fix-compilation-with-gcc13.patch deleted file mode 100644 index bf411a8..0000000 --- a/root-fix-compilation-with-gcc13.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 37ac6654194f90db625e760dcb2d48fd7938ba6d Mon Sep 17 00:00:00 2001 -From: scott snyder -Date: Tue, 29 Nov 2022 22:05:39 -0500 -Subject: [PATCH] Fix compilation with gcc13. - -Missing #include . ---- - math/mathcore/inc/Math/Random.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/math/mathcore/inc/Math/Random.h b/math/mathcore/inc/Math/Random.h -index 87eaaee5af..23bfabc4a1 100644 ---- a/math/mathcore/inc/Math/Random.h -+++ b/math/mathcore/inc/Math/Random.h -@@ -25,6 +25,7 @@ - - #include - #include -+#include - - - namespace ROOT { --- -2.39.0 - diff --git a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch index 007c3cd..274aa66 100644 --- a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +++ b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch @@ -1,6 +1,6 @@ -From ddc155795baa9d4690717c204e54a7fd4600c688 Mon Sep 17 00:00:00 2001 +From 15f50c71b4d89bfbf06ce817dee38e843f0f55cd Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Mon, 17 Jan 2022 18:49:30 +0100 +Date: Mon, 17 Jan 2022 23:50:47 +0100 Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12 .../hist/hist/test/test_tprofile2poly.cxx:61: Failure @@ -14,19 +14,19 @@ cont1 evaluates to 109868.61342004745, cont2 evaluates to 109868.61342004743. The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead. --- - hist/hist/test/test_tprofile2poly.cxx | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + hist/hist/test/test_tprofile2poly.cxx | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx -index 40cb3052a2..5150da0bea 100644 +index 40cb3052a2..ecf559a4b3 100644 --- a/hist/hist/test/test_tprofile2poly.cxx +++ b/hist/hist/test/test_tprofile2poly.cxx -@@ -58,14 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { +@@ -58,15 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { for(Double_t x=0.5; x<10; x+=2.0) { cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(x,y)); cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(x,y)); - ASSERT_NEAR(cont1, cont2, delta); -+ ASSERT_NEAR(cont1, cont2, 2*delta); ++ ASSERT_NEAR(cont1, cont2, 2 * delta); } } @@ -34,10 +34,11 @@ index 40cb3052a2..5150da0bea 100644 cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11)); cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11)); - ASSERT_NEAR(cont1, cont2, delta); -+ ASSERT_NEAR(cont1, cont2, 2*delta); - +- ++ ASSERT_NEAR(cont1, cont2, 2 * delta); } + void binErrorCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { -- -2.34.1 +2.39.2 diff --git a/root-fixes-for-32bit-builds.patch b/root-fixes-for-32bit-builds.patch new file mode 100644 index 0000000..bcff78d --- /dev/null +++ b/root-fixes-for-32bit-builds.patch @@ -0,0 +1,185 @@ +From 6f69a59010a60c949b1955e52275137e39a85b82 Mon Sep 17 00:00:00 2001 +From: Jakob Blomer +Date: Thu, 9 Mar 2023 15:14:22 +0100 +Subject: [PATCH] [ntuple] fixes for 32bit / non-x86_64 builds + +--- + tree/dataframe/src/RNTupleDS.cxx | 1 + + tree/ntuple/v7/inc/ROOT/RField.hxx | 21 +++++++++++++++++++-- + tree/ntuple/v7/test/ntuple_extended.cxx | 8 ++++---- + 3 files changed, 24 insertions(+), 6 deletions(-) + +diff --git a/tree/dataframe/src/RNTupleDS.cxx b/tree/dataframe/src/RNTupleDS.cxx +index f7eb0ab5f284..aaea6df81622 100644 +--- a/tree/dataframe/src/RNTupleDS.cxx ++++ b/tree/dataframe/src/RNTupleDS.cxx +@@ -94,6 +94,7 @@ class RRDFCardinalityField : public ROOT::Experimental::Detail::RFieldBase { + return ROOT::Experimental::Detail::RFieldValue(true /* captureFlag */, this, where); + } + size_t GetValueSize() const final { return sizeof(std::size_t); } ++ size_t GetAlignment() const final { return alignof(std::size_t); } + + /// Get the number of elements of the collection identified by globalIndex + void +diff --git a/tree/ntuple/v7/inc/ROOT/RField.hxx b/tree/ntuple/v7/inc/ROOT/RField.hxx +index b05267d16030..9a85368a94e3 100644 +--- a/tree/ntuple/v7/inc/ROOT/RField.hxx ++++ b/tree/ntuple/v7/inc/ROOT/RField.hxx +@@ -270,8 +270,9 @@ public: + virtual std::vector SplitValue(const RFieldValue &value) const; + /// The number of bytes taken by a value of the appropriate type + virtual size_t GetValueSize() const = 0; +- /// For many types, the alignment requirement is equal to the size; otherwise override. +- virtual size_t GetAlignment() const { return GetValueSize(); } ++ /// As a rule of thumb, the alignment is equal to the size of the type. There are, however, various exceptions ++ /// to this rule depending on OS and CPU architecture. So enforce the alignment to be explicitly spelled out. ++ virtual size_t GetAlignment() const = 0; + int GetTraits() const { return fTraits; } + bool HasReadCallbacks() const { return !fReadCallbacks.empty(); } + +@@ -383,6 +384,7 @@ public: + Detail::RFieldValue GenerateValue(void*) override { return Detail::RFieldValue(); } + Detail::RFieldValue CaptureValue(void*) final { return Detail::RFieldValue(); } + size_t GetValueSize() const final { return 0; } ++ size_t GetAlignment() const final { return 0; } + + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; +@@ -889,6 +891,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(ClusterSize_t); } ++ size_t GetAlignment() const final { return alignof(ClusterSize_t); } + void CommitCluster() final; + }; + +@@ -990,6 +993,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(ClusterSize_t); } ++ size_t GetAlignment() const final { return alignof(ClusterSize_t); } + + /// Special help for offset fields + void GetCollectionInfo(NTupleSize_t globalIndex, RClusterIndex *collectionStart, ClusterSize_t *size) { +@@ -1110,6 +1115,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(bool); } ++ size_t GetAlignment() const final { return alignof(bool); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1162,6 +1168,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(float); } ++ size_t GetAlignment() const final { return alignof(float); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1215,6 +1222,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(double); } ++ size_t GetAlignment() const final { return alignof(double); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1267,6 +1275,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(char); } ++ size_t GetAlignment() const final { return alignof(char); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1319,6 +1328,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int8_t); } ++ size_t GetAlignment() const final { return alignof(std::int8_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1371,6 +1381,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint8_t); } ++ size_t GetAlignment() const final { return alignof(std::uint8_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1423,6 +1434,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int16_t); } ++ size_t GetAlignment() const final { return alignof(std::int16_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1475,6 +1487,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint16_t); } ++ size_t GetAlignment() const final { return alignof(std::uint16_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1527,6 +1540,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int32_t); } ++ size_t GetAlignment() const final { return alignof(std::int32_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1579,6 +1593,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint32_t); } ++ size_t GetAlignment() const final { return alignof(std::uint32_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1631,6 +1646,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::uint64_t); } ++ size_t GetAlignment() const final { return alignof(std::uint64_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +@@ -1683,6 +1699,7 @@ public: + Detail::RColumnElement(static_cast(where)), this, where); + } + size_t GetValueSize() const final { return sizeof(std::int64_t); } ++ size_t GetAlignment() const final { return alignof(std::int64_t); } + void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; + }; + +diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx +index 91871e288e98..d3b6ee466359 100644 +--- a/tree/ntuple/v7/test/ntuple_extended.cxx ++++ b/tree/ntuple/v7/test/ntuple_extended.cxx +@@ -123,8 +123,8 @@ TEST(RNTuple, LargeFile1) + RNTupleWriteOptions options; + options.SetCompression(0); + auto ntuple = RNTupleWriter::Recreate(std::move(modelWrite), "myNTuple", fileGuard.GetPath(), options); +- constexpr unsigned long nEvents = 1024 * 1024 * 256; // Exceed 2GB file size +- for (unsigned int i = 0; i < nEvents; ++i) { ++ constexpr std::uint64_t nEvents = 1024 * 1024 * 256; // Exceed 2GB file size ++ for (std::uint64_t i = 0; i < nEvents; ++i) { + wrEnergy = rnd.Rndm(); + chksumWrite += wrEnergy; + ntuple->Fill(); +@@ -195,8 +195,8 @@ TEST(RNTuple, LargeFile2) + + TRandom3 rnd(42); + double chksumWrite = 0.0; +- constexpr unsigned long nEvents = 1024 * 1024 * 256; // Exceed 2GB file size +- for (unsigned int i = 0; i < nEvents; ++i) { ++ constexpr std::uint64_t nEvents = 1024 * 1024 * 256; // Exceed 2GB file size ++ for (std::uint64_t i = 0; i < nEvents; ++i) { + *E = rnd.Rndm(); + chksumWrite += *E; + writer->Fill(); diff --git a/root-fontconfig.patch b/root-fontconfig.patch index 35705a4..e19c4b4 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,38 +1,38 @@ -diff -ur root-6.24.02.orig/core/base/src/TApplication.cxx root-6.24.02/core/base/src/TApplication.cxx ---- root-6.24.02.orig/core/base/src/TApplication.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/core/base/src/TApplication.cxx 2021-08-11 10:49:08.583579248 +0200 -@@ -265,18 +265,11 @@ - LoadGraphicsLibs(); +diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base/src/TApplication.cxx +--- root-6.28.00.orig/core/base/src/TApplication.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/core/base/src/TApplication.cxx 2023-02-04 12:47:19.757759982 +0100 +@@ -251,18 +251,11 @@ + LoadGraphicsLibs(); - // Try to load TrueType font renderer. Only try to load if not in batch -- // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently -+ // mode and Root.UseTTFonts is true. Abort silently - // if libttf or libGX11TTF are not found in $ROOTSYS/lib or $ROOTSYS/ttf/lib. -- const char *ttpath = gEnv->GetValue("Root.TTFontPath", -- TROOT::GetTTFFontDir()); -- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); -- // Check for use of DFSG - fonts -- if (!ttfont) -- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); + // Try to load TrueType font renderer. Only try to load if not in batch +- // mode and Root.UseTTFonts is true and Root.TTFontPath exists. Abort silently ++ // mode and Root.UseTTFonts is true. Abort silently + // if libttf or libGX11TTF are not found in $ROOTSYS/lib or $ROOTSYS/ttf/lib. +- const char *ttpath = gEnv->GetValue("Root.TTFontPath", +- TROOT::GetTTFFontDir()); +- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); +- // Check for use of DFSG - fonts +- if (!ttfont) +- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); - - #if !defined(R__WIN32) - if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") && -- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { -+ gEnv->GetValue("Root.UseTTFonts", 1)) { - if (gClassTable->GetDict("TGX11TTF")) { - // in principle we should not have linked anything against libGX11TTF - // but with ACLiC this can happen, initialize TGX11TTF by hand -@@ -290,7 +283,6 @@ + #if !defined(R__WIN32) + if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") && +- ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { ++ gEnv->GetValue("Root.UseTTFonts", 1)) { + if (gClassTable->GetDict("TGX11TTF")) { + // in principle we should not have linked anything against libGX11TTF + // but with ACLiC this can happen, initialize TGX11TTF by hand +@@ -276,7 +269,6 @@ + } } + #endif +- delete [] ttfont; } - #endif -- delete [] ttfont; - // Create WM dependent application environment - if (fAppImp) -diff -ur root-6.24.02.orig/graf2d/asimage/CMakeLists.txt root-6.24.02/graf2d/asimage/CMakeLists.txt ---- root-6.24.02.orig/graf2d/asimage/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/asimage/CMakeLists.txt 2021-08-11 10:49:08.583579248 +0200 + if (!only_web || !fAppImp) { +diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asimage/CMakeLists.txt +--- root-6.28.00.orig/graf2d/asimage/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/asimage/CMakeLists.txt 2023-02-04 12:47:19.757759982 +0100 @@ -30,6 +30,7 @@ ${FREETYPE_LIBRARIES} ${X11_LIBRARIES} @@ -41,10 +41,10 @@ diff -ur root-6.24.02.orig/graf2d/asimage/CMakeLists.txt root-6.24.02/graf2d/asi DEPENDENCIES Core Graf -diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/asimage/src/TASImage.cxx ---- root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/asimage/src/TASImage.cxx 2021-08-11 10:49:08.585579253 +0200 -@@ -112,6 +112,8 @@ +diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/asimage/src/TASImage.cxx +--- root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/asimage/src/TASImage.cxx 2023-02-04 12:47:19.760759989 +0100 +@@ -115,6 +115,8 @@ # include } @@ -53,7 +53,7 @@ diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/a // auxiliary functions for general polygon filling #include "TASPolyUtils.c" -@@ -2595,14 +2597,120 @@ +@@ -2590,14 +2592,120 @@ TString fn = font_name; fn.Strip(); @@ -181,7 +181,7 @@ diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/a if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) { ttfont = kTRUE; -@@ -2626,14 +2734,11 @@ +@@ -2621,14 +2729,11 @@ return; } @@ -199,9 +199,9 @@ diff -ur root-6.24.02.orig/graf2d/asimage/src/TASImage.cxx root-6.24.02/graf2d/a } get_text_size(text, font, (ASText3DType)type, &width, &height); -diff -ur root-6.24.02.orig/graf2d/graf/CMakeLists.txt root-6.24.02/graf2d/graf/CMakeLists.txt ---- root-6.24.02.orig/graf2d/graf/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/graf/CMakeLists.txt 2021-08-11 10:49:08.586579256 +0200 +diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/CMakeLists.txt +--- root-6.28.00.orig/graf2d/graf/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/graf/CMakeLists.txt 2023-02-04 12:47:19.861760233 +0100 @@ -91,6 +91,7 @@ ${FREETYPE_LIBRARIES} ZLIB::ZLIB @@ -210,9 +210,9 @@ diff -ur root-6.24.02.orig/graf2d/graf/CMakeLists.txt root-6.24.02/graf2d/graf/C DEPENDENCIES Hist Matrix -diff -ur root-6.24.02.orig/graf2d/graf/inc/TTF.h root-6.24.02/graf2d/graf/inc/TTF.h ---- root-6.24.02.orig/graf2d/graf/inc/TTF.h 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/graf/inc/TTF.h 2021-08-11 10:49:08.586579256 +0200 +diff -ur root-6.28.00.orig/graf2d/graf/inc/TTF.h root-6.28.00/graf2d/graf/inc/TTF.h +--- root-6.28.00.orig/graf2d/graf/inc/TTF.h 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/graf/inc/TTF.h 2023-02-04 12:47:19.862760235 +0100 @@ -76,9 +76,8 @@ static FT_BBox fgCBox; ///< string control box static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map @@ -224,9 +224,9 @@ diff -ur root-6.24.02.orig/graf2d/graf/inc/TTF.h root-6.24.02/graf2d/graf/inc/TT static FT_Face fgFace[kTTMaxFonts]; ///< font face static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs static Bool_t fgHinting; ///< use hinting (true by default) -diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/TTF.cxx ---- root-6.24.02.orig/graf2d/graf/src/TTF.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/graf/src/TTF.cxx 2021-08-11 10:49:08.587579259 +0200 +diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/TTF.cxx +--- root-6.28.00.orig/graf2d/graf/src/TTF.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/graf/src/TTF.cxx 2023-02-04 12:47:19.863760238 +0100 @@ -25,6 +25,8 @@ #include "TMath.h" #include "TError.h" @@ -654,7 +654,7 @@ diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/ + FcPatternDestroy (pat); + if (set) FcCharSetDestroy (set); + - FT_Face tface = 0; + FT_Face tface = (FT_Face) 0; - if (FT_New_Face(fgLibrary, ttfont, 0, &tface)) { + if (FT_New_Face(fgLibrary, ttfont, ttindex, &tface)) { @@ -679,7 +679,7 @@ diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/ + fgFontID[fgFontCount] = fontid; fgCurFontIdx = fgFontCount; fgFace[fgCurFontIdx] = tface; - fgCharMap[fgCurFontIdx] = 0; + fgCharMap[fgCurFontIdx] = (FT_CharMap) 0; fgFontCount++; if (italic) { @@ -787,9 +787,9 @@ diff -ur root-6.24.02.orig/graf2d/graf/src/TTF.cxx root-6.24.02/graf2d/graf/src/ } //////////////////////////////////////////////////////////////////////////////// -diff -ur root-6.24.02.orig/graf2d/postscript/CMakeLists.txt root-6.24.02/graf2d/postscript/CMakeLists.txt ---- root-6.24.02.orig/graf2d/postscript/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/postscript/CMakeLists.txt 2021-08-11 10:49:08.587579259 +0200 +diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/postscript/CMakeLists.txt +--- root-6.28.00.orig/graf2d/postscript/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/postscript/CMakeLists.txt 2023-02-04 12:47:19.863760238 +0100 @@ -27,6 +27,7 @@ LIBRARIES ZLIB::ZLIB @@ -798,9 +798,9 @@ diff -ur root-6.24.02.orig/graf2d/postscript/CMakeLists.txt root-6.24.02/graf2d/ DEPENDENCIES Graf ) -diff -ur root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.24.02/graf2d/postscript/src/TPostScript.cxx ---- root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf2d/postscript/src/TPostScript.cxx 2021-08-11 10:49:08.588579261 +0200 +diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/graf2d/postscript/src/TPostScript.cxx +--- root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf2d/postscript/src/TPostScript.cxx 2023-02-04 12:47:19.864760240 +0100 @@ -234,6 +234,7 @@ #include #include @@ -1060,9 +1060,9 @@ diff -ur root-6.24.02.orig/graf2d/postscript/src/TPostScript.cxx root-6.24.02/gr { "Root.PSFont.STIXGen", "/STIXGeneral" }, { "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" }, { "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" }, -diff -ur root-6.24.02.orig/graf3d/gl/CMakeLists.txt root-6.24.02/graf3d/gl/CMakeLists.txt ---- root-6.24.02.orig/graf3d/gl/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf3d/gl/CMakeLists.txt 2021-08-11 10:49:08.589579264 +0200 +diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMakeLists.txt +--- root-6.28.00.orig/graf3d/gl/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf3d/gl/CMakeLists.txt 2023-02-04 12:47:19.867760247 +0100 @@ -208,6 +208,7 @@ ${GL2PS_LIBRARIES} ${X11_LIBRARIES} @@ -1071,9 +1071,9 @@ diff -ur root-6.24.02.orig/graf3d/gl/CMakeLists.txt root-6.24.02/graf3d/gl/CMake DEPENDENCIES Hist Gui -diff -ur root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.24.02/graf3d/gl/src/TGLFontManager.cxx ---- root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf3d/gl/src/TGLFontManager.cxx 2021-08-11 10:49:08.589579264 +0200 +diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/gl/src/TGLFontManager.cxx +--- root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf3d/gl/src/TGLFontManager.cxx 2023-02-04 12:47:19.867760247 +0100 @@ -36,6 +36,7 @@ # include "FTGLBitmapFont.h" #endif @@ -1329,9 +1329,9 @@ diff -ur root-6.24.02.orig/graf3d/gl/src/TGLFontManager.cxx root-6.24.02/graf3d/ fgFontFileArray.Add(new TObjString("STIXGeneral.otf")); // 200 fgFontFileArray.Add(new TObjString("STIXGeneralItalic.otf")); // 210 fgFontFileArray.Add(new TObjString("STIXGeneralBol.otf")); // 220 -diff -ur root-6.24.02.orig/graf3d/gl/src/TGLText.cxx root-6.24.02/graf3d/gl/src/TGLText.cxx ---- root-6.24.02.orig/graf3d/gl/src/TGLText.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/graf3d/gl/src/TGLText.cxx 2021-08-11 10:49:08.590579267 +0200 +diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/TGLText.cxx +--- root-6.28.00.orig/graf3d/gl/src/TGLText.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/graf3d/gl/src/TGLText.cxx 2023-02-04 12:47:19.868760250 +0100 @@ -32,6 +32,8 @@ # include "FTGLBitmapFont.h" #endif @@ -1466,10 +1466,10 @@ diff -ur root-6.24.02.orig/graf3d/gl/src/TGLText.cxx root-6.24.02/graf3d/gl/src/ Error("SetGLTextFont","Cannot set FTGL::FaceSize"); - delete [] ttfont; } -diff -ur root-6.24.02.orig/gui/gui/src/TGApplication.cxx root-6.24.02/gui/gui/src/TGApplication.cxx ---- root-6.24.02.orig/gui/gui/src/TGApplication.cxx 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/gui/gui/src/TGApplication.cxx 2021-08-11 10:49:08.590579267 +0200 -@@ -80,20 +80,12 @@ +diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/src/TGApplication.cxx +--- root-6.28.00.orig/gui/gui/src/TGApplication.cxx 2023-02-03 15:34:27.000000000 +0100 ++++ root-6.28.00/gui/gui/src/TGApplication.cxx 2023-02-04 12:47:19.868760250 +0100 +@@ -81,20 +81,12 @@ gROOT->SetBatch(kFALSE); if (strcmp(appClassName, "proofserv")) { diff --git a/root-get-rid-of-lsb_release.patch b/root-get-rid-of-lsb_release.patch deleted file mode 100644 index 8dca2cc..0000000 --- a/root-get-rid-of-lsb_release.patch +++ /dev/null @@ -1,245 +0,0 @@ -From 2dde3d060aa21ff9d4a0612b991bd300b7704bdc Mon Sep 17 00:00:00 2001 -From: Axel Naumann -Date: Fri, 22 Jul 2022 15:54:03 +0200 -Subject: [PATCH] [cmake,test] Get rid of `lsb_release`: - -It is available less and less often, and we do not actually -benefit a lot from printing the distro (stress) or we can get -the same info from /etc/os-release (cmake). ---- - cmake/modules/RootCPack.cmake | 11 +++++++++-- - math/mathcore/test/stressGoFTest.cxx | 4 ---- - test/bench.cxx | 4 ---- - test/stress.cxx | 4 ---- - test/stressFit.cxx | 4 ---- - test/stressGUI.cxx | 4 ---- - test/stressGeometry.cxx | 4 ---- - test/stressGraphics.cxx | 4 ---- - test/stressHepix.cxx | 4 ---- - test/stressHistFactory.cxx | 4 ---- - test/stressLinear.cxx | 4 ---- - test/stressRooFit.cxx | 4 ---- - test/stressRooStats.cxx | 4 ---- - test/stressTMVA.cxx | 4 ---- - 14 files changed, 9 insertions(+), 54 deletions(-) - -diff --git a/cmake/modules/RootCPack.cmake b/cmake/modules/RootCPack.cmake -index a960eb81fd..807eac6ef2 100644 ---- a/cmake/modules/RootCPack.cmake -+++ b/cmake/modules/RootCPack.cmake -@@ -107,8 +107,15 @@ elseif(WIN32) - set(OS_NAME_VERSION win32) - endif() - else() -- execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE osid OUTPUT_STRIP_TRAILING_WHITESPACE) -- execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE osvers OUTPUT_STRIP_TRAILING_WHITESPACE) -+ if(EXISTS "/etc/os-release") -+ file(STRINGS /etc/os-release osid REGEX "^NAME=") -+ string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" osid "${osid}") -+ file(STRINGS /etc/os-release osvers REGEX "^VERSION_ID=") -+ string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" osvers "${osvers}") -+ else() -+ execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE osid OUTPUT_STRIP_TRAILING_WHITESPACE) -+ execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE osvers OUTPUT_STRIP_TRAILING_WHITESPACE) -+ endif() - if(osid MATCHES Ubuntu) - string(REGEX REPLACE "([0-9]+)[.].*" "\\1" osvers "${osvers}") - set(OS_NAME_VERSION Linux-ubuntu${osvers}-${arch}) -diff --git a/math/mathcore/test/stressGoFTest.cxx b/math/mathcore/test/stressGoFTest.cxx -index a78ca99c90..5aa1b4ef70 100644 ---- a/math/mathcore/test/stressGoFTest.cxx -+++ b/math/mathcore/test/stressGoFTest.cxx -@@ -56,10 +56,6 @@ struct GoFTStress { - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/bench.cxx b/test/bench.cxx -index 82bc537e05..e89024e9d9 100644 ---- a/test/bench.cxx -+++ b/test/bench.cxx -@@ -295,10 +295,6 @@ int main(int argc, char **argv) - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stress.cxx b/test/stress.cxx -index d3087fdd56..29dba1625d 100644 ---- a/test/stress.cxx -+++ b/test/stress.cxx -@@ -200,10 +200,6 @@ void stress(Int_t nevent, Int_t style = 1, - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressFit.cxx b/test/stressFit.cxx -index 667142eff9..80bbd0200f 100644 ---- a/test/stressFit.cxx -+++ b/test/stressFit.cxx -@@ -646,10 +646,6 @@ Int_t stressFit(const char *type, const char *algo, Int_t N) - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressGUI.cxx b/test/stressGUI.cxx -index 1a92df5341..9daae5f5fe 100644 ---- a/test/stressGUI.cxx -+++ b/test/stressGUI.cxx -@@ -307,10 +307,6 @@ void stressGUI() - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx -index 5e81f5f2ca..2dc366cbf8 100644 ---- a/test/stressGeometry.cxx -+++ b/test/stressGeometry.cxx -@@ -295,10 +295,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressGraphics.cxx b/test/stressGraphics.cxx -index 5fe958774d..8b6aa9af9a 100644 ---- a/test/stressGraphics.cxx -+++ b/test/stressGraphics.cxx -@@ -419,10 +419,6 @@ void stressGraphics(Int_t verbose = 0) - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressHepix.cxx b/test/stressHepix.cxx -index d8d2a65a64..01dfc67a54 100644 ---- a/test/stressHepix.cxx -+++ b/test/stressHepix.cxx -@@ -143,10 +143,6 @@ int main(int argc, char **argv) - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressHistFactory.cxx b/test/stressHistFactory.cxx -index b84fa70f86..ec6deac031 100644 ---- a/test/stressHistFactory.cxx -+++ b/test/stressHistFactory.cxx -@@ -139,10 +139,6 @@ Int_t stressHistFactory(const char* refFile, Bool_t writeRef, Int_t verbose, Boo - if (UNIX) { - TString sp = gSystem->GetFromPipe("uname -a"); - cout << "* SYS: " << sp << endl; -- if (strstr(gSystem->GetBuildNode(), "Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- cout << "* SYS: " << sp << endl; -- } - if (strstr(gSystem->GetBuildNode(), "Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressLinear.cxx b/test/stressLinear.cxx -index ce2e1af23d..e34ddf85a2 100644 ---- a/test/stressLinear.cxx -+++ b/test/stressLinear.cxx -@@ -296,10 +296,6 @@ void stressLinear(Int_t maxSizeReq,Int_t verbose) - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressRooFit.cxx b/test/stressRooFit.cxx -index 18e214ec0c..4f7c5a3d83 100644 ---- a/test/stressRooFit.cxx -+++ b/test/stressRooFit.cxx -@@ -197,10 +197,6 @@ Int_t stressRooFit(const char* refFile, Bool_t writeRef, Int_t doVerbose, Int_t - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressRooStats.cxx b/test/stressRooStats.cxx -index 35598b5919..adb3dc4cd8 100644 ---- a/test/stressRooStats.cxx -+++ b/test/stressRooStats.cxx -@@ -232,10 +232,6 @@ Int_t stressRooStats(const char* refFile, Bool_t writeRef, Int_t verbose, Bool_t - if (UNIX) { - TString sp = gSystem->GetFromPipe("uname -a"); - cout << "* SYS: " << sp << endl; -- if (strstr(gSystem->GetBuildNode(), "Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- cout << "* SYS: " << sp << endl; -- } - if (strstr(gSystem->GetBuildNode(), "Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; -diff --git a/test/stressTMVA.cxx b/test/stressTMVA.cxx -index f7638a73f6..22e3feaf65 100644 ---- a/test/stressTMVA.cxx -+++ b/test/stressTMVA.cxx -@@ -3193,10 +3193,6 @@ int main(int argc, char **argv) - TString sp = gSystem->GetFromPipe("uname -a"); - sp.Resize(60); - printf("* SYS: %s\n",sp.Data()); -- if (strstr(gSystem->GetBuildNode(),"Linux")) { -- sp = gSystem->GetFromPipe("lsb_release -d -s"); -- printf("* SYS: %s\n",sp.Data()); -- } - if (strstr(gSystem->GetBuildNode(),"Darwin")) { - sp = gSystem->GetFromPipe("sw_vers -productVersion"); - sp += " Mac OS X "; --- -2.37.1 - diff --git a/root-gtest-compat.patch b/root-gtest-compat.patch new file mode 100644 index 0000000..4dd4b58 --- /dev/null +++ b/root-gtest-compat.patch @@ -0,0 +1,85 @@ +From 922290ebdc5e3363adfa82dd45208862bb01630a Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 8 Feb 2023 09:50:00 +0100 +Subject: [PATCH] Fix build with -Dbuiltin_gtest:BOOL=OFF on EPEL 8 + +--- + roofit/roofitcore/test/testRooBinSamplingPdf.cxx | 7 ++++++- + roofit/roofitcore/test/testRooProdPdf.cxx | 5 +++++ + roofit/roofitcore/test/testRooRealIntegral.cxx | 5 +++++ + roofit/roofitcore/test/testTestStatistics.cxx | 2 +- + 4 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/roofit/roofitcore/test/testRooBinSamplingPdf.cxx b/roofit/roofitcore/test/testRooBinSamplingPdf.cxx +index 823fef712f..116000f9f8 100644 +--- a/roofit/roofitcore/test/testRooBinSamplingPdf.cxx ++++ b/roofit/roofitcore/test/testRooBinSamplingPdf.cxx +@@ -13,6 +13,11 @@ + + #include + ++// Backward compatibility for gtest version < 1.10.0 ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + + class ParamTest : public testing::TestWithParam> { +@@ -123,7 +128,7 @@ TEST(RooBinSamplingPdf, CheckConsistentNormalization) + EXPECT_FLOAT_EQ(int2->getVal(), int3->getVal()); + } + +-INSTANTIATE_TEST_SUITE_P(RooBinSamplingPdf, ParamTest, testing::Combine(testing::Values("Off", "Cpu")), ++INSTANTIATE_TEST_SUITE_P(RooBinSamplingPdf, ParamTest, testing::Values("Off", "Cpu"), + [](testing::TestParamInfo const ¶mInfo) { + std::stringstream ss; + ss << "BatchMode" << std::get<0>(paramInfo.param); +diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx +index 86bcf6eb48..d794fb415a 100644 +--- a/roofit/roofitcore/test/testRooProdPdf.cxx ++++ b/roofit/roofitcore/test/testRooProdPdf.cxx +@@ -16,6 +16,11 @@ + + #include + ++// Backward compatibility for gtest version < 1.10.0 ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + #include + #include +diff --git a/roofit/roofitcore/test/testRooRealIntegral.cxx b/roofit/roofitcore/test/testRooRealIntegral.cxx +index c33c6ae138..0ab6ab973f 100644 +--- a/roofit/roofitcore/test/testRooRealIntegral.cxx ++++ b/roofit/roofitcore/test/testRooRealIntegral.cxx +@@ -20,6 +20,11 @@ + + #include + ++// Backward compatibility for gtest version < 1.10.0 ++#ifndef INSTANTIATE_TEST_SUITE_P ++#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#endif ++ + #include + + namespace { +diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx +index dc20b4e1c9..1623637653 100644 +--- a/roofit/roofitcore/test/testTestStatistics.cxx ++++ b/roofit/roofitcore/test/testTestStatistics.cxx +@@ -490,7 +490,7 @@ TEST_P(OffsetBinTest, CrossCheck) + EXPECT_NEAR(nllVal1, 0.0, 1e-8) << "NLL with bin offsetting is " << nllVal1 << ", and " << nllVal0 << " without it."; + } + +-INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Combine(testing::Values("Off", "Cpu")), ++INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values("Off", "Cpu"), + [](testing::TestParamInfo const ¶mInfo) { + std::stringstream ss; + ss << "BatchMode" << std::get<0>(paramInfo.param); +-- +2.39.1 + diff --git a/root-ignore-prefix.patch b/root-ignore-prefix.patch deleted file mode 100644 index 5b9918a..0000000 --- a/root-ignore-prefix.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 1aa9231becda09a89ec576e4a17ca4d9b6e2f310 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 15 Mar 2022 14:55:37 +0100 -Subject: [PATCH] Link to the blas library found by cmake, not hardcoded - "blas". Set ROOTIGNOREPREFIX=1 when running built binaries during build. Make - sure PCH is created before running emitters. - ---- - tmva/sofie/test/CMakeLists.txt | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) - -diff --git a/tmva/sofie/test/CMakeLists.txt b/tmva/sofie/test/CMakeLists.txt -index e4f9d28748..a3a2c9ae16 100644 ---- a/tmva/sofie/test/CMakeLists.txt -+++ b/tmva/sofie/test/CMakeLists.txt -@@ -51,7 +51,7 @@ foreach(onnx_file ${ONNX_FILES}) - get_filename_component(fname ${onnx_file} NAME_WE) - get_filename_component(fdir ${onnx_file} DIRECTORY) - add_custom_command(TARGET SofieCompileModels_ONNX POST_BUILD -- COMMAND ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} -+ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromONNX ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} - USES_TERMINAL - ) - endforeach() -@@ -100,7 +101,7 @@ foreach(onnx_file ${ONNX_FILES}) - get_filename_component(fname ${onnx_file} NAME_WE) - get_filename_component(fdir ${onnx_file} DIRECTORY) - add_custom_command(TARGET SofieCompileModels_ROOT POST_BUILD -- COMMAND ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} -+ COMMAND ${CMAKE_COMMAND} -E env ROOTIGNOREPREFIX=1 ./emitFromROOT ${onnx_file} ${CMAKE_CURRENT_BINARY_DIR}/${fname} - USES_TERMINAL - ) - endforeach() --- -2.35.1 - diff --git a/root-longlong.patch b/root-longlong.patch deleted file mode 100644 index 3c43542..0000000 --- a/root-longlong.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 2aa02353663674a338c92fa4e72a0c0e529c410e Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Fri, 8 Apr 2022 17:52:18 +0200 -Subject: [PATCH] [DF] Fix long int + Snapshot test on 32 bit platforms - -Co-authored-by: Mattias Ellert ---- - tree/dataframe/test/dataframe_snapshot.cxx | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx -index f41848e96a..ddbacaba0f 100644 ---- a/tree/dataframe/test/dataframe_snapshot.cxx -+++ b/tree/dataframe/test/dataframe_snapshot.cxx -@@ -495,11 +495,14 @@ void ReadWriteCarray(const char *outFileNameBase) - t.Branch("vb", vb, "vb[size]/O"); - t.Branch("vl", vl, "vl[size]/G"); - -+ // use 2**33 as a larger-than-int value on 64 bits, otherwise just something larger than short (2**30) -+ static constexpr long int longintTestValue = sizeof(long int) == 8 ? 8589934592 : 1073741824; -+ - // Size 1 - size = 1; - v[0] = 12; - vb[0] = true; -- vl[0] = 8589934592; // 2**33 -+ vl[0] = longintTestValue; - t.Fill(); - - // Size 0 (see ROOT-9860) -@@ -546,7 +549,7 @@ void ReadWriteCarray(const char *outFileNameBase) - EXPECT_EQ(rvb.GetSize(), 1u); - EXPECT_TRUE(rvb[0]); - EXPECT_EQ(rvl.GetSize(), 1u); -- EXPECT_EQ(rvl[0], 8589934592); -+ EXPECT_EQ(rvl[0], longintTestValue); - - // Size 0 - EXPECT_TRUE(r.Next()); --- -2.35.1 - diff --git a/root-make-DistRDF-optional.patch b/root-make-DistRDF-optional.patch new file mode 100644 index 0000000..653e14e --- /dev/null +++ b/root-make-DistRDF-optional.patch @@ -0,0 +1,32 @@ +From 90e7f868bc115da821c0f04dbafd80ef72e7490a Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 2 Mar 2023 08:31:29 +0100 +Subject: [PATCH 2/2] Missing experimental add-on module + ROOT.RDF.Experimental.Distributed (DistRDF) should not fail the loading of + the rest of the ROOT.RDF namespace. + +--- + bindings/pyroot/pythonizations/python/ROOT/_facade.py | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_facade.py b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +index 865321e713..69046fc71c 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_facade.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +@@ -336,8 +336,11 @@ class ROOTFacade(types.ModuleType): + ns.FromNumpy = MakeNumpyDataFrame + + if sys.version_info >= (3, 8): +- # Inject Experimental.Distributed package into namespace RDF +- ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) ++ try: ++ # Inject Experimental.Distributed package into namespace RDF if available ++ ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) ++ except ImportError: ++ pass + except: + raise Exception('Failed to pythonize the namespace RDF') + del type(self).RDF +-- +2.39.2 + diff --git a/root-make-dyld-based-library-search-behavior-default.patch b/root-make-dyld-based-library-search-behavior-default.patch deleted file mode 100644 index 9b88576..0000000 --- a/root-make-dyld-based-library-search-behavior-default.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 6ae602bba7d33c900a117c9de0187ab5a28e14b8 Mon Sep 17 00:00:00 2001 -From: Vassil Vassilev -Date: Mon, 21 Mar 2022 22:16:54 +0000 -Subject: [PATCH] Make the dyld-based library search behavior default for - non-modules. - -The dyld-based system was developed in the context on C++ modules but it turned -into a modules-agnostic feature. Instead of having to maintain more code, we -should rely on it even for non-modules build of ROOT. ---- - core/metacling/src/TCling.cxx | 109 +++------------------------------- - 1 file changed, 8 insertions(+), 101 deletions(-) - -diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx -index dec399cf2b..3eae1c8570 100644 ---- a/core/metacling/src/TCling.cxx -+++ b/core/metacling/src/TCling.cxx -@@ -6501,14 +6501,18 @@ bool TCling::LibraryLoadingFailed(const std::string& errmessage, const std::stri - return false; - } - --static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_name, -- const cling::DynamicLibraryManager &DLM) { -+//////////////////////////////////////////////////////////////////////////////// -+/// Autoload a library based on a missing symbol. -+ -+void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { -+ -+ const cling::DynamicLibraryManager &DLM = *GetInterpreterImpl()->getDynamicLibraryManager(); - R__LOCKGUARD(gInterpreterMutex); - - auto LibLoader = [](const std::string& LibName) -> bool { - if (gSystem->Load(LibName.c_str(), "", false) < 0) { -- Error("TCling__LazyFunctionCreatorAutoloadForModule", -- "Failed to load library %s", LibName.c_str()); -+ ::Error("TCling__LazyFunctionCreatorAutoloadForModule", -+ "Failed to load library %s", LibName.c_str()); - return false; - } - return true; //success. -@@ -6536,103 +6540,6 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string &mangled_nam - return nullptr; - - return llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name); -- --} -- --//////////////////////////////////////////////////////////////////////////////// --/// Autoload a library based on a missing symbol. -- --void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { -- if (fCxxModulesEnabled) -- return LazyFunctionCreatorAutoloadForModule(mangled_name, -- *GetInterpreterImpl()->getDynamicLibraryManager()); -- -- // First see whether the symbol is in the library that we are currently -- // loading. It will have access to the symbols of its dependent libraries, -- // thus checking "back()" is sufficient. -- if (!fRegisterModuleDyLibs.empty()) { -- if (void* addr = dlsym(fRegisterModuleDyLibs.back(), -- mangled_name.c_str())) { -- return addr; -- } -- } -- -- int err = 0; -- char* demangled_name_c = TClassEdit::DemangleName(mangled_name.c_str(), err); -- if (err) { -- return 0; -- } -- -- std::string name(demangled_name_c); -- free(demangled_name_c); -- -- //fprintf(stderr, "demangled name: '%s'\n", demangled_name); -- // -- // Separate out the class or namespace part of the -- // function name. -- // -- -- std::string::size_type pos = name.find("__thiscall "); -- if (pos != std::string::npos) { -- name.erase(0, pos + sizeof("__thiscall ")-1); -- } -- pos = name.find("__cdecl "); -- if (pos != std::string::npos) { -- name.erase(0, pos + sizeof("__cdecl ")-1); -- } -- if (!strncmp(name.c_str(), "typeinfo for ", sizeof("typeinfo for ")-1)) { -- name.erase(0, sizeof("typeinfo for ")-1); -- } else if (!strncmp(name.c_str(), "vtable for ", sizeof("vtable for ")-1)) { -- name.erase(0, sizeof("vtable for ")-1); -- } else if (!strncmp(name.c_str(), "operator", sizeof("operator")-1) -- && !isalnum(name[sizeof("operator")])) { -- // operator...(A, B) - let's try with A! -- name.erase(0, sizeof("operator")-1); -- pos = name.rfind('('); -- if (pos != std::string::npos) { -- name.erase(0, pos + 1); -- pos = name.find(","); -- if (pos != std::string::npos) { -- // remove next arg up to end, leaving only the first argument type. -- name.erase(pos); -- } -- pos = name.rfind(" const"); -- if (pos != std::string::npos) { -- name.erase(pos, strlen(" const")); -- } -- while (!name.empty() && strchr("&*", name.back())) -- name.erase(name.length() - 1); -- } -- } else { -- TClassEdit::FunctionSplitInfo fsi; -- TClassEdit::SplitFunction(name, fsi); -- name = fsi.fScopeName; -- } -- //fprintf(stderr, "name: '%s'\n", name.c_str()); -- // Now we have the class or namespace name, so do the lookup. -- TString libs = GetClassSharedLibs(name.c_str()); -- if (libs.IsNull()) { -- // Not found in the map, all done. -- return 0; -- } -- //fprintf(stderr, "library: %s\n", iter->second.c_str()); -- // Now we have the name of the libraries to load, so load them. -- -- TString lib; -- Ssiz_t posLib = 0; -- while (libs.Tokenize(lib, posLib)) { -- if (gSystem->Load(lib, "", kFALSE /*system*/) < 0) { -- // The library load failed, all done. -- //fprintf(stderr, "load failed: %s\n", errmsg.c_str()); -- return 0; -- } -- } -- -- //fprintf(stderr, "load succeeded.\n"); -- // Get the address of the function being called. -- void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); -- //fprintf(stderr, "addr: %016lx\n", reinterpret_cast(addr)); -- return addr; - } - - //////////////////////////////////////////////////////////////////////////////// --- -2.35.1 - diff --git a/root-namespace-pymva.patch b/root-namespace-pymva.patch deleted file mode 100644 index cd2fa57..0000000 --- a/root-namespace-pymva.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 0a969f5376af248e76cbcee45c9bdb6463e18c05 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 21:20:07 +0100 -Subject: [PATCH 3/3] Add namespaces to LinkDef - -Fixes error: - -IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE7PyTorch5ParseENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS9_ImSaImEESaISB_EE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'! -You are probably missing the definition of TMVA::Experimental::SOFIE::PyTorch::Parse(std::__cxx11::basic_string, std::allocator >, std::vector >, std::allocator > > >) -Maybe you need to load the corresponding shared library? -Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libPyMVA.so.6.26.00'? ---- - tmva/pymva/inc/LinkDef.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/tmva/pymva/inc/LinkDef.h b/tmva/pymva/inc/LinkDef.h -index 92da99a4f7..83145077dd 100644 ---- a/tmva/pymva/inc/LinkDef.h -+++ b/tmva/pymva/inc/LinkDef.h -@@ -15,6 +15,8 @@ - #pragma link C++ class TMVA::MethodPyGTB+; - #pragma link C++ class TMVA::MethodPyKeras+; - #pragma link C++ class TMVA::MethodPyTorch+; -+#pragma link C++ namespace TMVA::Experimental::SOFIE::PyKeras; - #pragma link C++ function TMVA::Experimental::SOFIE::PyKeras::Parse+; -+#pragma link C++ namespace TMVA::Experimental::SOFIE::PyTorch; - #pragma link C++ function TMVA::Experimental::SOFIE::PyTorch::Parse+; - #endif --- -2.35.1 - diff --git a/root-namespace-roofit.patch b/root-namespace-roofit.patch deleted file mode 100644 index c8aa92e..0000000 --- a/root-namespace-roofit.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 4a4df0190ad24c0a3636994c2c23cb6c22e04589 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 15:41:33 +0100 -Subject: [PATCH 2/3] Remove namespace RooFit from libRooFitCore's LinkDef - -The namespace is listed in the LinkDef's for both libRooFit and libRooFitCore. - -ROOT only autoloads one of the libraries, for some reason usually -libRooFitCore. After this only symbols in the namespace from that -library are present. By removing the namespace from liRooFitCore's -LinkDef, only libRooFit can be chosen when autoloading. Since -libRooFit depends on libRooFitCore, both libraries are loaded, and the -symbols from the namespace in both libraries are available. - -Fixes error: - -IncrementalExecutor::executeFunction: symbol '_ZN6RooFit12bindFunctionEPKcPFddER10RooAbsReal' unresolved while linking function '_GLOBAL__sub_I_cling_module_217'! -You are probably missing the definition of RooFit::bindFunction(char const*, double (*)(double), RooAbsReal&) -Maybe you need to load the corresponding shared library? -Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'? ---- - roofit/roofitcore/inc/LinkDef.h | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/roofit/roofitcore/inc/LinkDef.h b/roofit/roofitcore/inc/LinkDef.h -index d421fd95cd..72c66db33b 100644 ---- a/roofit/roofitcore/inc/LinkDef.h -+++ b/roofit/roofitcore/inc/LinkDef.h -@@ -105,7 +105,10 @@ - - - // Old LinkDef2.h --#pragma link C++ namespace RooFit ; -+ -+// "namespace RooFit" is in roofit/roofit/inc/Linkdef1.h -+// should not be in the dictionary for two different libraries -+// #pragma link C++ namespace RooFit ; - #pragma link C++ namespace RooFitShortHand ; - #pragma link C++ class RooDouble+ ; - #pragma link C++ class RooEffGenContext+ ; --- -2.35.1 - diff --git a/root-namespace-sofie.patch b/root-namespace-sofie.patch deleted file mode 100644 index a011634..0000000 --- a/root-namespace-sofie.patch +++ /dev/null @@ -1,30 +0,0 @@ -From c66ae9d9c035090584f465a41ce2e438e502be81 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 15:23:59 +0100 -Subject: [PATCH 1/3] Add namespace TMVA::Experimental::SOFIE to LinkDef - -Fixes error: - -IncrementalExecutor::executeFunction: symbol '_ZN4TMVA12Experimental5SOFIE19ConvertTypeToStringB5cxx11ENS1_11ETensorTypeE' unresolved while linking function '_GLOBAL__sub_I_cling_module_8'! -You are probably missing the definition of TMVA::Experimental::SOFIE::ConvertTypeToString[abi:cxx11](TMVA::Experimental::SOFIE::ETensorType) -Maybe you need to load the corresponding shared library? -Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libROOTTMVASofie.so.6.26.00'? ---- - tmva/sofie/inc/LinkDef.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tmva/sofie/inc/LinkDef.h b/tmva/sofie/inc/LinkDef.h -index 715cf35560..3282ff22c1 100644 ---- a/tmva/sofie/inc/LinkDef.h -+++ b/tmva/sofie/inc/LinkDef.h -@@ -7,6 +7,7 @@ - - #pragma link C++ nestedclass; - -+#pragma link C++ namespace TMVA::Experimental::SOFIE; - #pragma link C++ class TMVA::Experimental::SOFIE::RModel-; - #pragma link C++ class TMVA::Experimental::SOFIE::ROperator+; - #pragma link C++ struct TMVA::Experimental::SOFIE::InitializedTensor+; --- -2.35.1 - diff --git a/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch b/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch new file mode 100644 index 0000000..c833930 --- /dev/null +++ b/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch @@ -0,0 +1,30 @@ +From 4ab2a1695a3f6350b454203c044db5d6f0c75dd2 Mon Sep 17 00:00:00 2001 +From: Javier Lopez-Gomez +Date: Mon, 13 Feb 2023 15:05:39 +0100 +Subject: [PATCH] [ntuple] RPageSinkBuf: add missing call to ReleasePage() + +--- + tree/ntuple/v7/src/RPageSinkBuf.cxx | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/tree/ntuple/v7/src/RPageSinkBuf.cxx b/tree/ntuple/v7/src/RPageSinkBuf.cxx +index b22ef705ef..88babb456f 100644 +--- a/tree/ntuple/v7/src/RPageSinkBuf.cxx ++++ b/tree/ntuple/v7/src/RPageSinkBuf.cxx +@@ -106,8 +106,11 @@ ROOT::Experimental::Detail::RPageSinkBuf::CommitClusterImpl(ROOT::Experimental:: + } + fInnerSink->CommitSealedPageV(toCommit); + +- for (auto &bufColumn : fBufferedColumns) +- bufColumn.DrainBufferedPages(); ++ for (auto &bufColumn : fBufferedColumns) { ++ auto drained = bufColumn.DrainBufferedPages(); ++ for (auto &bufPage : std::get>(drained)) ++ ReleasePage(bufPage.fPage); ++ } + return fInnerSink->CommitCluster(nEntries); + } + +-- +2.39.2 + diff --git a/root-ntuplewait.patch b/root-ntuplewait.patch deleted file mode 100644 index b464b69..0000000 --- a/root-ntuplewait.patch +++ /dev/null @@ -1,39 +0,0 @@ -From ad043f8e3304aab4f0ee3ad9e0cf8480c4bbadf0 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 16:10:22 +0100 -Subject: [PATCH] Always call WaitForInFlightClusters before checking cluster - IDs - ---- - tree/ntuple/v7/test/ntuple_cluster.cxx | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/tree/ntuple/v7/test/ntuple_cluster.cxx b/tree/ntuple/v7/test/ntuple_cluster.cxx -index afc2fc32e9..0c299d97de 100644 ---- a/tree/ntuple/v7/test/ntuple_cluster.cxx -+++ b/tree/ntuple/v7/test/ntuple_cluster.cxx -@@ -213,6 +213,7 @@ TEST(ClusterPool, GetClusterBasics) - RPageSourceMock p1; - RClusterPool c1(p1, 1); - c1.GetCluster(3, {0}); -+ c1.WaitForInFlightClusters(); - ASSERT_EQ(2U, p1.fReqsClusterIds.size()); - EXPECT_EQ(3U, p1.fReqsClusterIds[0]); - EXPECT_EQ(4U, p1.fReqsClusterIds[1]); -@@ -267,11 +268,13 @@ TEST(ClusterPool, GetClusterIncrementally) - RPageSourceMock p1; - RClusterPool c1(p1, 1); - c1.GetCluster(3, {0}); -+ c1.WaitForInFlightClusters(); - ASSERT_EQ(2U, p1.fReqsClusterIds.size()); - EXPECT_EQ(3U, p1.fReqsClusterIds[0]); - EXPECT_EQ(RCluster::ColumnSet_t({0}), p1.fReqsColumns[0]); - - c1.GetCluster(3, {1}); -+ c1.WaitForInFlightClusters(); - ASSERT_EQ(4U, p1.fReqsClusterIds.size()); - EXPECT_EQ(3U, p1.fReqsClusterIds[2]); - EXPECT_EQ(RCluster::ColumnSet_t({1}), p1.fReqsColumns[2]); --- -2.35.1 - diff --git a/root-old-gtest-compat.patch b/root-old-gtest-compat.patch deleted file mode 100644 index 7bce796..0000000 --- a/root-old-gtest-compat.patch +++ /dev/null @@ -1,477 +0,0 @@ -From 99e9ad9ea54369296537ceb012ccdcb333b5f513 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 26 Mar 2022 10:55:38 +0100 -Subject: [PATCH 2/2] Backward compatibility with older googletest versions in - EPEL - ---- - hist/hist/test/test_THBinIterator.cxx | 5 +++++ - math/mathcore/test/stress/testGenVector.cxx | 10 ++++++++++ - math/mathcore/test/stress/testSMatrix.cxx | 10 ++++++++++ - math/mathcore/test/stress/testVector.cxx | 10 ++++++++++ - math/mathcore/test/stress/testVector34.cxx | 10 ++++++++++ - math/mathcore/test/testGradient.cxx | 4 ++++ - math/mathcore/test/testGradientFitting.cxx | 10 ++++++++++ - math/mathmore/test/testStress.cxx | 10 ++++++++++ - roofit/histfactory/test/testHistFactory.cxx | 4 ++++ - roofit/multiprocess/test/test_Job.cxx | 5 +++++ - roofit/roofitZMQ/test/test_ZMQ.cpp | 4 ++++ - roofit/roofitcore/test/TestStatistics/RooRealL.cpp | 4 ++++ - .../test/TestStatistics/testLikelihoodGradientJob.cpp | 5 +++++ - roofit/roofitcore/test/testProxiesAndCategories.cxx | 3 +++ - roofit/roofitcore/test/testRooDataHist.cxx | 4 ++++ - roofit/roofitcore/test/testRooGradMinimizerFcn.cxx | 5 +++++ - tree/dataframe/test/dataframe_definepersample.cxx | 4 ++++ - tree/dataframe/test/dataframe_merge_results.cxx | 2 +- - tree/dataframe/test/dataframe_regression.cxx | 4 ++++ - tree/dataframe/test/dataframe_samplecallback.cxx | 4 ++++ - tree/dataframe/test/dataframe_simple.cxx | 5 +++++ - tree/dataframe/test/dataframe_vary.cxx | 4 ++++ - tree/tree/test/TOffsetGeneration.cxx | 4 ++++ - 23 files changed, 129 insertions(+), 1 deletion(-) - -diff --git a/hist/hist/test/test_THBinIterator.cxx b/hist/hist/test/test_THBinIterator.cxx -index e30585b8cb..04f1e1487b 100644 ---- a/hist/hist/test/test_THBinIterator.cxx -+++ b/hist/hist/test/test_THBinIterator.cxx -@@ -1,5 +1,10 @@ - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define SetUpTestSuite SetUpTestCase -+#define TearDownTestSuite TearDownTestCase -+#endif -+ - // test iterating histogram bins and using the new THistRange and - // THBinIterator classes - -diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx -index 93c0bb6aec..b3259158da 100644 ---- a/math/mathcore/test/stress/testGenVector.cxx -+++ b/math/mathcore/test/stress/testGenVector.cxx -@@ -4,6 +4,16 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - #include "StatFunction.h" - #include "TestHelper.h" - #include "VectorTest.h" -diff --git a/math/mathcore/test/stress/testSMatrix.cxx b/math/mathcore/test/stress/testSMatrix.cxx -index a4d7fc4cd5..a35d88b7c2 100644 ---- a/math/mathcore/test/stress/testSMatrix.cxx -+++ b/math/mathcore/test/stress/testSMatrix.cxx -@@ -7,6 +7,16 @@ - #include "TestHelper.h" - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - #include "VectorTest.h" - #include "TROOT.h" - #include "TSystem.h" -diff --git a/math/mathcore/test/stress/testVector.cxx b/math/mathcore/test/stress/testVector.cxx -index 72e933f0d5..938e27d83c 100644 ---- a/math/mathcore/test/stress/testVector.cxx -+++ b/math/mathcore/test/stress/testVector.cxx -@@ -4,6 +4,16 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - #include "StatFunction.h" - #include "TestHelper.h" - #include "VectorTest.h" -diff --git a/math/mathcore/test/stress/testVector34.cxx b/math/mathcore/test/stress/testVector34.cxx -index 4b31184559..80d6dd6314 100644 ---- a/math/mathcore/test/stress/testVector34.cxx -+++ b/math/mathcore/test/stress/testVector34.cxx -@@ -4,6 +4,16 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - #include "StatFunction.h" - #include "VectorTest.h" - -diff --git a/math/mathcore/test/testGradient.cxx b/math/mathcore/test/testGradient.cxx -index 49a5391b7b..271e89e43c 100644 ---- a/math/mathcore/test/testGradient.cxx -+++ b/math/mathcore/test/testGradient.cxx -@@ -22,6 +22,10 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE -+#define TYPED_TEST_SUITE TYPED_TEST_CASE -+#endif -+ - #include - #include - #include -diff --git a/math/mathcore/test/testGradientFitting.cxx b/math/mathcore/test/testGradientFitting.cxx -index f85f826d9f..1818d1c22f 100644 ---- a/math/mathcore/test/testGradientFitting.cxx -+++ b/math/mathcore/test/testGradientFitting.cxx -@@ -13,6 +13,16 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - #include - #include - -diff --git a/math/mathmore/test/testStress.cxx b/math/mathmore/test/testStress.cxx -index 47bcdd250f..5cf20e69a1 100644 ---- a/math/mathmore/test/testStress.cxx -+++ b/math/mathmore/test/testStress.cxx -@@ -26,6 +26,16 @@ - - #include "gtest/gtest.h" - -+#ifndef TYPED_TEST_SUITE_P -+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P -+#endif -+#ifndef REGISTER_TYPED_TEST_SUITE_P -+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P -+#endif -+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P -+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P -+#endif -+ - using ::testing::TestWithParam; - using ::testing::Values; - -diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx -index 71d7b632d2..9063e51070 100644 ---- a/roofit/histfactory/test/testHistFactory.cxx -+++ b/roofit/histfactory/test/testHistFactory.cxx -@@ -22,6 +22,10 @@ - #include "TCanvas.h" - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - - using namespace RooStats; -diff --git a/roofit/multiprocess/test/test_Job.cxx b/roofit/multiprocess/test/test_Job.cxx -index 22e66fc73c..61cc11771d 100644 ---- a/roofit/multiprocess/test/test_Job.cxx -+++ b/roofit/multiprocess/test/test_Job.cxx -@@ -24,6 +24,11 @@ - #include "RooFit/MultiProcess/Queue.h" // ... JobManager::queue() - - #include "gtest/gtest.h" -+ -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include "utils.h" - - class xSquaredPlusBVectorSerial { -diff --git a/roofit/roofitZMQ/test/test_ZMQ.cpp b/roofit/roofitZMQ/test/test_ZMQ.cpp -index 6dcceaff08..73e75be147 100644 ---- a/roofit/roofitZMQ/test/test_ZMQ.cpp -+++ b/roofit/roofitZMQ/test/test_ZMQ.cpp -@@ -16,6 +16,10 @@ - - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include // fork, usleep - - #include -diff --git a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp -index f8421613ac..3ae6285a12 100644 ---- a/roofit/roofitcore/test/TestStatistics/RooRealL.cpp -+++ b/roofit/roofitcore/test/TestStatistics/RooRealL.cpp -@@ -34,6 +34,10 @@ - - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - class RooRealL - : public ::testing::TestWithParam> { - }; -diff --git a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp -index f4adf63eec..05164277f0 100644 ---- a/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp -+++ b/roofit/roofitcore/test/TestStatistics/testLikelihoodGradientJob.cpp -@@ -33,6 +33,11 @@ - #include // runtime_error - - #include "gtest/gtest.h" -+ -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include "../test_lib.h" // generate_1D_gaussian_pdf_nll - - using RooFit::TestStatistics::LikelihoodWrapper; -diff --git a/roofit/roofitcore/test/testProxiesAndCategories.cxx b/roofit/roofitcore/test/testProxiesAndCategories.cxx -index bed3c399bb..550e0c5ac9 100644 ---- a/roofit/roofitcore/test/testProxiesAndCategories.cxx -+++ b/roofit/roofitcore/test/testProxiesAndCategories.cxx -@@ -16,6 +16,9 @@ - - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif - - TEST(RooCategory, CategoryDefineMultiState) { - RooCategory myCat("myCat", "A category", { {"0Lep", 0}, {"1Lep", 1}, {"2Lep", 2}, {"3Lep", 3} }); -diff --git a/roofit/roofitcore/test/testRooDataHist.cxx b/roofit/roofitcore/test/testRooDataHist.cxx -index 90782e0749..f6b5e087ae 100644 ---- a/roofit/roofitcore/test/testRooDataHist.cxx -+++ b/roofit/roofitcore/test/testRooDataHist.cxx -@@ -18,6 +18,10 @@ - - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - #include - -diff --git a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx -index c1978ae47e..877ab1525f 100644 ---- a/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx -+++ b/roofit/roofitcore/test/testRooGradMinimizerFcn.cxx -@@ -22,6 +22,11 @@ - #include // remove redundant workspace files - - #include "gtest/gtest.h" -+ -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include "test_lib.h" - - #include -diff --git a/tree/dataframe/test/dataframe_definepersample.cxx b/tree/dataframe/test/dataframe_definepersample.cxx -index 772b8baa70..37da9f3f95 100644 ---- a/tree/dataframe/test/dataframe_definepersample.cxx -+++ b/tree/dataframe/test/dataframe_definepersample.cxx -@@ -6,6 +6,10 @@ - - #include - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - #include - #include // std::thread::hardware_concurrency -diff --git a/tree/dataframe/test/dataframe_merge_results.cxx b/tree/dataframe/test/dataframe_merge_results.cxx -index 9354b75a39..ea439ea006 100644 ---- a/tree/dataframe/test/dataframe_merge_results.cxx -+++ b/tree/dataframe/test/dataframe_merge_results.cxx -@@ -340,7 +340,7 @@ TEST(RDataFrameMergeResults, Merge5Hists) - EXPECT_FALSE(mh3); - EXPECT_FALSE(mh4); - EXPECT_FALSE(mh5); -- EXPECT_TRUE(mergedptr); -+ EXPECT_TRUE(!!mergedptr); - - const auto &mh = mergedptr->GetValue(); - -diff --git a/tree/dataframe/test/dataframe_regression.cxx b/tree/dataframe/test/dataframe_regression.cxx -index 9801067cf4..8a991f40c5 100644 ---- a/tree/dataframe/test/dataframe_regression.cxx -+++ b/tree/dataframe/test/dataframe_regression.cxx -@@ -9,6 +9,10 @@ - - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - // Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially - class RDFRegressionTests : public ::testing::TestWithParam { - protected: -diff --git a/tree/dataframe/test/dataframe_samplecallback.cxx b/tree/dataframe/test/dataframe_samplecallback.cxx -index 188d58dd31..7734586eb3 100644 ---- a/tree/dataframe/test/dataframe_samplecallback.cxx -+++ b/tree/dataframe/test/dataframe_samplecallback.cxx -@@ -11,6 +11,10 @@ - - #include - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include // std::min - #include - #include -diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx -index 6006f99017..b507edc13f 100644 ---- a/tree/dataframe/test/dataframe_simple.cxx -+++ b/tree/dataframe/test/dataframe_simple.cxx -@@ -1,5 +1,10 @@ - /****** Run RDataFrame tests both with and without IMT enabled *******/ - #include -+ -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - #include - #include -diff --git a/tree/dataframe/test/dataframe_vary.cxx b/tree/dataframe/test/dataframe_vary.cxx -index 2284b21f53..5a26c43cdc 100644 ---- a/tree/dataframe/test/dataframe_vary.cxx -+++ b/tree/dataframe/test/dataframe_vary.cxx -@@ -7,6 +7,10 @@ - - #include - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - using ROOT::RDF::Experimental::VariationsFor; - - class RDFVary : public ::testing::TestWithParam { -diff --git a/tree/tree/test/TOffsetGeneration.cxx b/tree/tree/test/TOffsetGeneration.cxx -index 7b6b7647aa..77f125ca60 100644 ---- a/tree/tree/test/TOffsetGeneration.cxx -+++ b/tree/tree/test/TOffsetGeneration.cxx -@@ -9,6 +9,10 @@ - #include "ROOTUnitTestSupport.h" - #include "gtest/gtest.h" - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define SetUpTestSuite SetUpTestCase -+#endif -+ - #include "ElementStruct.h" - - class TOffsetGeneration : public ::testing::Test { --- -2.35.1 - -From 33e5da8c1f678382ab2fd65d000d388bb0dbf3ab Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 17 Apr 2022 22:17:56 +0200 -Subject: [PATCH] Backward compatibility with older googletest versions in EPEL - ---- - math/vecops/test/vecops_rvec.cxx | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx -index 7b513a858b..bea39636ce 100644 ---- a/math/vecops/test/vecops_rvec.cxx -+++ b/math/vecops/test/vecops_rvec.cxx -@@ -13,6 +13,10 @@ - #include - #include - -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - using namespace ROOT; - using namespace ROOT::VecOps; - using namespace ROOT::Detail::VecOps; // for `IsSmall` and `IsAdopting` --- -2.35.1 - -From cae450e0210fe584ef30d155a4217cfe2f5aa358 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 30 Jul 2022 17:05:31 +0200 -Subject: [PATCH] Backward compatibility with older googletest versions in EPEL - ---- - tree/dataframe/test/dataframe_datasetspec.cxx | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/tree/dataframe/test/dataframe_datasetspec.cxx b/tree/dataframe/test/dataframe_datasetspec.cxx -index b422dcf28b..14329102af 100644 ---- a/tree/dataframe/test/dataframe_datasetspec.cxx -+++ b/tree/dataframe/test/dataframe_datasetspec.cxx -@@ -1,4 +1,9 @@ - #include -+ -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - #include - #include -@@ -36,6 +41,7 @@ protected: - - ~RDatasetSpecTest() {} - -+public: - static void SetUpTestCase() - { - auto dfWriter0 = RDataFrame(5).Define("z", [](ULong64_t e) { return e + 100; }, {"rdfentry_"}); --- -2.37.1 - diff --git a/root-older-python.patch b/root-older-python.patch deleted file mode 100644 index fa6a05a..0000000 --- a/root-older-python.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 61116151cce8fe5b397555a65f7b55001b8e416b Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 23 Apr 2021 21:39:17 +0200 -Subject: [PATCH] Compat with no f-strings - ---- - tutorials/tmva/PyTorch_Generate_CNN_Model.py | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/tutorials/tmva/PyTorch_Generate_CNN_Model.py b/tutorials/tmva/PyTorch_Generate_CNN_Model.py -index 7024112f03..5a314f86dd 100644 ---- a/tutorials/tmva/PyTorch_Generate_CNN_Model.py -+++ b/tutorials/tmva/PyTorch_Generate_CNN_Model.py -@@ -56,7 +56,7 @@ def fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, crit - # print train statistics - running_train_loss += train_loss.item() - if i % 4 == 3: # print every 4 mini-batches -- print(f"[{epoch+1}, {i+1}] train loss: {running_train_loss / 4 :.3f}") -+ print("[{}, {}] train loss: {:.3f}".format(epoch+1, i+1, running_train_loss / 4)) - running_train_loss = 0.0 - - if schedule: -@@ -75,15 +75,15 @@ def fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, crit - - curr_val = running_val_loss / len(val_loader) - if save_best: -- if best_val==None: -- best_val = curr_val -- best_val = save_best(model, curr_val, best_val) -+ if best_val is None: -+ best_val = curr_val -+ best_val = save_best(model, curr_val, best_val) - - # print val statistics per epoch -- print(f"[{epoch+1}] val loss: {curr_val :.3f}") -+ print("[{}] val loss: {:.3f}".format(epoch+1, curr_val)) - running_val_loss = 0.0 - -- print(f"Finished Training on {epoch+1} Epochs!") -+ print("Finished Training on {} Epochs!".format(epoch+1)) - - return model - --- -2.30.2 - diff --git a/root-rcolor-static-init.patch b/root-rcolor-static-init.patch deleted file mode 100644 index 18e4299..0000000 --- a/root-rcolor-static-init.patch +++ /dev/null @@ -1,42 +0,0 @@ -From c4df90861879f45b281c2a8e55212b711cfdbfa0 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 29 Mar 2022 15:30:20 +0200 -Subject: [PATCH] Avoid crashes due to static initialization order - -Most commonly seen on ppc64le. Backtrace: - -=========================================================== -The lines below might hint at the cause of the crash. -You may get help by asking at the ROOT forum https://root.cern/forum -Only if you are really convinced it is a bug in ROOT then please submit a -report at https://root.cern/bugs Please post the ENTIRE stack trace -from above as an attachment in addition to anything else -that might help us fixing this issue. -=========================================================== - #11 ROOT::Experimental::RColor::toHex[abi:cxx11](unsigned char) (v=) at /usr/include/c++/11/ext/new_allocator.h:82 - #12 0x00007fff90c220ec in ROOT::Experimental::RColor::SetRGB (this=0x7fffeadf5d10, r=, g=, b=) at /usr/include/c++/11/ext/new_allocator.h:89 ---- - graf2d/gpadv7/src/RColor.cxx | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/graf2d/gpadv7/src/RColor.cxx b/graf2d/gpadv7/src/RColor.cxx -index de325f1ea3..6878360073 100644 ---- a/graf2d/gpadv7/src/RColor.cxx -+++ b/graf2d/gpadv7/src/RColor.cxx -@@ -232,10 +232,10 @@ std::vector RColor::AsRGBA() const - - std::string RColor::toHex(uint8_t v) - { -- static const char *digits = "0123456789ABCDEF"; -+ auto digits = [](auto d) { return d < 10 ? '0' + d : 'A' - 10 + d; }; - std::string res(2,'0'); -- res[0] = digits[v >> 4]; -- res[1] = digits[v & 0xf]; -+ res[0] = digits(v >> 4); -+ res[1] = digits(v & 0xf); - return res; - } - --- -2.35.1 - diff --git a/root-roofit-tutorial.patch b/root-roofit-tutorial.patch deleted file mode 100644 index 9d73e11..0000000 --- a/root-roofit-tutorial.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 914e46f1c591f8b9b34115863ff31e42e19bfb97 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 28 Mar 2022 09:32:24 +0200 -Subject: [PATCH] Use calls from Python directly - -The rf105_funcbinding.py tutorial used to trigger errors due to unknown -symbols. In particular the custum new and delete operators used in RooFit -were not autoloaded when needed. - -In the tutorial there was a workaround implemented to call ProcessLine -instead of making calls directly form Python, to make the autoloading -from the C++ side of ROOT instead. This did not quite fix the problem, -and the tutorial still randomly failed due to missing symbols. - -After changing the algorthm used for autoloading in commit -6ae602bba7d33c900a117c9de0187ab5a28e14b8 these problems were solved. - -After this fix using the direct calls from Python also works, so this -PR suggests updating the tutorial to do that. ---- - tutorials/roofit/rf105_funcbinding.py | 30 ++++++--------------------- - 1 file changed, 6 insertions(+), 24 deletions(-) - -diff --git a/tutorials/roofit/rf105_funcbinding.py b/tutorials/roofit/rf105_funcbinding.py -index 72d9cf62fc..b9de2a095a 100644 ---- a/tutorials/roofit/rf105_funcbinding.py -+++ b/tutorials/roofit/rf105_funcbinding.py -@@ -17,15 +17,8 @@ import ROOT - # --------------------------------------------------- - - # Bind one-dimensional ROOT.TMath.Erf function as ROOT.RooAbsReal function --# Directly trying this in python doesn't work: --# x = ROOT.RooRealVar("x", "x", -3, 3) --# erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x) --# Need to go through C interface --ROOT.gInterpreter.ProcessLine( -- 'auto x = RooRealVar("x", "x", -3, 3); auto myerf = RooFit::bindFunction("erf", TMath::Erf, x)' --) --x = ROOT.x --erf = ROOT.myerf -+x = ROOT.RooRealVar("x", "x", -3, 3) -+erf = ROOT.RooFit.bindFunction("erf", ROOT.TMath.Erf, x) - - # Print erf definition - erf.Print() -@@ -38,21 +31,10 @@ erf.plotOn(frame1) - # ----------------------------------------------------------------------- - - # Bind pdf ROOT.Math.Beta with three variables as ROOT.RooAbsPdf function --# As above, this does not work directly in python --# x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999) --# a = ROOT.RooRealVar("a", "a", 5, 0, 10) --# b = ROOT.RooRealVar("b", "b", 2, 0, 10) --# beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b) --ROOT.gInterpreter.ProcessLine( -- 'auto x2 = RooRealVar("x2", "x2", 0, 0.999);\ -- auto a = RooRealVar("a", "a", 5, 0, 10);\ -- auto b = RooRealVar("b", "b", 5, 0, 10);\ -- auto beta = RooFit::bindPdf("beta", ROOT::Math::beta_pdf, x2, a, b)' --) --x2 = ROOT.x2 --a = ROOT.a --b = ROOT.b --beta = ROOT.beta -+x2 = ROOT.RooRealVar("x2", "x2", 0, 0.999) -+a = ROOT.RooRealVar("a", "a", 5, 0, 10) -+b = ROOT.RooRealVar("b", "b", 2, 0, 10) -+beta = ROOT.RooFit.bindPdf("beta", ROOT.Math.beta_pdf, x2, a, b) - - # Perf beta definition - beta.Print() --- -2.35.1 - diff --git a/root-stressvector-test-fails-on-ix86.patch b/root-stressvector-test-fails-on-ix86.patch new file mode 100644 index 0000000..ca3f212 --- /dev/null +++ b/root-stressvector-test-fails-on-ix86.patch @@ -0,0 +1,37 @@ +From df2902f6c970aa903200a272fd6a79788da3df4f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 28 Feb 2023 11:33:28 +0100 +Subject: [PATCH] The stressVector test fails on ix86 due to too strict check: + +DeltaR TLorentzVector time = 0.2610929 (sec) +DeltaR XYZTVector time = 0.22973299 (sec) +DeltaR PtEtaPhiEVector time = 0.0016570091 (sec) +-12823.3585955796 -12823.35859557827 -12823.35859557827 +Test DeltaR failed !! + +The new value for the scale parameter (50) was calculated from the +above values: + +root [2] (-12823.3585955796 - (-12823.35859557827)) / -12823.3585955796 / std::numeric_limits::epsilon() / 10 +(double) 46.762663 +--- + test/stressVector.cxx | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/test/stressVector.cxx b/test/stressVector.cxx +index 83b86fb2b4..18dc97d421 100644 +--- a/test/stressVector.cxx ++++ b/test/stressVector.cxx +@@ -540,8 +540,7 @@ int main(int argc,const char *argv[]) { + s1=a.testDeltaR (v1, t, t1, "DeltaR TLorentzVector " ); + s2=a.testDeltaR (v2, t, t2, "DeltaR XYZTVector " ); + s3=a.testDeltaR (v3, t, t3, "DeltaR PtEtaPhiEVector " ); +- a.check("DeltaR",s1,s2,s3,15); +- ++ a.check("DeltaR", s1, s2, s3, 50); + + int n1, n2, n3; + n1 = a.testAnalysis (v1, t, t1, "Analysis1 TLorentzVector " ); +-- +2.39.2 + diff --git a/root-symbol-rewrite.patch b/root-symbol-rewrite.patch deleted file mode 100644 index c91bbe6..0000000 --- a/root-symbol-rewrite.patch +++ /dev/null @@ -1,31 +0,0 @@ -From f99eedeb72644671cd584f48e4c136d47f6b0020 Mon Sep 17 00:00:00 2001 -From: Fangrui Song -Date: Thu, 12 Dec 2019 16:18:57 -0800 -Subject: [PATCH] [MC][PowerPC] Fix a crash when redefining a symbol after .set - -Fix PR44284. This is probably not valid assembly but we should not crash. - -Reviewed By: luporl, #powerpc, steven.zhang - -Differential Revision: https://reviews.llvm.org/D71443 ---- - interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp -index 00df9e41fdae..5e91bdb2f8de 100644 ---- a/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp -+++ b/interpreter/llvm/src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp -@@ -201,7 +201,8 @@ public: - - void finish() override { - for (auto *Sym : UpdateOther) -- copyLocalEntry(Sym, Sym->getVariableValue()); -+ if (Sym->isVariable()) -+ copyLocalEntry(Sym, Sym->getVariableValue()); - } - - private: --- -2.33.1 - diff --git a/root-test-timeout.patch b/root-test-timeout.patch deleted file mode 100644 index a07aa39..0000000 --- a/root-test-timeout.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 4d09235937ea29913cbf9a9b5bcd002b52557c0e Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 3 Jul 2022 08:18:57 +0200 -Subject: [PATCH] Increase test timeout - ---- - cmake/modules/RootMacros.cmake | 14 +++++++------- - tmva/tmva/test/DNN/CMakeLists.txt | 2 +- - tree/tree/test/CMakeLists.txt | 2 +- - tutorials/CMakeLists.txt | 4 ++-- - 4 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake -index cc61f4bbad..3e4559fc19 100644 ---- a/cmake/modules/RootMacros.cmake -+++ b/cmake/modules/RootMacros.cmake -@@ -1779,6 +1779,7 @@ endfunction() - #---------------------------------------------------------------------------- - # function ROOT_ADD_GTEST( source1 source2... - # [WILLFAIL] Negate output of test -+# [TIMEOUT seconds] - # [COPY_TO_BUILDDIR file1 file2] Copy listed files when ctest invokes the test. - # [LIBRARIES lib1 lib2...] -- Libraries to link against - # [LABELS label1 label2...] -- Labels to annotate the test -@@ -1790,7 +1791,7 @@ endfunction() - function(ROOT_ADD_GTEST test_suite) - cmake_parse_arguments(ARG - "WILLFAIL" -- "REPEATS;FAILREGEX" -+ "TIMEOUT;REPEATS;FAILREGEX" - "COPY_TO_BUILDDIR;LIBRARIES;LABELS;INCLUDE_DIRS" ${ARGN}) - - ROOT_GET_SOURCES(source_files . ${ARG_UNPARSED_ARGUMENTS}) -@@ -1821,9 +1822,7 @@ function(ROOT_ADD_GTEST test_suite) - if(ARG_WILLFAIL) - set(willfail WILLFAIL) - endif() -- if(ARG_LABELS) -- set(labels "LABELS ${ARG_LABELS}") -- endif() -+ - if(ARG_REPEATS) - set(extra_command --gtest_repeat=${ARG_REPEATS} --gtest_break_on_failure) - endif() -@@ -1833,10 +1832,11 @@ function(ROOT_ADD_GTEST test_suite) - gtest${mangled_name} - COMMAND ${test_suite} ${extra_command} - WORKING_DIR ${CMAKE_CURRENT_BINARY_DIR} -- COPY_TO_BUILDDIR ${ARG_COPY_TO_BUILDDIR} -+ COPY_TO_BUILDDIR "${ARG_COPY_TO_BUILDDIR}" - ${willfail} -- ${labels} -- FAILREGEX ${ARG_FAILREGEX} -+ TIMEOUT "${ARG_TIMEOUT}" -+ LABELS "${ARG_LABELS}" -+ FAILREGEX "${ARG_FAILREGEX}" - ) - endfunction() - -diff --git a/tmva/tmva/test/DNN/CMakeLists.txt b/tmva/tmva/test/DNN/CMakeLists.txt -index a9233682f6..653540e9e3 100644 ---- a/tmva/tmva/test/DNN/CMakeLists.txt -+++ b/tmva/tmva/test/DNN/CMakeLists.txt -@@ -144,7 +144,7 @@ ROOT_ADD_TEST(TMVA-DNN-MethodDL-SGD-Optimization-Cpu COMMAND testMethodDLSGDOpti - - # DNN - MethodDL Adam Optimization CPU - ROOT_EXECUTABLE(testMethodDLAdamOptimizationCpu TestMethodDLAdamOptimizationCpu.cxx LIBRARIES ${Libraries}) --ROOT_ADD_TEST(TMVA-DNN-MethodDL-Adam-Optimization-Cpu COMMAND testMethodDLAdamOptimizationCpu) -+ROOT_ADD_TEST(TMVA-DNN-MethodDL-Adam-Optimization-Cpu COMMAND testMethodDLAdamOptimizationCpu TIMEOUT 1800) - - # DNN - MethodDL Adagrad Optimization CPU - ROOT_EXECUTABLE(testMethodDLAdagradOptimizationCpu TestMethodDLAdagradOptimizationCpu.cxx LIBRARIES ${Libraries}) -diff --git a/tree/tree/test/CMakeLists.txt b/tree/tree/test/CMakeLists.txt -index dbe664f8a0..6284e3c4c5 100644 ---- a/tree/tree/test/CMakeLists.txt -+++ b/tree/tree/test/CMakeLists.txt -@@ -20,7 +20,7 @@ ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer) - target_include_directories(testTOffsetGeneration PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - ROOT_STANDARD_LIBRARY_PACKAGE(SillyStruct NO_INSTALL_HEADERS HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/SillyStruct.h SOURCES SillyStruct.cxx LINKDEF SillyStructLinkDef.h DEPENDENCIES RIO) - ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer) --ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer) -+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000) - ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer) - ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct) - ROOT_ADD_GTEST(testTBasket TBasket.cxx LIBRARIES RIO Tree) -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index 6ae9be5869..982432fe15 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -532,7 +532,7 @@ foreach(t ${tutorials}) - - # These tests on ARM64 need much more than 20 minutes - increase the timeout - if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) -- set(thisTestTimeout 2400) # 40m -+ set(thisTestTimeout 3000) # 50m - else() - set(thisTestTimeout 1200) # 20m - endif() -@@ -566,7 +566,7 @@ foreach(t ${mpi_tutorials}) - - # These tests on ARM64 need much more than 20 minutes - increase the timeout - if(ROOT_ARCHITECTURE MATCHES arm64 OR ROOT_ARCHITECTURE MATCHES ppc64) -- set(thisTestTimeout 2400) # 40m -+ set(thisTestTimeout 3000) # 50m - else() - set(thisTestTimeout 1200) # 20m - endif() --- -2.38.1 - diff --git a/root-testRooAbsL-test-compares-two-doubles-and-fails.patch b/root-testRooAbsL-test-compares-two-doubles-and-fails.patch new file mode 100644 index 0000000..24a4148 --- /dev/null +++ b/root-testRooAbsL-test-compares-two-doubles-and-fails.patch @@ -0,0 +1,49 @@ +From d6a11ace0d3d25c96dd20cef1436642b5caa102e Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 28 Feb 2023 11:02:03 +0100 +Subject: [PATCH] The testRooAbsL test compares two doubles and fails due to + rounding errors. The failure happens on ppc64le and aarch64. + +This PR changes EXPECT_EQ to EXPECT_DOUBLE_EQ in the affected test. + +[ RUN ] SimBinnedConstrainedTest.SubEventSections +/builddir/build/BUILD/root-6.28.00/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx:293: Failure +Expected equality of these values: + whole.Sum() + Which is: -1263.796050661927 + N_events_total_parts.Sum() + Which is: -1263.7960506619268 +/builddir/build/BUILD/root-6.28.00/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx:303: Failure +Expected equality of these values: + whole.Sum() + Which is: -1263.796050661927 + thrice_N_events_total_parts.Sum() + Which is: -1263.7960506619268 +[ FAILED ] SimBinnedConstrainedTest.SubEventSections (199 ms) +--- + roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx +index 600f4da7be..05dcd6a241 100644 +--- a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx ++++ b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx +@@ -293,7 +293,7 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) + {static_cast(ix) / N_events_total, static_cast(ix + 1) / N_events_total}, 0, + likelihood->getNComponents()); + } +- EXPECT_EQ(whole.Sum(), N_events_total_parts.Sum()); ++ EXPECT_DOUBLE_EQ(whole.Sum(), N_events_total_parts.Sum()); + + // now let's do it again over a number of sections 3 times the number of events + ROOT::Math::KahanSum thrice_N_events_total_parts; +@@ -303,5 +303,5 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) + {static_cast(ix) / (3 * N_events_total), static_cast(ix + 1) / (3 * N_events_total)}, 0, + likelihood->getNComponents()); + } +- EXPECT_EQ(whole.Sum(), thrice_N_events_total_parts.Sum()); ++ EXPECT_DOUBLE_EQ(whole.Sum(), thrice_N_events_total_parts.Sum()); + } +-- +2.39.2 + diff --git a/root-threadsh1-avoid-heap-use-after-free.patch b/root-threadsh1-avoid-heap-use-after-free.patch deleted file mode 100644 index 6111f2b..0000000 --- a/root-threadsh1-avoid-heap-use-after-free.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 493c4210168fa475aa4130c12e8fdff3b7d85c09 Mon Sep 17 00:00:00 2001 -From: Philippe Canal -Date: Mon, 7 Mar 2022 13:32:37 -0600 -Subject: [PATCH] threadsh1: Avoid heap-use-after-free. - -Previously, the Canvas `Close` signal which triggers a call to the local function `close` which -was unconditionally call `Kill` on its associated thread would call it on an already deleted -object if the `TThread` was deleted before the `TCanvas`. - -This fix #10015 (detected by using ASAN). ---- - tutorials/legacy/thread/threadsh1.C | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - -diff --git a/tutorials/legacy/thread/threadsh1.C b/tutorials/legacy/thread/threadsh1.C -index b819f5d020..d6abc67e36 100644 ---- a/tutorials/legacy/thread/threadsh1.C -+++ b/tutorials/legacy/thread/threadsh1.C -@@ -67,7 +67,8 @@ void *joiner(void *) - void closed(Int_t id) - { - // kill the thread matching the canvas being closed -- t[id]->Kill(); -+ if (t[id]) -+ t[id]->Kill(); - // and set the canvas pointer to 0 - c[id] = 0; - } -@@ -142,11 +143,11 @@ void threadsh1() - t[4]->Join(); - TThread::Ps(); - -- delete t[0]; -- delete t[1]; -- delete t[2]; -- delete t[3]; -- delete t[4]; -+ delete t[0]; t[0] = nullptr; // Prevents after deletion access. -+ delete t[1]; t[1] = nullptr; -+ delete t[2]; t[2] = nullptr; -+ delete t[3]; t[3] = nullptr; -+ delete t[4]; t[4] = nullptr; - - delete rng[0]; - delete rng[1]; --- -2.35.1 - diff --git a/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch b/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch new file mode 100644 index 0000000..6a719c5 --- /dev/null +++ b/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch @@ -0,0 +1,239 @@ +From 54a05a995bef827413d69b63559494a78ed56946 Mon Sep 17 00:00:00 2001 +From: moneta +Date: Tue, 14 Feb 2023 11:00:44 +0100 +Subject: [PATCH] [tmva] Speed up TMVA CNN and RNN tutorials + +Run tutorials with a amximum of 4 threads to avoid MT problems on some machines. +Disable also OpenMP when running in MT in ROOT + +Reduce also by a factor of 5 the number of input events +--- + tutorials/tmva/TMVA_CNN_Classification.C | 25 +++++++++++++++------- + tutorials/tmva/TMVA_CNN_Classification.py | 12 +++++------ + tutorials/tmva/TMVA_RNN_Classification.C | 11 +++++----- + tutorials/tmva/TMVA_RNN_Classification.py | 26 ++++++++++------------- + 4 files changed, 39 insertions(+), 35 deletions(-) + +diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C +index 0966017ae2..cc6829a24d 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.C ++++ b/tutorials/tmva/TMVA_CNN_Classification.C +@@ -107,7 +107,16 @@ void MakeImagesTree(int n, int nh, int nw) + f.Close(); + } + +-void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) ++/// @brief Run the TMVA CNN Classification example ++/// @param nevts : number of signal/background events. Use by default a low value (1000) ++/// but increase to at least 5000 to get a good result ++/// @param opt : vector of bool with method used (default all on if available). The order is: ++/// - TMVA CNN ++/// - Keras CNN ++/// - TMVA DNN ++/// - TMVA BDT ++/// - PyTorch CNN ++void TMVA_CNN_Classification(int nevts = 1000, std::vector opt = {1, 1, 1, 1, 1}) + { + + bool useTMVACNN = (opt.size() > 0) ? opt[0] : false; +@@ -125,17 +134,17 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + + bool writeOutputFile = true; + +- int num_threads = 0; // use default threads ++ int num_threads = 4; // use by default 4 threads if value is not set before ++ // switch off MT in OpenBLAS to avoid conflict with tbb ++ gSystem->Setenv("OMP_NUM_THREADS", "1"); + + TMVA::Tools::Instance(); + + // do enable MT running + if (num_threads >= 0) { + ROOT::EnableImplicitMT(num_threads); +- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); + } +- else +- gSystem->Setenv("OMP_NUM_THREADS", "1"); ++ + + std::cout << "Running with nthreads = " << ROOT::GetThreadPoolSize() << std::endl; + +@@ -161,7 +170,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + The factory is the major TMVA object you have to interact with. Here is the list of parameters you need to pass + + - The first argument is the base of the name of all the output +- weightfiles in the directory weight/ that will be created with the ++ weight files in the directory weight/ that will be created with the + method parameters + + - The second argument is the output file for the training results +@@ -208,7 +217,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + + // if file does not exists create it + if (!fileExist) { +- MakeImagesTree(5000, 16, 16); ++ MakeImagesTree(nevts, 16, 16); + } + + // TString inputFileName = "tmva_class_example.root"; +@@ -289,7 +298,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) + // Boosted Decision Trees + if (useTMVABDT) { + factory.BookMethod(loader, TMVA::Types::kBDT, "BDT", +- "!V:NTrees=400:MinNodeSize=2.5%:MaxDepth=2:BoostType=AdaBoost:AdaBoostBeta=0.5:" ++ "!V:NTrees=200:MinNodeSize=2.5%:MaxDepth=2:BoostType=AdaBoost:AdaBoostBeta=0.5:" + "UseBaggedBoost:BaggedSampleFraction=0.5:SeparationType=GiniIndex:nCuts=20"); + } + /** +diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py +index 0760bacfd9..85fde20763 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.py ++++ b/tutorials/tmva/TMVA_CNN_Classification.py +@@ -25,6 +25,9 @@ + + import ROOT + ++#switch off MT in OpenMP (BLAS) ++ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") ++ + TMVA = ROOT.TMVA + TFile = ROOT.TFile + +@@ -105,6 +108,7 @@ def MakeImagesTree(n, nh, nw): + hasGPU = ROOT.gSystem.GetFromPipe("root-config --has-tmva-gpu") == "yes" + hasCPU = ROOT.gSystem.GetFromPipe("root-config --has-tmva-cpu") == "yes" + ++nevt = 1000 # use a larger value to get better results + opt = [1, 1, 1, 1, 1] + useTMVACNN = opt[0] if len(opt) > 0 else False + useKerasCNN = opt[1] if len(opt) > 1 else False +@@ -141,17 +145,13 @@ if not useTMVACNN: + + writeOutputFile = True + +-num_threads = 0 # use default threads ++num_threads = 4 # use default threads + max_epochs = 10 # maximum number of epochs used for training + + + # do enable MT running + if num_threads >= 0: + ROOT.EnableImplicitMT(num_threads) +- if (num_threads > 0) : +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", str(num_threads)) +-else: +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") + + print("Running with nthreads = ", ROOT.GetThreadPoolSize()) + +@@ -218,7 +218,7 @@ inputFileName = "images_data_16x16.root" + + # if the input file does not exist create it + if ROOT.gSystem.AccessPathName(inputFileName): +- MakeImagesTree(5000, 16, 16) ++ MakeImagesTree(nevt, 16, 16) + + inputFile = TFile.Open(inputFileName) + if inputFile is None: +diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C +index 2711673ec9..8701ba6c19 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.C ++++ b/tutorials/tmva/TMVA_RNN_Classification.C +@@ -136,13 +136,14 @@ void MakeTimeData(int n, int ntime, int ndim ) + } + } + /// macro for performing a classification using a Recurrent Neural Network ++/// @param nevts = 2000 Number of events used. (increase for better classification results) + /// @param use_type + /// use_type = 0 use Simple RNN network + /// use_type = 1 use LSTM network + /// use_type = 2 use GRU + /// use_type = 3 build 3 different networks with RNN, LSTM and GRU + +-void TMVA_RNN_Classification(int use_type = 1) ++void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1) + { + + const int ninput = 30; +@@ -150,7 +151,7 @@ void TMVA_RNN_Classification(int use_type = 1) + const int batchSize = 100; + const int maxepochs = 20; + +- int nTotEvts = 10000; // total events to be generated for signal or background ++ int nTotEvts = nevts; // total events to be generated for signal or background + + bool useKeras = true; + +@@ -190,14 +191,12 @@ void TMVA_RNN_Classification(int use_type = 1) + useKeras = false; + #endif + +- int num_threads = 0; // use by default all threads ++ int num_threads = 4; // use by default all threads ++ gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS + // do enable MT running + if (num_threads >= 0) { + ROOT::EnableImplicitMT(num_threads); +- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); + } +- else +- gSystem->Setenv("OMP_NUM_THREADS", "1"); + + TMVA::Config::Instance(); + +diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py +index 88280a5849..625a120b3d 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.py ++++ b/tutorials/tmva/TMVA_RNN_Classification.py +@@ -22,6 +22,16 @@ + + import ROOT + ++num_threads = 4 # use max 4 threads ++# do enable MT running ++if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": ++ ROOT.EnableImplicitMT(num_threads) ++ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS ++ print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) ++else: ++ print("Running in serail mode since ROOT does not support MT") ++ ++ + TMVA = ROOT.TMVA + TFile = ROOT.TFile + +@@ -141,7 +151,7 @@ ntime = 10 + batchSize = 100 + maxepochs = 10 + +-nTotEvts = 10000 # total events to be generated for signal or background ++nTotEvts = 2000 # total events to be generated for signal or background + + useKeras = True + +@@ -184,22 +194,8 @@ if ROOT.gSystem.GetFromPipe("root-config --has-tmva-pymva") == "yes": + else: + useKeras = False + +-num_threads = 0 # use by default all threads +-# do enable MT running +-if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": +- if num_threads >= 0: +- ROOT.EnableImplicitMT(num_threads) +- if num_threads > 0: +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", str(num_threads)) +- else: +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") + + +- print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) +- +-else: +- print("Running in serail mode since ROOT does not support MT") +- + inputFileName = "time_data_t10_d30.root" + + fileDoesNotExist = ROOT.gSystem.AccessPathName(inputFileName) +-- +2.39.2 + diff --git a/root-tmva-threads.patch b/root-tmva-threads.patch deleted file mode 100644 index 7506abc..0000000 --- a/root-tmva-threads.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 589ac491519446191b7d480a476ab831dc09b5f9 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 30 Mar 2022 15:51:07 +0200 -Subject: [PATCH] Limit the number of threads in TMVA CNN/DNN test to save - memory - -Processing /builddir/build/BUILD/root-6.26.00/tutorials/tmva/TMVA_CNN_Classification.C... -Running with nthreads = 224 - -[ ... ] - -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. -OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata. - *** Break *** segmentation violation - *** Break *** segmentation violation - *** Break *** segmentation violation - *** Break *** segmentation violation - *** Break *** segmentation violation - *** Break *** segmentation violation ---- - tutorials/tmva/TMVA_CNN_Classification.C | 6 ++++-- - tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++-- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C -index 3e590c5958..b748fcee6c 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.C -+++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -125,14 +125,16 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) - - bool writeOutputFile = true; - -- int num_threads = 0; // use default threads -+ int num_threads = 32; - - TMVA::Tools::Instance(); - - // do enable MT running - if (num_threads >= 0) { - ROOT::EnableImplicitMT(num_threads); -- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); -+ if (ROOT::GetThreadPoolSize() > 0) -+ gSystem->Setenv("OMP_NUM_THREADS", -+ TString::Format("%u", ROOT::GetThreadPoolSize())); - } - else - gSystem->Setenv("OMP_NUM_THREADS", "1"); -diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C -index 5be80824f9..f902025875 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.C -+++ b/tutorials/tmva/TMVA_RNN_Classification.C -@@ -190,11 +190,13 @@ void TMVA_RNN_Classification(int use_type = 1) - useKeras = false; - #endif - -- int num_threads = 0; // use by default all threads -+ int num_threads = 32; - // do enable MT running - if (num_threads >= 0) { - ROOT::EnableImplicitMT(num_threads); -- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); -+ if (ROOT::GetThreadPoolSize() > 0) -+ gSystem->Setenv("OMP_NUM_THREADS", -+ TString::Format("%u", ROOT::GetThreadPoolSize())); - } - else - gSystem->Setenv("OMP_NUM_THREADS", "1"); --- -2.35.1 - diff --git a/root-unbundle-gtest.patch b/root-unbundle-gtest.patch deleted file mode 100644 index 1bdf869..0000000 --- a/root-unbundle-gtest.patch +++ /dev/null @@ -1,202 +0,0 @@ -From 29884ae01fde27204d92f554da4e92227a2ed1e6 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 26 Mar 2022 10:22:07 +0100 -Subject: [PATCH 1/2] Implement builtin_gtest option - -By setting the option to OFF the system gtest and gmock are used. -This allows doing tests without network available, e.g. during a -package build for Fedora/EPEL. ---- - cmake/modules/FindGTest.cmake | 81 +++++++++++++++++++++ - cmake/modules/RootBuildOptions.cmake | 2 + - cmake/modules/RootMacros.cmake | 2 +- - cmake/modules/SearchInstalledSoftware.cmake | 44 ++++++++--- - 4 files changed, 118 insertions(+), 11 deletions(-) - create mode 100644 cmake/modules/FindGTest.cmake - -diff --git a/cmake/modules/FindGTest.cmake b/cmake/modules/FindGTest.cmake -new file mode 100644 -index 0000000000..438ec501c2 ---- /dev/null -+++ b/cmake/modules/FindGTest.cmake -@@ -0,0 +1,81 @@ -+# Find the gtest and gmock includes and library. -+# -+# This module defines -+# GTEST_LIBRARIES -+# GTEST_MAIN_LIBRARIES -+# GTEST_INCLUDE_DIRS -+# GMOCK_LIBRARIES -+# GMOCK_MAIN_LIBRARIES -+# GMOCK_INCLUDE_DIRS -+# -+# GTEST_FOUND true if all libraries present -+ -+find_package(Threads QUIET) -+ -+find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h) -+find_library(GTEST_LIBRARIES NAMES gtest) -+find_library(GTEST_MAIN_LIBRARIES NAMES gtest_main) -+ -+find_path(GMOCK_INCLUDE_DIRS NAMES gmock/gmock.h) -+find_library(GMOCK_LIBRARIES NAMES gmock) -+find_library(GMOCK_MAIN_LIBRARIES NAMES gmock_main) -+ -+# Special for EPEL 7's gmock -+if(NOT GMOCK_LIBRARIES) -+ find_path(GMOCK_SRC_DIR NAMES gmock-all.cc PATHS /usr/src/gmock) -+endif() -+ -+if(NOT GMOCK_MAIN_LIBRARIES) -+ find_path(GMOCK_MAIN_SRC_DIR NAMES gmock_main.cc PATHS /usr/src/gmock) -+endif() -+ -+if (GTEST_INCLUDE_DIRS AND -+ GTEST_LIBRARIES AND -+ GTEST_MAIN_LIBRARIES AND -+ GMOCK_INCLUDE_DIRS AND -+ (GMOCK_LIBRARIES OR GMOCK_SRC_DIR) AND -+ (GMOCK_MAIN_LIBRARIES OR GMOCK_MAIN_SRC_DIR)) -+ -+ add_library(gtest UNKNOWN IMPORTED) -+ set_target_properties(gtest PROPERTIES -+ IMPORTED_LOCATION ${GTEST_LIBRARIES} -+ INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIRS}) -+ target_link_libraries(gtest INTERFACE Threads::Threads) -+ -+ add_library(gtest_main UNKNOWN IMPORTED) -+ set_target_properties(gtest_main PROPERTIES -+ IMPORTED_LOCATION ${GTEST_MAIN_LIBRARIES}) -+ target_link_libraries(gtest_main INTERFACE gtest Threads::Threads) -+ -+ if(GMOCK_LIBRARIES) -+ add_library(gmock UNKNOWN IMPORTED) -+ set_target_properties(gmock PROPERTIES -+ IMPORTED_LOCATION ${GMOCK_LIBRARIES} -+ INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIRS}) -+ else() -+ add_library(gmock STATIC ${GMOCK_SRC_DIR}/gmock-all.cc) -+ target_include_directories(gmock PUBLIC ${GMOCK_INCLUDE_DIRS}) -+ set(GMOCK_LIBRARIES gmock) -+ endif() -+ target_link_libraries(gmock INTERFACE gtest Threads::Threads) -+ -+ if(GMOCK_MAIN_LIBRARIES) -+ add_library(gmock_main UNKNOWN IMPORTED) -+ set_target_properties(gmock_main PROPERTIES -+ IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARIES}) -+ else() -+ add_library(gmock_main STATIC ${GMOCK_MAIN_SRC_DIR}/gmock_main.cc) -+ set(GMOCK_MAIN_LIBRARIES gmock_main) -+ endif() -+ target_link_libraries(gmock_main INTERFACE gmock Threads::Threads) -+ -+endif() -+ -+include(FindPackageHandleStandardArgs) -+find_package_handle_standard_args(GTest DEFAULT_MSG -+ GTEST_LIBRARIES -+ GTEST_MAIN_LIBRARIES -+ GTEST_INCLUDE_DIRS -+ GMOCK_LIBRARIES -+ GMOCK_MAIN_LIBRARIES -+ GMOCK_INCLUDE_DIRS) -diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake -index 7886c5f3e9..01108a18c9 100644 ---- a/cmake/modules/RootBuildOptions.cmake -+++ b/cmake/modules/RootBuildOptions.cmake -@@ -94,6 +94,7 @@ ROOT_BUILD_OPTION(builtin_ftgl OFF "Build bundled copy of FTGL") - ROOT_BUILD_OPTION(builtin_gl2ps OFF "Build bundled copy of gl2ps") - ROOT_BUILD_OPTION(builtin_glew OFF "Build bundled copy of GLEW") - ROOT_BUILD_OPTION(builtin_gsl OFF "Build GSL internally (requires network)") -+ROOT_BUILD_OPTION(builtin_gtest OFF "Build googletest internally (requires network)") - ROOT_BUILD_OPTION(builtin_llvm ON "Build bundled copy of LLVM") - ROOT_BUILD_OPTION(builtin_lz4 OFF "Build bundled copy of lz4") - ROOT_BUILD_OPTION(builtin_lzma OFF "Build bundled copy of lzma") -@@ -293,6 +294,7 @@ if(builtin_all) - set(builtin_gl2ps_defvalue ON) - set(builtin_glew_defvalue ON) - set(builtin_gsl_defvalue ON) -+ set(builtin_gtest_defvalue ON) - set(builtin_llvm_defvalue ON) - set(builtin_lz4_defvalue ON) - set(builtin_lzma_defvalue ON) -diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake -index cb75c0b1da..38fd5d6baf 100644 ---- a/cmake/modules/RootMacros.cmake -+++ b/cmake/modules/RootMacros.cmake -@@ -1671,7 +1671,7 @@ function(ROOT_ADD_TEST test) - - set_property(TEST ${test} APPEND PROPERTY ENVIRONMENT ROOT_HIST=0) - -- #- Handle TIMOUT and DEPENDS arguments -+ #- Handle TIMEOUT and DEPENDS arguments - if(ARG_TIMEOUT) - set_property(TEST ${test} PROPERTY TIMEOUT ${ARG_TIMEOUT}) - endif() -diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake -index fe40898d12..b6a3cc4c76 100644 ---- a/cmake/modules/SearchInstalledSoftware.cmake -+++ b/cmake/modules/SearchInstalledSoftware.cmake -@@ -1860,15 +1860,6 @@ if (mpi) - endif() - endif() - --if(testing AND NO_CONNECTION) -- if(fail-on-missing) -- message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access") -- else() -- message(STATUS "No internet connection, disabling 'testing' option") -- set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) -- endif() --endif() -- - #---Check for ZeroMQ when building RooFit::MultiProcess-------------------------------------------- - - if (roofit_multiprocess) -@@ -1942,8 +1933,41 @@ if (roofit_multiprocess) - target_compile_definitions(cppzmq INTERFACE ZMQ_NO_EXPORT) - endif (roofit_multiprocess) - --#---Download googletest-------------------------------------------------------------- -+#---Check for googletest--------------------------------------------------------------- - if (testing) -+ if (NOT builtin_gtest) -+ if(fail-on-missing) -+ find_package(GTest REQUIRED) -+ else() -+ find_package(GTest) -+ if(NOT GTEST_FOUND) -+ if(NO_CONNECTION) -+ if(fail-on-missing) -+ message(FATAL_ERROR "No internet connection and GTest was not found. Please check your connection, or either disable the 'testing' option or the 'fail-on-missing' to automatically disable options requiring internet access") -+ else() -+ message(STATUS "GTest not found, and no internet connection. Disabing the 'testing' option.") -+ set(testing OFF CACHE BOOL "Disabled because testing requested and GTest not found (${builtin_gtest_description}) and there is no internet connection" FORCE) -+ endif() -+ else() -+ message(STATUS "GTest not found, switching ON 'builtin_gtest' option.") -+ set(builtin_gtest ON CACHE BOOL "Enabled because testing requested and GTest not found (${builtin_gtest_description})" FORCE) -+ endif() -+ endif() -+ endif() -+ else() -+ if(NO_CONNECTION) -+ if(fail-on-missing) -+ message(FATAL_ERROR "No internet connection. Please check your connection, or either disable the 'testing' option or the 'builtin_gtest' option or the 'fail-on-missing' option to automatically disable options requiring internet access") -+ else() -+ message(STATUS "No internet connection, disabling the 'testing' and 'builtin_gtest' options") -+ set(testing OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) -+ set(builtin_gtest OFF CACHE BOOL "Disabled because there is no internet connection" FORCE) -+ endif() -+ endif() -+ endif() -+endif() -+ -+if (builtin_gtest) - # FIXME: Remove our version of gtest in roottest. We can reuse this one. - # Add googletest - # http://stackoverflow.com/questions/9689183/cmake-googletest --- -2.35.1 - diff --git a/root-uring-warn.patch b/root-uring-warn.patch deleted file mode 100644 index 05cfd56..0000000 --- a/root-uring-warn.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 580fcf8fe95c45e337d222a7fd2338fdef2f52c5 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 24 Mar 2022 16:18:57 +0100 -Subject: [PATCH 1/2] Ignore warnings about uring failing during test - ---- - tree/ntuple/v7/test/ntuple_extended.cxx | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx -index 8e3998996c..98d65ef319 100644 ---- a/tree/ntuple/v7/test/ntuple_extended.cxx -+++ b/tree/ntuple/v7/test/ntuple_extended.cxx -@@ -4,6 +4,8 @@ - - #include "TROOT.h" - -+#include "ROOTUnitTestSupport.h" -+ - TEST(RNTuple, RealWorld1) - { - ROOT::EnableImplicitMT(); -@@ -111,6 +113,17 @@ TEST(RNTuple, RandomAccess) - #if !defined(_MSC_VER) || defined(R__ENABLE_BROKEN_WIN_TESTS) - TEST(RNTuple, LargeFile) - { -+ ROOTUnitTestSupport::CheckDiagsRAII raii; -+ raii.optionalDiag(kWarning, "RIoUring", -+ "io_uring is unexpectedly not available because:", false); -+ raii.optionalDiag(kWarning, "RRawFileUnix", -+ "io_uring setup failed, falling back to blocking I/O in ReadV", true); -+ -+ raii.optionalDiag(kWarning, "ROOT.NTuple", -+ "The RNTuple file format will change. Do not store real data with this version of RNTuple!", true); -+ raii.optionalDiag(kWarning, "ROOT.NTuple", -+ "Pre-release format version: ", false); -+ - ROOT::EnableImplicitMT(); - FileRaii fileGuard("test_large_file.root"); - --- -2.35.1 - diff --git a/root-use-consistent-minimum-python-version-for-DistRDF.patch b/root-use-consistent-minimum-python-version-for-DistRDF.patch new file mode 100644 index 0000000..23e9e5c --- /dev/null +++ b/root-use-consistent-minimum-python-version-for-DistRDF.patch @@ -0,0 +1,27 @@ +From 8624d1c7eb4f532d6843118251d9564650f89924 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 2 Mar 2023 08:25:36 +0100 +Subject: [PATCH 1/2] Use consistent minimum Python version for DistRDF The + minimum version was changed in bindings/CMakeLists.txt but not in the check + in the code. + +--- + bindings/pyroot/pythonizations/python/ROOT/_facade.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_facade.py b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +index 7370a234d1..865321e713 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_facade.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_facade.py +@@ -335,7 +335,7 @@ class ROOTFacade(types.ModuleType): + ns.MakeNumpyDataFrame = DeprecatedMakeNumpy + ns.FromNumpy = MakeNumpyDataFrame + +- if sys.version_info >= (3, 7): ++ if sys.version_info >= (3, 8): + # Inject Experimental.Distributed package into namespace RDF + ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) + except: +-- +2.39.2 + diff --git a/root-use-unique-filenames-in-fillrandom-tutorials.patch b/root-use-unique-filenames-in-fillrandom-tutorials.patch deleted file mode 100644 index 724eb79..0000000 --- a/root-use-unique-filenames-in-fillrandom-tutorials.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b781f954ac80cc227777992dcb4fbe1837c7e351 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 29 Mar 2022 15:44:17 +0200 -Subject: [PATCH] Use unique filenames in fillrandom.py and fillrandom.C - ---- - tutorials/hist/fillrandom.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tutorials/hist/fillrandom.py b/tutorials/hist/fillrandom.py -index d5eb3f6f38..4b1a94a37e 100644 ---- a/tutorials/hist/fillrandom.py -+++ b/tutorials/hist/fillrandom.py -@@ -41,7 +41,7 @@ h1f.FillRandom("sqroot",10000) - h1f.Draw() - c1.Update() - --f = ROOT.TFile("fillrandom.root","RECREATE") -+f = ROOT.TFile("fillrandom-py.root","RECREATE") - form1.Write() - sqroot.Write() - h1f.Write() --- -2.35.1 - diff --git a/root-veto-tests-using-clad-when-clad-is-disabled.patch b/root-veto-tests-using-clad-when-clad-is-disabled.patch new file mode 100644 index 0000000..d201fdb --- /dev/null +++ b/root-veto-tests-using-clad-when-clad-is-disabled.patch @@ -0,0 +1,66 @@ +From 6583668f3e5f1b4e1d219a5a92a19da31d8d5494 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 1 Mar 2023 18:32:45 +0100 +Subject: [PATCH] Veto tests using clad when clad is disabled + +--- + math/minuit2/test/CMakeLists.txt | 8 ++++---- + tutorials/CMakeLists.txt | 9 ++++++--- + 2 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/math/minuit2/test/CMakeLists.txt b/math/minuit2/test/CMakeLists.txt +index 7ecf30350c..8951ac0a84 100644 +--- a/math/minuit2/test/CMakeLists.txt ++++ b/math/minuit2/test/CMakeLists.txt +@@ -11,10 +11,10 @@ if(NOT DEFINED ROOT_SOURCE_DIR) + include(${ROOT_USE_FILE}) + endif() + +-set(TestSource +- testMinimizer.cxx +- testADMinim.cxx +-) ++set(TestSource testMinimizer.cxx) ++if (clad) ++ list(APPEND TestSource testADMinim.cxx) ++endif() + + set(TestSourceMnTutorial + MnTutorial/Quad1FMain.cxx +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index bf7c1d4089..deb5f67d23 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -65,16 +65,18 @@ endfunction() + + #---Tutorials disabled depending on the build components------------- + if(NOT ROOT_minuit2_FOUND) +- set(minuit2_veto fit/fit2dHist.C fit/fit2dHist.C +- fit/fitCircle.C fit/minuit2FitBench2D.C ++ set(minuit2_veto fit/fit2dHist.C fit/fitCircle.C + fit/minuit2FitBench2D.C fit/minuit2FitBench.C +- fit/minuit2FitBench.C fit/minuit2GausFit.C + fit/minuit2GausFit.C fit/NumericalMinimization.C + fit/combinedFit.C fit/TestBinomial.C + fit/fitNormSum.C fit/vectorizedFit.C + tutorials/roostats/rs_bernsteinCorrection.C) + endif() + ++if(NOT clad) ++ set(clad_veto fit/minuit2GausFit.C) ++endif() ++ + if (NOT dataframe) + # RDataFrame + list(APPEND dataframe_veto dataframe/*.C dataframe/*.py) +@@ -457,6 +459,7 @@ set(all_veto hsimple.C + ${spectrum_veto} + ${dataframe_veto} + ${macm1_veto} ++ ${clad_veto} + ) + + file(GLOB_RECURSE tutorials RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.C) +-- +2.39.2 + diff --git a/root.spec b/root.spec index 7b8e3be..eb06a82 100644 --- a/root.spec +++ b/root.spec @@ -1,23 +1,13 @@ +# Needed for EPEL 8 %undefine __cmake_in_source_build -%undefine __cmake3_in_source_build # Disable package note flags, since root saves the compiler/linker flags # used during the build %undefine _package_note_flags -%if %{?fedora}%{!?fedora:0} >= 31 || %{?rhel}%{!?rhel:0} >= 8 -# Don't build python2-root for Fedora >= 31 -%global buildpy2 0 -%else -%global buildpy2 1 -%endif - -%if %{buildpy2} -%global python2_version_uscore %(tr . _ <<< "%{python2_version}") -%endif %global python3_version_uscore %(tr . _ <<< "%{python3_version}") -%if %{?fedora}%{!?fedora:0} >= 34 || %{?rhel}%{!?rhel:0} >= 9 +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 # Building the experimental ROOT 7 classes requires c++-17. # This is the default for gcc 11 and later. %global root7 1 @@ -25,46 +15,41 @@ %global root7 0 %endif -%global xrootd5 1 - -%global webgui 1 - -%global gfal2 1 - -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 -# The SOFIE parser requires protobuf 3.0 -%global tmvasofieparser 1 -%else +%if %{?rhel}%{!?rhel:0} == 8 +%ifarch %{power64} +# These modules cause "pure virtual method called" errors +# https://github.com/root-project/root/issues/12372 +%global dataframe 0 +%global roofit 0 %global tmvasofieparser 0 +%else +%global dataframe 1 +%global roofit 1 +%global tmvasofieparser 1 +%endif +%else +%global dataframe 1 +%global roofit 1 +%global tmvasofieparser 1 %endif %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -# DistRDF requires Python 3.7+ -%global distrdf 1 +# DistRDF requires Python 3.8+ +%global distrdf %{dataframe} %else %global distrdf 0 %endif -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 -# Multi-threading support requires TBB version >= 2018 -%global tbb 1 -%else -%global tbb 0 -%endif - -# Do not create .orig files when patching source -%global _default_patch_flags --no-backup-if-mismatch - # Do not generate autoprovides for Python modules -%global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}|}%{python3_sitearch})/lib.*\\.so$ +%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.26.10 +Version: 6.28.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework -License: LGPLv2+ +License: LGPL-2.1-or-later URL: https://root.cern/ # The upstream source is modified to exclude proprietary fonts # See Source8 for how to create Source0 @@ -86,118 +71,75 @@ Source7: JupyROOT-on-EPEL Source8: %{name}-get-src.sh # Use system fonts Patch0: %{name}-fontconfig.patch -# Revert the removal of DataFrame for 32 bit architectures -# https://github.com/root-project/root/pull/10300 -Patch1: %{name}-32bit-dataframe.patch -# Unbundle gtest -# Add builtin_gtest cmake option -# Compatibility with older gtest -# https://github.com/root-project/root/pull/10301 -Patch2: %{name}-unbundle-gtest.patch -Patch3: %{name}-old-gtest-compat.patch # Reduce memory usage of build # Do not link rootcling_stage1 and libCling in parallel -Patch4: %{name}-memory-usage.patch +Patch1: %{name}-memory-usage.patch # Reduce memory usage during linking on ARM and x86 by generating # smaller debuginfo for the llvm libraries # Fedora builders run out of memory with the default setting -Patch5: %{name}-memory-arm-x86.patch +Patch2: %{name}-memory-arm-x86.patch # Don't install minicern static library -Patch6: %{name}-dont-install-minicern.patch +Patch3: %{name}-dont-install-minicern.patch # Do not export Python modules in CMake config -Patch7: %{name}-no-export-python-modules.patch +Patch4: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled -Patch8: %{name}-32bit-tests.patch +Patch5: %{name}-32bit-tests.patch # Use local static script and style files for JsMVA -Patch9: %{name}-jsmva-static.patch -# Fix python bytecode compilation on EPEL 7 -# Compatibility with older python versions (no f-strings) -Patch10: %{name}-older-python.patch -# Backported fix from LLVM upstream -Patch11: %{name}-symbol-rewrite.patch -# Backport gcc 12 fix from LLVM -# https://github.com/root-project/root/pull/9586 -Patch12: %{name}-fix-compilation-with-gcc-12.patch +Patch6: %{name}-jsmva-static.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 -Patch13: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch -# Adjust some test timeouts -# https://github.com/root-project/root/pull/10886 -Patch14: %{name}-test-timeout.patch -# Fixes for tmva-sofie test compilation -# https://github.com/root-project/root/pull/10117 -Patch15: %{name}-ignore-prefix.patch -# Use different filenames in io/loopdir tests -# https://github.com/root-project/root/pull/11725 -Patch16: %{name}-different-filename.patch -# Fix test when long is 32 bits -# https://github.com/root-project/root/pull/10302 -Patch17: %{name}-longlong.patch -# Ignore warnings (uring and RooNaNPacker) -# https://github.com/root-project/root/pull/10303 -Patch18: %{name}-uring-warn.patch -Patch19: %{name}-endian-warn.patch -# Always call WaitForInFlightClusters before checking cluster IDs -# https://github.com/root-project/root/pull/10304 -Patch20: %{name}-ntuplewait.patch -# NENTRIES is not always a multiple of the expected size -# https://github.com/root-project/root/pull/10305 -Patch21: %{name}-dataframe-callback.patch -# Add/remove namespaces from Linkdef -# https://github.com/root-project/root/pull/10306 -Patch22: %{name}-namespace-sofie.patch -Patch23: %{name}-namespace-roofit.patch -Patch24: %{name}-namespace-pymva.patch -# Use calls from Python directly in tutorial -# https://github.com/root-project/root/pull/10307 -Patch25: %{name}-roofit-tutorial.patch +Patch7: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch # Byte swap values read from the protobuf raw data stream on # big endian architectures # https://github.com/root-project/root/pull/10308 -Patch26: %{name}-big-endian-byte-swap.patch -# Avoid crashes due to static initialization order -# https://github.com/root-project/root/pull/10309 -Patch27: %{name}-rcolor-static-init.patch -# Avoid deleting TFormulas twice -# https://github.com/root-project/root/pull/10310 -Patch28: %{name}-avoid-deleting-TFormulas-twice.patch -# Use unique filenames in fillrandom.py and fillrandom.C -# https://github.com/root-project/root/pull/10311 -Patch29: %{name}-use-unique-filenames-in-fillrandom-tutorials.patch -# Limit the number of threads in TMVA CNN/DNN test to save memory -# https://github.com/root-project/root/pull/10312 -Patch30: %{name}-tmva-threads.patch -# Fix library link order -# https://github.com/root-project/root/pull/10313 -Patch31: %{name}-core-base-test.patch -# Backports -Patch32: %{name}-make-dyld-based-library-search-behavior-default.patch -Patch33: %{name}-get-rid-of-lsb_release.patch -Patch34: %{name}-threadsh1-avoid-heap-use-after-free.patch -Patch35: %{name}-PyROOT-code.h-must-not-be-included-directly-in-3.11.patch -Patch36: %{name}-PyROOT-Prevent-cast-error-when-calling-PyTuple_SET_I.patch -# Avoid race condition between C++ an Python version of test -# https://github.com/root-project/root/pull/11643 -Patch37: %{name}-avoid-race-condition-tutorial-roofit-rf512.patch +Patch8: %{name}-big-endian-byte-swap.patch # Add missing #include # https://github.com/root-project/root/pull/12065 -Patch38: %{name}-add-missing-include-cstdint.patch -# Backport from upstream -Patch39: %{name}-fix-compilation-with-gcc13.patch -# numpy.object obsolete since numpy 1.20 and removed since 1.24 -# https://github.com/root-project/root/issues/12148 -# https://github.com/root-project/root/pull/12159 -Patch40: %{name}-avoid-deprecated-numpy.object.patch +Patch9: %{name}-add-missing-include-cstdint.patch +# https://github.com/root-project/root/pull/12218 +Patch10: %{name}-Simplify-creation-of-TargetMachine.patch +# Fix build with -Dbuiltin_gtest:BOOL=OFF on EPEL 8 +# https://github.com/root-project/root/pull/12250 +Patch11: %{name}-gtest-compat.patch +# Limit the number of threads in TMVA CNN/DNN test to save memory +# https://github.com/root-project/root/pull/12310 +Patch12: %{name}-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch +# https://github.com/root-project/root/issues/12293 +# https://github.com/root-project/root/pull/12335 +Patch13: %{name}-Set-DataLayout-from-our-TargetMachine.patch +# https://github.com/root-project/root/issues/12294 +# https://github.com/root-project/root/pull/12353 +Patch14: %{name}-cling-Disable-outline-atomics-on-AArch64.patch +# https://github.com/root-project/root/pull/12385 +Patch15: %{name}-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch +# https://github.com/root-project/root/pull/12389 +Patch16: %{name}-testRooAbsL-test-compares-two-doubles-and-fails.patch +# https://github.com/root-project/root/pull/12390 +Patch17: %{name}-stressvector-test-fails-on-ix86.patch +# https://github.com/root-project/root/pull/12402 +Patch18: %{name}-dont-install-roofit-files-when-roofit-is-disabled.patch +# https://github.com/root-project/root/pull/12403 +Patch19: %{name}-veto-tests-using-clad-when-clad-is-disabled.patch +# https://github.com/root-project/root/pull/12407 +Patch20: %{name}-use-consistent-minimum-python-version-for-DistRDF.patch +Patch21: %{name}-make-DistRDF-optional.patch +# https://github.com/root-project/root/pull/12423 +Patch22: %{name}-dont-install-roofit-files-fix.patch +# https://github.com/root-project/root/issues/12430 +# https://github.com/root-project/root/pull/12447 +Patch23: %{name}-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch +# https://github.com/root-project/root/issues/12427 +# https://github.com/root-project/root/pull/12468 +Patch24: %{name}-fixes-for-32bit-builds.patch +# https://github.com/root-project/root/pull/12476 +Patch25: %{name}-do-not-remove-Wp-before-D-and-U.patch +# Backport (fixes a failing test on ix86) +Patch26: %{name}-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch -%if %{?rhel}%{!?rhel:0} == 7 -BuildRequires: devtoolset-8-toolchain -BuildRequires: cmake3 >= 3.9 -%else BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: make -BuildRequires: cmake >= 3.9 -%endif +BuildRequires: cmake >= 3.16 BuildRequires: libX11-devel BuildRequires: libXpm-devel BuildRequires: libXft-devel @@ -222,62 +164,38 @@ BuildRequires: libxml2-devel BuildRequires: fftw-devel BuildRequires: gsl-devel BuildRequires: unuran-devel -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 BuildRequires: mariadb-connector-c-devel -%else -BuildRequires: mysql-devel -%endif BuildRequires: sqlite-devel BuildRequires: unixODBC-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel -%if %{?fedora}%{!?fedora:0} >= 27 || %{?rhel}%{!?rhel:0} >= 8 BuildRequires: libpq-devel -%else -BuildRequires: postgresql-devel -%endif -%if %{buildpy2} -BuildRequires: python2-devel -BuildRequires: python2-setuptools -BuildRequires: python2-numpy -%endif BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy -%if %{webgui} %ifarch %{qt5_qtwebengine_arches} BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtwebengine-devel %endif -%endif BuildRequires: openssl-devel BuildRequires: libtool-ltdl-devel BuildRequires: desktop-file-utils BuildRequires: dcap-devel -%if %{xrootd5} BuildRequires: xrootd-client-devel >= 1:5.0.0 -%else -BuildRequires: xrootd-client-devel >= 1:3.3.5 -BuildRequires: xrootd-private-devel >= 1:3.3.5 -%endif BuildRequires: cfitsio-devel BuildRequires: davix-devel >= 0.6.4 -%if %{gfal2} BuildRequires: gfal2-devel -%endif BuildRequires: R-Rcpp-devel BuildRequires: R-RInside-devel BuildRequires: readline-devel -%if %{tbb} BuildRequires: tbb-devel >= 2018 -%endif BuildRequires: libuuid-devel BuildRequires: emacs BuildRequires: emacs-el BuildRequires: graphviz-devel BuildRequires: expat-devel BuildRequires: pythia8-devel >= 8.1.80 -%if %{?fedora}%{!?fedora:0} >= 33 || %{?rhel}%{!?rhel:0} >= 9 +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 BuildRequires: flexiblas-devel # Required for FlexiBLAS support in FindBLAS.cmake # (in cmake 3.19.0, backported to cmake 3.18.3-1 in Fedora) @@ -286,7 +204,9 @@ BuildRequires: cmake-data >= 3.18.3-1 BuildRequires: openblas-devel %endif BuildRequires: json-devel -%if %{?fedora}%{!?fedora:0} +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +# Disable uring in EPEL 8 (liburing is available, but uring not +# supported by the kernel) BuildRequires: liburing-devel %endif %if %{tmvasofieparser} @@ -310,12 +230,15 @@ BuildRequires: font(z003) BuildRequires: font(droidsansfallback) # With gdb installed test failures will show backtraces BuildRequires: gdb +# Defines _jsdir +BuildRequires: web-assets-devel Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: hicolor-icon-theme Requires: emacs-filesystem >= %{_emacs_version} Provides: emacs-%{name} = %{version}-%{release} @@ -363,7 +286,7 @@ This package contains icons used by the ROOT GUI. Summary: ROOT font collection BuildArch: noarch # STIX version 0.9 only -License: OFL +License: OFL-1.1 Requires: %{name}-core = %{version}-%{release} %description fonts @@ -380,7 +303,7 @@ This package contains the tutorial scripts and test suite for ROOT. %package core Summary: ROOT core libraries -License: LGPLv2+ and BSD +License: LGPL-2.1-or-later AND LGPL-2.0-or-later AND ISC AND MIT AND NCSA Requires: %{name}-fonts = %{version}-%{release} Requires: %{name}-icons = %{version}-%{release} # Dynamic dependencies @@ -402,7 +325,9 @@ Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-physics%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +%if %{dataframe} Requires: %{name}-tree-dataframe%{?_isa} = %{version}-%{release} +%endif Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: %{name}-vecops%{?_isa} = %{version}-%{release} # To resolve dependency in installed ROOTConfig.cmake @@ -431,17 +356,6 @@ Obsoletes: %{name}-net-globus < 6.18.00 Obsoletes: %{name}-net-ldap < 6.18.00 Obsoletes: %{name}-net-krb5 < 6.18.00 Obsoletes: %{name}-table < 6.18.00 -%if ! %{buildpy2} -Obsoletes: python2-%{name} < %{version}-%{release} -Obsoletes: python2-jupyroot < %{version}-%{release} -Obsoletes: python2-jsmva < %{version}-%{release} -Obsoletes: %{name}-rootaas < 6.08.00 -%endif -%if %{?rhel}%{!?rhel:0} == 7 -Obsoletes: python%{?python3_other_pkgversion}-%{name} < 6.22.00 -Obsoletes: python%{?python3_other_pkgversion}-jupyroot < 6.22.00 -Obsoletes: python%{?python3_other_pkgversion}-jsmva < 6.22.00 -%endif Obsoletes: %{name}-memstat < 6.26.00 Obsoletes: %{name}-montecarlo-vmc < 6.26.00 Obsoletes: %{name}-doc < 6.26.00 @@ -458,12 +372,24 @@ Obsoletes: %{name}-gui-fitpanelv7 < 6.26.00 Obsoletes: %{name}-histv7 < 6.26.00 Obsoletes: %{name}-hist-draw < 6.26.00 Obsoletes: %{name}-tree-ntuple < 6.26.00 -%endif -%if %{buildpy2} -Obsoletes: python2-distrdf < 6.26.00 -%endif -%if ! %{distrdf} +# Obsolete the DistRDF package in EPEL 8 +# Minimum Python version requirement introduced Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00 +%ifarch %{power64} +# Obsolete for ppc64le in EPEL 8 +# These modules cause "pure virtual method called" errors +Obsoletes: %{name}-tree-dataframe < 6.28.00 +Obsoletes: %{name}-roofit < 6.28.00 +Obsoletes: %{name}-roofit-common < 6.28.00 +Obsoletes: %{name}-roofit-core < 6.28.00 +Obsoletes: %{name}-roofit-more < 6.28.00 +Obsoletes: %{name}-roofit-batchcompute < 6.28.00 +Obsoletes: %{name}-roofit-dataframe-helpers < 6.28.00 +Obsoletes: %{name}-roofit-hs3 < 6.28.00 +Obsoletes: %{name}-roostats < 6.28.00 +Obsoletes: %{name}-hist-factory < 6.28.00 +Obsoletes: %{name}-tmva-sofie-parser < 6.28.00 +%endif %endif %description core @@ -481,7 +407,7 @@ This package provides ROOT's multi-processor support library: libMultiProc. %package cling Summary: Cling C++ interpreter -License: NCSA and (NCSA or LGPLv2+) +License: (NCSA OR LGPL-2.1-only) AND (Apache-2.0 WITH LLVM-exception OR NCSA) AND BSD-2-Clause AND BSD-3-Clause AND MIT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} # Root's cling interpreter uses a particular git commit of @@ -491,11 +417,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} # visible outside of the libCling module. Provides: bundled(clang-libs) Provides: bundled(llvm-libs) -%if %{?rhel}%{!?rhel:0} == 7 -Requires: devtoolset-8-toolchain -%else Requires: gcc-c++ -%endif Requires: redhat-rpm-config Obsoletes: %{name}-cint7 < 5.26.00c Obsoletes: %{name}-cint < 6.00.00 @@ -506,6 +428,13 @@ Obsoletes: %{name}-reflex < 6.00.00 Cling is an interactive C++ interpreter, built on top of Clang and LLVM compiler infrastructure. +%package testsupport +Summary: Unit test support library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description testsupport +This package contains the unit test support library for ROOT. + %package tpython Summary: ROOT's TPython interface Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -517,51 +446,6 @@ Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00 This package contains ROOT's TPython interface. It makes it possible to call Python from ROOT. -%if %{buildpy2} -%package -n python2-%{name} -Summary: Python extension for ROOT -%py_provides python2-%{name} -Provides: %{name}-python = %{version}-%{release} -Obsoletes: %{name}-python < 6.08.00 -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} - -%description -n python2-%{name} -This package contains the Python extension for ROOT. It makes it -possible to use ROOT classes in Python. - -%package -n python2-jupyroot -Summary: ROOT Jupyter kernel -%py_provides python2-jupyroot -Requires: python2-%{name}%{?_isa} = %{version}-%{release} -Requires: python2-jsmva = %{version}-%{release} -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-notebook = %{version}-%{release} -%if %{?fedora}%{!?fedora:0} >= 26 -# python-metakernel for python2 not available in -# Fedora <= 25 or RHEL/EPEL - some functionality missing -Requires: python2-ipython -Requires: python2-metakernel -%endif -%if %{?fedora}%{!?fedora:0} >= 28 -Requires: python-jupyter-filesystem -%endif -Obsoletes: %{name}-rootaas < 6.08.00 - -%description -n python2-jupyroot -The Jupyter kernel for the ROOT notebook. - -%package -n python2-jsmva -Summary: TMVA interface used by JupyROOT -BuildArch: noarch -%py_provides python2-jsmva -Requires: %{name}-tmva = %{version}-%{release} - -%description -n python2-jsmva -TMVA interface used by JupyROOT. -%endif - %package -n python%{python3_pkgversion}-%{name} Summary: Python extension for ROOT %py_provides python%{python3_pkgversion}-%{name} @@ -584,13 +468,11 @@ Requires: python%{python3_pkgversion}-%{name}%{?_isa} = %{version}-%{release} Requires: python%{python3_pkgversion}-jsmva = %{version}-%{release} Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-notebook = %{version}-%{release} -%if %{?fedora}%{!?fedora:0} >= 26 -# python-metakernel for python3 not available in -# Fedora <= 25 or RHEL/EPEL - some functionality missing +%if %{?fedora}%{!?fedora:0} +# python-metakernel not available in RHEL/EPEL +# some functionality missing Requires: python%{python3_pkgversion}-ipython Requires: python%{python3_pkgversion}-metakernel -%endif -%if %{?fedora}%{!?fedora:0} >= 28 Requires: python-jupyter-filesystem %endif @@ -658,17 +540,41 @@ This package contains a genetic minimizer module for ROOT. %package geom Summary: Geometry library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 + +%description geom +This package contains a library for defining geometries in ROOT. + +%package geom-builder +Summary: Geometry builder library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 + +%description geom-builder +This package contains a library for building geometries in ROOT. + +%package geom-painter +Summary: Geometry painter library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Package split (geom-builder and geom-painter from geom) +Obsoletes: %{name}-geom < 6.28.00 -%description geom -This package contains a library for defining geometries in ROOT. +%description geom-painter +This package contains a library for drawing geometries in ROOT. %package gdml Summary: GDML import/export for ROOT geometries @@ -724,6 +630,7 @@ Summary: Canvas and pad library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} # Dynamic dependency Requires: %{name}-graf-postscript%{?_isa} = %{version}-%{release} @@ -981,24 +888,6 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} %description spectrum-painter This package contains a painter of spectra for ROOT. -%package hist-factory -Summary: RooFit PDFs from ROOT histograms -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} -Requires: %{name}-matrix%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} -Requires: %{name}-roostats%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} - -%description hist-factory -Create RooFit probability density functions from ROOT histograms. - %package html Summary: HTML documentation generator for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1024,7 +913,6 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-dcache This package contains the dCache extension for ROOT. -%if %{gfal2} %package io-gfal Summary: Grid File Access Library input/output library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1032,7 +920,6 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-gfal This package contains the Grid File Access Library extension for ROOT. -%endif %package io-sql Summary: SQL input/output library for ROOT @@ -1079,7 +966,7 @@ easier to use for the average user. %package fftw Summary: FFTW library for ROOT -License: GPLv2+ +License: GPL-2.0-or-later Requires: %{name}-core%{?_isa} = %{version}-%{release} %description fftw @@ -1116,7 +1003,7 @@ This package contains the MathCore library for ROOT. %package mathmore Summary: GSL interface library for ROOT -License: GPLv2+ +License: GPL-2.0-or-later Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} @@ -1235,7 +1122,7 @@ discriminating variables. %package unuran Summary: Random number generator library -License: GPLv2+ +License: GPL-2.0-or-later Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} @@ -1324,7 +1211,7 @@ access to http based storage such as webdav and S3. Summary: HTTP server extension for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: js-jsroot >= 6 +Requires: js-jsroot >= 7 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -1356,8 +1243,7 @@ Requires: %{name}-net%{?_isa} = %{version}-%{release} %description netx This package contains the NetX extension for ROOT, i.e. a client for -the xrootd server. Both the old (NetX) and the new (NetXNG) version are -provided. +the xrootd server. Only the new (NetXNG) version is provided. %package proof Summary: PROOF extension for ROOT @@ -1371,9 +1257,7 @@ Obsoletes: %{name}-peac < 5.34.01 # Package split (proof-player from proof) Obsoletes: %{name}-proof < 6.14.00 Obsoletes: %{name}-proofd < 6.16.00 -%if %{xrootd5} -Obsoletes: %{name}-xproof < %{version}-%{release} -%endif +Obsoletes: %{name}-xproof < 6.22.08-2 %description proof This package contains the proof extension for ROOT. This provides a @@ -1425,25 +1309,10 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} This package contains a library for browsing an interactive PROOF session in ROOT. -%if ! %{xrootd5} -%package xproof -Summary: XPROOF extension for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} -Requires: %{name}-proof%{?_isa} = %{version}-%{release} -# Dynamic dependency -Requires: %{name}-net-rpdutils%{?_isa} = %{version}-%{release} -Requires: xrootd-server%{?_isa} - -%description xproof -This package contains the xproof extension for ROOT. This provides a -client to be used in a PROOF environment. -%endif - +%if %{roofit} %package roofit Summary: ROOT extension for modeling expected distributions - toolkit -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1472,7 +1341,7 @@ This package contains the RooFit toolkit classes. %package roofit-common Summary: ROOT extension for modeling expected distributions - common -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} %description roofit-common @@ -1492,7 +1361,7 @@ This package contains the RooFit common classes. %package roofit-core Summary: ROOT extension for modeling expected distributions - core -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-foam%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} @@ -1501,7 +1370,6 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-minuit%{?_isa} = %{version}-%{release} -Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-common%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} @@ -1525,11 +1393,10 @@ This package contains the core RooFit classes. %package roofit-more Summary: ROOT extension for modeling expected distributions - more -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-mathmore%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1551,6 +1418,7 @@ This package contains RooFit classes that use the mathmore library. %package roofit-batchcompute Summary: Optimized computation functions for PDFs +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} @@ -1569,9 +1437,10 @@ multiple times for different vector instuction set architectures and the optimal code is executed during runtime, as a result of an automatic hardware detection mechanism that this library contains. +%if %{dataframe} %package roofit-dataframe-helpers Summary: RooFit DaraFrame helpers -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} %description roofit-dataframe-helpers @@ -1588,14 +1457,16 @@ analysis environment, but the general nature of the package make it suitable for adoption in different disciplines as well. This package contains DaraFrame helper classes for RooFit +%endif %package roofit-hs3 Summary: RooFit HS3 -License: BSD +License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} Requires: %{name}-roofit%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-jsoninterface%{?_isa} = %{version}-%{release} Requires: %{name}-roostats%{?_isa} = %{version}-%{release} %description roofit-hs3 @@ -1606,9 +1477,28 @@ may be useful to store statistical models in text form. This library sets out to achieve exactly that, exporting to and importing from JSON and YML. +%package roofit-jsoninterface +Summary: JSON interface to RooFit +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} + +%description roofit-jsoninterface +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains the JSON interface to RooFit. + %package roostats Summary: Statistical tools built on top of RooFit -License: BSD Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} @@ -1627,6 +1517,22 @@ Obsoletes: %{name}-roofit < 6.20.00 RooStats is a package containing statistical tools built on top of RooFit. +%package hist-factory +Summary: RooFit PDFs from ROOT histograms +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description hist-factory +Create RooFit probability density functions from ROOT histograms. +%endif + %package sql-mysql Summary: MySQL client plugin for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1672,7 +1578,7 @@ ROOT environment. %package tmva Summary: Toolkit for multivariate data analysis -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} @@ -1710,7 +1616,7 @@ compared. %package tmva-python Summary: Toolkit for multivariate data analysis (Python) -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-tmva%{?_isa} = %{version}-%{release} Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} @@ -1721,7 +1627,7 @@ Python integration with TMVA. %package tmva-r Summary: Toolkit for multivariate data analysis (R) -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-r%{?_isa} = %{version}-%{release} @@ -1732,6 +1638,7 @@ R integration with TMVA. %package tmva-sofie Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} %description tmva-sofie @@ -1744,6 +1651,7 @@ produces C++ header files that can be included and utilized in a %if %{tmvasofieparser} %package tmva-sofie-parser Summary: ROOT/TMVA SOFIE Parsers +License: BSD-3-Clause AND MIT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} @@ -1753,7 +1661,7 @@ Parsers for ROOT/TMVA SOFIE %package tmva-gui Summary: Toolkit for multivariate data analysis GUI -License: BSD +License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} @@ -1777,6 +1685,7 @@ Requires: %{name}-net%{?_isa} = %{version}-%{release} %description tree This package contains the Tree library for ROOT. +%if %{dataframe} %package tree-dataframe Summary: A high level interface to ROOT trees Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1794,6 +1703,7 @@ Obsoletes: %{name}-tree-player < 6.14.00 %description tree-dataframe This package contains a high level interface to ROOT trees. +%endif %package tree-player Summary: Library to loop over a ROOT tree @@ -1829,6 +1739,17 @@ Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description tree-viewer This package contains a plugin for browsing a ROOT tree in ROOT. +%package tree-webviewer +Summary: ROOT tree web viewer library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} + +%description tree-webviewer +This package contains a plugin for browsing a ROOT tree in a web GUI. + %package unfold Summary: Distribution unfolding Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1853,34 +1774,34 @@ Summary: Static files for the Jupyter ROOT Notebook BuildArch: noarch Requires: %{name}-core = %{version}-%{release} Requires: js-jsroot >= 6 -%if %{?fedora}%{!?fedora:0} >= 26 -# jupyter-notebook not available in -# Fedora <= 25 or RHEL/EPEL - some functionality missing +%if %{?fedora}%{!?fedora:0} +# jupyter-notebook not available in RHEL/EPEL +# some functionality missing Requires: jupyter-notebook %endif %description notebook Javascript and style files for the Jupyter ROOT Notebook. -%if %{webgui} %package gui-webdisplay -Summary: Web display (ROOT 7) +Summary: Web display for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-net-http%{?_isa} = %{version}-%{release} %description gui-webdisplay -This package contains a web display extension for ROOT 7. +This package contains a web display extension for ROOT. %ifarch %{qt5_qtwebengine_arches} %package gui-qt5webdisplay -Summary: Qt5 Web display (ROOT 7) +Summary: Qt5 Web display Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-net-http%{?_isa} = %{version}-%{release} %description gui-qt5webdisplay -This package contains a Qt5 web display extension for ROOT 7. +This package contains a Qt5 web display extension for ROOT. %endif %package gui-webgui6 @@ -1888,16 +1809,25 @@ Summary: Web based GUI for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} %description gui-webgui6 This package provides a Web based GUI for ROOT. -%endif %if %{root7} +%package geom-webviewer +Summary: Geometry web viewer library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description geom-webviewer +This package contains a library for viewing geometries in a web GUI. + %package graf-gpadv7 Summary: Canvas and pad library for ROOT (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1950,13 +1880,15 @@ This package contains GUI browsable components for ROOT 7. Summary: Browser (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-webviewer%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} -Requires: %{name}-graf3d-eve7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webgui6%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-webviewer%{?_isa} = %{version}-%{release} %description gui-browserv7 This package contains a file browser for ROOT 7. @@ -2003,10 +1935,52 @@ This package contains an histogram drawing extension for ROOT 7. Summary: Ntuple (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-vecops%{?_isa} = %{version}-%{release} %description tree-ntuple This package contains an ntuple extension for ROOT 7. + +%package tree-ntuple-utils +Summary: Ntuple utility library (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} + +%description tree-ntuple-utils +This package contains utility functions for ntuples. + +%if %{roofit} +%package xroofit +Summary: Extra tools for RooFit projects +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-hs3%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description xroofit +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains extra tools for RooFit projects. +%endif %endif %prep @@ -2039,20 +2013,6 @@ This package contains an ntuple extension for ROOT 7. %patch24 -p1 %patch25 -p1 %patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2089,30 +2049,17 @@ rm -rf documentation/doxygen/mathjax.tar.gz # * jsroot rm -rf js/[^f]* js/files/draw.htm js/files/online.htm -# Remove unsupported man page macros -sed -e '/^\.UR/d' -e '/^\.UE/d' -i man/man1/* - # Remove pre-minified script and style files rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css -%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8 -# Allow older json on EPEL 7/8 +%if %{?rhel}%{!?rhel:0} == 8 +# Allow older json on EPEL 8 sed 's!nlohmann_json 3.9!nlohmann_json 3.6!' \ -i cmake/modules/SearchInstalledSoftware.cmake %endif -%if %{?rhel}%{!?rhel:0} == 7 -# On EPEL 7 disable test that fails to compile -# Brace initialization list is ambiguous with old compiler -sed 's!.*dataframe_datasetspec!### &!' -i tree/dataframe/test/CMakeLists.txt -%endif - %build -%if %{?rhel}%{!?rhel:0} == 7 -. /opt/rh/devtoolset-8/enable -%endif - # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO %define _lto_cflags %{nil} @@ -2129,12 +2076,15 @@ for s in etc/notebook/JsMVA/css/*.css ; do python3 -m rcssmin < ${s} > ${s%.css}.min.css done -# Avoid overlinking (this used to be the default with the old configure script) +# Avoid overlinking (this is the default on Fedora and EPEL 9) +%if %{?rhel}%{!?rhel:0} == 8 LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" +%endif -%cmake3 \ +%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir}/%{name} \ + -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ -DCMAKE_INSTALL_ELISPDIR:PATH=%{_emacs_sitelispdir}/%{name} \ @@ -2180,7 +2130,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dcuda:BOOL=OFF \ -Dcxxmodules:BOOL=OFF \ -Ddaos:BOOL=OFF \ +%if %{dataframe} -Ddataframe:BOOL=ON \ +%else + -Ddataframe:BOOL=OFF \ +%endif -Ddavix:BOOL=ON \ -Ddcache:BOOL=ON \ -Ddev:BOOL=OFF \ @@ -2191,24 +2145,18 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dfitsio:BOOL=ON \ -Dfortran:BOOL=ON \ -Dgdml:BOOL=ON \ -%if %{gfal2} -Dgfal:BOOL=ON \ -%else - -Dgfal:BOOL=OFF \ -%endif -Dgsl_shared:BOOL=ON \ -Dgviz:BOOL=ON \ -Dhttp:BOOL=ON \ -%if %{tbb} -Dimt:BOOL=ON \ -%else - -Dimt:BOOL=OFF \ -%endif -Djemalloc:BOOL=OFF \ -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ -Dminuit2:BOOL=ON \ + -Dminuit2_mpi:BOOL=OFF \ + -Dminuit2_omp:BOOL=OFF \ -Dmlp:BOOL=ON \ -Dmonalisa:BOOL=OFF \ -Dmpi:BOOL=OFF \ @@ -2228,7 +2176,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %endif -Dqt6web:BOOL=OFF \ -Dr:BOOL=ON \ +%if %{roofit} -Droofit:BOOL=ON \ +%else + -Droofit:BOOL=OFF \ +%endif -Droofit_multiprocess:BOOL=OFF \ -Droofit_hs3_ryml:BOOL=OFF \ %if %{root7} @@ -2247,11 +2199,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dssl:BOOL=ON \ -Dtcmalloc:BOOL=OFF \ -Dtmva:BOOL=ON \ -%if %{tbb} -Dtmva-cpu:BOOL=ON \ -%else - -Dtmva-cpu:BOOL=OFF \ -%endif -Dtmva-gpu:BOOL=OFF \ -Dtmva-pymva:BOOL=ON \ -Dtmva-rmva:BOOL=ON \ @@ -2261,7 +2209,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva-sofie:BOOL=OFF \ %endif -Dunuran:BOOL=ON \ -%if %{?fedora}%{!?fedora:0} +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -During:BOOL=ON \ %else -During:BOOL=OFF \ @@ -2270,19 +2218,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dvdt:BOOL=OFF \ -Dveccore:BOOL=OFF \ -Dvecgeom:BOOL=OFF \ -%if %{webgui} -Dwebgui:BOOL=ON \ -%else - -Dwebgui:BOOL=OFF \ -%endif -Dx11:BOOL=ON \ -Dxml:BOOL=ON \ -Dxrootd:BOOL=ON \ -%if %{xrootd5} -Dxproofd:BOOL=OFF \ -%else - -Dxproofd:BOOL=ON \ -%endif -Dfail-on-missing:BOOL=ON \ -Dtesting:BOOL=ON \ -Dtest_distrdf_pyspark:BOOL=OFF \ @@ -2292,10 +2232,10 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Droottest:BOOL=OFF \ -Drootbench:BOOL=OFF \ -Dasan:BOOL=OFF -%cmake3_build +%cmake_build %install -%cmake3_install +%cmake_install # Do emacs byte compilation emacs -batch -no-site-file -f batch-byte-compile \ @@ -2319,100 +2259,41 @@ install -p -m 644 %{SOURCE7} %{buildroot}%{_pkgdocdir} # Move python cli helper to its own directory mkdir -p %{buildroot}%{_datadir}/%{name}/cli -mv %{buildroot}%{_libdir}/%{name}/cmdLineUtils.py* \ +mv %{buildroot}%{python3_sitearch}/cmdLineUtils.py \ %{buildroot}%{_datadir}/%{name}/cli -rm %{buildroot}%{_libdir}/%{name}/__pycache__/cmdLineUtils.* sed -e '/^\#!/d' -i %{buildroot}%{_datadir}/%{name}/cli/cmdLineUtils.py # Install GDB pretty printers to auto load safe path -# These are installed (in libdir) by "make install" if CMAKE_BUILD_TYPE -# matches Debug or RelWithDebInfo mkdir -p %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} -install -p -m 644 build/gdbPrinters/libCore.so-gdb.py \ - %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name}/libCore.so.%{version}-gdb.py -install -p -m 644 build/gdbPrinters/libRooFitCore.so-gdb.py \ - %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name}/libRooFitCore.so.%{version}-gdb.py +mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ + %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} + +# Let rpm redo the python byte compilation +find %{buildroot}%{python3_sitearch} -depth -type d -name __pycache__ -exec rm -r {} ';' # Do python byte compilation (for non-standard paths) -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 -# This is the default for Fedora 30+, set it for Fedora 28-29 -%global _python_bytecompile_extra 0 %py_byte_compile %{__python3} %{buildroot}%{_datadir}/%{name}/cli %py_byte_compile %{__python3} %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} -%endif -%if %{buildpy2} - -# Move the python modules to sitearch/sitelib -mkdir -p %{buildroot}%{python2_sitearch} - -cp -pr %{buildroot}%{_libdir}/%{name}/cppyy %{buildroot}%{python2_sitearch} -ln -s ../../root/libcppyy%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libcppyy%{python2_version_uscore}.so - -cp -pr %{buildroot}%{_libdir}/%{name}/cppyy_backend %{buildroot}%{python2_sitearch} -ln -s ../../root/libcppyy_backend%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libcppyy_backend%{python2_version_uscore}.so - -cp -pr %{buildroot}%{_libdir}/%{name}/ROOT %{buildroot}%{python2_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libROOTPythonizations%{python2_version_uscore}.so -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python2_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python2_version_uscore}.so - -cp -pr %{buildroot}%{_libdir}/%{name}/JupyROOT %{buildroot}%{python2_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so.%{version} \ - %{buildroot}%{python2_sitearch}/libJupyROOT%{python2_version_uscore}.so -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python2_version_uscore}.so - -mkdir -p %{buildroot}%{python2_sitelib} -cp -pr %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python2_sitelib} - -# Create .egg-info files so that rpm auto-generates provides -echo 'Name: ROOT' > \ - %{buildroot}%{python2_sitearch}/ROOT-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitearch}/ROOT-%{version}.egg-info -echo 'Name: JupyROOT' > \ - %{buildroot}%{python2_sitearch}/JupyROOT-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitearch}/JupyROOT-%{version}.egg-info -echo 'Name: JsMVA' > \ - %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python2_sitelib}/JsMVA-%{version}.egg-info - -%endif - -# Move the python modules to sitearch/sitelib -mkdir -p %{buildroot}%{python3_sitearch} - -mv %{buildroot}%{_libdir}/%{name}/cppyy %{buildroot}%{python3_sitearch} -ln -s ../../root/libcppyy%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libcppyy%{python3_version_uscore}%{python3_ext_suffix} - -mv %{buildroot}%{_libdir}/%{name}/cppyy_backend %{buildroot}%{python3_sitearch} -ln -s ../../root/libcppyy_backend%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so - -mv %{buildroot}%{_libdir}/%{name}/ROOT %{buildroot}%{python3_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \ +# Fix python extension suffix +mv %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \ %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libROOTPythonizations%{python3_version_uscore}.so +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion} +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so -mv %{buildroot}%{_libdir}/%{name}/JupyROOT %{buildroot}%{python3_sitearch} -mv %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so.%{version} \ +mv %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{version} \ %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{_libdir}/%{name}/libJupyROOT%{python3_version_uscore}.so +rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{libversion} +rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so +# Move noarch python modules to sitelib +if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then mkdir -p %{buildroot}%{python3_sitelib} -mv %{buildroot}%{_libdir}/%{name}/JsMVA %{buildroot}%{python3_sitelib} +mv %{buildroot}%{python3_sitearch}/JsMVA %{buildroot}%{python3_sitelib} %if %{distrdf} -mv %{buildroot}%{_libdir}/%{name}/DistRDF %{buildroot}%{python3_sitelib} +mv %{buildroot}%{python3_sitearch}/DistRDF %{buildroot}%{python3_sitelib} %endif +fi # Create .egg-info files so that rpm auto-generates provides echo 'Name: ROOT' > \ @@ -2437,16 +2318,6 @@ echo 'Version: %{version}' >> \ # Put jupyter stuff in the right places mkdir -p %{buildroot}%{_datadir}/jupyter/kernels -%if %{buildpy2} -cp -pr %{buildroot}%{_datadir}/%{name}/notebook/kernels/root \ - %{buildroot}%{_datadir}/jupyter/kernels/python2-jupyroot -sed -e 's/ROOT C++/& (Python 2)/' \ - -e 's!python[0-9]*\.[0-9]*!%{__python2}!' \ - -i %{buildroot}%{_datadir}/jupyter/kernels/python2-jupyroot/kernel.json -sed -e '/^\#!/d' \ - -i %{buildroot}%{python2_sitearch}/JupyROOT/kernel/rootkernel.py -%endif - cp -pr %{buildroot}%{_datadir}/%{name}/notebook/kernels/root \ %{buildroot}%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot sed -e 's/ROOT C++/& (Python 3)/' \ @@ -2522,43 +2393,34 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins rm TBrowserImp/P030_RWebBrowserImp.C %endif rm TDataSetManager/P020_TDataSetManagerAliEn.C -%if ! %{gfal2} -rm TFile/P050_TGFALFile.C -%endif rm TFile/P070_TAlienFile.C rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TGrid/P010_TAlien.C -%if ! %{webgui} -rm TGuiFactory/P030_TWebGuiFactory.C -%endif -%if %{xrootd5} rm TProofMgr/P010_TXProofMgr.C rm TProofServ/P010_TXProofServ.C rm TSlave/P010_TXSlave.C -%endif rm TSQLServer/P040_TOracleServer.C rm TSystem/P030_TAlienSystem.C rm TVirtualGeoConverter/P010_TGeoVGConverter.C %if ! %{root7} -rm TVirtualGeoPainter/P020_REveGeoPainter.C +rm TVirtualGeoPainter/P020_RGeoPainter.C %endif rm TVirtualGLImp/P020_TGWin32GL.C rm TVirtualMonitoringWriter/P010_TMonaLisaWriter.C rm TVirtualX/P030_TGWin32.C rm TVirtualX/P050_TGQuartz.C rmdir TGrid -%if %{xrootd5} rmdir TProofMgr rmdir TProofServ rmdir TSlave -%endif rmdir TVirtualGeoConverter popd # Replace bundled jsroot with symlinks to system version -for x in img libs scripts style files/draw.htm files/online.htm ; do - ln -s /usr/share/javascript/jsroot/$x %{buildroot}%{_datadir}/%{name}/js/$x +for x in build img modules scripts files/draw.htm files/online.htm ; do + ln -nrs %{buildroot}%{_jsdir}/jsroot/$x \ + %{buildroot}%{_datadir}/%{name}/js/$x done # Create ldconfig configuration @@ -2568,17 +2430,13 @@ echo %{_libdir}/%{name} > \ # Make ROOTConfig-targets.cmake not error on missing files to work better with # subpackages -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8 -%global pkgmgr dnf -%else -%global pkgmgr yum -%endif -sed -e '/FATAL.*import/i\ message(WARNING "The imported target \\"\${target}\\" references the file\ - \\"\${file}\\"\ -but this file does not exist. If this target is used you need to install the package that provides this file\ - %{pkgmgr} install \${file}\ +sed -e 's/FATAL_ERROR \(.*imported\)/WARNING \1/' \ + -e '/Possible reasons include/i\ +but this file does not exist.\ +If this target is used you need to install the package that provides this\ +file using \\"dnf install\\".\ If this target is not used this warning can be ignored.")' \ - -e '/FATAL.*import/,/)/d' \ + -e '/Possible reasons include/,/)/d' \ -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets.cmake # Rename to avoid name clashes @@ -2591,30 +2449,17 @@ for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f` l=`tr / - <<< $l` tmpdir=`mktemp -d` -%if %{?rhel}%{!?rhel:0} == 7 - DESTDIR=$tmpdir cmake3 -DCMAKE_INSTALL_COMPONENT=headers -P $f > /dev/null -%else DESTDIR=$tmpdir cmake -DCMAKE_INSTALL_COMPONENT=headers -P $f > /dev/null -%endif ( cd $tmpdir ; find . -type f) | sort | sed 's!^\.!!' > $l rm -rf $tmpdir done # ... and merge some of them cat includelist-core-{[^mw],m[^au]}* > includelist-core -cat includelist-geom-geom* > includelist-geom cat includelist-graf2d-x11ttf >> includelist-graf2d-x11 cat includelist-graf3d-rglew >> includelist-graf3d-gl -cat includelist-net-netxng > includelist-netx -%if ! %{xrootd5} -cat includelist-net-netx >> includelist-netx -%endif %check -%if %{?rhel}%{!?rhel:0} == 7 -. /opt/rh/devtoolset-8/enable -%endif - pushd %{_vpath_builddir} pushd test ln -s ../../files files @@ -2704,8 +2549,6 @@ popd # reads input data over network # http://root.cern/files/tmva101.root # -# - pyunittests-pyroot-dependency-versions -# - pyunittests-pyroot-numbadeclare # - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py # these tests require the numba python module which is not available @@ -2742,8 +2585,6 @@ gtest-tmva-tmva-test-rstandardscaler|\ tutorial-tmva-tmva003_RReader|\ tutorial-tmva-tmva004_RStandardScaler|\ tutorial-tmva-tmva103_Application|\ -pyunittests-pyroot-dependency-versions|\ -pyunittests-pyroot-numbadeclare|\ test-import-numba|\ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ test-webgui-ping" @@ -2752,29 +2593,25 @@ test-webgui-ping" # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py # - tutorial-roofit-rf409_NumPyPandasToRooFit-py -# requires the pandas python module which is not available in EPEL 7 -# or EPEL 9 +# Requires the pandas python module not (yet) available in RHEL/EPEL 9 excluded="${excluded}|\ test-import-pandas|\ tutorial-dataframe-df026_AsNumpyArrays-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif -%if %{?rhel}%{!?rhel:0} == 7 -# - pyunittests-pyroot-roofit-roodataset-numpy -# AttributeError: module 'numpy' has no attribute 'isin' -excluded="${excluded}|\ -pyunittests-pyroot-roofit-roodataset-numpy" -%endif - %if %{?fedora}%{!?fedora:0} >= 38 -# Failures with Fedora 38 (GCC 13 related?) +# - pyunittests-dataframe-histograms +# - tutorial-legacy-rootenv +# Failures with Fedora 38 (GCC 13 related?) excluded="${excluded}|\ pyunittests-dataframe-histograms|\ tutorial-legacy-rootenv" %ifarch %{ix86} -# Failures with Fedora 38 i686 (after numpy 1.24 update) +# - pyunittests-pyroot-roofit-roodataset-numpy +# Failures with Fedora 38 i686 (after numpy 1.24 update) +# https://github.com/root-project/root/issues/12162 excluded="${excluded}|\ pyunittests-pyroot-roofit-roodataset-numpy" %endif @@ -2782,7 +2619,6 @@ pyunittests-pyroot-roofit-roodataset-numpy" %ifarch %{arm} # 32 bit arm specific failures -# # - gtest-tree-tree-test-testBulkApi # - gtest-tree-tree-test-testBulkApiSillyStruct # - gtest-tree-dataframe-test-dataframe-snapshot @@ -2799,76 +2635,34 @@ pyunittests-distrdf-unit-test-headnode" %endif %ifarch %{power64} aarch64 -# This test fails on ppc64le and aarch64 (but not on x86_64) -# The interpreted version works though, only compiled version fails # - test-stresshistofit -excluded="${excluded}|test-stresshistofit\$\$" +# - test-stressroofit +# - test-stressroofit-batchmode-cpu +# - test-stressroofit-interpreted +excluded="${excluded}|\ +test-stresshistofit\$\$|\ +test-stressroofit\$\$|\ +test-stressroofit-batchmode-cpu|\ +test-stressroofit-interpreted" %endif %ifarch %{power64} # PPC64LE specific failures -# # - test-stresshistofit-interpreted # - test-stresshistogram-interpreted # - test-stressmathcore-interpreted # - test-stressroostats-interpreted # # Always timeout (hang?) -# - pyunittests-pyroot-pyz-rdataframe-makenumpy -# - tutorial-dataframe-df032_MakeNumpyDataFrame-py +# - test-stressinterpreter +# - tutorial-unuran-unuranFoamTest excluded="${excluded}|\ test-stresshistofit-interpreted|\ test-stresshistogram-interpreted|\ test-stressmathcore-interpreted|\ test-stressroostats-interpreted|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -tutorial-dataframe-df032_MakeNumpyDataFrame-py" - -%if %{?rhel}%{!?rhel:0} == 9 -# tmva/tmva/test/branchlessForest.cxx:215: Failure -# Expected equality of these values: -# predictions[1] -# Which is: -1 -# -1.0 + 2.0 -# Which is: 1 -# - gtest-tmva-tmva-test-branchlessForest -# -# Error in : bins must be in increasing order -# Error in : X must be in increasing order -# - tutorial-math-kdTreeBinning -# -# Segmentation violation - malloc(): unaligned tcache chunk detected -# - tutorial-unfold-testUnfold7c -# -# TFormula double free in Python -# - tutorial-hist-fillrandom-py -# - tutorial-pyroot-fillrandom-py -# - tutorial-pyroot-fit1-py (uses output of tutorial-pyroot-fillrandom-py) -# - tutorial-pyroot-formula1-py -excluded="${excluded}|\ -gtest-tmva-tmva-test-branchlessForest|\ -tutorial-math-kdTreeBinning|\ -tutorial-unfold-testUnfold7c|\ -tutorial-hist-fillrandom-py|\ -tutorial-pyroot-fillrandom-py|\ -tutorial-pyroot-fit1-py|\ -tutorial-pyroot-formula1-py" -%endif - -%if %{?rhel}%{!?rhel:0} == 7 || %{?rhel}%{!?rhel:0} == 8 -# crash - free(): corrupted unsorted chunks -# - gtest-roofit-RDataFrameHelpers-test-testActionHelpers -# - gtest-tmva-tmva-test-rtensor-utils -# - gtest-tree-dataframe-test-dataframe-* -# - gtest-tree-dataframe-test-datasource-* -# - tutorial-dataframe-df004_cutFlowReport -excluded="${excluded}|\ -gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ -gtest-tmva-tmva-test-rtensor-utils|\ -gtest-tree-dataframe-test-dataframe|\ -gtest-tree-dataframe-test-datasource|\ -tutorial-dataframe-df004_cutFlowReport" -%endif +test-stressinterpreter|\ +tutorial-unuran-unuranFoamTest" %if %{?rhel}%{!?rhel:0} == 8 # Fails on ppc64le since RHEL 8.5 update @@ -2879,115 +2673,121 @@ tutorial-dataframe-df004_cutFlowReport" # - librt-2.28 # - pyunittests-pyroot-import-load-libs # -# crash - double free or corruption (out) +# - tutorial-fit-combinedFit(-py) +# - tutorial-fit-exampleFit3D +# - tutorial-fit-fit2dHist +# - tutorial-fit-fitCircle +# - tutorial-fit-line3Dfit +# - tutorial-multicore-mt103_fillNtupleFromMultipleThreads # - tutorial-multicore-mt201_parallelHistoFill -# -# segmentation violation # - tutorial-multicore-mt304_fillHistos +# - tutorial-multicore-mtbb001_fillHistos +# - tutorial-multicore-mtbb101_fillNtuples +# - tutorial-multicore-mtbb201_parallelHistoFill excluded="${excluded}|\ pyunittests-pyroot-import-load-libs|\ +tutorial-fit-combinedFit|\ +tutorial-fit-exampleFit3D|\ +tutorial-fit-fit2dHist|\ +tutorial-fit-fitCircle|\ +tutorial-fit-line3Dfit|\ +tutorial-multicore-mt103_fillNtupleFromMultipleThreads|\ tutorial-multicore-mt201_parallelHistoFill|\ -tutorial-multicore-mt304_fillHistos" +tutorial-multicore-mt304_fillHistos|\ +tutorial-multicore-mtbb001_fillHistos|\ +tutorial-multicore-mtbb101_fillNtuples|\ +tutorial-multicore-mtbb201_parallelHistoFill" %endif %endif %ifarch s390x -# s390x specific failures -# # - gtest-roofit-roofitcore-test-testNaNPacker -# - gtest-roofit-roofitcore-test-testRooProdPdf -# - gtest-tree-dataframe-test-datasource-ntuple -# - gtest-tree-ntuple-v7-test-ntuple-basics -# - gtest-tree-ntuple-v7-test-ntuple-extended -# - gtest-tree-ntuple-v7-test-ntuple-merger -# - gtest-tree-ntuple-v7-test-ntuple-minifile -# - gtest-tree-ntuple-v7-test-ntuple-serialize -# - pyunittests-pyroot-pyz-rtensor -# - pyunittests-pyroot-pyz-stl-vector -# - test-stresshistofit(-interpreted) -# - test-stresshistogram(-interpreted) -# - tutorial-dataframe-df006_ranges-py -# - tutorial-math-exampleFunction-py # - tutorial-roofit-rf612_recoverFromInvalidParameters +# Uses "Packed NaN" feature, not implemented for big endian. excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker|\ -gtest-roofit-roofitcore-test-testRooProdPdf|\ -gtest-tree-dataframe-test-datasource-ntuple|\ +tutorial-roofit-rf612_recoverFromInvalidParameters" + +# - gtest-tree-ntuple-v7-test-ntuple-basics +# - gtest-tree-ntuple-v7-test-ntuple-endian +# - gtest-tree-ntuple-v7-test-ntuple-extended +# - gtest-tree-ntuple-v7-test-ntuple-minifile +# - gtest-tree-ntuple-v7-test-ntuple-rdf +# - gtest-tree-ntuple-v7-test-ntuple-serialize +# - gtest-tree-ntuple-v7-test-ntuple-types +# https://github.com/root-project/root/issues/12426 +# +# - pyunittests-pyroot-pyz-rtensor +# - pyunittests-pyroot-pyz-stl-vector +# - tutorial-dataframe-df006_ranges-py +# - tutorial-fit-combinedFit-py +# - tutorial-math-exampleFunction-py +# - tutorial-tmva-TMVA_CNN_Classification-py +# - tutorial-tmva-TMVA_Higgs_Classification-py +# - tutorial-tmva-TMVA_RNN_Classification-py +# https://github.com/root-project/root/issues/12429 +# +# - tutorial-tree-drawsparse +# https://github.com/root-project/root/issues/12431 +# +# - test-stresshistofit +# - test-stresshistofit-interpreted +# - test-stresshistogram +# - test-stresshistogram-interpreted +# - test-stressroofit +# - test-stressroofit-batchmode-cpu +# - test-stressroofit-interpreted +excluded="${excluded}|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ +gtest-tree-ntuple-v7-test-ntuple-endian|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ -gtest-tree-ntuple-v7-test-ntuple-merger|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ +gtest-tree-ntuple-v7-test-ntuple-rdf|\ gtest-tree-ntuple-v7-test-ntuple-serialize|\ +gtest-tree-ntuple-v7-test-ntuple-types|\ pyunittests-pyroot-pyz-rtensor|\ pyunittests-pyroot-pyz-stl-vector|\ -test-stresshistofit|\ -test-stresshistogram|\ tutorial-dataframe-df006_ranges-py|\ +tutorial-fit-combinedFit-py|\ tutorial-math-exampleFunction-py|\ -tutorial-roofit-rf612_recoverFromInvalidParameters" +tutorial-tmva-TMVA_CNN_Classification-py|\ +tutorial-tmva-TMVA_Higgs_Classification-py|\ +tutorial-tmva-TMVA_RNN_Classification-py|\ +tutorial-tree-drawsparse|\ +test-stresshistofit\$\$|\ +test-stresshistofit-interpreted|\ +test-stresshistogram\$\$|\ +test-stresshistogram-interpreted|\ +test-stressroofit\$\$|\ +test-stressroofit-batchmode-cpu|\ +test-stressroofit-interpreted" %if %{?rhel}%{!?rhel:0} == 8 # Issues with file sizes on EPEL 8 s390x +# - gtest-tree-readspeed-test-readspeed-general # - gtest-tree-tree-test-testTBranch # - test-stress # - test-stressgraphics(-interpreted) excluded="${excluded}|\ +gtest-tree-readspeed-test-readspeed-general|\ gtest-tree-tree-test-testTBranch|\ test-stress\$\$|\ test-stressgraphics" %endif - -%if %{?fedora}%{!?fedora:0} >= 38 -# Segmentation faults and invalid pointers -# Mainly related to DataFrame -excluded="${excluded}|\ -pyunittests-dataframe|\ -pyunittests-distrdf-unit-backend-test-dist|\ -pyunittests-distrdf-unit-test-headnode|\ -pyunittests-pyroot-pyz-rdataframe-asnumpy|\ -pyunittests-pyroot-pyz-rdataframe-makenumpy|\ -pyunittests-pyroot-rdfdescription|\ -gtest-roofit-RDataFrameHelpers-test-testActionHelpers|\ -gtest-tree-dataframe-test-dataframe|\ -gtest-tree-dataframe-test-datasource|\ -gtest-tree-ntuple-v7-test-ntuple-rdf|\ -tutorial-dataframe-df|\ -tutorial-graphs-timeSeriesFromCSV_TDF|\ -tutorial-multicore-mt304_fillHistos|\ -tutorial-rcanvas|\ -tutorial-roofit-rf408_RDataFrameToRooFit-py|\ -tutorial-roofit-rf508_listsetmanip-py|\ -tutorial-tmva-tmva002_RDataFrameAsTensor|\ -tutorial-v7-concurrentfill.cxx|\ -tutorial-v7-histops.cxx|\ -tutorial-v7-perf.cxx|\ -tutorial-v7-perfcomp.cxx|\ -tutorial-v7-simple.cxx" -%endif %endif # Filter out parts of tests that require remote network access -GTEST_FILTER=-RCsvDS.Remote:RRawFile.Remote:RSqliteDS.Davix \ -make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" -popd - -%if %{?rhel}%{!?rhel:0} == 7 -%post -touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1 || : -update-desktop-database >/dev/null 2>&1 || : -update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : - -%postun -if [ $1 -eq 0 ] ; then - touch --no-create %{_datadir}/icons/hicolor >/dev/null 2>&1 - gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : -fi -update-desktop-database >/dev/null 2>&1 || : -update-mime-database %{_datadir}/mime >/dev/null 2>&1 || : - -%posttrans -gtk-update-icon-cache %{_datadir}/icons/hicolor >/dev/null 2>&1 || : +# RNTuple.TClassEBO seg fault +# https://github.com/root-project/root/issues/12428 +GTEST_FILTER=-RCsvDS.Remote:RRawFile.Remote:RSqliteDS.Davix:TFile.ReadWithoutGlobalRegistrationWeb:TFile.ReadWithoutGlobalRegistrationNet:RNTuple.TClassEBO \ +%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) +ROOTTEST_IGNORE_PANDAS_PY3=1 \ %endif +ROOTTEST_IGNORE_NUMBA_PY3=1 \ +ROOTTEST_IGNORE_JUPYTER_PY3=1 \ +make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" + +popd %pretrans net-http -p path = "%{_datadir}/%{name}/js" @@ -2998,22 +2798,13 @@ end %post net-http # Replace bundled jsroot with symlinks to system version -for x in img libs scripts style files/draw.htm files/online.htm ; do - ln -fs /usr/share/javascript/jsroot/$x %{_datadir}/%{name}/js/$x +for x in build img modules scripts files/draw.htm files/online.htm ; do + ln -fnrs %{_jsdir}/jsroot/$x %{_datadir}/%{name}/js/$x done %{?ldconfig} %ldconfig_postun net-http -%if %{buildpy2} -%pre -n python2-%{name} -if [ -r /var/lib/alternatives/libPyROOT.so ] ; then - for alt in `grep python2.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do - %{_sbindir}/update-alternatives --remove libPyROOT.so $alt - done -fi -%endif - %pre -n python%{python3_pkgversion}-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do @@ -3028,7 +2819,7 @@ if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then fi cat << EOF >> /etc/jupyter/jupyter_notebook_config.py # Extra static path for JupyROOT - start - do not remove this line -c.NotebookApp.extra_static_paths.append('%{_datadir}/javascript/jsroot') +c.NotebookApp.extra_static_paths.append('%{_jsdir}/jsroot') c.NotebookApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') # Extra static path for JupyROOT - end - do not remove this line EOF @@ -3037,7 +2828,7 @@ if [ -e /etc/jupyter/jupyter_server_config.py ] ; then fi cat << EOF >> /etc/jupyter/jupyter_server_config.py # Extra static path for JupyROOT - start - do not remove this line -c.ServerApp.extra_static_paths.append('%{_datadir}/javascript/jsroot') +c.ServerApp.extra_static_paths.append('%{_jsdir}/jsroot') c.ServerApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') # Extra static path for JupyROOT - end - do not remove this line EOF @@ -3066,14 +2857,13 @@ fi %ldconfig_scriptlets multiproc %ldconfig_scriptlets cling %ldconfig_scriptlets tpython -%if %{buildpy2} -%ldconfig_scriptlets -n python2-%{name} -%endif %ldconfig_scriptlets -n python%{python3_pkgversion}-%{name} %ldconfig_scriptlets r %ldconfig_scriptlets r-tools %ldconfig_scriptlets genetic %ldconfig_scriptlets geom +%ldconfig_scriptlets geom-builder +%ldconfig_scriptlets geom-painter %ldconfig_scriptlets gdml %ldconfig_scriptlets graf %ldconfig_scriptlets graf-asimage @@ -3099,13 +2889,10 @@ fi %ldconfig_scriptlets hist-painter %ldconfig_scriptlets spectrum %ldconfig_scriptlets spectrum-painter -%ldconfig_scriptlets hist-factory %ldconfig_scriptlets html %ldconfig_scriptlets io %ldconfig_scriptlets io-dcache -%if %{gfal2} %ldconfig_scriptlets io-gfal -%endif %ldconfig_scriptlets io-sql %ldconfig_scriptlets io-xml %ldconfig_scriptlets io-xmlparser @@ -3137,17 +2924,20 @@ fi %ldconfig_scriptlets proof-bench %ldconfig_scriptlets proof-player %ldconfig_scriptlets proof-sessionviewer -%if ! %{xrootd5} -%ldconfig_scriptlets xproof -%endif +%if %{roofit} %ldconfig_scriptlets roofit %ldconfig_scriptlets roofit-common %ldconfig_scriptlets roofit-core %ldconfig_scriptlets roofit-more %ldconfig_scriptlets roofit-batchcompute +%if %{dataframe} %ldconfig_scriptlets roofit-dataframe-helpers +%endif +%ldconfig_scriptlets roofit-jsoninterface %ldconfig_scriptlets roofit-hs3 %ldconfig_scriptlets roostats +%ldconfig_scriptlets hist-factory +%endif %ldconfig_scriptlets sql-mysql %ldconfig_scriptlets sql-odbc %ldconfig_scriptlets sql-sqlite @@ -3161,18 +2951,20 @@ fi %endif %ldconfig_scriptlets tmva-gui %ldconfig_scriptlets tree +%if %{dataframe} %ldconfig_scriptlets tree-dataframe +%endif %ldconfig_scriptlets tree-player %ldconfig_scriptlets tree-viewer +%ldconfig_scriptlets tree-webviewer %ldconfig_scriptlets unfold -%if %{webgui} %ldconfig_scriptlets gui-webdisplay %ifarch %{qt5_qtwebengine_arches} %ldconfig_scriptlets gui-qt5webdisplay %endif %ldconfig_scriptlets gui-webgui6 -%endif %if %{root7} +%ldconfig_scriptlets geom-webviewer %ldconfig_scriptlets graf-gpadv7 %ldconfig_scriptlets graf-primitives %ldconfig_scriptlets graf3d-eve7 @@ -3183,6 +2975,10 @@ fi %ldconfig_scriptlets histv7 %ldconfig_scriptlets hist-draw %ldconfig_scriptlets tree-ntuple +%ldconfig_scriptlets tree-ntuple-utils +%if %{roofit} +%ldconfig_scriptlets xroofit +%endif %endif %files @@ -3190,8 +2986,10 @@ fi %{_bindir}/root %{_bindir}/root.exe %{_bindir}/rootn.exe +%{_bindir}/rootreadspeed %{_bindir}/roots %{_bindir}/roots.exe +%{_bindir}/rootssh %{_mandir}/man1/hadd.1* %{_mandir}/man1/root.1* %{_mandir}/man1/root.exe.1* @@ -3228,10 +3026,8 @@ fi %{_libdir}/%{name}/lib*Dict.* %dir %{_datadir}/gdb/auto-load%{_libdir}/%{name} %{_datadir}/gdb/auto-load%{_libdir}/%{name}/libCore.* -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 %dir %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__ %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__/libCore.* -%endif %dir %{_datadir}/%{name} %{_datadir}/%{name}/allDict.cxx.pch %{_datadir}/%{name}/class.rules @@ -3288,41 +3084,21 @@ fi %doc interpreter/llvm/src/llvm-README.txt %license interpreter/llvm/src/llvm-LICENSE.TXT +%files testsupport +%{_includedir}/%{name}/ROOT/TestSupport.hxx +%{_libdir}/%{name}/libTestSupport.a +%doc core/testsupport/README.md + %files tpython -f includelist-bindings-tpython %{_libdir}/%{name}/libROOTTPython.* %{_libdir}/%{name}/libROOTTPython_rdict.pcm -%if %{buildpy2} -%files -n python2-%{name} -f includelist-bindings-pyroot -%{python2_sitearch}/cppyy -%{python2_sitearch}/cppyy_backend -%{python2_sitearch}/ROOT -%{python2_sitearch}/ROOT-*.egg-info -%{python2_sitearch}/libcppyy%{python2_version_uscore}.so -%{python2_sitearch}/libcppyy_backend%{python2_version_uscore}.so -%{python2_sitearch}/libROOTPythonizations%{python2_version_uscore}.so -%{_libdir}/%{name}/libcppyy%{python2_version_uscore}.* -%{_libdir}/%{name}/libcppyy_backend%{python2_version_uscore}.* -%dir %{_includedir}/%{name}/CPyCppyy - -%files -n python2-jupyroot -%{python2_sitearch}/JupyROOT -%{python2_sitearch}/JupyROOT-*.egg-info -%{python2_sitearch}/libJupyROOT%{python2_version_uscore}.so -%{_datadir}/jupyter/kernels/python2-jupyroot -%doc bindings/jupyroot/README.md - -%files -n python2-jsmva -%{python2_sitelib}/JsMVA -%{python2_sitelib}/JsMVA-*.egg-info -%endif - %files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot %{python3_sitearch}/cppyy %{python3_sitearch}/cppyy_backend %{python3_sitearch}/ROOT %{python3_sitearch}/ROOT-*.egg-info -%{python3_sitearch}/libcppyy%{python3_version_uscore}%{python3_ext_suffix} +%{python3_sitearch}/libcppyy%{python3_version_uscore}.so %{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so %{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} %{_libdir}/%{name}/libcppyy%{python3_version_uscore}.* @@ -3361,16 +3137,20 @@ fi %{_libdir}/%{name}/libGenetic_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P080_GeneticMinimizer.C -%files geom -f includelist-geom +%files geom -f includelist-geom-geom %{_libdir}/%{name}/libGeom.* %{_libdir}/%{name}/libGeom_rdict.pcm +%{_datadir}/%{name}/RadioNuclides.txt + +%files geom-builder -f includelist-geom-geombuilder %{_libdir}/%{name}/libGeomBuilder.* %{_libdir}/%{name}/libGeomBuilder_rdict.pcm +%{_datadir}/%{name}/plugins/TGeoManagerEditor/P010_TGeoManagerEditor.C + +%files geom-painter -f includelist-geom-geompainter %{_libdir}/%{name}/libGeomPainter.* %{_libdir}/%{name}/libGeomPainter_rdict.pcm -%{_datadir}/%{name}/plugins/TGeoManagerEditor/P010_TGeoManagerEditor.C %{_datadir}/%{name}/plugins/TVirtualGeoPainter/P010_TGeoPainter.C -%{_datadir}/%{name}/RadioNuclides.txt %files gdml -f includelist-geom-gdml %{_libdir}/%{name}/libGdml.* @@ -3512,17 +3292,6 @@ fi %{_libdir}/%{name}/libSpectrumPainter.* %{_libdir}/%{name}/libSpectrumPainter_rdict.pcm -%files hist-factory -f includelist-roofit-histfactory -%{_bindir}/hist2workspace -%{_bindir}/prepareHistFactory -%{_mandir}/man1/hist2workspace.1* -%{_mandir}/man1/prepareHistFactory.1* -%{_libdir}/%{name}/libHistFactory.* -%{_libdir}/%{name}/libHistFactory_rdict.pcm -%{_datadir}/%{name}/HistFactorySchema.dtd -%dir %{_includedir}/%{name}/RooStats/HistFactory -%doc roofit/histfactory/doc/README - %files html -f includelist-html %{_libdir}/%{name}/libHtml.* %{_libdir}/%{name}/libHtml_rdict.pcm @@ -3539,12 +3308,10 @@ fi %{_datadir}/%{name}/plugins/TFile/P040_TDCacheFile.C %{_datadir}/%{name}/plugins/TSystem/P020_TDCacheSystem.C -%if %{gfal2} %files io-gfal -f includelist-io-gfal %{_libdir}/%{name}/libGFAL.* %{_libdir}/%{name}/libGFAL_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P050_TGFALFile.C -%endif %files io-sql -f includelist-io-sql %{_libdir}/%{name}/libSQLIO.* @@ -3701,12 +3468,13 @@ fi %dir %{_datadir}/%{name}/js %dir %{_datadir}/%{name}/js/files %{_datadir}/%{name}/js/files/canv_batch.htm +%{_datadir}/%{name}/js/files/geom_batch.htm %{_datadir}/%{name}/js/files/web.config %{_datadir}/%{name}/js/files/wslist.htm +%ghost %{_datadir}/%{name}/js/build %ghost %{_datadir}/%{name}/js/img -%ghost %{_datadir}/%{name}/js/libs +%ghost %{_datadir}/%{name}/js/modules %ghost %{_datadir}/%{name}/js/scripts -%ghost %{_datadir}/%{name}/js/style %ghost %{_datadir}/%{name}/js/files/draw.htm %ghost %{_datadir}/%{name}/js/files/online.htm %doc net/http/README.txt net/http/civetweb/*.md @@ -3715,11 +3483,7 @@ fi %{_libdir}/%{name}/libRHTTPSniff.* %{_libdir}/%{name}/libRHTTPSniff_rdict.pcm -%files netx -f includelist-netx -%if ! %{xrootd5} -%{_libdir}/%{name}/libNetx.* -%{_libdir}/%{name}/libNetx_rdict.pcm -%endif +%files netx -f includelist-net-netxng %{_libdir}/%{name}/libNetxNG.* %{_libdir}/%{name}/libNetxNG_rdict.pcm %{_datadir}/%{name}/plugins/TFile/P100_TXNetFile.C @@ -3769,19 +3533,7 @@ fi %{_datadir}/%{name}/plugins/TProofProgressLog/P010_TProofProgressLog.C %{_datadir}/%{name}/plugins/TSessionViewer/P010_TSessionViewer.C -%if ! %{xrootd5} -%files xproof -f includelist-proof-proofx -%{_bindir}/proofexecv -%{_bindir}/xproofd -%{_mandir}/man1/xproofd.1* -%{_libdir}/%{name}/libProofx.* -%{_libdir}/%{name}/libProofx_rdict.pcm -%{_libdir}/%{name}/libXrdProofd.* -%{_datadir}/%{name}/plugins/TProofMgr/P010_TXProofMgr.C -%{_datadir}/%{name}/plugins/TProofServ/P010_TXProofServ.C -%{_datadir}/%{name}/plugins/TSlave/P010_TXSlave.C -%endif - +%if %{roofit} %files roofit -f includelist-roofit-roofit %{_libdir}/%{name}/libRooFit.* %{_libdir}/%{name}/libRooFit_rdict.pcm @@ -3793,9 +3545,7 @@ fi %{_libdir}/%{name}/libRooFitCore.* %{_libdir}/%{name}/libRooFitCore_rdict.pcm %{_datadir}/gdb/auto-load%{_libdir}/%{name}/libRooFitCore.* -%if %{?fedora}%{!?fedora:0} >= 28 || %{?rhel}%{!?rhel:0} >= 8 %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__/libRooFitCore.* -%endif %files roofit-more -f includelist-roofit-roofitmore %{_libdir}/%{name}/libRooFitMore.* @@ -3806,9 +3556,11 @@ fi %{_libdir}/%{name}/libRooBatchCompute_* %doc roofit/batchcompute/README.md +%if %{dataframe} %files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers %{_libdir}/%{name}/libRooFitRDataFrameHelpers.* %{_libdir}/%{name}/libRooFitRDataFrameHelpers_rdict.pcm +%endif %files roofit-hs3 -f includelist-roofit-hs3 %{_libdir}/%{name}/libRooFitHS3.* @@ -3817,11 +3569,27 @@ fi %{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json %doc roofit/hs3/README.md +%files roofit-jsoninterface -f includelist-roofit-jsoninterface +%{_libdir}/%{name}/libRooFitJSONInterface.* +%{_libdir}/%{name}/libRooFitJSONInterface_rdict.pcm + %files roostats -f includelist-roofit-roostats %{_libdir}/%{name}/libRooStats.* %{_libdir}/%{name}/libRooStats_rdict.pcm %dir %{_includedir}/%{name}/RooStats +%files hist-factory -f includelist-roofit-histfactory +%{_bindir}/hist2workspace +%{_bindir}/prepareHistFactory +%{_mandir}/man1/hist2workspace.1* +%{_mandir}/man1/prepareHistFactory.1* +%{_libdir}/%{name}/libHistFactory.* +%{_libdir}/%{name}/libHistFactory_rdict.pcm +%{_datadir}/%{name}/HistFactorySchema.dtd +%dir %{_includedir}/%{name}/RooStats/HistFactory +%doc roofit/histfactory/doc/README +%endif + %files sql-mysql -f includelist-sql-mysql %{_libdir}/%{name}/libRMySQL.* %{_libdir}/%{name}/libRMySQL_rdict.pcm @@ -3848,9 +3616,7 @@ fi %dir %{_includedir}/%{name}/TMVA %dir %{_includedir}/%{name}/TMVA/DNN %dir %{_includedir}/%{name}/TMVA/DNN/Architectures -%if %{tbb} %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Cpu -%endif %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Reference %license tmva/doc/LICENSE @@ -3882,9 +3648,11 @@ fi %{_libdir}/%{name}/libTree_rdict.pcm %doc %{_pkgdocdir}/README.SELECTOR +%if %{dataframe} %files tree-dataframe -f includelist-tree-dataframe %{_libdir}/%{name}/libROOTDataFrame.* %{_libdir}/%{name}/libROOTDataFrame_rdict.pcm +%endif %files tree-player -f includelist-tree-treeplayer %{_libdir}/%{name}/libTreePlayer.* @@ -3897,6 +3665,11 @@ fi %{_libdir}/%{name}/libTreeViewer_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualTreeViewer/P010_TTreeViewer.C +%files tree-webviewer -f includelist-tree-webviewer +%{_libdir}/%{name}/libROOTTreeViewer.* +%{_libdir}/%{name}/libROOTTreeViewer_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualTreeViewer/P020_RTreeViewer.C + %files unfold -f includelist-hist-unfold %{_libdir}/%{name}/libUnfold.* %{_libdir}/%{name}/libUnfold_rdict.pcm @@ -3919,7 +3692,6 @@ fi %{_datadir}/%{name}/notebook %doc %{_pkgdocdir}/JupyROOT-on-EPEL -%if %{webgui} %files gui-webdisplay -f includelist-gui-webdisplay %{_libdir}/%{name}/libROOTWebDisplay.* %{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm @@ -3933,10 +3705,15 @@ fi %files gui-webgui6 -f includelist-gui-webgui6 %{_libdir}/%{name}/libWebGui6.* %{_libdir}/%{name}/libWebGui6_rdict.pcm -%{_datadir}/%{name}/plugins/TGuiFactory/P030_TWebGuiFactory.C -%endif +%{_datadir}/%{name}/plugins/TCanvasImp/P010_TWebCanvas.C +%{_datadir}/%{name}/plugins/TControlBarImp/P010_TWebControlBar.C %if %{root7} +%files geom-webviewer -f includelist-geom-webviewer +%{_libdir}/%{name}/libROOTGeomViewer.* +%{_libdir}/%{name}/libROOTGeomViewer_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualGeoPainter/P020_RGeoPainter.C + %files graf-gpadv7 -f includelist-graf2d-gpadv7 %{_libdir}/%{name}/libROOTGpadv7.* %{_libdir}/%{name}/libROOTGpadv7_rdict.pcm @@ -3948,7 +3725,6 @@ fi %files graf3d-eve7 -f includelist-graf3d-eve7 %{_libdir}/%{name}/libROOTEve.* %{_libdir}/%{name}/libROOTEve_rdict.pcm -%{_datadir}/%{name}/plugins/TVirtualGeoPainter/P020_REveGeoPainter.C %files gui-browsable -f includelist-gui-browsable %{_libdir}/%{name}/libROOTBrowsable.* @@ -3969,6 +3745,7 @@ fi %{_libdir}/%{name}/libROOTBrowserGeomWidget.* %{_libdir}/%{name}/libROOTBrowserRCanvasWidget.* %{_libdir}/%{name}/libROOTBrowserTCanvasWidget.* +%{_libdir}/%{name}/libROOTBrowserTreeWidget.* %{_libdir}/%{name}/libROOTBrowserWidgets.* %{_datadir}/%{name}/plugins/TBrowserImp/P030_RWebBrowserImp.C @@ -3990,9 +3767,34 @@ fi %files tree-ntuple -f includelist-tree-ntuple %{_libdir}/%{name}/libROOTNTuple.* %{_libdir}/%{name}/libROOTNTuple_rdict.pcm + +%files tree-ntuple-utils -f includelist-tree-ntupleutil +%{_libdir}/%{name}/libROOTNTupleUtil.* +%{_libdir}/%{name}/libROOTNTupleUtil_rdict.pcm + +%if %{roofit} +%files xroofit -f includelist-roofit-xroofit +%{_libdir}/%{name}/libRooFitXRooFit.* +%{_libdir}/%{name}/libRooFitXRooFit_rdict.pcm +%endif %endif %changelog +* Sat Mar 18 2023 Mattias Ellert - 6.28.00-1 +- Update to 6.28.00 +- ROOT now uses llvm/clang version 13 (updated from version 9) +- Clean up specfile by removing EPEL 7 conditionals +- Drop dataframe, roofit and tmva-sofieparser on EPEL 8 ppc64le due to + "pure virtual method called" errors +- Split the root-geom sub-package into three separate sub-packages: + root-geom, root-geom-builder and root-geom-painter +- Enable uring support in EPEL 9 (liburing now available) +- New sub-packages: root-geom-webviewer, root-roofit-jsoninterface, + root-testsupport, root-tree-ntuple-utils, root-tree-webviewer, root-xroofit +- Dropped patches: 31 +- New patches: 17 +- Updated patches: 4 + * Mon Jan 30 2023 Mattias Ellert - 6.26.10-5 - Adapt to numpy 1.24 diff --git a/sources b/sources index ef0a91f..e37c144 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.26.10.tar.xz) = 896727ce6da68871a52894a0a3c1b749fece9f08c8cefe62f5beac505710d579c41b84832a727a2ba39dab09e4456773c05b5b23a0fd859ace8062470653bbdb +SHA512 (root-6.28.00.tar.xz) = 57e5e111e41d3942b63a9e038198e6cc91457d7724cc9dcf9673679b12b13acb6980e7786828a8527a292c018bd13af51854e83f99301f6bc5e4455cdc23c30e SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 088e995d07cf6c050f713cca636bdd81d00f47fe Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 22 Mar 2023 21:46:20 +0100 Subject: [PATCH 07/89] Update to 6.28.02 Dropped patches: 13 New patches: 1 --- ...t-and-TMVA-pythonizations-if-enabled.patch | 117 --------- ...et-DataLayout-from-our-TargetMachine.patch | 32 --- root-Simplify-creation-of-TargetMachine.patch | 94 ------- root-add-missing-include-cstdint.patch | 38 --- ...g-Disable-outline-atomics-on-AArch64.patch | 35 --- ...roofit-files-when-roofit-is-disabled.patch | 75 ------ root-gtest-compat.patch | 85 ------- root-make-DistRDF-optional.patch | 32 --- root-memory-usage.patch | 30 --- ...kBuf-add-missing-call-to-ReleasePage.patch | 30 --- ...-Speed-up-TMVA-CNN-and-RNN-tutorials.patch | 239 ------------------ ...t-minimum-python-version-for-DistRDF.patch | 27 -- ...istent-wording-in-tmva-test-comments.patch | 86 +++++++ ...sts-using-clad-when-clad-is-disabled.patch | 66 ----- root.spec | 94 +++---- sources | 2 +- 16 files changed, 117 insertions(+), 965 deletions(-) delete mode 100644 root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch delete mode 100644 root-Set-DataLayout-from-our-TargetMachine.patch delete mode 100644 root-Simplify-creation-of-TargetMachine.patch delete mode 100644 root-add-missing-include-cstdint.patch delete mode 100644 root-cling-Disable-outline-atomics-on-AArch64.patch delete mode 100644 root-dont-install-roofit-files-when-roofit-is-disabled.patch delete mode 100644 root-gtest-compat.patch delete mode 100644 root-make-DistRDF-optional.patch delete mode 100644 root-memory-usage.patch delete mode 100644 root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch delete mode 100644 root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch delete mode 100644 root-use-consistent-minimum-python-version-for-DistRDF.patch create mode 100644 root-use-consistent-wording-in-tmva-test-comments.patch delete mode 100644 root-veto-tests-using-clad-when-clad-is-disabled.patch diff --git a/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch b/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch deleted file mode 100644 index 0ca4387..0000000 --- a/root-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch +++ /dev/null @@ -1,117 +0,0 @@ -From d759a42a33fe6a9195c3c79275fe05e4da2b4195 Mon Sep 17 00:00:00 2001 -From: Jonas Rembser -Date: Sat, 14 Jan 2023 12:25:20 +0100 -Subject: [PATCH] [PyROOT] Only build RooFit and TMVA pythonizations if needed - -Like this, we are polluting the build and install directories less with -unneeded files and it also speeds up the build process a bit if RooFit -and/or TMVA are disabled. Their pythonization files don't need to be -compiled to `.pyc` files. ---- - bindings/pyroot/pythonizations/CMakeLists.txt | 76 ++++++++++--------- - 1 file changed, 42 insertions(+), 34 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt -index 9e853d1885..8395785b24 100644 ---- a/bindings/pyroot/pythonizations/CMakeLists.txt -+++ b/bindings/pyroot/pythonizations/CMakeLists.txt -@@ -25,6 +25,48 @@ if(dataframe) - inc/RNumpyDS.hxx) - endif() - -+if(roofit) -+ list(APPEND PYROOT_EXTRA_PY2_PY3_SOURCE -+ ROOT/_pythonization/_roofit/__init__.py -+ ROOT/_pythonization/_roofit/_rooabscollection.py -+ ROOT/_pythonization/_roofit/_rooabsdata.py -+ ROOT/_pythonization/_roofit/_rooabspdf.py -+ ROOT/_pythonization/_roofit/_rooabsreallvalue.py -+ ROOT/_pythonization/_roofit/_rooabsreal.py -+ ROOT/_pythonization/_roofit/_rooarglist.py -+ ROOT/_pythonization/_roofit/_rooargset.py -+ ROOT/_pythonization/_roofit/_roocategory.py -+ ROOT/_pythonization/_roofit/_roochi2var.py -+ ROOT/_pythonization/_roofit/_roodatahist.py -+ ROOT/_pythonization/_roofit/_roodataset.py -+ ROOT/_pythonization/_roofit/_roodecays.py -+ ROOT/_pythonization/_roofit/_roogenfitstudy.py -+ ROOT/_pythonization/_roofit/_rooglobalfunc.py -+ ROOT/_pythonization/_roofit/_roojsonfactorywstool.py -+ ROOT/_pythonization/_roofit/_roomcstudy.py -+ ROOT/_pythonization/_roofit/_roomsgservice.py -+ ROOT/_pythonization/_roofit/_roonllvar.py -+ ROOT/_pythonization/_roofit/_rooprodpdf.py -+ ROOT/_pythonization/_roofit/_roorealvar.py -+ ROOT/_pythonization/_roofit/_roosimultaneous.py -+ ROOT/_pythonization/_roofit/_roosimwstool.py -+ ROOT/_pythonization/_roofit/_roovectordatastore.py -+ ROOT/_pythonization/_roofit/_rooworkspace.py -+ ROOT/_pythonization/_roofit/_utils.py) -+endif() -+ -+if(tmva) -+ list(APPEND PYROOT_EXTRA_PY2_PY3_SOURCE -+ ROOT/_pythonization/_tmva/_crossvalidation.py -+ ROOT/_pythonization/_tmva/_dataloader.py -+ ROOT/_pythonization/_tmva/_factory.py -+ ROOT/_pythonization/_tmva/__init__.py -+ ROOT/_pythonization/_tmva/_rbdt.py -+ ROOT/_pythonization/_tmva/_rtensor.py -+ ROOT/_pythonization/_tmva/_tree_inference.py -+ ROOT/_pythonization/_tmva/_utils.py) -+endif() -+ - list(APPEND PYROOT_EXTRA_HEADERS - inc/TPyDispatcher.h) - -@@ -39,32 +81,6 @@ set(py2_py3_sources - ROOT/_pythonization/_generic.py - ROOT/_pythonization/__init__.py - ROOT/_pythonization/_pyz_utils.py -- ROOT/_pythonization/_roofit/__init__.py -- ROOT/_pythonization/_roofit/_rooabscollection.py -- ROOT/_pythonization/_roofit/_rooabsdata.py -- ROOT/_pythonization/_roofit/_rooabspdf.py -- ROOT/_pythonization/_roofit/_rooabsreallvalue.py -- ROOT/_pythonization/_roofit/_rooabsreal.py -- ROOT/_pythonization/_roofit/_rooarglist.py -- ROOT/_pythonization/_roofit/_rooargset.py -- ROOT/_pythonization/_roofit/_roocategory.py -- ROOT/_pythonization/_roofit/_roochi2var.py -- ROOT/_pythonization/_roofit/_roodatahist.py -- ROOT/_pythonization/_roofit/_roodataset.py -- ROOT/_pythonization/_roofit/_roodecays.py -- ROOT/_pythonization/_roofit/_roogenfitstudy.py -- ROOT/_pythonization/_roofit/_rooglobalfunc.py -- ROOT/_pythonization/_roofit/_roojsonfactorywstool.py -- ROOT/_pythonization/_roofit/_roomcstudy.py -- ROOT/_pythonization/_roofit/_roomsgservice.py -- ROOT/_pythonization/_roofit/_roonllvar.py -- ROOT/_pythonization/_roofit/_rooprodpdf.py -- ROOT/_pythonization/_roofit/_roorealvar.py -- ROOT/_pythonization/_roofit/_roosimultaneous.py -- ROOT/_pythonization/_roofit/_roosimwstool.py -- ROOT/_pythonization/_roofit/_roovectordatastore.py -- ROOT/_pythonization/_roofit/_rooworkspace.py -- ROOT/_pythonization/_roofit/_utils.py - ROOT/_pythonization/_rvec.py - ROOT/_pythonization/_stl_vector.py - ROOT/_pythonization/_tarray.py -@@ -79,14 +95,6 @@ set(py2_py3_sources - ROOT/_pythonization/_tgraph.py - ROOT/_pythonization/_th1.py - ROOT/_pythonization/_titer.py -- ROOT/_pythonization/_tmva/_crossvalidation.py -- ROOT/_pythonization/_tmva/_dataloader.py -- ROOT/_pythonization/_tmva/_factory.py -- ROOT/_pythonization/_tmva/__init__.py -- ROOT/_pythonization/_tmva/_rbdt.py -- ROOT/_pythonization/_tmva/_rtensor.py -- ROOT/_pythonization/_tmva/_tree_inference.py -- ROOT/_pythonization/_tmva/_utils.py - ROOT/_pythonization/_tobject.py - ROOT/_pythonization/_tobjstring.py - ROOT/_pythonization/_tseqcollection.py --- -2.39.2 - diff --git a/root-Set-DataLayout-from-our-TargetMachine.patch b/root-Set-DataLayout-from-our-TargetMachine.patch deleted file mode 100644 index d936302..0000000 --- a/root-Set-DataLayout-from-our-TargetMachine.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d4c66a41ae50ecfb905ebe66eb296de4e5c146d7 Mon Sep 17 00:00:00 2001 -From: Jonas Hahnfeld -Date: Thu, 16 Feb 2023 16:40:16 +0100 -Subject: [PATCH 2/2] [cling] Set DataLayout from our TargetMachine - -Otherwise LLJIT's constructor will ask the LLJITBuilder's JTMB to -create a DataLayout. As we don't propagate the JTMB (yet -- we -probably should!), this will be wrong if target features influence -the DataLayout. - -This should fix #12293. - -(cherry picked from commit 254bac6cfad78ed671ec3af3d2001c52487b4c86) ---- - interpreter/cling/lib/Interpreter/IncrementalJIT.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp -index 80b6761491..e1721a4d45 100644 ---- a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp -+++ b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp -@@ -358,6 +358,7 @@ IncrementalJIT::IncrementalJIT( - ErrorAsOutParameter _(&Err); - - LLJITBuilder Builder; -+ Builder.setDataLayout(TM->createDataLayout()); - Builder.setExecutorProcessControl(std::move(EPC)); - - // Create ObjectLinkingLayer with our own MemoryManager. --- -2.39.2 - diff --git a/root-Simplify-creation-of-TargetMachine.patch b/root-Simplify-creation-of-TargetMachine.patch deleted file mode 100644 index 8eaa5d8..0000000 --- a/root-Simplify-creation-of-TargetMachine.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 63d16de24e695a847274fa3044127cefffc7b0b6 Mon Sep 17 00:00:00 2001 -From: Jonas Hahnfeld -Date: Fri, 3 Feb 2023 11:52:22 +0100 -Subject: [PATCH 1/2] [cling] Simplify creation of TargetMachine - -We know exactly which target triple and features the CompilerInstance -wants, we don't need to (and probably must not) second-guess that. This -brings us closer to upstream clang-repl and also includes the change of -https://reviews.llvm.org/D128853 which is crucial for RISC-V. - -(cherry picked from commit df0905c499a541eaac3be63c0455a07946022983) ---- - .../cling/lib/Interpreter/IncrementalJIT.cpp | 34 ++++++------------- - 1 file changed, 11 insertions(+), 23 deletions(-) - -diff --git a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp -index 5342945ed1..80b6761491 100644 ---- a/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp -+++ b/interpreter/cling/lib/Interpreter/IncrementalJIT.cpp -@@ -15,6 +15,7 @@ - #include "cling/Utils/Output.h" - #include "cling/Utils/Utils.h" - -+#include - #include - #include - -@@ -292,45 +293,32 @@ Error RTDynamicLibrarySearchGenerator::tryToGenerate( - } - - static std::unique_ptr --CreateHostTargetMachine(const clang::CompilerInstance& CI) { -- const clang::TargetOptions& TargetOpts = CI.getTargetOpts(); -- const clang::CodeGenOptions& CGOpt = CI.getCodeGenOpts(); -- const std::string& Triple = TargetOpts.Triple; -- -- std::string Error; -- const Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error); -- if (!TheTarget) { -- cling::errs() << "cling::IncrementalExecutor: unable to find target:\n" -- << Error; -- return std::unique_ptr(); -- } -- -+CreateTargetMachine(const clang::CompilerInstance& CI) { - CodeGenOpt::Level OptLevel = CodeGenOpt::Default; -- switch (CGOpt.OptimizationLevel) { -+ switch (CI.getCodeGenOpts().OptimizationLevel) { - case 0: OptLevel = CodeGenOpt::None; break; - case 1: OptLevel = CodeGenOpt::Less; break; - case 2: OptLevel = CodeGenOpt::Default; break; - case 3: OptLevel = CodeGenOpt::Aggressive; break; - default: OptLevel = CodeGenOpt::Default; - } -+ - using namespace llvm::orc; -- auto JTMB = JITTargetMachineBuilder::detectHost(); -- if (!JTMB) -- logAllUnhandledErrors(JTMB.takeError(), llvm::errs(), -- "Error detecting host"); -+ auto JTMB = JITTargetMachineBuilder(CI.getTarget().getTriple()); -+ JTMB.addFeatures(CI.getTargetOpts().Features); - -- JTMB->setCodeGenOptLevel(OptLevel); -+ JTMB.setCodeGenOptLevel(OptLevel); - #ifdef _WIN32 -- JTMB->getOptions().EmulatedTLS = false; -+ JTMB.getOptions().EmulatedTLS = false; - #endif // _WIN32 - - #if defined(__powerpc64__) || defined(__PPC64__) - // We have to use large code model for PowerPC64 because TOC and text sections - // can be more than 2GB apart. -- JTMB->setCodeModel(CodeModel::Large); -+ JTMB.setCodeModel(CodeModel::Large); - #endif - -- std::unique_ptr TM = cantFail(JTMB->createTargetMachine()); -+ std::unique_ptr TM = cantFail(JTMB.createTargetMachine()); - - // Forcefully disable GlobalISel, it might be enabled on AArch64 without - // optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this -@@ -365,7 +353,7 @@ IncrementalJIT::IncrementalJIT( - std::unique_ptr EPC, Error& Err, - void *ExtraLibHandle, bool Verbose) - : SkipHostProcessLookup(false), -- TM(CreateHostTargetMachine(CI)), -+ TM(CreateTargetMachine(CI)), - SingleThreadedContext(std::make_unique()) { - ErrorAsOutParameter _(&Err); - --- -2.39.2 - diff --git a/root-add-missing-include-cstdint.patch b/root-add-missing-include-cstdint.patch deleted file mode 100644 index 0572ac3..0000000 --- a/root-add-missing-include-cstdint.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 87d302b9192538e18645f4c3efadc70e9a20a913 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 20 Jan 2023 06:34:11 +0100 -Subject: [PATCH] Add missing #include - -Fixes compilation error with gcc 13 ---- - tree/ntuple/v7/inc/ROOT/RDaos.hxx | 1 + - tree/ntuple/v7/test/CustomStruct.hxx | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/tree/ntuple/v7/inc/ROOT/RDaos.hxx b/tree/ntuple/v7/inc/ROOT/RDaos.hxx -index 69ee9ba99d..6367dfa93f 100644 ---- a/tree/ntuple/v7/inc/ROOT/RDaos.hxx -+++ b/tree/ntuple/v7/inc/ROOT/RDaos.hxx -@@ -22,6 +22,7 @@ - - #include - -+#include - #include - #include - #include -diff --git a/tree/ntuple/v7/test/CustomStruct.hxx b/tree/ntuple/v7/test/CustomStruct.hxx -index a975b5ce5d..be08eba924 100644 ---- a/tree/ntuple/v7/test/CustomStruct.hxx -+++ b/tree/ntuple/v7/test/CustomStruct.hxx -@@ -1,6 +1,7 @@ - #ifndef ROOT7_RNTuple_Test_CustomStruct - #define ROOT7_RNTuple_Test_CustomStruct - -+#include - #include - #include - #include --- -2.39.1 - diff --git a/root-cling-Disable-outline-atomics-on-AArch64.patch b/root-cling-Disable-outline-atomics-on-AArch64.patch deleted file mode 100644 index ca00e5f..0000000 --- a/root-cling-Disable-outline-atomics-on-AArch64.patch +++ /dev/null @@ -1,35 +0,0 @@ -From ddf9a8c3d113e3a3d48dbe13b6b4a6bf2338fb7a Mon Sep 17 00:00:00 2001 -From: Jonas Hahnfeld -Date: Mon, 20 Feb 2023 10:08:00 +0100 -Subject: [PATCH] [cling] Disable outline-atomics on AArch64 - -The routines __aarch64_* are defined in the static library libgcc.a -and not necessarily included in libCling or otherwise present in the -process, so the interpreter has a hard time finding them. - -Fixes #12294 ---- - interpreter/cling/lib/Interpreter/CIFactory.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp -index b135bf21aa..b5b5df2e8e 100644 ---- a/interpreter/cling/lib/Interpreter/CIFactory.cpp -+++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp -@@ -1254,6 +1254,13 @@ namespace { - #if __APPLE__ && __arm64__ - argvCompile.push_back("--target=arm64-apple-darwin20.3.0"); - #endif -+#if __aarch64__ -+ // Disable outline-atomics on AArch64; the routines __aarch64_* are defined -+ // in the static library libgcc.a and not necessarily included in libCling -+ // or otherwise present in the process, so the interpreter has a hard time -+ // finding them. -+ argvCompile.push_back("-mno-outline-atomics"); -+#endif - - // Variables for storing the memory of the C-string arguments. - // FIXME: We shouldn't use C-strings in the first place, but just use --- -2.39.2 - diff --git a/root-dont-install-roofit-files-when-roofit-is-disabled.patch b/root-dont-install-roofit-files-when-roofit-is-disabled.patch deleted file mode 100644 index 7b4881d..0000000 --- a/root-dont-install-roofit-files-when-roofit-is-disabled.patch +++ /dev/null @@ -1,75 +0,0 @@ -From df636dcc05d0284f39427ea5be1d72e7faca90d8 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 1 Mar 2023 18:30:35 +0100 -Subject: [PATCH] Don't install roofit files when roofit is disabled - ---- - CMakeLists.txt | 14 ++++++++++++-- - build/CMakeLists.txt | 3 +++ - core/base/CMakeLists.txt | 2 ++ - 3 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e1d998fde2..7992e27b64 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -591,7 +591,14 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_INSTALL_PREFIX) - else() - install(DIRECTORY README DESTINATION ${CMAKE_INSTALL_DOCDIR}) - endif() -+ set(ETC_PATT_EXCL) -+ if(NOT roofit) -+ list(APPEND ETC_PATT_EXCL PATTERN HistFactorySchema.dtd EXCLUDE) -+ list(APPEND ETC_PATT_EXCL PATTERN RooFitHS3_wsexportkeys.json EXCLUDE) -+ list(APPEND ETC_PATT_EXCL PATTERN RooFitHS3_wsfactoryexpressions.json EXCLUDE) -+ endif() - install(DIRECTORY etc/ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR} USE_SOURCE_PERMISSIONS -+ ${ETC_PATT_EXCL} - PATTERN "system.rootrc" EXCLUDE - PATTERN "system.rootauthrc" EXCLUDE - PATTERN "system.rootdaemonrc" EXCLUDE -@@ -612,8 +619,11 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_INSTALL_PREFIX) - set(MAN_PATT_EXCL PATTERN xproofd.1 EXCLUDE) - endif() - if(NOT fortran OR NOT CMAKE_Fortran_COMPILER) -- set(MAN_PATT_EXCL ${MAN_PATT_EXCL} PATTERN h2root.1 EXCLUDE) -- set(MAN_PATT_EXCL ${MAN_PATT_EXCL} PATTERN g2root.1 EXCLUDE) -+ list(APPEND MAN_PATT_EXCL PATTERN h2root.1 EXCLUDE) -+ list(APPEND MAN_PATT_EXCL PATTERN g2root.1 EXCLUDE) -+ endif() -+ if(NOT roofit) -+ list(APPEND MAN_PATT_EXCL PATTERN prepareHistFactory.1 EXCLUDE) - endif() - install(DIRECTORY man/ DESTINATION ${CMAKE_INSTALL_MANDIR} ${MAN_PATT_EXCL}) - install(DIRECTORY tutorials/ DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests) -diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt -index 9f60c813ac..e964b5e255 100644 ---- a/build/CMakeLists.txt -+++ b/build/CMakeLists.txt -@@ -29,6 +29,9 @@ ROOT_EXECUTABLE(rmkdepend - - if(NOT MSVC AND _BUILD_TYPE_UPPER MATCHES "DEBUG|RELWITHDEBINFO") - file(GLOB PRETTY_PRINTERS "gdbPrinters/*.so-gdb.py") -+ if(NOT roofit) -+ list(REMOVE_ITEM PRETTY_PRINTERS gdbPrinters/libRooFitCore.so-gdb.py) -+ endif() - set(PRETTY_PRINTER_DESTS) - foreach(PRETTY_PRINTER ${PRETTY_PRINTERS}) - get_filename_component(PRETTY_PRINTER_DEST ${PRETTY_PRINTER} NAME) -diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt -index 0c9df7c896..df701fedea 100644 ---- a/core/base/CMakeLists.txt -+++ b/core/base/CMakeLists.txt -@@ -224,7 +224,9 @@ if(NOT MSVC) - #---addRootC++CmdMan------------------------------------------------------------------------- - generateManual(rootMan ${CMAKE_CURRENT_SOURCE_DIR}/src/root-argparse.py ${CMAKE_BINARY_DIR}/man/root.1) - generateManual(haddMan ${CMAKE_SOURCE_DIR}/main/src/hadd-argparse.py ${CMAKE_BINARY_DIR}/man/hadd.1) -+if (roofit) - generateManual(hist2workspaceMan ${CMAKE_SOURCE_DIR}/roofit/histfactory/src/hist2workspace-argparse.py ${CMAKE_BINARY_DIR}/man/hist2workspace.1) -+endif() - generateManual(rootclingMan ${CMAKE_SOURCE_DIR}/core/dictgen/src/rootcling-argparse.py ${CMAKE_BINARY_DIR}/man/rootcling.1) - - #---addRootPyCmdMan--------------------------------------------------------------------------- --- -2.39.2 - diff --git a/root-gtest-compat.patch b/root-gtest-compat.patch deleted file mode 100644 index 4dd4b58..0000000 --- a/root-gtest-compat.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 922290ebdc5e3363adfa82dd45208862bb01630a Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 8 Feb 2023 09:50:00 +0100 -Subject: [PATCH] Fix build with -Dbuiltin_gtest:BOOL=OFF on EPEL 8 - ---- - roofit/roofitcore/test/testRooBinSamplingPdf.cxx | 7 ++++++- - roofit/roofitcore/test/testRooProdPdf.cxx | 5 +++++ - roofit/roofitcore/test/testRooRealIntegral.cxx | 5 +++++ - roofit/roofitcore/test/testTestStatistics.cxx | 2 +- - 4 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/roofit/roofitcore/test/testRooBinSamplingPdf.cxx b/roofit/roofitcore/test/testRooBinSamplingPdf.cxx -index 823fef712f..116000f9f8 100644 ---- a/roofit/roofitcore/test/testRooBinSamplingPdf.cxx -+++ b/roofit/roofitcore/test/testRooBinSamplingPdf.cxx -@@ -13,6 +13,11 @@ - - #include - -+// Backward compatibility for gtest version < 1.10.0 -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - - class ParamTest : public testing::TestWithParam> { -@@ -123,7 +128,7 @@ TEST(RooBinSamplingPdf, CheckConsistentNormalization) - EXPECT_FLOAT_EQ(int2->getVal(), int3->getVal()); - } - --INSTANTIATE_TEST_SUITE_P(RooBinSamplingPdf, ParamTest, testing::Combine(testing::Values("Off", "Cpu")), -+INSTANTIATE_TEST_SUITE_P(RooBinSamplingPdf, ParamTest, testing::Values("Off", "Cpu"), - [](testing::TestParamInfo const ¶mInfo) { - std::stringstream ss; - ss << "BatchMode" << std::get<0>(paramInfo.param); -diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx -index 86bcf6eb48..d794fb415a 100644 ---- a/roofit/roofitcore/test/testRooProdPdf.cxx -+++ b/roofit/roofitcore/test/testRooProdPdf.cxx -@@ -16,6 +16,11 @@ - - #include - -+// Backward compatibility for gtest version < 1.10.0 -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - #include - #include -diff --git a/roofit/roofitcore/test/testRooRealIntegral.cxx b/roofit/roofitcore/test/testRooRealIntegral.cxx -index c33c6ae138..0ab6ab973f 100644 ---- a/roofit/roofitcore/test/testRooRealIntegral.cxx -+++ b/roofit/roofitcore/test/testRooRealIntegral.cxx -@@ -20,6 +20,11 @@ - - #include - -+// Backward compatibility for gtest version < 1.10.0 -+#ifndef INSTANTIATE_TEST_SUITE_P -+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#endif -+ - #include - - namespace { -diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx -index dc20b4e1c9..1623637653 100644 ---- a/roofit/roofitcore/test/testTestStatistics.cxx -+++ b/roofit/roofitcore/test/testTestStatistics.cxx -@@ -490,7 +490,7 @@ TEST_P(OffsetBinTest, CrossCheck) - EXPECT_NEAR(nllVal1, 0.0, 1e-8) << "NLL with bin offsetting is " << nllVal1 << ", and " << nllVal0 << " without it."; - } - --INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Combine(testing::Values("Off", "Cpu")), -+INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values("Off", "Cpu"), - [](testing::TestParamInfo const ¶mInfo) { - std::stringstream ss; - ss << "BatchMode" << std::get<0>(paramInfo.param); --- -2.39.1 - diff --git a/root-make-DistRDF-optional.patch b/root-make-DistRDF-optional.patch deleted file mode 100644 index 653e14e..0000000 --- a/root-make-DistRDF-optional.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 90e7f868bc115da821c0f04dbafd80ef72e7490a Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 2 Mar 2023 08:31:29 +0100 -Subject: [PATCH 2/2] Missing experimental add-on module - ROOT.RDF.Experimental.Distributed (DistRDF) should not fail the loading of - the rest of the ROOT.RDF namespace. - ---- - bindings/pyroot/pythonizations/python/ROOT/_facade.py | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_facade.py b/bindings/pyroot/pythonizations/python/ROOT/_facade.py -index 865321e713..69046fc71c 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_facade.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_facade.py -@@ -336,8 +336,11 @@ class ROOTFacade(types.ModuleType): - ns.FromNumpy = MakeNumpyDataFrame - - if sys.version_info >= (3, 8): -- # Inject Experimental.Distributed package into namespace RDF -- ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) -+ try: -+ # Inject Experimental.Distributed package into namespace RDF if available -+ ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) -+ except ImportError: -+ pass - except: - raise Exception('Failed to pythonize the namespace RDF') - del type(self).RDF --- -2.39.2 - diff --git a/root-memory-usage.patch b/root-memory-usage.patch deleted file mode 100644 index 713d565..0000000 --- a/root-memory-usage.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 5618a02bd7ca4107f545e07a19b8a0762f31e45a Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 16 Aug 2021 19:45:00 +0200 -Subject: [PATCH] Reduce memory usage for all builds - not only debug builds - ---- - 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 8cbbe4ba08..f205b24602 100644 ---- a/core/metacling/src/CMakeLists.txt -+++ b/core/metacling/src/CMakeLists.txt -@@ -107,11 +107,8 @@ ROOT_LINKER_LIBRARY(Cling - $ - LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS}) - --string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE) --if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO) -- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. -- add_dependencies(Cling rootcling_stage1) --endif() -+# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. -+add_dependencies(Cling rootcling_stage1) - - if(MSVC) - set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) --- -2.35.1 - diff --git a/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch b/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch deleted file mode 100644 index c833930..0000000 --- a/root-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 4ab2a1695a3f6350b454203c044db5d6f0c75dd2 Mon Sep 17 00:00:00 2001 -From: Javier Lopez-Gomez -Date: Mon, 13 Feb 2023 15:05:39 +0100 -Subject: [PATCH] [ntuple] RPageSinkBuf: add missing call to ReleasePage() - ---- - tree/ntuple/v7/src/RPageSinkBuf.cxx | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/tree/ntuple/v7/src/RPageSinkBuf.cxx b/tree/ntuple/v7/src/RPageSinkBuf.cxx -index b22ef705ef..88babb456f 100644 ---- a/tree/ntuple/v7/src/RPageSinkBuf.cxx -+++ b/tree/ntuple/v7/src/RPageSinkBuf.cxx -@@ -106,8 +106,11 @@ ROOT::Experimental::Detail::RPageSinkBuf::CommitClusterImpl(ROOT::Experimental:: - } - fInnerSink->CommitSealedPageV(toCommit); - -- for (auto &bufColumn : fBufferedColumns) -- bufColumn.DrainBufferedPages(); -+ for (auto &bufColumn : fBufferedColumns) { -+ auto drained = bufColumn.DrainBufferedPages(); -+ for (auto &bufPage : std::get>(drained)) -+ ReleasePage(bufPage.fPage); -+ } - return fInnerSink->CommitCluster(nEntries); - } - --- -2.39.2 - diff --git a/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch b/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch deleted file mode 100644 index 6a719c5..0000000 --- a/root-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 54a05a995bef827413d69b63559494a78ed56946 Mon Sep 17 00:00:00 2001 -From: moneta -Date: Tue, 14 Feb 2023 11:00:44 +0100 -Subject: [PATCH] [tmva] Speed up TMVA CNN and RNN tutorials - -Run tutorials with a amximum of 4 threads to avoid MT problems on some machines. -Disable also OpenMP when running in MT in ROOT - -Reduce also by a factor of 5 the number of input events ---- - tutorials/tmva/TMVA_CNN_Classification.C | 25 +++++++++++++++------- - tutorials/tmva/TMVA_CNN_Classification.py | 12 +++++------ - tutorials/tmva/TMVA_RNN_Classification.C | 11 +++++----- - tutorials/tmva/TMVA_RNN_Classification.py | 26 ++++++++++------------- - 4 files changed, 39 insertions(+), 35 deletions(-) - -diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C -index 0966017ae2..cc6829a24d 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.C -+++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -107,7 +107,16 @@ void MakeImagesTree(int n, int nh, int nw) - f.Close(); - } - --void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) -+/// @brief Run the TMVA CNN Classification example -+/// @param nevts : number of signal/background events. Use by default a low value (1000) -+/// but increase to at least 5000 to get a good result -+/// @param opt : vector of bool with method used (default all on if available). The order is: -+/// - TMVA CNN -+/// - Keras CNN -+/// - TMVA DNN -+/// - TMVA BDT -+/// - PyTorch CNN -+void TMVA_CNN_Classification(int nevts = 1000, std::vector opt = {1, 1, 1, 1, 1}) - { - - bool useTMVACNN = (opt.size() > 0) ? opt[0] : false; -@@ -125,17 +134,17 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) - - bool writeOutputFile = true; - -- int num_threads = 0; // use default threads -+ int num_threads = 4; // use by default 4 threads if value is not set before -+ // switch off MT in OpenBLAS to avoid conflict with tbb -+ gSystem->Setenv("OMP_NUM_THREADS", "1"); - - TMVA::Tools::Instance(); - - // do enable MT running - if (num_threads >= 0) { - ROOT::EnableImplicitMT(num_threads); -- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); - } -- else -- gSystem->Setenv("OMP_NUM_THREADS", "1"); -+ - - std::cout << "Running with nthreads = " << ROOT::GetThreadPoolSize() << std::endl; - -@@ -161,7 +170,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) - The factory is the major TMVA object you have to interact with. Here is the list of parameters you need to pass - - - The first argument is the base of the name of all the output -- weightfiles in the directory weight/ that will be created with the -+ weight files in the directory weight/ that will be created with the - method parameters - - - The second argument is the output file for the training results -@@ -208,7 +217,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) - - // if file does not exists create it - if (!fileExist) { -- MakeImagesTree(5000, 16, 16); -+ MakeImagesTree(nevts, 16, 16); - } - - // TString inputFileName = "tmva_class_example.root"; -@@ -289,7 +298,7 @@ void TMVA_CNN_Classification(std::vector opt = {1, 1, 1, 1, 1}) - // Boosted Decision Trees - if (useTMVABDT) { - factory.BookMethod(loader, TMVA::Types::kBDT, "BDT", -- "!V:NTrees=400:MinNodeSize=2.5%:MaxDepth=2:BoostType=AdaBoost:AdaBoostBeta=0.5:" -+ "!V:NTrees=200:MinNodeSize=2.5%:MaxDepth=2:BoostType=AdaBoost:AdaBoostBeta=0.5:" - "UseBaggedBoost:BaggedSampleFraction=0.5:SeparationType=GiniIndex:nCuts=20"); - } - /** -diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py -index 0760bacfd9..85fde20763 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.py -+++ b/tutorials/tmva/TMVA_CNN_Classification.py -@@ -25,6 +25,9 @@ - - import ROOT - -+#switch off MT in OpenMP (BLAS) -+ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") -+ - TMVA = ROOT.TMVA - TFile = ROOT.TFile - -@@ -105,6 +108,7 @@ def MakeImagesTree(n, nh, nw): - hasGPU = ROOT.gSystem.GetFromPipe("root-config --has-tmva-gpu") == "yes" - hasCPU = ROOT.gSystem.GetFromPipe("root-config --has-tmva-cpu") == "yes" - -+nevt = 1000 # use a larger value to get better results - opt = [1, 1, 1, 1, 1] - useTMVACNN = opt[0] if len(opt) > 0 else False - useKerasCNN = opt[1] if len(opt) > 1 else False -@@ -141,17 +145,13 @@ if not useTMVACNN: - - writeOutputFile = True - --num_threads = 0 # use default threads -+num_threads = 4 # use default threads - max_epochs = 10 # maximum number of epochs used for training - - - # do enable MT running - if num_threads >= 0: - ROOT.EnableImplicitMT(num_threads) -- if (num_threads > 0) : -- ROOT.gSystem.Setenv("OMP_NUM_THREADS", str(num_threads)) --else: -- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") - - print("Running with nthreads = ", ROOT.GetThreadPoolSize()) - -@@ -218,7 +218,7 @@ inputFileName = "images_data_16x16.root" - - # if the input file does not exist create it - if ROOT.gSystem.AccessPathName(inputFileName): -- MakeImagesTree(5000, 16, 16) -+ MakeImagesTree(nevt, 16, 16) - - inputFile = TFile.Open(inputFileName) - if inputFile is None: -diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C -index 2711673ec9..8701ba6c19 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.C -+++ b/tutorials/tmva/TMVA_RNN_Classification.C -@@ -136,13 +136,14 @@ void MakeTimeData(int n, int ntime, int ndim ) - } - } - /// macro for performing a classification using a Recurrent Neural Network -+/// @param nevts = 2000 Number of events used. (increase for better classification results) - /// @param use_type - /// use_type = 0 use Simple RNN network - /// use_type = 1 use LSTM network - /// use_type = 2 use GRU - /// use_type = 3 build 3 different networks with RNN, LSTM and GRU - --void TMVA_RNN_Classification(int use_type = 1) -+void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1) - { - - const int ninput = 30; -@@ -150,7 +151,7 @@ void TMVA_RNN_Classification(int use_type = 1) - const int batchSize = 100; - const int maxepochs = 20; - -- int nTotEvts = 10000; // total events to be generated for signal or background -+ int nTotEvts = nevts; // total events to be generated for signal or background - - bool useKeras = true; - -@@ -190,14 +191,12 @@ void TMVA_RNN_Classification(int use_type = 1) - useKeras = false; - #endif - -- int num_threads = 0; // use by default all threads -+ int num_threads = 4; // use by default all threads -+ gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS - // do enable MT running - if (num_threads >= 0) { - ROOT::EnableImplicitMT(num_threads); -- if (num_threads > 0) gSystem->Setenv("OMP_NUM_THREADS", TString::Format("%d",num_threads)); - } -- else -- gSystem->Setenv("OMP_NUM_THREADS", "1"); - - TMVA::Config::Instance(); - -diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py -index 88280a5849..625a120b3d 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.py -+++ b/tutorials/tmva/TMVA_RNN_Classification.py -@@ -22,6 +22,16 @@ - - import ROOT - -+num_threads = 4 # use max 4 threads -+# do enable MT running -+if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": -+ ROOT.EnableImplicitMT(num_threads) -+ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS -+ print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) -+else: -+ print("Running in serail mode since ROOT does not support MT") -+ -+ - TMVA = ROOT.TMVA - TFile = ROOT.TFile - -@@ -141,7 +151,7 @@ ntime = 10 - batchSize = 100 - maxepochs = 10 - --nTotEvts = 10000 # total events to be generated for signal or background -+nTotEvts = 2000 # total events to be generated for signal or background - - useKeras = True - -@@ -184,22 +194,8 @@ if ROOT.gSystem.GetFromPipe("root-config --has-tmva-pymva") == "yes": - else: - useKeras = False - --num_threads = 0 # use by default all threads --# do enable MT running --if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": -- if num_threads >= 0: -- ROOT.EnableImplicitMT(num_threads) -- if num_threads > 0: -- ROOT.gSystem.Setenv("OMP_NUM_THREADS", str(num_threads)) -- else: -- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") - - -- print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) -- --else: -- print("Running in serail mode since ROOT does not support MT") -- - inputFileName = "time_data_t10_d30.root" - - fileDoesNotExist = ROOT.gSystem.AccessPathName(inputFileName) --- -2.39.2 - diff --git a/root-use-consistent-minimum-python-version-for-DistRDF.patch b/root-use-consistent-minimum-python-version-for-DistRDF.patch deleted file mode 100644 index 23e9e5c..0000000 --- a/root-use-consistent-minimum-python-version-for-DistRDF.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 8624d1c7eb4f532d6843118251d9564650f89924 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 2 Mar 2023 08:25:36 +0100 -Subject: [PATCH 1/2] Use consistent minimum Python version for DistRDF The - minimum version was changed in bindings/CMakeLists.txt but not in the check - in the code. - ---- - bindings/pyroot/pythonizations/python/ROOT/_facade.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_facade.py b/bindings/pyroot/pythonizations/python/ROOT/_facade.py -index 7370a234d1..865321e713 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_facade.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_facade.py -@@ -335,7 +335,7 @@ class ROOTFacade(types.ModuleType): - ns.MakeNumpyDataFrame = DeprecatedMakeNumpy - ns.FromNumpy = MakeNumpyDataFrame - -- if sys.version_info >= (3, 7): -+ if sys.version_info >= (3, 8): - # Inject Experimental.Distributed package into namespace RDF - ns.Experimental.Distributed = _create_rdf_experimental_distributed_module(ns.Experimental) - except: --- -2.39.2 - diff --git a/root-use-consistent-wording-in-tmva-test-comments.patch b/root-use-consistent-wording-in-tmva-test-comments.patch new file mode 100644 index 0000000..1d3e52a --- /dev/null +++ b/root-use-consistent-wording-in-tmva-test-comments.patch @@ -0,0 +1,86 @@ +From e6928c405fe1647a0ee6ea32543b18ebc3828227 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 23 Feb 2023 22:10:46 +0100 +Subject: [PATCH] Use consistent wording of the comments in the different TMVA + classification tests to avoid confusion. + +--- + tutorials/tmva/TMVA_CNN_Classification.C | 2 +- + tutorials/tmva/TMVA_CNN_Classification.py | 4 ++-- + tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++-- + tutorials/tmva/TMVA_RNN_Classification.py | 5 +++-- + 4 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C +index cc6829a24d..db5af784d4 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.C ++++ b/tutorials/tmva/TMVA_CNN_Classification.C +@@ -134,7 +134,7 @@ void TMVA_CNN_Classification(int nevts = 1000, std::vector opt = {1, 1, 1, + + bool writeOutputFile = true; + +- int num_threads = 4; // use by default 4 threads if value is not set before ++ int num_threads = 4; // use max 4 threads + // switch off MT in OpenBLAS to avoid conflict with tbb + gSystem->Setenv("OMP_NUM_THREADS", "1"); + +diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py +index 85fde20763..5d3c6e7220 100644 +--- a/tutorials/tmva/TMVA_CNN_Classification.py ++++ b/tutorials/tmva/TMVA_CNN_Classification.py +@@ -25,7 +25,7 @@ + + import ROOT + +-#switch off MT in OpenMP (BLAS) ++# switch off MT in OpenBLAS to avoid conflict with tbb + ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") + + TMVA = ROOT.TMVA +@@ -145,7 +145,7 @@ if not useTMVACNN: + + writeOutputFile = True + +-num_threads = 4 # use default threads ++num_threads = 4 # use max 4 threads + max_epochs = 10 # maximum number of epochs used for training + + +diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C +index 8701ba6c19..d4bb7a4e4a 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.C ++++ b/tutorials/tmva/TMVA_RNN_Classification.C +@@ -191,8 +191,10 @@ void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1) + useKeras = false; + #endif + +- int num_threads = 4; // use by default all threads +- gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS ++ int num_threads = 4; // use max 4 threads ++ // switch off MT in OpenBLAS to avoid conflict with tbb ++ gSystem->Setenv("OMP_NUM_THREADS", "1"); ++ + // do enable MT running + if (num_threads >= 0) { + ROOT::EnableImplicitMT(num_threads); +diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py +index 625a120b3d..65aa83c070 100644 +--- a/tutorials/tmva/TMVA_RNN_Classification.py ++++ b/tutorials/tmva/TMVA_RNN_Classification.py +@@ -26,10 +26,11 @@ num_threads = 4 # use max 4 threads + # do enable MT running + if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": + ROOT.EnableImplicitMT(num_threads) +- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS ++ # switch off MT in OpenBLAS to avoid conflict with tbb ++ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") + print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) + else: +- print("Running in serail mode since ROOT does not support MT") ++ print("Running in serial mode since ROOT does not support MT") + + + TMVA = ROOT.TMVA +-- +2.39.2 + diff --git a/root-veto-tests-using-clad-when-clad-is-disabled.patch b/root-veto-tests-using-clad-when-clad-is-disabled.patch deleted file mode 100644 index d201fdb..0000000 --- a/root-veto-tests-using-clad-when-clad-is-disabled.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 6583668f3e5f1b4e1d219a5a92a19da31d8d5494 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 1 Mar 2023 18:32:45 +0100 -Subject: [PATCH] Veto tests using clad when clad is disabled - ---- - math/minuit2/test/CMakeLists.txt | 8 ++++---- - tutorials/CMakeLists.txt | 9 ++++++--- - 2 files changed, 10 insertions(+), 7 deletions(-) - -diff --git a/math/minuit2/test/CMakeLists.txt b/math/minuit2/test/CMakeLists.txt -index 7ecf30350c..8951ac0a84 100644 ---- a/math/minuit2/test/CMakeLists.txt -+++ b/math/minuit2/test/CMakeLists.txt -@@ -11,10 +11,10 @@ if(NOT DEFINED ROOT_SOURCE_DIR) - include(${ROOT_USE_FILE}) - endif() - --set(TestSource -- testMinimizer.cxx -- testADMinim.cxx --) -+set(TestSource testMinimizer.cxx) -+if (clad) -+ list(APPEND TestSource testADMinim.cxx) -+endif() - - set(TestSourceMnTutorial - MnTutorial/Quad1FMain.cxx -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index bf7c1d4089..deb5f67d23 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -65,16 +65,18 @@ endfunction() - - #---Tutorials disabled depending on the build components------------- - if(NOT ROOT_minuit2_FOUND) -- set(minuit2_veto fit/fit2dHist.C fit/fit2dHist.C -- fit/fitCircle.C fit/minuit2FitBench2D.C -+ set(minuit2_veto fit/fit2dHist.C fit/fitCircle.C - fit/minuit2FitBench2D.C fit/minuit2FitBench.C -- fit/minuit2FitBench.C fit/minuit2GausFit.C - fit/minuit2GausFit.C fit/NumericalMinimization.C - fit/combinedFit.C fit/TestBinomial.C - fit/fitNormSum.C fit/vectorizedFit.C - tutorials/roostats/rs_bernsteinCorrection.C) - endif() - -+if(NOT clad) -+ set(clad_veto fit/minuit2GausFit.C) -+endif() -+ - if (NOT dataframe) - # RDataFrame - list(APPEND dataframe_veto dataframe/*.C dataframe/*.py) -@@ -457,6 +459,7 @@ set(all_veto hsimple.C - ${spectrum_veto} - ${dataframe_veto} - ${macm1_veto} -+ ${clad_veto} - ) - - file(GLOB_RECURSE tutorials RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.C) --- -2.39.2 - diff --git a/root.spec b/root.spec index c551e00..eb40ef0 100644 --- a/root.spec +++ b/root.spec @@ -44,7 +44,7 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.28.00 +Version: 6.28.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -71,70 +71,41 @@ Source7: JupyROOT-on-EPEL Source8: %{name}-get-src.sh # Use system fonts Patch0: %{name}-fontconfig.patch -# Reduce memory usage of build -# Do not link rootcling_stage1 and libCling in parallel -Patch1: %{name}-memory-usage.patch # Reduce memory usage during linking on ARM and x86 by generating # smaller debuginfo for the llvm libraries # Fedora builders run out of memory with the default setting -Patch2: %{name}-memory-arm-x86.patch +Patch1: %{name}-memory-arm-x86.patch # Don't install minicern static library -Patch3: %{name}-dont-install-minicern.patch +Patch2: %{name}-dont-install-minicern.patch # Do not export Python modules in CMake config -Patch4: %{name}-no-export-python-modules.patch +Patch3: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled -Patch5: %{name}-32bit-tests.patch +Patch4: %{name}-32bit-tests.patch # Use local static script and style files for JsMVA -Patch6: %{name}-jsmva-static.patch +Patch5: %{name}-jsmva-static.patch # Fix test failure on ppc64le and aarch64 with gcc 12 # https://github.com/root-project/root/pull/9601 -Patch7: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +Patch6: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch # Byte swap values read from the protobuf raw data stream on # big endian architectures # https://github.com/root-project/root/pull/10308 -Patch8: %{name}-big-endian-byte-swap.patch -# Add missing #include -# https://github.com/root-project/root/pull/12065 -Patch9: %{name}-add-missing-include-cstdint.patch -# https://github.com/root-project/root/pull/12218 -Patch10: %{name}-Simplify-creation-of-TargetMachine.patch -# Fix build with -Dbuiltin_gtest:BOOL=OFF on EPEL 8 -# https://github.com/root-project/root/pull/12250 -Patch11: %{name}-gtest-compat.patch -# Limit the number of threads in TMVA CNN/DNN test to save memory -# https://github.com/root-project/root/pull/12310 -Patch12: %{name}-tmva-Speed-up-TMVA-CNN-and-RNN-tutorials.patch -# https://github.com/root-project/root/issues/12293 -# https://github.com/root-project/root/pull/12335 -Patch13: %{name}-Set-DataLayout-from-our-TargetMachine.patch -# https://github.com/root-project/root/issues/12294 -# https://github.com/root-project/root/pull/12353 -Patch14: %{name}-cling-Disable-outline-atomics-on-AArch64.patch -# https://github.com/root-project/root/pull/12385 -Patch15: %{name}-PyROOT-only-build-RooFit-and-TMVA-pythonizations-if-enabled.patch +Patch7: %{name}-big-endian-byte-swap.patch +# https://github.com/root-project/root/pull/12375 +Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch # https://github.com/root-project/root/pull/12389 -Patch16: %{name}-testRooAbsL-test-compares-two-doubles-and-fails.patch +Patch9: %{name}-testRooAbsL-test-compares-two-doubles-and-fails.patch # https://github.com/root-project/root/pull/12390 -Patch17: %{name}-stressvector-test-fails-on-ix86.patch -# https://github.com/root-project/root/pull/12402 -Patch18: %{name}-dont-install-roofit-files-when-roofit-is-disabled.patch -# https://github.com/root-project/root/pull/12403 -Patch19: %{name}-veto-tests-using-clad-when-clad-is-disabled.patch -# https://github.com/root-project/root/pull/12407 -Patch20: %{name}-use-consistent-minimum-python-version-for-DistRDF.patch -Patch21: %{name}-make-DistRDF-optional.patch +Patch10: %{name}-stressvector-test-fails-on-ix86.patch # https://github.com/root-project/root/pull/12423 -Patch22: %{name}-dont-install-roofit-files-fix.patch +Patch11: %{name}-dont-install-roofit-files-fix.patch # https://github.com/root-project/root/issues/12430 # https://github.com/root-project/root/pull/12447 -Patch23: %{name}-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch +Patch12: %{name}-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch # https://github.com/root-project/root/issues/12427 # https://github.com/root-project/root/pull/12468 -Patch24: %{name}-fixes-for-32bit-builds.patch +Patch13: %{name}-fixes-for-32bit-builds.patch # https://github.com/root-project/root/pull/12476 -Patch25: %{name}-do-not-remove-Wp-before-D-and-U.patch -# Backport (fixes a failing test on ix86) -Patch26: %{name}-ntuple-RPageSinkBuf-add-missing-call-to-ReleasePage.patch +Patch14: %{name}-do-not-remove-Wp-before-D-and-U.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -2001,18 +1972,6 @@ This package contains extra tools for RooFit projects. %patch12 -p1 %patch13 -p1 %patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2237,6 +2196,9 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %install %cmake_install +# Let rpm redo the python byte compilation +find %{buildroot}%{python3_sitearch} -depth -type d -name __pycache__ -exec rm -r {} ';' + # Do emacs byte compilation emacs -batch -no-site-file -f batch-byte-compile \ %{buildroot}%{_emacs_sitelispdir}/%{name}/*.el @@ -2268,13 +2230,6 @@ mkdir -p %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} -# Let rpm redo the python byte compilation -find %{buildroot}%{python3_sitearch} -depth -type d -name __pycache__ -exec rm -r {} ';' - -# Do python byte compilation (for non-standard paths) -%py_byte_compile %{__python3} %{buildroot}%{_datadir}/%{name}/cli -%py_byte_compile %{__python3} %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} - # Fix python extension suffix mv %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \ %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} @@ -2459,6 +2414,10 @@ cat includelist-core-{[^mw],m[^au]}* > includelist-core cat includelist-graf2d-x11ttf >> includelist-graf2d-x11 cat includelist-graf3d-rglew >> includelist-graf3d-gl +# Do python byte compilation (for non-standard paths) +%py_byte_compile %{__python3} %{buildroot}%{_datadir}/%{name}/cli +%py_byte_compile %{__python3} %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} + %check pushd %{_vpath_builddir} pushd test @@ -2678,6 +2637,7 @@ tutorial-unuran-unuranFoamTest" # - tutorial-fit-fit2dHist # - tutorial-fit-fitCircle # - tutorial-fit-line3Dfit +# - tutorial-math-exampleFunction-py # - tutorial-multicore-mt103_fillNtupleFromMultipleThreads # - tutorial-multicore-mt201_parallelHistoFill # - tutorial-multicore-mt304_fillHistos @@ -2691,6 +2651,7 @@ tutorial-fit-exampleFit3D|\ tutorial-fit-fit2dHist|\ tutorial-fit-fitCircle|\ tutorial-fit-line3Dfit|\ +tutorial-math-exampleFunction-py|\ tutorial-multicore-mt103_fillNtupleFromMultipleThreads|\ tutorial-multicore-mt201_parallelHistoFill|\ tutorial-multicore-mt304_fillHistos|\ @@ -3780,6 +3741,11 @@ fi %endif %changelog +* Wed Mar 22 2023 Mattias Ellert - 6.28.02-1 +- Update to 6.28.02 +- Dropped patches: 13 +- New patches: 1 + * Sat Mar 18 2023 Mattias Ellert - 6.28.00-1 - Update to 6.28.00 - ROOT now uses llvm/clang version 13 (updated from version 9) diff --git a/sources b/sources index e37c144..229877a 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.28.00.tar.xz) = 57e5e111e41d3942b63a9e038198e6cc91457d7724cc9dcf9673679b12b13acb6980e7786828a8527a292c018bd13af51854e83f99301f6bc5e4455cdc23c30e +SHA512 (root-6.28.02.tar.xz) = acc1d1e31cb368f499dee0244936b78042cb21e5072cebcc4cc7d05f505359b7ecab3383a13311d8af7a67db72f31fe482dcaa54724c4b02194ffb98894e669f SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 3365b50fc9c2495512b75f18ab4a9992729895de Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 23 Mar 2023 03:47:57 +0100 Subject: [PATCH 08/89] Disable uring in EPEL 9 (liburing is available, but uring not supported by kernel) --- root.spec | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/root.spec b/root.spec index eb40ef0..429018f 100644 --- a/root.spec +++ b/root.spec @@ -46,7 +46,7 @@ Name: root Version: 6.28.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -175,9 +175,9 @@ BuildRequires: cmake-data >= 3.18.3-1 BuildRequires: openblas-devel %endif BuildRequires: json-devel -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -# Disable uring in EPEL 8 (liburing is available, but uring not -# supported by the kernel) +%if %{?fedora}%{!?fedora:0} +# Disable uring in EPEL 8 and 9 (liburing is available, +# but uring not supported by the kernel) BuildRequires: liburing-devel %endif %if %{tmvasofieparser} @@ -2168,7 +2168,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dtmva-sofie:BOOL=OFF \ %endif -Dunuran:BOOL=ON \ -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +%if %{?fedora}%{!?fedora:0} -During:BOOL=ON \ %else -During:BOOL=OFF \ @@ -3741,6 +3741,10 @@ fi %endif %changelog +* Thu Mar 23 2023 Mattias Ellert - 6.28.02-2 +- Disable uring in EPEL 9 (liburing is available, but uring not + supported by kernel) + * Wed Mar 22 2023 Mattias Ellert - 6.28.02-1 - Update to 6.28.02 - Dropped patches: 13 From 0de23e866bd3351068c49c5d6e5876a5ee714404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20=C3=9Acar?= Date: Fri, 21 Apr 2023 12:42:03 +0200 Subject: [PATCH 09/89] R-maint-sig mass rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 429018f..644ab6e 100644 --- a/root.spec +++ b/root.spec @@ -46,7 +46,7 @@ Name: root Version: 6.28.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3741,6 +3741,9 @@ fi %endif %changelog +* Fri Apr 21 2023 Iñaki Úcar - 6.28.02-3 +- R-maint-sig mass rebuild + * Thu Mar 23 2023 Mattias Ellert - 6.28.02-2 - Disable uring in EPEL 9 (liburing is available, but uring not supported by kernel) From c39df0d6cee0595fbc1e7708f2bcd0d728cd9c3e Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 9 May 2023 21:38:39 +0200 Subject: [PATCH 10/89] Update to 6.28.04 Drop patch root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch (previously backported) Enable Apache Arrow support (64 bit architectures only) --- ...ProdPdf.TestGetPartIntList-unit-test.patch | 168 ------------------ root.spec | 42 ++--- sources | 2 +- 3 files changed, 18 insertions(+), 194 deletions(-) delete mode 100644 root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch diff --git a/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch b/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch deleted file mode 100644 index d295c53..0000000 --- a/root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch +++ /dev/null @@ -1,168 +0,0 @@ -From c20004230608a5679ee6c0a7648af5f190c415c9 Mon Sep 17 00:00:00 2001 -From: Jonas Rembser -Date: Tue, 7 Mar 2023 11:53:01 +0100 -Subject: [PATCH] [RF] Rewrite `RooProdPdf.TestGetPartIntList` unit test - -In the ROOT 6.26 development cycle, the RooProdPdf was partially -rewritten in moden C++ with less manual memory allocation to improve -performance (PR #7907). - -In that PR, a unit test that verifies the RooProdPdf can correctly deal -with factorizing PDFs was implemented. However, that test used an -arbitrary PDF where the correct factorization was checked in a rather -crude way: check by hashing the content of the RooProdPdf cache element -for a given normalization set that said PR doesn't change any behavior -(the reference hash was hardcoded in the unit test). - -This commit suggests a better alternative for the unit test, checking -for a multidimensional product pdf of factorizing uniform pdfs that the -pdf values for differenc normalization sets is as expected. This should -cover the same functionality and is less fragile and implementation -dependend than hashing the cache elements. - -This closes GitHub issue #12430, as the rewritten test is not affected -anymore by the problem reported in that issue. ---- - roofit/roofitcore/inc/RooProdPdf.h | 2 - - roofit/roofitcore/src/RooProdPdf.cxx | 4 -- - roofit/roofitcore/test/testRooProdPdf.cxx | 88 +++++++---------------- - 3 files changed, 26 insertions(+), 68 deletions(-) - -diff --git a/roofit/roofitcore/inc/RooProdPdf.h b/roofit/roofitcore/inc/RooProdPdf.h -index 3d779a4901..0a76c839aa 100644 ---- a/roofit/roofitcore/inc/RooProdPdf.h -+++ b/roofit/roofitcore/inc/RooProdPdf.h -@@ -96,8 +96,6 @@ public: - - RooArgSet* findPdfNSet(RooAbsPdf const& pdf) const ; - -- void writeCacheToStream(std::ostream& os, RooArgSet const* nset) const; -- - std::unique_ptr compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext & ctx) const override; - - private: -diff --git a/roofit/roofitcore/src/RooProdPdf.cxx b/roofit/roofitcore/src/RooProdPdf.cxx -index 8c8c7e01c6..6af7279603 100644 ---- a/roofit/roofitcore/src/RooProdPdf.cxx -+++ b/roofit/roofitcore/src/RooProdPdf.cxx -@@ -2324,10 +2324,6 @@ void RooProdPdf::CacheElem::writeToStream(std::ostream& os) const { - } - } - --void RooProdPdf::writeCacheToStream(std::ostream& os, RooArgSet const* nset) const { -- getCacheElem(nset)->writeToStream(os); --} -- - std::unique_ptr RooProdPdf::fillNormSetForServer(RooArgSet const &normSet, RooAbsArg const &server) const - { - if (normSet.empty()) -diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx -index d794fb415a..ff334211d2 100644 ---- a/roofit/roofitcore/test/testRooProdPdf.cxx -+++ b/roofit/roofitcore/test/testRooProdPdf.cxx -@@ -74,76 +74,40 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, - return ss.str(); - }); - --std::vector> allPossibleSubset(RooAbsCollection const &arr) -+TEST(RooProdPdf, TestGetPartIntList) - { -- std::vector> out; -- std::size_t n = arr.size(); -- -- std::size_t count = std::pow(2, n); -- for (std::size_t i = 0; i < count; i++) { -- out.emplace_back(); -- auto &back = out.back(); -- for (std::size_t j = 0; j < n; j++) { -- if ((i & (1 << j)) != 0) { -- back.push_back(arr[j]); -- } -- } -- } -- return out; --} -+ RooHelpers::LocalChangeMsgLevel chmsglvl1{RooFit::ERROR, 0u, RooFit::InputArguments, true}; -+ RooHelpers::LocalChangeMsgLevel chmsglvl2{RooFit::WARNING, 0u, RooFit::NumIntegration, true}; - --// Hash the integral configuration for all possible normalization sets. --unsigned int hashRooProduct(RooProdPdf const &prod) --{ -- RooArgSet params; -- prod.getParameters(nullptr, params); -- auto subsets = allPossibleSubset(params); -+ // This test checks if RooProdPdf::getPartIntList factorizes the integrals -+ // as expected, for the example of a three dimensional RooProdPdf. - -- std::stringstream ss; -+ RooWorkspace ws; - -- for (auto const &subset : subsets) { -- // this can't be on the stack, otherwise we will always get the same -- // address and therefore get wrong cache hits! -- auto nset = std::make_unique(subset.begin(), subset.end()); -- prod.writeCacheToStream(ss, nset.get()); -- } -+ double a = 10.; -+ double b = 4.; -+ double c = 2.5; - -- std::string s = ss.str(); -- return TString::Hash(s.c_str(), s.size()); --} -+ auto &x = static_cast(*ws.factory("x[0, 0, " + std::to_string(a) + "]")); -+ auto &y = static_cast(*ws.factory("y[0, 0, " + std::to_string(b) + "]")); -+ auto &z = static_cast(*ws.factory("z[0, 0, " + std::to_string(c) + "]")); - --TEST(RooProdPdf, TestGetPartIntList) --{ -- // This test checks if RooProdPdf::getPartIntList factorizes the integrals -- // as expected. -- // Instead of trying to construct tests for all possible cases by hand, -- // this test creates a product where the factors have different patters of -- // overlapping parameters. To make sure all possible cases are covered, we -- // are using all possible subsets of the parameters one after the other to -- // create the reference test result. -- -- RooRealVar x{"x", "x", 1., 0, 10}; -- RooRealVar y{"y", "y", 1., 0, 10}; -- RooRealVar z{"z", "z", 1., 0, 10}; -- -- RooRealVar m1{"m1", "m1", 1., 0, 10}; -- RooRealVar m2{"m2", "m2", 1., 0, 10}; -- RooRealVar m3{"m3", "m3", 1., 0, 10}; -- -- RooGenericPdf gauss1{"gauss1", "gauss1", "x+m1", {x, m1}}; -- RooGenericPdf gauss2{"gauss2", "gauss2", "x+m2", {x, m2}}; -- RooGenericPdf gauss3{"gauss3", "gauss3", "y+m3", {y, m3}}; -- RooGenericPdf gauss4{"gauss4", "gauss4", "z+m1", {z, m1}}; -- RooGenericPdf gauss5{"gauss5", "gauss5", "x+m1", {x, m1}}; -+ // Factorize the product in one 1D and one 2D pdf to get a more complicated -+ // and complete test case. -+ ws.factory("Uniform::pdf1({x})"); -+ ws.factory("Uniform::pdf2({y, z})"); - - // Product of all the pdfs. -- RooProdPdf prod{"prod", "prod", RooArgList{gauss1, gauss2, gauss3, gauss4, gauss5}}; -- -- // We hash the string serializations of caches for all possible -- // normalization sets and compare it to the expected hash. -- // This value must be updated if the convention for integral names in -- // RooProdPdf changes. -- EXPECT_EQ(hashRooProduct(prod), 2448666198); -+ auto &prod = static_cast(*ws.factory("PROD::prod(pdf1, pdf2)")); -+ -+ EXPECT_DOUBLE_EQ(prod.getVal({}), 1.0); -+ EXPECT_DOUBLE_EQ(prod.getVal({x}), 1. / a); -+ EXPECT_DOUBLE_EQ(prod.getVal({y}), 1. / b); -+ EXPECT_DOUBLE_EQ(prod.getVal({z}), 1. / c); -+ EXPECT_DOUBLE_EQ(prod.getVal({x, y}), 1. / a / b); -+ EXPECT_DOUBLE_EQ(prod.getVal({x, z}), 1. / a / c); -+ EXPECT_DOUBLE_EQ(prod.getVal({y, z}), 1. / b / c); -+ EXPECT_DOUBLE_EQ(prod.getVal({x, y, z}), 1. / a / b / c); - } - - TEST(RooProdPdf, TestDepsAreCond) --- -2.39.2 - diff --git a/root.spec b/root.spec index 644ab6e..713b9fe 100644 --- a/root.spec +++ b/root.spec @@ -44,9 +44,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.28.02 +Version: 6.28.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -98,14 +98,11 @@ Patch9: %{name}-testRooAbsL-test-compares-two-doubles-and-fails.patch Patch10: %{name}-stressvector-test-fails-on-ix86.patch # https://github.com/root-project/root/pull/12423 Patch11: %{name}-dont-install-roofit-files-fix.patch -# https://github.com/root-project/root/issues/12430 -# https://github.com/root-project/root/pull/12447 -Patch12: %{name}-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch # https://github.com/root-project/root/issues/12427 # https://github.com/root-project/root/pull/12468 -Patch13: %{name}-fixes-for-32bit-builds.patch +Patch12: %{name}-fixes-for-32bit-builds.patch # https://github.com/root-project/root/pull/12476 -Patch14: %{name}-do-not-remove-Wp-before-D-and-U.patch +Patch13: %{name}-do-not-remove-Wp-before-D-and-U.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -183,6 +180,9 @@ BuildRequires: liburing-devel %if %{tmvasofieparser} BuildRequires: protobuf-devel >= 3.0 %endif +%ifnarch %{ix86} %{arm} +BuildRequires: libarrow-devel +%endif %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif @@ -1971,7 +1971,6 @@ This package contains extra tools for RooFit projects. %patch11 -p1 %patch12 -p1 %patch13 -p1 -%patch14 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2079,7 +2078,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_zlib:BOOL=OFF \ -Dbuiltin_zstd:BOOL=OFF \ -Dalien:BOOL=OFF \ +%ifnarch %{ix86} %{arm} + -Darrow:BOOL=ON \ +%else -Darrow:BOOL=OFF \ +%endif -Dasimage:BOOL=ON \ -Dccache:BOOL=OFF \ -Ddistcc:BOOL=OFF \ @@ -2576,23 +2579,6 @@ pyunittests-pyroot-roofit-roodataset-numpy" %endif %endif -%ifarch %{arm} -# 32 bit arm specific failures -# - gtest-tree-tree-test-testBulkApi -# - gtest-tree-tree-test-testBulkApiSillyStruct -# - gtest-tree-dataframe-test-dataframe-snapshot -# - gtest-tree-dataframe-test-dataframe-vary -# - pyunittests-dataframe-merge-results -# - pyunittests-distrdf-unit-test-headnode -excluded="${excluded}|\ -gtest-tree-tree-test-testBulkApi\$\$|\ -gtest-tree-tree-test-testBulkApiSillyStruct|\ -gtest-tree-dataframe-test-dataframe-snapshot|\ -gtest-tree-dataframe-test-dataframe-vary|\ -pyunittests-dataframe-merge-results|\ -pyunittests-distrdf-unit-test-headnode" -%endif - %ifarch %{power64} aarch64 # - test-stresshistofit # - test-stressroofit @@ -3741,6 +3727,12 @@ fi %endif %changelog +* Mon May 08 2023 Mattias Ellert - 6.28.04-1 +- Update to 6.28.04 +- Drop patch root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch + (previously backported) +- Enable Apache Arrow support (64 bit architectures only) + * Fri Apr 21 2023 Iñaki Úcar - 6.28.02-3 - R-maint-sig mass rebuild diff --git a/sources b/sources index 229877a..196cdf9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.28.02.tar.xz) = acc1d1e31cb368f499dee0244936b78042cb21e5072cebcc4cc7d05f505359b7ecab3383a13311d8af7a67db72f31fe482dcaa54724c4b02194ffb98894e669f +SHA512 (root-6.28.04.tar.xz) = 480f08455025c6275b9ea6309336b4d73455b6c30e896aee01d2a583558514ad0fc9a268d130c7f8638984a8a9062596472c0ba6be0bb3bee6c788e594b78fd0 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 08cf4b36a244c9b8f6b1b27fb95bc9f75fef4a37 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Mon, 26 Jun 2023 08:06:21 -0600 Subject: [PATCH 11/89] Rebuilt for Python 3.12 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 713b9fe..7cf88ca 100644 --- a/root.spec +++ b/root.spec @@ -46,7 +46,7 @@ Name: root Version: 6.28.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3727,6 +3727,9 @@ fi %endif %changelog +* Mon Jun 26 2023 Orion Poplawski - 6.28.04-2 +- Rebuilt for Python 3.12 + * Mon May 08 2023 Mattias Ellert - 6.28.04-1 - Update to 6.28.04 - Drop patch root-RF-Rewrite-RooProdPdf.TestGetPartIntList-unit-test.patch From c3f7b6f7f15fa3fd7d64de691e49dbdd1beb76ba Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 9 Jul 2023 07:02:33 +0200 Subject: [PATCH 12/89] Fix build on Fedora 39+ where glibc has strlcpy and strlcat Enable build of root-gui-qt6webdisplay sub-package if Qt6 is available --- root-strlcpy.patch | 12 +++ ...-test-compares-two-doubles-and-fails.patch | 24 +++--- root.spec | 78 +++++++++++++++---- 3 files changed, 90 insertions(+), 24 deletions(-) create mode 100644 root-strlcpy.patch diff --git a/root-strlcpy.patch b/root-strlcpy.patch new file mode 100644 index 0000000..e15e84b --- /dev/null +++ b/root-strlcpy.patch @@ -0,0 +1,12 @@ +diff --git a/core/foundation/inc/ROOT/RConfig.hxx b/core/foundation/inc/ROOT/RConfig.hxx +index 5f53eb9f21..0b36743c4f 100644 +--- a/core/foundation/inc/ROOT/RConfig.hxx ++++ b/core/foundation/inc/ROOT/RConfig.hxx +@@ -146,6 +146,7 @@ + # define R__USESTHROW + # define R__SEEK64 + # endif ++# define HAS_STRLCPY + #endif + + #if defined(linux) && defined(__i386__) diff --git a/root-testRooAbsL-test-compares-two-doubles-and-fails.patch b/root-testRooAbsL-test-compares-two-doubles-and-fails.patch index 24a4148..32ab358 100644 --- a/root-testRooAbsL-test-compares-two-doubles-and-fails.patch +++ b/root-testRooAbsL-test-compares-two-doubles-and-fails.patch @@ -1,8 +1,10 @@ -From d6a11ace0d3d25c96dd20cef1436642b5caa102e Mon Sep 17 00:00:00 2001 +From 3e0e63a02ebabc4cd7ab126ea166ecdfd6dab3a7 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 28 Feb 2023 11:02:03 +0100 -Subject: [PATCH] The testRooAbsL test compares two doubles and fails due to - rounding errors. The failure happens on ppc64le and aarch64. +Subject: [PATCH] [RF] Fix testRooAbsL failures from rounding errors with + doubles + +The failure happens on ppc64le and aarch64. This PR changes EXPECT_EQ to EXPECT_DOUBLE_EQ in the affected test. @@ -21,23 +23,27 @@ Expected equality of these values: Which is: -1263.7960506619268 [ FAILED ] SimBinnedConstrainedTest.SubEventSections (199 ms) --- - roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx -index 600f4da7be..05dcd6a241 100644 +index 600f4da7be..7b586121f1 100644 --- a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx +++ b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx -@@ -293,7 +293,7 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) +@@ -293,7 +293,11 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) {static_cast(ix) / N_events_total, static_cast(ix + 1) / N_events_total}, 0, likelihood->getNComponents()); } - EXPECT_EQ(whole.Sum(), N_events_total_parts.Sum()); ++ // We cannot EXPECT_EQ in this test, because we compare actually different ++ // calculations. The multiple additions and FMA operations involved in the ++ // calculation of the multiple parts introduces different rounding errors ++ // on the CPU level than the single calculation over all events at once. + EXPECT_DOUBLE_EQ(whole.Sum(), N_events_total_parts.Sum()); // now let's do it again over a number of sections 3 times the number of events ROOT::Math::KahanSum thrice_N_events_total_parts; -@@ -303,5 +303,5 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) +@@ -303,5 +307,5 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) {static_cast(ix) / (3 * N_events_total), static_cast(ix + 1) / (3 * N_events_total)}, 0, likelihood->getNComponents()); } @@ -45,5 +51,5 @@ index 600f4da7be..05dcd6a241 100644 + EXPECT_DOUBLE_EQ(whole.Sum(), thrice_N_events_total_parts.Sum()); } -- -2.39.2 +2.40.1 diff --git a/root.spec b/root.spec index 7cf88ca..a04f11e 100644 --- a/root.spec +++ b/root.spec @@ -40,13 +40,22 @@ %global distrdf 0 %endif +# qt6-srpm-macros not in buildroot for Fedora 37/38 or EPEL 9 +# https://bugzilla.redhat.com/show_bug.cgi?id=2220859 +# https://bugzilla.redhat.com/show_bug.cgi?id=2220860 +# Definition of qt6_qtwebengine_arches incorrect in qt6-srpm-macros +# https://bugzilla.redhat.com/show_bug.cgi?id=2215703 +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +%global qt6_qtwebengine_arches aarch64 x86_64 +%endif + # Do not generate autoprovides for Python modules %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root Version: 6.28.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -103,6 +112,9 @@ Patch11: %{name}-dont-install-roofit-files-fix.patch Patch12: %{name}-fixes-for-32bit-builds.patch # https://github.com/root-project/root/pull/12476 Patch13: %{name}-do-not-remove-Wp-before-D-and-U.patch +# strlcpy and strlcat available in glibc in Fedora 39+ +# https://bugzilla.redhat.com/show_bug.cgi?id=2220860 +Patch14: %{name}-strlcpy.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -145,6 +157,10 @@ BuildRequires: python%{python3_pkgversion}-numpy BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtwebengine-devel %endif +%ifarch %{qt6_qtwebengine_arches} +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtwebengine-devel +%endif BuildRequires: openssl-devel BuildRequires: libtool-ltdl-devel BuildRequires: desktop-file-utils @@ -1434,7 +1450,9 @@ This package contains DaraFrame helper classes for RooFit Summary: RooFit HS3 License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-roofit%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-jsoninterface%{?_isa} = %{version}-%{release} @@ -1775,6 +1793,17 @@ Requires: %{name}-net-http%{?_isa} = %{version}-%{release} This package contains a Qt5 web display extension for ROOT. %endif +%ifarch %{qt6_qtwebengine_arches} +%package gui-qt6webdisplay +Summary: Qt6 Web display +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} + +%description gui-qt6webdisplay +This package contains a Qt6 web display extension for ROOT. +%endif + %package gui-webgui6 Summary: Web based GUI for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1957,20 +1986,23 @@ This package contains extra tools for RooFit projects. %prep %setup -q -a 1 -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 +%patch -P 0 -p1 +%patch -P 1 -p1 +%patch -P 2 -p1 +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 +%patch -P 6 -p1 +%patch -P 7 -p1 +%patch -P 8 -p1 +%patch -P 9 -p1 +%patch -P 10 -p1 +%patch -P 11 -p1 +%patch -P 12 -p1 +%patch -P 13 -p1 +%if %{?fedora}%{!?fedora:0} >= 39 +%patch -P 14 -p1 +%endif # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2136,7 +2168,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %else -Dqt5web:BOOL=OFF \ %endif +%ifarch %{qt6_qtwebengine_arches} + -Dqt6web:BOOL=ON \ +%else -Dqt6web:BOOL=OFF \ +%endif -Dr:BOOL=ON \ %if %{roofit} -Droofit:BOOL=ON \ @@ -2909,6 +2945,9 @@ fi %ifarch %{qt5_qtwebengine_arches} %ldconfig_scriptlets gui-qt5webdisplay %endif +%ifarch %{qt6_qtwebengine_arches} +%ldconfig_scriptlets gui-qt6webdisplay +%endif %ldconfig_scriptlets gui-webgui6 %if %{root7} %ldconfig_scriptlets geom-webviewer @@ -3649,6 +3688,11 @@ fi %{_libdir}/%{name}/libROOTQt5WebDisplay.* %endif +%ifarch %{qt6_qtwebengine_arches} +%files gui-qt6webdisplay +%{_libdir}/%{name}/libROOTQt6WebDisplay.* +%endif + %files gui-webgui6 -f includelist-gui-webgui6 %{_libdir}/%{name}/libWebGui6.* %{_libdir}/%{name}/libWebGui6_rdict.pcm @@ -3727,6 +3771,10 @@ fi %endif %changelog +* Sun Jul 09 2023 Mattias Ellert - 6.28.04-3 +- Fix build on Fedora 39+ where glibc has strlcpy and strlcat +- Enable build of root-gui-qt6webdisplay sub-package if Qt6 is available + * Mon Jun 26 2023 Orion Poplawski - 6.28.04-2 - Rebuilt for Python 3.12 From 879bb250d39b82b0263d4b54128eaa4384d787b6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jul 2023 17:00:48 +0000 Subject: [PATCH 13/89] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_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 a04f11e..f140e8b 100644 --- a/root.spec +++ b/root.spec @@ -55,7 +55,7 @@ Name: root Version: 6.28.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3771,6 +3771,9 @@ fi %endif %changelog +* Fri Jul 21 2023 Fedora Release Engineering - 6.28.04-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Sun Jul 09 2023 Mattias Ellert - 6.28.04-3 - Fix build on Fedora 39+ where glibc has strlcpy and strlcat - Enable build of root-gui-qt6webdisplay sub-package if Qt6 is available From d58a4c22ba3ba68d5ced67cc9411c1159856f159 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 6 Aug 2023 06:49:55 +0200 Subject: [PATCH 14/89] Rebuilt for libarrow.so.1300 --- root-strlcpy.patch | 25 ++++++++++++++++++++++--- root.spec | 7 ++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/root-strlcpy.patch b/root-strlcpy.patch index e15e84b..823a302 100644 --- a/root-strlcpy.patch +++ b/root-strlcpy.patch @@ -1,12 +1,31 @@ +From 8fb0e35446ed67c9d56639b4708c8f05459b7f84 Mon Sep 17 00:00:00 2001 +From: Enrico Guiraud +Date: Thu, 3 Aug 2023 11:15:47 -0600 +Subject: [PATCH] [core] Do not provide our own strlcpy if glibc >= 2.38 + +Since version 2.38, glibc provides strlcpy and strlcat. +No need to provide our own. + +In fact ROOT's definitions clash with glibc's: the latter are +marked `noexcept`. +--- + core/foundation/inc/ROOT/RConfig.hxx | 3 +++ + 1 file changed, 3 insertions(+) + diff --git a/core/foundation/inc/ROOT/RConfig.hxx b/core/foundation/inc/ROOT/RConfig.hxx -index 5f53eb9f21..0b36743c4f 100644 +index 5f53eb9f21..385c05da3e 100644 --- a/core/foundation/inc/ROOT/RConfig.hxx +++ b/core/foundation/inc/ROOT/RConfig.hxx -@@ -146,6 +146,7 @@ +@@ -146,6 +146,9 @@ # define R__USESTHROW # define R__SEEK64 # endif -+# define HAS_STRLCPY ++# if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 38) ++# define HAS_STRLCPY ++# endif #endif #if defined(linux) && defined(__i386__) +-- +2.41.0 + diff --git a/root.spec b/root.spec index f140e8b..651b9e0 100644 --- a/root.spec +++ b/root.spec @@ -55,7 +55,7 @@ Name: root Version: 6.28.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -2000,9 +2000,7 @@ This package contains extra tools for RooFit projects. %patch -P 11 -p1 %patch -P 12 -p1 %patch -P 13 -p1 -%if %{?fedora}%{!?fedora:0} >= 39 %patch -P 14 -p1 -%endif # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3771,6 +3769,9 @@ fi %endif %changelog +* Sun Aug 06 2023 Mattias Ellert - 6.28.04-5 +- Rebuilt for libarrow.so.1300 + * Fri Jul 21 2023 Fedora Release Engineering - 6.28.04-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 79c12df5ba2db9028fcbc674d5ed32cb1e653eb8 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 6 Sep 2023 23:23:03 +0200 Subject: [PATCH 15/89] Update to 6.28.06 Drop patches root-testRooAbsL-test-compares-two-doubles-and-fails.patch and root-strlcpy.patch (fixed upstream) --- root-stressvector-test-fails-on-ix86.patch | 8 +-- root-strlcpy.patch | 31 ---------- ...-test-compares-two-doubles-and-fails.patch | 55 ------------------ root.spec | 56 +++++-------------- sources | 2 +- 5 files changed, 20 insertions(+), 132 deletions(-) delete mode 100644 root-strlcpy.patch delete mode 100644 root-testRooAbsL-test-compares-two-doubles-and-fails.patch diff --git a/root-stressvector-test-fails-on-ix86.patch b/root-stressvector-test-fails-on-ix86.patch index ca3f212..fa519f2 100644 --- a/root-stressvector-test-fails-on-ix86.patch +++ b/root-stressvector-test-fails-on-ix86.patch @@ -1,4 +1,4 @@ -From df2902f6c970aa903200a272fd6a79788da3df4f Mon Sep 17 00:00:00 2001 +From aae37d7eceeb25e4a09e8504275083e6830832d6 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 28 Feb 2023 11:33:28 +0100 Subject: [PATCH] The stressVector test fails on ix86 due to too strict check: @@ -19,19 +19,19 @@ root [2] (-12823.3585955796 - (-12823.35859557827)) / -12823.3585955796 / std::n 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/stressVector.cxx b/test/stressVector.cxx -index 83b86fb2b4..18dc97d421 100644 +index b0ba21e845..18dc97d421 100644 --- a/test/stressVector.cxx +++ b/test/stressVector.cxx @@ -540,8 +540,7 @@ int main(int argc,const char *argv[]) { s1=a.testDeltaR (v1, t, t1, "DeltaR TLorentzVector " ); s2=a.testDeltaR (v2, t, t2, "DeltaR XYZTVector " ); s3=a.testDeltaR (v3, t, t3, "DeltaR PtEtaPhiEVector " ); -- a.check("DeltaR",s1,s2,s3,15); +- a.check("DeltaR",s1,s2,s3,20); - + a.check("DeltaR", s1, s2, s3, 50); int n1, n2, n3; n1 = a.testAnalysis (v1, t, t1, "Analysis1 TLorentzVector " ); -- -2.39.2 +2.40.1 diff --git a/root-strlcpy.patch b/root-strlcpy.patch deleted file mode 100644 index 823a302..0000000 --- a/root-strlcpy.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 8fb0e35446ed67c9d56639b4708c8f05459b7f84 Mon Sep 17 00:00:00 2001 -From: Enrico Guiraud -Date: Thu, 3 Aug 2023 11:15:47 -0600 -Subject: [PATCH] [core] Do not provide our own strlcpy if glibc >= 2.38 - -Since version 2.38, glibc provides strlcpy and strlcat. -No need to provide our own. - -In fact ROOT's definitions clash with glibc's: the latter are -marked `noexcept`. ---- - core/foundation/inc/ROOT/RConfig.hxx | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/core/foundation/inc/ROOT/RConfig.hxx b/core/foundation/inc/ROOT/RConfig.hxx -index 5f53eb9f21..385c05da3e 100644 ---- a/core/foundation/inc/ROOT/RConfig.hxx -+++ b/core/foundation/inc/ROOT/RConfig.hxx -@@ -146,6 +146,9 @@ - # define R__USESTHROW - # define R__SEEK64 - # endif -+# if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 38) -+# define HAS_STRLCPY -+# endif - #endif - - #if defined(linux) && defined(__i386__) --- -2.41.0 - diff --git a/root-testRooAbsL-test-compares-two-doubles-and-fails.patch b/root-testRooAbsL-test-compares-two-doubles-and-fails.patch deleted file mode 100644 index 32ab358..0000000 --- a/root-testRooAbsL-test-compares-two-doubles-and-fails.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 3e0e63a02ebabc4cd7ab126ea166ecdfd6dab3a7 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 28 Feb 2023 11:02:03 +0100 -Subject: [PATCH] [RF] Fix testRooAbsL failures from rounding errors with - doubles - -The failure happens on ppc64le and aarch64. - -This PR changes EXPECT_EQ to EXPECT_DOUBLE_EQ in the affected test. - -[ RUN ] SimBinnedConstrainedTest.SubEventSections -/builddir/build/BUILD/root-6.28.00/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx:293: Failure -Expected equality of these values: - whole.Sum() - Which is: -1263.796050661927 - N_events_total_parts.Sum() - Which is: -1263.7960506619268 -/builddir/build/BUILD/root-6.28.00/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx:303: Failure -Expected equality of these values: - whole.Sum() - Which is: -1263.796050661927 - thrice_N_events_total_parts.Sum() - Which is: -1263.7960506619268 -[ FAILED ] SimBinnedConstrainedTest.SubEventSections (199 ms) ---- - roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx -index 600f4da7be..7b586121f1 100644 ---- a/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx -+++ b/roofit/roofitcore/test/TestStatistics/testRooAbsL.cxx -@@ -293,7 +293,11 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) - {static_cast(ix) / N_events_total, static_cast(ix + 1) / N_events_total}, 0, - likelihood->getNComponents()); - } -- EXPECT_EQ(whole.Sum(), N_events_total_parts.Sum()); -+ // We cannot EXPECT_EQ in this test, because we compare actually different -+ // calculations. The multiple additions and FMA operations involved in the -+ // calculation of the multiple parts introduces different rounding errors -+ // on the CPU level than the single calculation over all events at once. -+ EXPECT_DOUBLE_EQ(whole.Sum(), N_events_total_parts.Sum()); - - // now let's do it again over a number of sections 3 times the number of events - ROOT::Math::KahanSum thrice_N_events_total_parts; -@@ -303,5 +307,5 @@ TEST_F(SimBinnedConstrainedTest, SubEventSections) - {static_cast(ix) / (3 * N_events_total), static_cast(ix + 1) / (3 * N_events_total)}, 0, - likelihood->getNComponents()); - } -- EXPECT_EQ(whole.Sum(), thrice_N_events_total_parts.Sum()); -+ EXPECT_DOUBLE_EQ(whole.Sum(), thrice_N_events_total_parts.Sum()); - } --- -2.40.1 - diff --git a/root.spec b/root.spec index 651b9e0..aa32b3c 100644 --- a/root.spec +++ b/root.spec @@ -53,9 +53,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.28.04 +Version: 6.28.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -101,20 +101,15 @@ Patch6: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch Patch7: %{name}-big-endian-byte-swap.patch # https://github.com/root-project/root/pull/12375 Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch -# https://github.com/root-project/root/pull/12389 -Patch9: %{name}-testRooAbsL-test-compares-two-doubles-and-fails.patch # https://github.com/root-project/root/pull/12390 -Patch10: %{name}-stressvector-test-fails-on-ix86.patch +Patch9: %{name}-stressvector-test-fails-on-ix86.patch # https://github.com/root-project/root/pull/12423 -Patch11: %{name}-dont-install-roofit-files-fix.patch +Patch10: %{name}-dont-install-roofit-files-fix.patch # https://github.com/root-project/root/issues/12427 # https://github.com/root-project/root/pull/12468 -Patch12: %{name}-fixes-for-32bit-builds.patch +Patch11: %{name}-fixes-for-32bit-builds.patch # https://github.com/root-project/root/pull/12476 -Patch13: %{name}-do-not-remove-Wp-before-D-and-U.patch -# strlcpy and strlcat available in glibc in Fedora 39+ -# https://bugzilla.redhat.com/show_bug.cgi?id=2220860 -Patch14: %{name}-strlcpy.patch +Patch12: %{name}-do-not-remove-Wp-before-D-and-U.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1999,8 +1994,6 @@ This package contains extra tools for RooFit projects. %patch -P 10 -p1 %patch -P 11 -p1 %patch -P 12 -p1 -%patch -P 13 -p1 -%patch -P 14 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2532,6 +2525,7 @@ popd # http://root.cern.ch/files/davix.test # # - gtest-net-netxng-test-RRawFileNetXNG +# reads input file over network # root://eospublic.cern.ch/eos/root-eos/xrootd.test # # - gtest-tmva-tmva-test-rreader @@ -2596,35 +2590,16 @@ tutorial-dataframe-df026_AsNumpyArrays-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif -%if %{?fedora}%{!?fedora:0} >= 38 -# - pyunittests-dataframe-histograms -# - tutorial-legacy-rootenv -# Failures with Fedora 38 (GCC 13 related?) -excluded="${excluded}|\ -pyunittests-dataframe-histograms|\ -tutorial-legacy-rootenv" - +%if %{?fedora}%{!?fedora:0} == 37 || %{?fedora}%{!?fedora:0} == 38 %ifarch %{ix86} # - pyunittests-pyroot-roofit-roodataset-numpy -# Failures with Fedora 38 i686 (after numpy 1.24 update) +# Failures with Fedora 37/38 i686 (after numpy 1.24 update) # https://github.com/root-project/root/issues/12162 excluded="${excluded}|\ pyunittests-pyroot-roofit-roodataset-numpy" %endif %endif -%ifarch %{power64} aarch64 -# - test-stresshistofit -# - test-stressroofit -# - test-stressroofit-batchmode-cpu -# - test-stressroofit-interpreted -excluded="${excluded}|\ -test-stresshistofit\$\$|\ -test-stressroofit\$\$|\ -test-stressroofit-batchmode-cpu|\ -test-stressroofit-interpreted" -%endif - %ifarch %{power64} # PPC64LE specific failures # - test-stresshistofit-interpreted @@ -2715,9 +2690,6 @@ tutorial-roofit-rf612_recoverFromInvalidParameters" # - test-stresshistofit-interpreted # - test-stresshistogram # - test-stresshistogram-interpreted -# - test-stressroofit -# - test-stressroofit-batchmode-cpu -# - test-stressroofit-interpreted excluded="${excluded}|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ gtest-tree-ntuple-v7-test-ntuple-endian|\ @@ -2738,10 +2710,7 @@ tutorial-tree-drawsparse|\ test-stresshistofit\$\$|\ test-stresshistofit-interpreted|\ test-stresshistogram\$\$|\ -test-stresshistogram-interpreted|\ -test-stressroofit\$\$|\ -test-stressroofit-batchmode-cpu|\ -test-stressroofit-interpreted" +test-stresshistogram-interpreted" %if %{?rhel}%{!?rhel:0} == 8 # Issues with file sizes on EPEL 8 s390x @@ -3769,6 +3738,11 @@ fi %endif %changelog +* Tue Sep 05 2023 Mattias Ellert - 6.28.06-1 +- Update to 6.28.06 +- Drop patches root-testRooAbsL-test-compares-two-doubles-and-fails.patch and + root-strlcpy.patch (fixed upstream) + * Sun Aug 06 2023 Mattias Ellert - 6.28.04-5 - Rebuilt for libarrow.so.1300 diff --git a/sources b/sources index 196cdf9..e30a52f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.28.04.tar.xz) = 480f08455025c6275b9ea6309336b4d73455b6c30e896aee01d2a583558514ad0fc9a268d130c7f8638984a8a9062596472c0ba6be0bb3bee6c788e594b78fd0 +SHA512 (root-6.28.06.tar.xz) = 1a7252950517b480e036cf6e12d7eb675068e1d23df1f91822494d5f0ca769545a40a37b3478cc3cf3517a20e2b48a46a7b8ff2cd4601a7c23574de989195901 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 85ea6724079b37ce93d6b05734d1d0bbd29f2590 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 14 Oct 2023 23:56:11 +0200 Subject: [PATCH 16/89] Update to 6.28.08 New subpackage root-tmva-utils (split off from root-tmva) Port to pcre2 --- root-boolean-numpy-array.patch | 45 ++++ root-pcre2-6.28.patch | 52 ++++ root-pcre2.patch | 436 +++++++++++++++++++++++++++++++++ root-tmva-rbdt.patch | 40 +++ root.spec | 100 ++++++-- sources | 2 +- 6 files changed, 647 insertions(+), 28 deletions(-) create mode 100644 root-boolean-numpy-array.patch create mode 100644 root-pcre2-6.28.patch create mode 100644 root-pcre2.patch create mode 100644 root-tmva-rbdt.patch diff --git a/root-boolean-numpy-array.patch b/root-boolean-numpy-array.patch new file mode 100644 index 0000000..e5d6482 --- /dev/null +++ b/root-boolean-numpy-array.patch @@ -0,0 +1,45 @@ +From 2b3dd4f1bfecea5b1b936d5507f8b0c664322a19 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Wed, 6 Sep 2023 02:16:33 +0200 +Subject: [PATCH] [RF][PyROOT] Avoid boolean operators on numpy arrays in unit + test + +The `n_in_range` reference value in the unit test +`roodataset_numpy.TestRooDataSetNumpy.test_ignoring_out_of_range` +apparently doesn't get computed right on some 32 platforms. + +I can't reproduce the problem, but I'm sure it will be fixed by avoiding +the use of the operators `&` and `|` with numpy arrays. Just doing a +manual loop in Python should be more platform independent. + +Closes #12162. +--- + .../pythonizations/test/roofit/roodataset_numpy.py | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py b/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py +index 79259af321..5587677c45 100644 +--- a/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py ++++ b/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py +@@ -135,9 +135,15 @@ class TestRooDataSetNumpy(unittest.TestCase): + cat.defineType("minus", -1) + cat.defineType("plus", +1) + +- in_x_range = (data["x"] <= x.getMax()) & (data["x"] >= x.getMin()) +- in_cat_range = (data["cat"] == -1) | (data["cat"] == +1) +- n_in_range = np.sum(in_x_range & in_cat_range) ++ # Use manual loop because we had some problems with numpys boolean ++ # comparisions in the past (see GitHub issue #12162). ++ n_in_range = 0 ++ for i in range(n_events): ++ in_x_range = data["x"][i] <= x.getMax() and data["x"][i] >= x.getMin() ++ in_cat_range = (data["cat"][i] == -1) or (data["cat"][i] == +1) ++ is_in_range = in_x_range and in_cat_range ++ if is_in_range: ++ n_in_range = n_in_range + 1 + + dataset_numpy = ROOT.RooDataSet.from_numpy(data, {x, cat}, name="dataSetNumpy") + +-- +2.41.0 + diff --git a/root-pcre2-6.28.patch b/root-pcre2-6.28.patch new file mode 100644 index 0000000..db907b5 --- /dev/null +++ b/root-pcre2-6.28.patch @@ -0,0 +1,52 @@ +diff -ur root-6.28.06.orig/core/base/CMakeLists.txt root-6.28.06/core/base/CMakeLists.txt +--- root-6.28.06.orig/core/base/CMakeLists.txt 2023-08-28 13:26:43.000000000 +0200 ++++ root-6.28.06/core/base/CMakeLists.txt 2023-10-02 01:53:35.956143717 +0200 +@@ -212,9 +212,15 @@ + + ROOT_OBJECT_LIBRARY(Base ${BASE_SOURCES}) + ++if (PCRE2_FOUND) ++ set(PCRE_INCDIR ${PCRE2_INCLUDE_DIR}) ++else() ++ set(PCRE_INCDIR ${PCRE_INCLUDE_DIR}) ++endif() ++ + target_include_directories(Base PRIVATE + ${BASE_V7_INC} +- ${PCRE_INCLUDE_DIR} ++ ${PCRE_INCDIR} + res + ${CMAKE_SOURCE_DIR}/core/foundation/res + ${CMAKE_SOURCE_DIR}/core/clib/inc +@@ -237,6 +243,11 @@ + ${CMAKE_BINARY_DIR}/ginclude/TApplicationCommandLineOptionsHelp.h + ) + ++if(PCRE2_FOUND) ++ set_source_files_properties(src/TPRegexp.cxx ++ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2) ++endif() ++ + ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS}) + + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/man) +diff -ur root-6.28.06.orig/core/CMakeLists.txt root-6.28.06/core/CMakeLists.txt +--- root-6.28.06.orig/core/CMakeLists.txt 2023-08-28 13:26:43.000000000 +0200 ++++ root-6.28.06/core/CMakeLists.txt 2023-10-02 01:47:00.134174041 +0200 +@@ -261,9 +261,15 @@ + + target_include_directories(G__Core PRIVATE ${CMAKE_SOURCE_DIR}/core/clingutils/inc) + ++if (PCRE2_FOUND) ++ set (PCRE_TGT PCRE2::PCRE2) ++else() ++ set (PCRE_TGT PCRE::PCRE) ++endif() ++ + target_link_libraries(Core + PRIVATE +- PCRE::PCRE ++ ${PCRE_TGT} + ${LIBLZMA_LIBRARIES} + xxHash::xxHash + LZ4::LZ4 diff --git a/root-pcre2.patch b/root-pcre2.patch new file mode 100644 index 0000000..8d1adee --- /dev/null +++ b/root-pcre2.patch @@ -0,0 +1,436 @@ +From f89fc640f9ca1b2cccf0dc496b0b7ea434b53fad Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 2 Oct 2023 09:25:13 +0200 +Subject: [PATCH] Support PCRE2 + +--- + .../pythonizations/test/import_load_libs.py | 1 + + cmake/modules/FindPCRE2.cmake | 106 ++++++++++++++++++ + cmake/modules/SearchInstalledSoftware.cmake | 17 +-- + core/base/CMakeLists.txt | 9 +- + core/base/src/TPRegexp.cxx | 99 +++++++++++++++- + tutorials/legacy/regexp/regexp.C | 6 +- + 6 files changed, 223 insertions(+), 15 deletions(-) + create mode 100644 cmake/modules/FindPCRE2.cmake + +diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py +index 087db7da5c..179c76f6fd 100644 +--- a/bindings/pyroot/pythonizations/test/import_load_libs.py ++++ b/bindings/pyroot/pythonizations/test/import_load_libs.py +@@ -23,6 +23,7 @@ class ImportLoadLibs(unittest.TestCase): + 'libc', + 'libdl', + 'libpcre', ++ 'libpcre2-8', + # libCling and dependencies + 'libCling.*', + 'librt', +diff --git a/cmake/modules/FindPCRE2.cmake b/cmake/modules/FindPCRE2.cmake +new file mode 100644 +index 0000000000..2417453e8b +--- /dev/null ++++ b/cmake/modules/FindPCRE2.cmake +@@ -0,0 +1,106 @@ ++# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. ++# All rights reserved. ++# ++# For the licensing terms see $ROOTSYS/LICENSE. ++# For the list of contributors see $ROOTSYS/README/CREDITS. ++ ++#.rst: ++# FindPCRE2 ++# -------- ++# ++# Find PCRE2 library ++# ++# Imported Targets ++# ^^^^^^^^^^^^^^^^ ++# ++# This module defines :prop_tgt:`IMPORTED` target: ++# ++# ``PCRE2::PCRE2`` ++# The pcre2 library, if found. ++# ++# Result Variables ++# ^^^^^^^^^^^^^^^^ ++# This module will set the following variables in your project: ++# ++# ``PCRE2_FOUND`` ++# True if PCRE2 has been found. ++# ``PCRE2_INCLUDE_DIRS`` ++# Where to find pcre2.h ++# ``PCRE2_LIBRARIES`` ++# The libraries to link against to use PCRE2. ++# ``PCRE2_VERSION`` ++# The version of the PCRE2 found (e.g. 10.42) ++# ++# Obsolete variables ++# ^^^^^^^^^^^^^^^^^^ ++# ++# The following variables may also be set, for backwards compatibility: ++# ++# ``PCRE2_PCRE2_LIBRARY`` ++# where to find the PCRE2_PCRE2 library. ++# ``PCRE2_INCLUDE_DIR`` ++# where to find the pcre2.h header (same as PCRE2_INCLUDE_DIRS) ++# ++ ++foreach(var PCRE2_FOUND PCRE2_INCLUDE_DIR PCRE2_PCRE2_LIBRARY PCRE2_LIBRARIES) ++ unset(${var} CACHE) ++endforeach() ++ ++find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h PATH_SUFFIXES include) ++mark_as_advanced(PCRE2_INCLUDE_DIR) ++ ++if (PCRE2_INCLUDE_DIR AND EXISTS "${PCRE2_INCLUDE_DIR}/pcre2.h") ++ file(STRINGS "${PCRE2_INCLUDE_DIR}/pcre2.h" PCRE2_H REGEX "^#define PCRE2_(MAJOR|MINOR).*$") ++ string(REGEX REPLACE "^.*PCRE2_MAJOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MAJOR "${PCRE2_H}") ++ string(REGEX REPLACE "^.*PCRE2_MINOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MINOR "${PCRE2_H}") ++ set(PCRE2_VERSION "${PCRE2_VERSION_MAJOR}.${PCRE2_VERSION_MINOR}") ++endif() ++ ++if(NOT PCRE2_PCRE2_LIBRARY) ++ find_library(PCRE2_PCRE2_LIBRARY_RELEASE NAMES pcre2-8) ++ find_library(PCRE2_PCRE2_LIBRARY_DEBUG NAMES pcre2-8${CMAKE_DEBUG_POSTFIX} pcre2-8d) ++ include(SelectLibraryConfigurations) ++ select_library_configurations(PCRE2_PCRE2) ++endif() ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(PCRE2 ++ REQUIRED_VARS ++ PCRE2_INCLUDE_DIR ++ PCRE2_PCRE2_LIBRARY ++ VERSION_VAR ++ PCRE2_VERSION ++) ++ ++if(PCRE2_FOUND) ++ set(PCRE2_INCLUDE_DIRS "${PCRE2_INCLUDE_DIR}") ++ ++ if (NOT PCRE2_LIBRARIES) ++ set(PCRE2_LIBRARIES "${PCRE2_PCRE2_LIBRARY}") ++ endif() ++ ++ if(NOT TARGET PCRE2::PCRE2) ++ add_library(PCRE2::PCRE2 UNKNOWN IMPORTED) ++ set_target_properties(PCRE2::PCRE2 PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIRS}") ++ ++ if(PCRE2_PCRE2_LIBRARY_DEBUG) ++ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY ++ IMPORTED_CONFIGURATIONS DEBUG) ++ set_target_properties(PCRE2::PCRE2 PROPERTIES ++ IMPORTED_LOCATION_DEBUG "${PCRE2_PCRE2_LIBRARY_DEBUG}") ++ endif() ++ ++ if(PCRE2_PCRE2_LIBRARY_RELEASE) ++ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY ++ IMPORTED_CONFIGURATIONS RELEASE) ++ set_target_properties(PCRE2::PCRE2 PROPERTIES ++ IMPORTED_LOCATION_RELEASE "${PCRE2_PCRE2_LIBRARY_RELEASE}") ++ endif() ++ ++ if(NOT PCRE2_PCRE2_LIBRARY_DEBUG AND NOT PCRE2_PCRE2_LIBRARY_RELEASE) ++ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY ++ IMPORTED_LOCATION "${PCRE2_PCRE2_LIBRARY}") ++ endif() ++ endif() ++endif() +diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake +index 464155fd50..252aa56737 100644 +--- a/cmake/modules/SearchInstalledSoftware.cmake ++++ b/cmake/modules/SearchInstalledSoftware.cmake +@@ -204,13 +204,16 @@ if(NOT builtin_pcre) + foreach(suffix FOUND INCLUDE_DIR PCRE_LIBRARY) + unset(PCRE_${suffix} CACHE) + endforeach() +- if(fail-on-missing) +- find_package(PCRE REQUIRED) +- else() +- find_package(PCRE) +- if(NOT PCRE_FOUND) +- message(STATUS "PCRE not found. Switching on builtin_pcre option") +- set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE) ++ find_package(PCRE2) ++ if(NOT PCRE2_FOUND) ++ if(fail-on-missing) ++ find_package(PCRE REQUIRED) ++ else() ++ find_package(PCRE) ++ if(NOT PCRE_FOUND) ++ message(STATUS "PCRE not found. Switching on builtin_pcre option") ++ set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE) ++ endif() + endif() + endif() + endif() +diff --git a/core/base/src/TPRegexp.cxx b/core/base/src/TPRegexp.cxx +index 949b8cc8e9..d70f3e5b8b 100644 +--- a/core/base/src/TPRegexp.cxx ++++ b/core/base/src/TPRegexp.cxx +@@ -25,19 +25,36 @@ found at : http://perldoc.perl.org/perlre.html + #include "TObjString.h" + #include "TError.h" + ++#ifdef USE_PCRE2 ++#ifdef R__WIN32 ++#define PCRE2_STATIC ++#endif ++#define PCRE2_CODE_UNIT_WIDTH 8 ++#include ++#define PCRE_CASELESS PCRE2_CASELESS ++#define PCRE_MULTILINE PCRE2_MULTILINE ++#define PCRE_DOTALL PCRE2_DOTALL ++#define PCRE_EXTENDED PCRE2_EXTENDED ++#define PCRE_ERROR_NOMATCH PCRE2_ERROR_NOMATCH ++#else + #ifdef R__WIN32 + #define PCRE_STATIC + #endif + #include ++#endif + + #include + #include + + struct PCREPriv_t { ++#ifdef USE_PCRE2 ++ pcre2_code *fPCRE; ++ PCREPriv_t() { fPCRE = nullptr; } ++#else + pcre *fPCRE; + pcre_extra *fPCREExtra; +- + PCREPriv_t() { fPCRE = nullptr; fPCREExtra = nullptr; } ++#endif + }; + + +@@ -79,10 +96,15 @@ TPRegexp::TPRegexp(const TPRegexp &p) + + TPRegexp::~TPRegexp() + { ++#ifdef USE_PCRE2 ++ if (fPriv->fPCRE) ++ pcre2_code_free(fPriv->fPCRE); ++#else + if (fPriv->fPCRE) + pcre_free(fPriv->fPCRE); + if (fPriv->fPCREExtra) + pcre_free(fPriv->fPCREExtra); ++#endif + delete fPriv; + } + +@@ -93,12 +115,18 @@ TPRegexp &TPRegexp::operator=(const TPRegexp &p) + { + if (this != &p) { + fPattern = p.fPattern; ++#ifdef USE_PCRE2 ++ if (fPriv->fPCRE) ++ pcre2_code_free(fPriv->fPCRE); ++ fPriv->fPCRE = nullptr; ++#else + if (fPriv->fPCRE) + pcre_free(fPriv->fPCRE); + fPriv->fPCRE = nullptr; + if (fPriv->fPCREExtra) + pcre_free(fPriv->fPCREExtra); + fPriv->fPCREExtra = nullptr; ++#endif + fPCREOpts = p.fPCREOpts; + } + return *this; +@@ -197,31 +225,50 @@ TString TPRegexp::GetModifiers() const + + void TPRegexp::Compile() + { ++#ifdef USE_PCRE2 ++ if (fPriv->fPCRE) ++ pcre2_code_free(fPriv->fPCRE); ++#else + if (fPriv->fPCRE) + pcre_free(fPriv->fPCRE); ++#endif + + if (fPCREOpts & kPCRE_DEBUG_MSGS) + Info("Compile", "PREGEX compiling %s", fPattern.Data()); + ++#ifdef USE_PCRE2 ++ int errcode; ++ PCRE2_SIZE patIndex; ++ fPriv->fPCRE = pcre2_compile((PCRE2_SPTR)fPattern.Data(), fPattern.Length(), ++ fPCREOpts & kPCRE_INTMASK, ++ &errcode, &patIndex, nullptr); ++#else + const char *errstr; + Int_t patIndex; + fPriv->fPCRE = pcre_compile(fPattern.Data(), fPCREOpts & kPCRE_INTMASK, + &errstr, &patIndex, nullptr); ++#endif + + if (!fPriv->fPCRE) { ++#ifdef USE_PCRE2 ++ PCRE2_UCHAR errstr[256]; ++ pcre2_get_error_message(errcode, errstr, 256); ++#endif + if (fgThrowAtCompileError) { + throw std::runtime_error + (TString::Format("TPRegexp::Compile() compilation of TPRegexp(%s) failed at: %d because %s", +- fPattern.Data(), patIndex, errstr).Data()); ++ fPattern.Data(), (int)patIndex, errstr).Data()); + } else { + Error("Compile", "compilation of TPRegexp(%s) failed at: %d because %s", +- fPattern.Data(), patIndex, errstr); ++ fPattern.Data(), (int)patIndex, errstr); + return; + } + } + ++#ifndef USE_PCRE2 + if (fPriv->fPCREExtra || (fPCREOpts & kPCRE_OPTIMIZE)) + Optimize(); ++#endif + } + + //////////////////////////////////////////////////////////////////////////////// +@@ -229,6 +276,7 @@ void TPRegexp::Compile() + + void TPRegexp::Optimize() + { ++#ifndef USE_PCRE2 + if (fPriv->fPCREExtra) + pcre_free(fPriv->fPCREExtra); + +@@ -243,6 +291,7 @@ void TPRegexp::Optimize() + Error("Optimize", "Optimization of TPRegexp(%s) failed: %s", + fPattern.Data(), errstr); + } ++#endif + } + + //////////////////////////////////////////////////////////////////////////////// +@@ -308,21 +357,43 @@ Int_t TPRegexp::MatchInternal(const TString &s, Int_t start, + Int_t nMaxMatch, TArrayI *pos) const + { + Int_t *offVec = new Int_t[3*nMaxMatch]; ++ ++#ifdef USE_PCRE2 ++ pcre2_match_data *match_data; ++ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr); ++ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR8)s.Data(), ++ s.Length(), start, 0, ++ match_data, nullptr); ++#else + // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS. + Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(), + s.Length(), start, 0, + offVec, 3*nMaxMatch); ++#endif + + if (nrMatch == PCRE_ERROR_NOMATCH) + nrMatch = 0; + else if (nrMatch <= 0) { + Error("Match","pcre_exec error = %d", nrMatch); ++#ifdef USE_PCRE2 ++ pcre2_match_data_free(match_data); ++#endif + delete [] offVec; + return 0; + } + +- if (pos) ++ if (pos) { ++#ifdef USE_PCRE2 ++ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data); ++ for (int i = 0; i < 2 * nrMatch; ++i) ++ offVec[i] = oVec[i]; ++#endif + pos->Set(2*nrMatch, offVec); ++ } ++ ++#ifdef USE_PCRE2 ++ pcre2_match_data_free(match_data); ++#endif + delete [] offVec; + + return nrMatch; +@@ -404,13 +475,24 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, + Int_t offset = start; + Int_t last = 0; + ++#ifdef USE_PCRE2 ++ pcre2_match_data *match_data; ++ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr); ++#endif ++ + while (kTRUE) { + + // find next matching subs + // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS. ++#ifdef USE_PCRE2 ++ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR)s.Data(), ++ s.Length(), offset, 0, ++ match_data, nullptr); ++#else + Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(), + s.Length(), offset, 0, + offVec, 3*nMaxMatch); ++#endif + + if (nrMatch == PCRE_ERROR_NOMATCH) { + break; +@@ -419,6 +501,12 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, + break; + } + ++#ifdef USE_PCRE2 ++ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data); ++ for (int i = 0; i < 2 * nrMatch; ++i) ++ offVec[i] = oVec[i]; ++#endif ++ + // append anything previously unmatched, but not substituted + if (last <= offVec[0]) { + fin += s(last,offVec[0]-last); +@@ -446,6 +534,9 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, + } + } + ++#ifdef USE_PCRE2 ++ pcre2_match_data_free(match_data); ++#endif + delete [] offVec; + + fin += s(last,s.Length()-last); +diff --git a/tutorials/legacy/regexp/regexp.C b/tutorials/legacy/regexp/regexp.C +index 995b823bce..f38ed6799e 100644 +--- a/tutorials/legacy/regexp/regexp.C ++++ b/tutorials/legacy/regexp/regexp.C +@@ -94,11 +94,11 @@ void regexp() + // criteria: + // 1) It should be of the form string1@string2 . The "^" and "$" ensure that we compare the complete + // email string +- // 2) ([\\w-\\.]+) : ++ // 2) ([\\w\\-\\.]+) : + // string1 is only allowed to be composed out of the alphanumeric characters, "-" and "." . + // The "+" ensures that string1 can not be empty . + // 3) string2 is matched against three different parts : +- // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+)) : ++ // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+)) : + // This regular expression ensures that EITHER the string starts with "[" followed by three groups + // of numbers, separated by "." , where each group has 1 to 3 numbers, OR alphanumeric strings, + // possibly containing "-" characters, separated by "." . +@@ -108,7 +108,7 @@ void regexp() + // At most one "]" character . + + TString s5("fons.rademakers@cern.ch"); +- TPRegexp r5("^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); ++ TPRegexp r5("^([\\w\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); + cout << "Check if the email address \"" << s5 << "\" is valid: " << (r5.MatchB(s5) ? "TRUE" : "FALSE") << endl; + + // Substitute Example with pattern modifier : +-- +2.41.0 + diff --git a/root-tmva-rbdt.patch b/root-tmva-rbdt.patch new file mode 100644 index 0000000..b7afb2d --- /dev/null +++ b/root-tmva-rbdt.patch @@ -0,0 +1,40 @@ +From c3eb92abb450aee2e3a798218ca2d309524dab11 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 14 Oct 2023 15:51:16 +0200 +Subject: [PATCH] src/RBDT.cxx is a source file of libTMVAUtils and should not + also be a source file of libTMVA. Remove it. Adjust test using symbols + defined in this source file to link to libTMVAUtils instead of libTMVA. + +--- + tmva/tmva/CMakeLists.txt | 1 - + tmva/tmva/test/CMakeLists.txt | 2 +- + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/tmva/tmva/CMakeLists.txt b/tmva/tmva/CMakeLists.txt +index 84efce9d59..109f4c1021 100644 +--- a/tmva/tmva/CMakeLists.txt ++++ b/tmva/tmva/CMakeLists.txt +@@ -334,7 +334,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(TMVA + src/PDEFoamVect.cxx + src/PDF.cxx + src/QuickMVAProbEstimator.cxx +- src/RBDT.cxx + src/Ranking.cxx + src/Reader.cxx + src/RegressionVariance.cxx +diff --git a/tmva/tmva/test/CMakeLists.txt b/tmva/tmva/test/CMakeLists.txt +index ebe1be187b..5dcf5175f2 100644 +--- a/tmva/tmva/test/CMakeLists.txt ++++ b/tmva/tmva/test/CMakeLists.txt +@@ -29,7 +29,7 @@ if(dataframe) + # Tree inference system and user interface + if(NOT MSVC OR ${LLVM_VERSION} VERSION_LESS 13.0.0 OR llvm13_broken_tests) + ROOT_ADD_GTEST(branchlessForest branchlessForest.cxx LIBRARIES TMVA) +- ROOT_ADD_GTEST(rbdt rbdt.cxx LIBRARIES ROOTVecOps TMVA) ++ ROOT_ADD_GTEST(rbdt rbdt.cxx LIBRARIES ROOTVecOps TMVAUtils) + endif() + endif() + +-- +2.41.0 + diff --git a/root.spec b/root.spec index aa32b3c..b880090 100644 --- a/root.spec +++ b/root.spec @@ -53,7 +53,7 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.28.06 +Version: 6.28.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -102,7 +102,7 @@ Patch7: %{name}-big-endian-byte-swap.patch # https://github.com/root-project/root/pull/12375 Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch # https://github.com/root-project/root/pull/12390 -Patch9: %{name}-stressvector-test-fails-on-ix86.patch +Patch9: %{name}-stressvector-test-fails-on-ix86.patch # https://github.com/root-project/root/pull/12423 Patch10: %{name}-dont-install-roofit-files-fix.patch # https://github.com/root-project/root/issues/12427 @@ -110,6 +110,18 @@ Patch10: %{name}-dont-install-roofit-files-fix.patch Patch11: %{name}-fixes-for-32bit-builds.patch # https://github.com/root-project/root/pull/12476 Patch12: %{name}-do-not-remove-Wp-before-D-and-U.patch +# Avoid boolean operators on numpy arrays in unit test +# https://github.com/root-project/root/issues/12162 +# https://github.com/root-project/root/pull/13612 +Patch13: root-boolean-numpy-array.patch +# Port to pcre2 +# https://github.com/root-project/root/issues/11395 +# https://github.com/root-project/root/pull/13771 +Patch14: root-pcre2.patch +Patch15: root-pcre2-6.28.patch +# src/RBDT.cxx is a source file of both libTMVA and libTMVAUtils +# https://github.com/root-project/root/pull/13863 +Patch16: root-tmva-rbdt.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -125,7 +137,7 @@ BuildRequires: fcgi-devel BuildRequires: ftgl-devel BuildRequires: gl2ps-devel BuildRequires: glew-devel -BuildRequires: pcre-devel +BuildRequires: pcre2-devel BuildRequires: zlib-devel BuildRequires: xz-devel BuildRequires: lz4-devel @@ -169,8 +181,6 @@ BuildRequires: R-RInside-devel BuildRequires: readline-devel BuildRequires: tbb-devel >= 2018 BuildRequires: libuuid-devel -BuildRequires: emacs -BuildRequires: emacs-el BuildRequires: graphviz-devel BuildRequires: expat-devel BuildRequires: pythia8-devel >= 8.1.80 @@ -222,9 +232,6 @@ Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: hicolor-icon-theme -Requires: emacs-filesystem >= %{_emacs_version} -Provides: emacs-%{name} = %{version}-%{release} -Provides: emacs-%{name}-el = %{version}-%{release} Obsoletes: emacs-%{name} < 5.34.28 Obsoletes: emacs-%{name}-el < 5.34.28 @@ -1577,6 +1584,8 @@ Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} +# Library split (tmva-utils from tmva) +Obsoletes: %{name}-tmva < 6.28.08 %description tmva The Toolkit for Multivariate Analysis (TMVA) provides a @@ -1598,6 +1607,19 @@ evaluation). In addition all these methods can be tested in parallel, and hence their performance on a particular data set may easily be compared. +%if %{dataframe} +%package tmva-utils +Summary: Toolkit for multivariate data analysis (dataframe utilities) +License: BSD-3-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +# Library split (tmva-utils from tmva) +Obsoletes: %{name}-tmva < 6.28.08 + +%description tmva-utils +TMVA utilities using dataframe. +%endif + %package tmva-python Summary: Toolkit for multivariate data analysis (Python) License: BSD-3-Clause @@ -1757,7 +1779,7 @@ written in python. Summary: Static files for the Jupyter ROOT Notebook BuildArch: noarch Requires: %{name}-core = %{version}-%{release} -Requires: js-jsroot >= 6 +Requires: js-jsroot >= 7 %if %{?fedora}%{!?fedora:0} # jupyter-notebook not available in RHEL/EPEL # some functionality missing @@ -1994,6 +2016,10 @@ This package contains extra tools for RooFit projects. %patch -P 10 -p1 %patch -P 11 -p1 %patch -P 12 -p1 +%patch -P 13 -p1 +%patch -P 14 -p1 +%patch -P 15 -p1 +%patch -P 16 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2068,7 +2094,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ - -DCMAKE_INSTALL_ELISPDIR:PATH=%{_emacs_sitelispdir}/%{name} \ -Dgnuinstall:BOOL=ON \ -Dbuiltin_afterimage:BOOL=OFF \ -Dbuiltin_cfitsio:BOOL=OFF \ @@ -2229,10 +2254,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" # Let rpm redo the python byte compilation find %{buildroot}%{python3_sitearch} -depth -type d -name __pycache__ -exec rm -r {} ';' -# Do emacs byte compilation -emacs -batch -no-site-file -f batch-byte-compile \ - %{buildroot}%{_emacs_sitelispdir}/%{name}/*.el - # Install desktop entry and icon mkdir -p %{buildroot}%{_datadir}/applications mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps @@ -2590,16 +2611,6 @@ tutorial-dataframe-df026_AsNumpyArrays-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif -%if %{?fedora}%{!?fedora:0} == 37 || %{?fedora}%{!?fedora:0} == 38 -%ifarch %{ix86} -# - pyunittests-pyroot-roofit-roodataset-numpy -# Failures with Fedora 37/38 i686 (after numpy 1.24 update) -# https://github.com/root-project/root/issues/12162 -excluded="${excluded}|\ -pyunittests-pyroot-roofit-roodataset-numpy" -%endif -%endif - %ifarch %{power64} # PPC64LE specific failures # - test-stresshistofit-interpreted @@ -2893,6 +2904,9 @@ fi %ldconfig_scriptlets sql-sqlite %ldconfig_scriptlets sql-pgsql %ldconfig_scriptlets tmva +%if %{dataframe} +%ldconfig_scriptlets tmva-utils +%endif %ldconfig_scriptlets tmva-python %ldconfig_scriptlets tmva-r %ldconfig_scriptlets tmva-sofie @@ -2952,9 +2966,6 @@ fi %{_datadir}/icons/hicolor/48x48/apps/root.png %{_datadir}/icons/hicolor/48x48/mimetypes/application-x-root.png %{_datadir}/mime/packages/root.xml -%dir %{_emacs_sitelispdir}/%{name} -%{_emacs_sitelispdir}/%{name}/*.elc -%{_emacs_sitelispdir}/%{name}/*.el %files icons %{_datadir}/%{name}/icons @@ -2997,6 +3008,8 @@ fi %{_mandir}/man1/system.rootdaemonrc.1* %dir %{_datadir}/%{name}/cmake %{_datadir}/%{name}/cmake/*.cmake +%dir %{_datadir}/%{name}/cmake/modules +%{_datadir}/%{name}/cmake/modules/*.cmake %dir %{_datadir}/%{name}/macros %{_datadir}/%{name}/macros/Dialogs.C %dir %{_datadir}/%{name}/plugins @@ -3572,6 +3585,34 @@ fi %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Cpu %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Reference %license tmva/doc/LICENSE +%exclude %{_includedir}/%{name}/TMVA/RBDT.hxx +%exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx +%exclude %{_includedir}/%{name}/TMVA/RReader.hxx +%exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx +%exclude %{_includedir}/%{name}/TMVA/RStandardScaler.hxx +%exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx +%exclude %{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx +%exclude %{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx +%exclude %{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx +%exclude %{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx + +%if %{dataframe} +%files tmva-utils +%{_libdir}/%{name}/libTMVAUtils.* +%{_libdir}/%{name}/libTMVAUtils_rdict.pcm +%dir %{_includedir}/%{name}/TMVA +%dir %{_includedir}/%{name}/TMVA/TreeInference +%{_includedir}/%{name}/TMVA/RBDT.hxx +%{_includedir}/%{name}/TMVA/RInferenceUtils.hxx +%{_includedir}/%{name}/TMVA/RReader.hxx +%{_includedir}/%{name}/TMVA/RSofieReader.hxx +%{_includedir}/%{name}/TMVA/RStandardScaler.hxx +%{_includedir}/%{name}/TMVA/RTensorUtils.hxx +%{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx +%{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx +%{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx +%{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx +%endif %files tmva-python -f includelist-tmva-pymva %{_libdir}/%{name}/libPyMVA.* @@ -3738,6 +3779,11 @@ fi %endif %changelog +* Sat Oct 14 2023 Mattias Ellert - 6.28.08-1 +- Update to 6.28.08 +- New subpackage root-tmva-utils (split off from root-tmva) +- Port to pcre2 + * Tue Sep 05 2023 Mattias Ellert - 6.28.06-1 - Update to 6.28.06 - Drop patches root-testRooAbsL-test-compares-two-doubles-and-fails.patch and diff --git a/sources b/sources index e30a52f..abdf4dd 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.28.06.tar.xz) = 1a7252950517b480e036cf6e12d7eb675068e1d23df1f91822494d5f0ca769545a40a37b3478cc3cf3517a20e2b48a46a7b8ff2cd4601a7c23574de989195901 +SHA512 (root-6.28.08.tar.xz) = 868d770a05372677da84e4456023c1b2b575ff1eac8b6b841ed45dd1e0fd0c6c7aede533271b986404f2a55c91ea196ac2d8c81b3b4d1edfae159c0b665c415e SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From fb5c22a14dac9c1c25b9afcf43a4d813279d2b9c Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 1 Nov 2023 13:42:56 +0100 Subject: [PATCH 17/89] Enable RooFit::MultiProcess on Fedroa 40+ --- root-Fix-cmake-modules-FindZeroMQ.cmake.patch | 51 +++++++++++++ root.spec | 75 ++++++++++++++++--- 2 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 root-Fix-cmake-modules-FindZeroMQ.cmake.patch diff --git a/root-Fix-cmake-modules-FindZeroMQ.cmake.patch b/root-Fix-cmake-modules-FindZeroMQ.cmake.patch new file mode 100644 index 0000000..196ae81 --- /dev/null +++ b/root-Fix-cmake-modules-FindZeroMQ.cmake.patch @@ -0,0 +1,51 @@ +From f178a821b57043fdb7b722187e0175b975c7076b Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 1 Nov 2023 10:04:03 +0100 +Subject: [PATCH] Fix cmake/modules/FindZeroMQ.cmake + +It now finds ZeroMQ in Fedora 40. +--- + cmake/modules/FindZeroMQ.cmake | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/cmake/modules/FindZeroMQ.cmake b/cmake/modules/FindZeroMQ.cmake +index 24a1c171f5..bd8bf0b3db 100644 +--- a/cmake/modules/FindZeroMQ.cmake ++++ b/cmake/modules/FindZeroMQ.cmake +@@ -38,17 +38,21 @@ set ( ZeroMQ_LIBRARIES ${ZeroMQ_LIBRARY} ) + set ( ZeroMQ_INCLUDE_DIRS ${ZeroMQ_INCLUDE_DIR} ) + + # check for zmq_ppoll +-if(ZeroMQ_FOUND) +- SET(SAVE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") +- SET(CMAKE_REQUIRED_DEFINITIONS "-DZMQ_BUILD_DRAFT_API") ++if(ZeroMQ_LIBRARIES) ++ include(CheckCXXSymbolExists) ++ set(CMAKE_REQUIRED_LIBRARIES ${ZeroMQ_LIBRARIES}) ++ set(CMAKE_REQUIRED_INCLUDES ${ZeroMQ_INCLUDE_DIRS}) ++ set(CMAKE_REQUIRED_DEFINITIONS "-DZMQ_BUILD_DRAFT_API") + check_cxx_symbol_exists(zmq_ppoll zmq.h ZeroMQ_HAS_PPOLL) +- SET(CMAKE_REQUIRED_DEFINITIONS "${SAVE_CMAKE_REQUIRED_DEFINITIONS}") ++ unset(CMAKE_REQUIRED_LIBRARIES) ++ unset(CMAKE_REQUIRED_INCLUDES) ++ unset(CMAKE_REQUIRED_DEFINITIONS) + endif() + + include ( FindPackageHandleStandardArgs ) + # handle the QUIETLY and REQUIRED arguments and set ZeroMQ_FOUND to TRUE + # if all listed variables are TRUE +-find_package_handle_standard_args ( ZeroMQ DEFAULT_MSG ZeroMQ_LIBRARIES ZeroMQ_INCLUDE_DIRS ZeroMQ_HAS_PPOLL) ++find_package_handle_standard_args ( ZeroMQ DEFAULT_MSG ZeroMQ_LIBRARIES ZeroMQ_INCLUDE_DIRS ZeroMQ_HAS_PPOLL ) + + if(ZeroMQ_FOUND) + if(NOT TARGET libzmq) +@@ -57,4 +61,4 @@ if(ZeroMQ_FOUND) + IMPORTED_LOCATION ${ZeroMQ_LIBRARIES} + INTERFACE_INCLUDE_DIRECTORIES ${ZeroMQ_INCLUDE_DIRS}) + endif() +-endif() +\ No newline at end of file ++endif() +-- +2.41.0 + diff --git a/root.spec b/root.spec index b880090..1c76e82 100644 --- a/root.spec +++ b/root.spec @@ -40,12 +40,9 @@ %global distrdf 0 %endif -# qt6-srpm-macros not in buildroot for Fedora 37/38 or EPEL 9 +# qt6-srpm-macros not in buildroot for Fedora 37/38 # https://bugzilla.redhat.com/show_bug.cgi?id=2220859 -# https://bugzilla.redhat.com/show_bug.cgi?id=2220860 -# Definition of qt6_qtwebengine_arches incorrect in qt6-srpm-macros -# https://bugzilla.redhat.com/show_bug.cgi?id=2215703 -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +%if %{?fedora}%{!?fedora:0} == 37 || %{?fedora}%{!?fedora:0} == 38 %global qt6_qtwebengine_arches aarch64 x86_64 %endif @@ -55,7 +52,7 @@ Name: root Version: 6.28.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -113,15 +110,18 @@ Patch12: %{name}-do-not-remove-Wp-before-D-and-U.patch # Avoid boolean operators on numpy arrays in unit test # https://github.com/root-project/root/issues/12162 # https://github.com/root-project/root/pull/13612 -Patch13: root-boolean-numpy-array.patch +Patch13: %{name}-boolean-numpy-array.patch # Port to pcre2 # https://github.com/root-project/root/issues/11395 # https://github.com/root-project/root/pull/13771 -Patch14: root-pcre2.patch -Patch15: root-pcre2-6.28.patch +Patch14: %{name}-pcre2.patch +Patch15: %{name}-pcre2-6.28.patch # src/RBDT.cxx is a source file of both libTMVA and libTMVAUtils # https://github.com/root-project/root/pull/13863 -Patch16: root-tmva-rbdt.patch +Patch16: %{name}-tmva-rbdt.patch +# Fix cmake/modules/FindZeroMQ.cmake +# https://github.com/root-project/root/pull/13995 +Patch17: %{name}-Fix-cmake-modules-FindZeroMQ.cmake.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -204,6 +204,14 @@ BuildRequires: protobuf-devel >= 3.0 %ifnarch %{ix86} %{arm} BuildRequires: libarrow-devel %endif +%if %{roofit} +%if %{?fedora}%{!?fedora:0} >= 40 +# Required for roofit-multiprocess +# Requires new zeromq with zmq_ppoll +BuildRequires: zeromq-devel >= 4.3.5 +BuildRequires: cppzmq-devel +%endif +%endif %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif @@ -1488,6 +1496,28 @@ suitable for adoption in different disciplines as well. This package contains the JSON interface to RooFit. +%if %{?fedora}%{!?fedora:0} >= 40 +%package roofit-multiprocess +Summary: Multi-process support for RooFit +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-common%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-zmq%{?_isa} = %{version}-%{release} + +%description roofit-multiprocess +This package contains a library providing classes that implements +mult-process support for RooFit. + +%package roofit-zmq +Summary: ZeroMQ interface library for RooFit +License: BSD-2-Clause + +%description roofit-zmq +This package contains a helper library used by RooFit::MultiProcess to +interface to the ZeroMQ library. +%endif + %package roostats Summary: Statistical tools built on top of RooFit Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -2020,6 +2050,7 @@ This package contains extra tools for RooFit projects. %patch -P 14 -p1 %patch -P 15 -p1 %patch -P 16 -p1 +%patch -P 17 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2192,10 +2223,15 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dr:BOOL=ON \ %if %{roofit} -Droofit:BOOL=ON \ +%if %{?fedora}%{!?fedora:0} >= 40 + -Droofit_multiprocess:BOOL=ON \ +%else + -Droofit_multiprocess:BOOL=OFF \ +%endif %else -Droofit:BOOL=OFF \ -%endif -Droofit_multiprocess:BOOL=OFF \ +%endif -Droofit_hs3_ryml:BOOL=OFF \ %if %{root7} -Droot7:BOOL=ON \ @@ -2894,8 +2930,12 @@ fi %if %{dataframe} %ldconfig_scriptlets roofit-dataframe-helpers %endif -%ldconfig_scriptlets roofit-jsoninterface %ldconfig_scriptlets roofit-hs3 +%ldconfig_scriptlets roofit-jsoninterface +%if %{?fedora}%{!?fedora:0} >= 40 +%ldconfig_scriptlets roofit-multiprocess +%ldconfig_scriptlets roofit-zmq +%endif %ldconfig_scriptlets roostats %ldconfig_scriptlets hist-factory %endif @@ -3539,6 +3579,14 @@ fi %{_libdir}/%{name}/libRooFitJSONInterface.* %{_libdir}/%{name}/libRooFitJSONInterface_rdict.pcm +%if %{?fedora}%{!?fedora:0} >= 40 +%files roofit-multiprocess -f includelist-roofit-multiprocess +%{_libdir}/%{name}/libRooFitMultiProcess.* + +%files roofit-zmq +%{_libdir}/%{name}/libRooFitZMQ.* +%endif + %files roostats -f includelist-roofit-roostats %{_libdir}/%{name}/libRooStats.* %{_libdir}/%{name}/libRooStats_rdict.pcm @@ -3779,6 +3827,9 @@ fi %endif %changelog +* Wed Nov 01 2023 Mattias Ellert - 6.28.08-2 +- Enable RooFit::MultiProcess on Fedroa 40+ + * Sat Oct 14 2023 Mattias Ellert - 6.28.08-1 - Update to 6.28.08 - New subpackage root-tmva-utils (split off from root-tmva) From ae0a7919250ae3903e9f4d78501b4cef0b775525 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 2 Nov 2023 12:45:23 +0100 Subject: [PATCH 18/89] Rebuilt for libarrow.so.1400 --- root.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/root.spec b/root.spec index 1c76e82..96f8888 100644 --- a/root.spec +++ b/root.spec @@ -52,7 +52,7 @@ Name: root Version: 6.28.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3827,8 +3827,11 @@ fi %endif %changelog +* Thu Nov 02 2023 Mattias Ellert - 6.28.08-3 +- Rebuilt for libarrow.so.1400 + * Wed Nov 01 2023 Mattias Ellert - 6.28.08-2 -- Enable RooFit::MultiProcess on Fedroa 40+ +- Enable RooFit::MultiProcess on Fedora 40+ * Sat Oct 14 2023 Mattias Ellert - 6.28.08-1 - Update to 6.28.08 From 59989efa5f4087c1dd7b9eb3d4f660cd78c20675 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 26 Nov 2023 16:11:31 +0100 Subject: [PATCH 19/89] Update to 6.30.00 Removed subpackages: root-io-gfal and root-roofit-common Dropped patches: 6 New patches: 6 --- root-avoid-out-of-memory-during-linking.patch | 30 + root-boolean-numpy-array.patch | 45 -- root-clad.patch | 26 + root-do-not-remove-Wp-before-D-and-U.patch | 44 -- root-dont-install-roofit-files-fix.patch | 26 - root-fixes-for-32bit-builds.patch | 185 ------ root-gtest-back.patch | 25 + ...about-RooNaNPacker-not-being-impleme.patch | 33 ++ root-np32.patch | 89 +++ root-old-gtest.patch | 54 ++ root-pcre2-6.28.patch | 52 -- root-pcre2.patch | 20 + root-stressvector-test-fails-on-ix86.patch | 37 -- root-tmva-rbdt.patch | 2 +- root.spec | 551 ++++++++---------- sources | 2 +- 16 files changed, 507 insertions(+), 714 deletions(-) create mode 100644 root-avoid-out-of-memory-during-linking.patch delete mode 100644 root-boolean-numpy-array.patch create mode 100644 root-clad.patch delete mode 100644 root-do-not-remove-Wp-before-D-and-U.patch delete mode 100644 root-dont-install-roofit-files-fix.patch delete mode 100644 root-fixes-for-32bit-builds.patch create mode 100644 root-gtest-back.patch create mode 100644 root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch create mode 100644 root-np32.patch create mode 100644 root-old-gtest.patch delete mode 100644 root-pcre2-6.28.patch delete mode 100644 root-stressvector-test-fails-on-ix86.patch diff --git a/root-avoid-out-of-memory-during-linking.patch b/root-avoid-out-of-memory-during-linking.patch new file mode 100644 index 0000000..d182e44 --- /dev/null +++ b/root-avoid-out-of-memory-during-linking.patch @@ -0,0 +1,30 @@ +From 51b84e7bc21f8729de8d3e8f9ff08b337af33b78 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 17 Nov 2023 17:15:15 +0100 +Subject: [PATCH] Avoid out of memory during linking regardless of build type + +--- + core/metacling/src/CMakeLists.txt | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt +index e750480eb3..dd50793d29 100644 +--- a/core/metacling/src/CMakeLists.txt ++++ b/core/metacling/src/CMakeLists.txt +@@ -111,11 +111,8 @@ ROOT_LINKER_LIBRARY(Cling + $ + LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS}) + +-string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE) +-if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO) +- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. +- add_dependencies(Cling rootcling_stage1) +-endif() ++# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. ++add_dependencies(Cling rootcling_stage1) + + if(MSVC) + set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) +-- +2.43.0 + diff --git a/root-boolean-numpy-array.patch b/root-boolean-numpy-array.patch deleted file mode 100644 index e5d6482..0000000 --- a/root-boolean-numpy-array.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 2b3dd4f1bfecea5b1b936d5507f8b0c664322a19 Mon Sep 17 00:00:00 2001 -From: Jonas Rembser -Date: Wed, 6 Sep 2023 02:16:33 +0200 -Subject: [PATCH] [RF][PyROOT] Avoid boolean operators on numpy arrays in unit - test - -The `n_in_range` reference value in the unit test -`roodataset_numpy.TestRooDataSetNumpy.test_ignoring_out_of_range` -apparently doesn't get computed right on some 32 platforms. - -I can't reproduce the problem, but I'm sure it will be fixed by avoiding -the use of the operators `&` and `|` with numpy arrays. Just doing a -manual loop in Python should be more platform independent. - -Closes #12162. ---- - .../pythonizations/test/roofit/roodataset_numpy.py | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py b/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py -index 79259af321..5587677c45 100644 ---- a/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py -+++ b/bindings/pyroot/pythonizations/test/roofit/roodataset_numpy.py -@@ -135,9 +135,15 @@ class TestRooDataSetNumpy(unittest.TestCase): - cat.defineType("minus", -1) - cat.defineType("plus", +1) - -- in_x_range = (data["x"] <= x.getMax()) & (data["x"] >= x.getMin()) -- in_cat_range = (data["cat"] == -1) | (data["cat"] == +1) -- n_in_range = np.sum(in_x_range & in_cat_range) -+ # Use manual loop because we had some problems with numpys boolean -+ # comparisions in the past (see GitHub issue #12162). -+ n_in_range = 0 -+ for i in range(n_events): -+ in_x_range = data["x"][i] <= x.getMax() and data["x"][i] >= x.getMin() -+ in_cat_range = (data["cat"][i] == -1) or (data["cat"][i] == +1) -+ is_in_range = in_x_range and in_cat_range -+ if is_in_range: -+ n_in_range = n_in_range + 1 - - dataset_numpy = ROOT.RooDataSet.from_numpy(data, {x, cat}, name="dataSetNumpy") - --- -2.41.0 - diff --git a/root-clad.patch b/root-clad.patch new file mode 100644 index 0000000..0715240 --- /dev/null +++ b/root-clad.patch @@ -0,0 +1,26 @@ +From fae9b92742c5e991ad33769d1357a721838e93f9 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 17 Nov 2023 11:37:23 +0100 +Subject: [PATCH 1/3] Add fit/exampleFit3D.C to clad veto + +--- + tutorials/CMakeLists.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index 5cba95407b..81f6539f03 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -74,7 +74,8 @@ if(NOT ROOT_minuit2_FOUND) + endif() + + if(NOT clad) +- set(clad_veto fit/minuit2GausFit.C) ++ set(clad_veto fit/minuit2GausFit.C ++ fit/exampleFit3D.C) + endif() + + # RBatchGenerator tutorials need Python 3.8+. +-- +2.42.0 + diff --git a/root-do-not-remove-Wp-before-D-and-U.patch b/root-do-not-remove-Wp-before-D-and-U.patch deleted file mode 100644 index 820b7af..0000000 --- a/root-do-not-remove-Wp-before-D-and-U.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0191a987b7583c2aa84b1293105db353fee40b1d Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 10 Mar 2023 20:49:02 +0100 -Subject: [PATCH] Do not remove -Wp, before -D and -U when recording used - compiler flags - -This breaks the pattern used when undefining and then defining a -variable in the same flag: - -$ echo | g++ -Wp,-UVAR,-DVAR=1 -c -x c++ - - -Here -Wp,-UVAR,-DVAR=1 will first undefine VAR and then define it to 1 - -If the -Wp, is dropped, this fails: -$ echo | g++ -UVAR,-DVAR=1 -c -x c++ - -: warning: extra tokens at end of #undef directive - -Now it will only undefine VAR, but not defin it. I.e. - -insted of - -you get - -which explains the rather cryptic warning about extra token after #undef. ---- - cmake/modules/RootConfiguration.cmake | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake -index 3d1ae9be53..042b43f039 100644 ---- a/cmake/modules/RootConfiguration.cmake -+++ b/cmake/modules/RootConfiguration.cmake -@@ -729,7 +729,7 @@ if (cxxmodules) - endif() - - string(REGEX REPLACE "(^|[ ]*)-W[^ ]*" "" __fflags "${CMAKE_Fortran_FLAGS}") --string(REGEX MATCHALL "-(D|U)[^ ]*" __defs "${CMAKE_CXX_FLAGS}") -+string(REGEX MATCHALL "(-Wp,)?-(D|U)[^ ]*" __defs "${CMAKE_CXX_FLAGS}") - set(ROOT_COMPILER_FLAG_HINTS "# - set(ROOT_DEFINITIONS \"${__defs}\") - set(ROOT_CXX_FLAGS \"${__cxxflags}\") --- -2.39.2 - diff --git a/root-dont-install-roofit-files-fix.patch b/root-dont-install-roofit-files-fix.patch deleted file mode 100644 index 295a4b7..0000000 --- a/root-dont-install-roofit-files-fix.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 74aaf99530443a712f9b0577d8edde615ea8902d Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 4 Mar 2023 21:27:35 +0100 -Subject: [PATCH] Use FILTER instead of REMOVE_ITEM since GLOB returns absolute - paths - ---- - build/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt -index e964b5e255..2b24b1d6e6 100644 ---- a/build/CMakeLists.txt -+++ b/build/CMakeLists.txt -@@ -30,7 +30,7 @@ ROOT_EXECUTABLE(rmkdepend - if(NOT MSVC AND _BUILD_TYPE_UPPER MATCHES "DEBUG|RELWITHDEBINFO") - file(GLOB PRETTY_PRINTERS "gdbPrinters/*.so-gdb.py") - if(NOT roofit) -- list(REMOVE_ITEM PRETTY_PRINTERS gdbPrinters/libRooFitCore.so-gdb.py) -+ list(FILTER PRETTY_PRINTERS EXCLUDE REGEX libRooFitCore.so-gdb.py) - endif() - set(PRETTY_PRINTER_DESTS) - foreach(PRETTY_PRINTER ${PRETTY_PRINTERS}) --- -2.39.2 - diff --git a/root-fixes-for-32bit-builds.patch b/root-fixes-for-32bit-builds.patch deleted file mode 100644 index bcff78d..0000000 --- a/root-fixes-for-32bit-builds.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 6f69a59010a60c949b1955e52275137e39a85b82 Mon Sep 17 00:00:00 2001 -From: Jakob Blomer -Date: Thu, 9 Mar 2023 15:14:22 +0100 -Subject: [PATCH] [ntuple] fixes for 32bit / non-x86_64 builds - ---- - tree/dataframe/src/RNTupleDS.cxx | 1 + - tree/ntuple/v7/inc/ROOT/RField.hxx | 21 +++++++++++++++++++-- - tree/ntuple/v7/test/ntuple_extended.cxx | 8 ++++---- - 3 files changed, 24 insertions(+), 6 deletions(-) - -diff --git a/tree/dataframe/src/RNTupleDS.cxx b/tree/dataframe/src/RNTupleDS.cxx -index f7eb0ab5f284..aaea6df81622 100644 ---- a/tree/dataframe/src/RNTupleDS.cxx -+++ b/tree/dataframe/src/RNTupleDS.cxx -@@ -94,6 +94,7 @@ class RRDFCardinalityField : public ROOT::Experimental::Detail::RFieldBase { - return ROOT::Experimental::Detail::RFieldValue(true /* captureFlag */, this, where); - } - size_t GetValueSize() const final { return sizeof(std::size_t); } -+ size_t GetAlignment() const final { return alignof(std::size_t); } - - /// Get the number of elements of the collection identified by globalIndex - void -diff --git a/tree/ntuple/v7/inc/ROOT/RField.hxx b/tree/ntuple/v7/inc/ROOT/RField.hxx -index b05267d16030..9a85368a94e3 100644 ---- a/tree/ntuple/v7/inc/ROOT/RField.hxx -+++ b/tree/ntuple/v7/inc/ROOT/RField.hxx -@@ -270,8 +270,9 @@ public: - virtual std::vector SplitValue(const RFieldValue &value) const; - /// The number of bytes taken by a value of the appropriate type - virtual size_t GetValueSize() const = 0; -- /// For many types, the alignment requirement is equal to the size; otherwise override. -- virtual size_t GetAlignment() const { return GetValueSize(); } -+ /// As a rule of thumb, the alignment is equal to the size of the type. There are, however, various exceptions -+ /// to this rule depending on OS and CPU architecture. So enforce the alignment to be explicitly spelled out. -+ virtual size_t GetAlignment() const = 0; - int GetTraits() const { return fTraits; } - bool HasReadCallbacks() const { return !fReadCallbacks.empty(); } - -@@ -383,6 +384,7 @@ public: - Detail::RFieldValue GenerateValue(void*) override { return Detail::RFieldValue(); } - Detail::RFieldValue CaptureValue(void*) final { return Detail::RFieldValue(); } - size_t GetValueSize() const final { return 0; } -+ size_t GetAlignment() const final { return 0; } - - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; -@@ -889,6 +891,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(ClusterSize_t); } -+ size_t GetAlignment() const final { return alignof(ClusterSize_t); } - void CommitCluster() final; - }; - -@@ -990,6 +993,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(ClusterSize_t); } -+ size_t GetAlignment() const final { return alignof(ClusterSize_t); } - - /// Special help for offset fields - void GetCollectionInfo(NTupleSize_t globalIndex, RClusterIndex *collectionStart, ClusterSize_t *size) { -@@ -1110,6 +1115,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(bool); } -+ size_t GetAlignment() const final { return alignof(bool); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1162,6 +1168,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(float); } -+ size_t GetAlignment() const final { return alignof(float); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1215,6 +1222,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(double); } -+ size_t GetAlignment() const final { return alignof(double); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1267,6 +1275,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(char); } -+ size_t GetAlignment() const final { return alignof(char); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1319,6 +1328,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::int8_t); } -+ size_t GetAlignment() const final { return alignof(std::int8_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1371,6 +1381,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::uint8_t); } -+ size_t GetAlignment() const final { return alignof(std::uint8_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1423,6 +1434,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::int16_t); } -+ size_t GetAlignment() const final { return alignof(std::int16_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1475,6 +1487,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::uint16_t); } -+ size_t GetAlignment() const final { return alignof(std::uint16_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1527,6 +1540,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::int32_t); } -+ size_t GetAlignment() const final { return alignof(std::int32_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1579,6 +1593,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::uint32_t); } -+ size_t GetAlignment() const final { return alignof(std::uint32_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1631,6 +1646,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::uint64_t); } -+ size_t GetAlignment() const final { return alignof(std::uint64_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -@@ -1683,6 +1699,7 @@ public: - Detail::RColumnElement(static_cast(where)), this, where); - } - size_t GetValueSize() const final { return sizeof(std::int64_t); } -+ size_t GetAlignment() const final { return alignof(std::int64_t); } - void AcceptVisitor(Detail::RFieldVisitor &visitor) const final; - }; - -diff --git a/tree/ntuple/v7/test/ntuple_extended.cxx b/tree/ntuple/v7/test/ntuple_extended.cxx -index 91871e288e98..d3b6ee466359 100644 ---- a/tree/ntuple/v7/test/ntuple_extended.cxx -+++ b/tree/ntuple/v7/test/ntuple_extended.cxx -@@ -123,8 +123,8 @@ TEST(RNTuple, LargeFile1) - RNTupleWriteOptions options; - options.SetCompression(0); - auto ntuple = RNTupleWriter::Recreate(std::move(modelWrite), "myNTuple", fileGuard.GetPath(), options); -- constexpr unsigned long nEvents = 1024 * 1024 * 256; // Exceed 2GB file size -- for (unsigned int i = 0; i < nEvents; ++i) { -+ constexpr std::uint64_t nEvents = 1024 * 1024 * 256; // Exceed 2GB file size -+ for (std::uint64_t i = 0; i < nEvents; ++i) { - wrEnergy = rnd.Rndm(); - chksumWrite += wrEnergy; - ntuple->Fill(); -@@ -195,8 +195,8 @@ TEST(RNTuple, LargeFile2) - - TRandom3 rnd(42); - double chksumWrite = 0.0; -- constexpr unsigned long nEvents = 1024 * 1024 * 256; // Exceed 2GB file size -- for (unsigned int i = 0; i < nEvents; ++i) { -+ constexpr std::uint64_t nEvents = 1024 * 1024 * 256; // Exceed 2GB file size -+ for (std::uint64_t i = 0; i < nEvents; ++i) { - *E = rnd.Rndm(); - chksumWrite += *E; - writer->Fill(); diff --git a/root-gtest-back.patch b/root-gtest-back.patch new file mode 100644 index 0000000..1624451 --- /dev/null +++ b/root-gtest-back.patch @@ -0,0 +1,25 @@ +From 1942f5569b1d101f2c89341765ea37850e3de669 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 17 Nov 2023 11:43:46 +0100 +Subject: [PATCH 2/3] Add old gtest compat for SetUpTestSuite/TearDownTestSuite + +--- + tree/tree/test/friendinfo.cxx | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tree/tree/test/friendinfo.cxx b/tree/tree/test/friendinfo.cxx +index 141a495052..6e94056946 100644 +--- a/tree/tree/test/friendinfo.cxx ++++ b/tree/tree/test/friendinfo.cxx +@@ -14,6 +14,8 @@ + // Backward compatibility for gtest version < 1.10.0 + #ifndef INSTANTIATE_TEST_SUITE_P + #define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P ++#define SetUpTestSuite SetUpTestCase ++#define TearDownTestSuite TearDownTestCase + #endif + + namespace { +-- +2.42.0 + diff --git a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch b/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch new file mode 100644 index 0000000..20e2ee5 --- /dev/null +++ b/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.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] Ignore warnings about RooNaNPacker not being implemented for + big endian + +This warning is triggered in many tests, so it makes sense to put it +in the default ignored set. +--- + core/testsupport/src/TestSupport.cxx | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx +index 259ab4e09c..79cd476950 100644 +--- a/core/testsupport/src/TestSupport.cxx ++++ b/core/testsupport/src/TestSupport.cxx +@@ -73,6 +73,13 @@ static struct ForbidDiagnostics { + return; + } + ++ // FIXME: RooNaNPacker warns about not being implemented for big endian ++ if (level == kWarning ++ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) { ++ std::cerr << "Warning in " << location << " " << msg << std::endl; ++ return; ++ } ++ + FAIL() << "Received unexpected diagnostic of severity " + << level + << " at '" << location << "' reading '" << msg << "'.\n" +-- +2.42.0 + diff --git a/root-np32.patch b/root-np32.patch new file mode 100644 index 0000000..3ac6f41 --- /dev/null +++ b/root-np32.patch @@ -0,0 +1,89 @@ +From 88162e7738d810f8203ed0242179f7af94ded500 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 17 Nov 2023 11:46:14 +0100 +Subject: [PATCH 3/3] Fix pythonizations test errors on ix86 Linux + +====================================================================== +ERROR: test_sliced_array (rdataframe_makenumpy.DataFrameFromNumpy.test_sliced_array) +Test correct reading of a sliced numpy array (#13690) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py", line 153, in test_sliced_array + x_col = df.Take['Long64_t']("x") + ^^^^^^^^^^^^^^^^^^^^^^^^ +cppyy.gbl.std.runtime_error: Could not instantiate Take: + ROOT::RDF::RResultPtr > ROOT::RDF::RInterface::Take(basic_string_view > column = "") => + runtime_error: Column x has type int while the id specified is associated to type Long64_t +---------------------------------------------------------------------- + +====================================================================== +ERROR: test_dtypes (rtensor.AsRTensor.test_dtypes) +Test adoption of numpy arrays with different data types +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rtensor.py", line 45, in test_dtypes + root_obj = ROOT.TMVA.Experimental.RTensor(self.cpptypes[i])(np_obj) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/builddir/build/BUILD/root-6.30.00/redhat-linux-build/lib/ROOT/_pythonization/_tmva/_rtensor.py", line 131, in RTensorInit + return self._original_init_(data,shape,layout) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: none of the 6 overloaded methods succeeded. Full details: + RTensor >::RTensor >(TMVA::Experimental::RTensor >&&) => + TypeError: takes at most 1 arguments (3 given) + RTensor >::RTensor >(const TMVA::Experimental::RTensor >&) => + TypeError: takes at most 1 arguments (3 given) + RTensor >::RTensor >(shared_ptr > container, vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => + TypeError: could not convert argument 1 + RTensor >::RTensor >(vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => + TypeError: takes at most 2 arguments (3 given) + RTensor >::RTensor >(long* data, vector shape, vector strides, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => + TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr) + RTensor >::RTensor >(long* data, vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => + TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr) +---------------------------------------------------------------------- +--- + .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 2 +- + bindings/pyroot/pythonizations/test/rtensor.py | 7 +++++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py +index cd2ebc9b5b..1860bd49f5 100644 +--- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py ++++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py +@@ -147,7 +147,7 @@ class DataFrameFromNumpy(unittest.TestCase): + """ + Test correct reading of a sliced numpy array (#13690) + """ +- table = np.array([[1,2], [3,4]]) ++ table = np.array([[1,2], [3,4]], dtype="int64") + columns = {'x': table[:,0], 'y': table[:,1]} + df = ROOT.RDF.FromNumpy(columns) + x_col = df.Take['Long64_t']("x") +diff --git a/bindings/pyroot/pythonizations/test/rtensor.py b/bindings/pyroot/pythonizations/test/rtensor.py +index 99b458cfa9..070a5d24d0 100644 +--- a/bindings/pyroot/pythonizations/test/rtensor.py ++++ b/bindings/pyroot/pythonizations/test/rtensor.py +@@ -3,6 +3,7 @@ import ROOT + RTensor = ROOT.TMVA.Experimental.RTensor + import numpy as np + import platform ++import sys + + + def check_shape(root_obj, np_obj): +@@ -28,8 +29,10 @@ class AsRTensor(unittest.TestCase): + """ + Test adoption of numpy arrays with different data types + """ +- #using long long on Linux does not work although it is same size as long +- if (platform.system() == "Windows") : ++ # Using long long on 64 bit Linux does not work although it is ++ # same size as long ++ if ((platform.system() == "Windows") or ++ ((platform.system() == "Linux") and (sys.maxsize < 2**32))) : + self.cpptypes[1] = "long long" + self.cpptypes[3] = "unsigned long long" + +-- +2.42.0 + diff --git a/root-old-gtest.patch b/root-old-gtest.patch new file mode 100644 index 0000000..bdefd48 --- /dev/null +++ b/root-old-gtest.patch @@ -0,0 +1,54 @@ +diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx +index 7553ba4e4a..fefdca8e97 100644 +--- a/roofit/histfactory/test/testHistFactory.cxx ++++ b/roofit/histfactory/test/testHistFactory.cxx +@@ -752,6 +752,7 @@ std::string getNameFromInfo(testing::TestParamInfo const & + return getName(paramInfo.param, false); + } + ++/* + INSTANTIATE_TEST_SUITE_P( + HistFactory, HFFixture, + testing::Combine(testing::Values(MakeModelMode::OverallSyst, MakeModelMode::HistoSyst, MakeModelMode::StatSyst, +@@ -784,3 +785,4 @@ INSTANTIATE_TEST_SUITE_P(HistFactoryCodeGen, HFFixtureFit, + testing::Values(RooFit::EvalBackend::Codegen())), + getNameFromInfo); + #endif ++*/ +diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx +index 34fb559cd1..09734f5c5d 100644 +--- a/roofit/roofitcore/test/testRooProdPdf.cxx ++++ b/roofit/roofitcore/test/testRooProdPdf.cxx +@@ -64,6 +64,7 @@ TEST_P(TestProdPdf, CachingOpt) + << "b=" << b.getVal() << " +- " << b.getError() << " doesn't match truth value with O" << _optimize << "."; + } + ++/* + INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, + testing::Combine(testing::Values(0, 1, 2), + testing::Values(ROOFIT_EVAL_BACKENDS)), +@@ -72,6 +73,7 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, + ss << "opt" << std::get<0>(paramInfo.param) << std::get<1>(paramInfo.param).name(); + return ss.str(); + }); ++*/ + + TEST(RooProdPdf, TestGetPartIntList) + { +diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx +index 3099d82060..5846353043 100644 +--- a/roofit/roofitcore/test/testTestStatistics.cxx ++++ b/roofit/roofitcore/test/testTestStatistics.cxx +@@ -585,6 +585,7 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values(ROOFIT_EV + return ss.str(); + }); + ++/* + INSTANTIATE_TEST_SUITE_P(RooNLLVar, OffsetBinTest, + testing::Combine(testing::Values(ROOFIT_EVAL_BACKENDS), // EvalBackend + testing::Values(false, true), // unbinned or binned +@@ -622,3 +623,4 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVarBinnedL, OffsetBinTest, + ss << (std::get<5>(paramInfo.param) ? "BinnedL" : ""); + return ss.str(); + }); ++*/ diff --git a/root-pcre2-6.28.patch b/root-pcre2-6.28.patch deleted file mode 100644 index db907b5..0000000 --- a/root-pcre2-6.28.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff -ur root-6.28.06.orig/core/base/CMakeLists.txt root-6.28.06/core/base/CMakeLists.txt ---- root-6.28.06.orig/core/base/CMakeLists.txt 2023-08-28 13:26:43.000000000 +0200 -+++ root-6.28.06/core/base/CMakeLists.txt 2023-10-02 01:53:35.956143717 +0200 -@@ -212,9 +212,15 @@ - - ROOT_OBJECT_LIBRARY(Base ${BASE_SOURCES}) - -+if (PCRE2_FOUND) -+ set(PCRE_INCDIR ${PCRE2_INCLUDE_DIR}) -+else() -+ set(PCRE_INCDIR ${PCRE_INCLUDE_DIR}) -+endif() -+ - target_include_directories(Base PRIVATE - ${BASE_V7_INC} -- ${PCRE_INCLUDE_DIR} -+ ${PCRE_INCDIR} - res - ${CMAKE_SOURCE_DIR}/core/foundation/res - ${CMAKE_SOURCE_DIR}/core/clib/inc -@@ -237,6 +243,11 @@ - ${CMAKE_BINARY_DIR}/ginclude/TApplicationCommandLineOptionsHelp.h - ) - -+if(PCRE2_FOUND) -+ set_source_files_properties(src/TPRegexp.cxx -+ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2) -+endif() -+ - ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS}) - - file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/man) -diff -ur root-6.28.06.orig/core/CMakeLists.txt root-6.28.06/core/CMakeLists.txt ---- root-6.28.06.orig/core/CMakeLists.txt 2023-08-28 13:26:43.000000000 +0200 -+++ root-6.28.06/core/CMakeLists.txt 2023-10-02 01:47:00.134174041 +0200 -@@ -261,9 +261,15 @@ - - target_include_directories(G__Core PRIVATE ${CMAKE_SOURCE_DIR}/core/clingutils/inc) - -+if (PCRE2_FOUND) -+ set (PCRE_TGT PCRE2::PCRE2) -+else() -+ set (PCRE_TGT PCRE::PCRE) -+endif() -+ - target_link_libraries(Core - PRIVATE -- PCRE::PCRE -+ ${PCRE_TGT} - ${LIBLZMA_LIBRARIES} - xxHash::xxHash - LZ4::LZ4 diff --git a/root-pcre2.patch b/root-pcre2.patch index 8d1adee..359acc2 100644 --- a/root-pcre2.patch +++ b/root-pcre2.patch @@ -165,6 +165,26 @@ index 464155fd50..252aa56737 100644 endif() endif() endif() +diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt +index df701fedea..5798c93775 100644 +--- a/core/base/CMakeLists.txt ++++ b/core/base/CMakeLists.txt +@@ -214,7 +214,14 @@ target_include_directories(Core PUBLIC + $ + ) + +-target_link_libraries(Core PRIVATE PCRE::PCRE) ++if(PCRE2_FOUND) ++ target_link_libraries(Core PRIVATE PCRE2::PCRE2) ++ set_source_files_properties(src/TPRegexp.cxx ++ TARGET_DIRECTORY Core ++ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2) ++else() ++ target_link_libraries(Core PRIVATE PCRE::PCRE) ++endif() + + ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS}) + diff --git a/core/base/src/TPRegexp.cxx b/core/base/src/TPRegexp.cxx index 949b8cc8e9..d70f3e5b8b 100644 --- a/core/base/src/TPRegexp.cxx diff --git a/root-stressvector-test-fails-on-ix86.patch b/root-stressvector-test-fails-on-ix86.patch deleted file mode 100644 index fa519f2..0000000 --- a/root-stressvector-test-fails-on-ix86.patch +++ /dev/null @@ -1,37 +0,0 @@ -From aae37d7eceeb25e4a09e8504275083e6830832d6 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 28 Feb 2023 11:33:28 +0100 -Subject: [PATCH] The stressVector test fails on ix86 due to too strict check: - -DeltaR TLorentzVector time = 0.2610929 (sec) -DeltaR XYZTVector time = 0.22973299 (sec) -DeltaR PtEtaPhiEVector time = 0.0016570091 (sec) --12823.3585955796 -12823.35859557827 -12823.35859557827 -Test DeltaR failed !! - -The new value for the scale parameter (50) was calculated from the -above values: - -root [2] (-12823.3585955796 - (-12823.35859557827)) / -12823.3585955796 / std::numeric_limits::epsilon() / 10 -(double) 46.762663 ---- - test/stressVector.cxx | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/test/stressVector.cxx b/test/stressVector.cxx -index b0ba21e845..18dc97d421 100644 ---- a/test/stressVector.cxx -+++ b/test/stressVector.cxx -@@ -540,8 +540,7 @@ int main(int argc,const char *argv[]) { - s1=a.testDeltaR (v1, t, t1, "DeltaR TLorentzVector " ); - s2=a.testDeltaR (v2, t, t2, "DeltaR XYZTVector " ); - s3=a.testDeltaR (v3, t, t3, "DeltaR PtEtaPhiEVector " ); -- a.check("DeltaR",s1,s2,s3,20); -- -+ a.check("DeltaR", s1, s2, s3, 50); - - int n1, n2, n3; - n1 = a.testAnalysis (v1, t, t1, "Analysis1 TLorentzVector " ); --- -2.40.1 - diff --git a/root-tmva-rbdt.patch b/root-tmva-rbdt.patch index b7afb2d..b31769a 100644 --- a/root-tmva-rbdt.patch +++ b/root-tmva-rbdt.patch @@ -28,7 +28,7 @@ index ebe1be187b..5dcf5175f2 100644 +++ b/tmva/tmva/test/CMakeLists.txt @@ -29,7 +29,7 @@ if(dataframe) # Tree inference system and user interface - if(NOT MSVC OR ${LLVM_VERSION} VERSION_LESS 13.0.0 OR llvm13_broken_tests) + if(NOT MSVC OR llvm13_broken_tests) ROOT_ADD_GTEST(branchlessForest branchlessForest.cxx LIBRARIES TMVA) - ROOT_ADD_GTEST(rbdt rbdt.cxx LIBRARIES ROOTVecOps TMVA) + ROOT_ADD_GTEST(rbdt rbdt.cxx LIBRARIES ROOTVecOps TMVAUtils) diff --git a/root.spec b/root.spec index 96f8888..547164c 100644 --- a/root.spec +++ b/root.spec @@ -7,13 +7,7 @@ %global python3_version_uscore %(tr . _ <<< "%{python3_version}") -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -# Building the experimental ROOT 7 classes requires c++-17. -# This is the default for gcc 11 and later. %global root7 1 -%else -%global root7 0 -%endif %if %{?rhel}%{!?rhel:0} == 8 %ifarch %{power64} @@ -33,26 +27,27 @@ %global tmvasofieparser 1 %endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -# DistRDF requires Python 3.8+ -%global distrdf %{dataframe} -%else +%if %{?rhel}%{!?rhel:0} == 8 +# DistRDF requires Python 3.8 or later, RHEL 8 has version 3.6 %global distrdf 0 +%else +%global distrdf %{dataframe} %endif -# qt6-srpm-macros not in buildroot for Fedora 37/38 -# https://bugzilla.redhat.com/show_bug.cgi?id=2220859 -%if %{?fedora}%{!?fedora:0} == 37 || %{?fedora}%{!?fedora:0} == 38 -%global qt6_qtwebengine_arches aarch64 x86_64 +%if %{?rhel}%{!?rhel:0} == 8 +# Requires nlohmann json version 3.9 or later, RHEL 8 has version 3.6 +%global bundlejson 1 +%else +%global bundlejson 0 %endif # Do not generate autoprovides for Python modules %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.28.08 +Version: 6.30.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -98,30 +93,26 @@ Patch6: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch Patch7: %{name}-big-endian-byte-swap.patch # https://github.com/root-project/root/pull/12375 Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch -# https://github.com/root-project/root/pull/12390 -Patch9: %{name}-stressvector-test-fails-on-ix86.patch -# https://github.com/root-project/root/pull/12423 -Patch10: %{name}-dont-install-roofit-files-fix.patch -# https://github.com/root-project/root/issues/12427 -# https://github.com/root-project/root/pull/12468 -Patch11: %{name}-fixes-for-32bit-builds.patch -# https://github.com/root-project/root/pull/12476 -Patch12: %{name}-do-not-remove-Wp-before-D-and-U.patch -# Avoid boolean operators on numpy arrays in unit test -# https://github.com/root-project/root/issues/12162 -# https://github.com/root-project/root/pull/13612 -Patch13: %{name}-boolean-numpy-array.patch +# https://github.com/root-project/root/pull/10303 +Patch9: %{name}-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch # Port to pcre2 # https://github.com/root-project/root/issues/11395 # https://github.com/root-project/root/pull/13771 -Patch14: %{name}-pcre2.patch -Patch15: %{name}-pcre2-6.28.patch +Patch10: %{name}-pcre2.patch # src/RBDT.cxx is a source file of both libTMVA and libTMVAUtils # https://github.com/root-project/root/pull/13863 -Patch16: %{name}-tmva-rbdt.patch +Patch11: %{name}-tmva-rbdt.patch # Fix cmake/modules/FindZeroMQ.cmake # https://github.com/root-project/root/pull/13995 -Patch17: %{name}-Fix-cmake-modules-FindZeroMQ.cmake.patch +Patch12: %{name}-Fix-cmake-modules-FindZeroMQ.cmake.patch +# https://github.com/root-project/root/pull/14111 +Patch13: %{name}-avoid-out-of-memory-during-linking.patch +# https://github.com/root-project/root/pull/14112 +Patch14: %{name}-clad.patch +Patch15: %{name}-gtest-back.patch +Patch16: %{name}-np32.patch +# Only for EPEL 8 - disable tests not working with old gtest +Patch17: %{name}-old-gtest.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -175,7 +166,6 @@ BuildRequires: dcap-devel BuildRequires: xrootd-client-devel >= 1:5.0.0 BuildRequires: cfitsio-devel BuildRequires: davix-devel >= 0.6.4 -BuildRequires: gfal2-devel BuildRequires: R-Rcpp-devel BuildRequires: R-RInside-devel BuildRequires: readline-devel @@ -192,7 +182,9 @@ BuildRequires: cmake-data >= 3.18.3-1 %else BuildRequires: openblas-devel %endif -BuildRequires: json-devel +%if ! %{bundlejson} +BuildRequires: json-devel >= 3.9 +%endif %if %{?fedora}%{!?fedora:0} # Disable uring in EPEL 8 and 9 (liburing is available, # but uring not supported by the kernel) @@ -328,7 +320,11 @@ 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 +%if %{bundlejson} +Provides: bundled(json-devel) = 3.10.5 +%else +Requires: json-devel >= 3.9 +%endif # Fonts Requires: xorg-x11-fonts-ISO8859-1-75dpi Requires: font(freesans) @@ -356,19 +352,9 @@ Obsoletes: %{name}-table < 6.18.00 Obsoletes: %{name}-memstat < 6.26.00 Obsoletes: %{name}-montecarlo-vmc < 6.26.00 Obsoletes: %{name}-doc < 6.26.00 +Obsoletes: %{name}-io-gfal < 6.30.00 +Obsoletes: %{name}-roofit-common < 6.30.00 %if %{?rhel}%{!?rhel:0} == 8 -# Obsolete the 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 # Obsolete the DistRDF package in EPEL 8 # Minimum Python version requirement introduced Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00 @@ -910,14 +896,6 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description io-dcache This package contains the dCache extension for ROOT. -%package io-gfal -Summary: Grid File Access Library input/output library for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} - -%description io-gfal -This package contains the Grid File Access Library extension for ROOT. - %package io-sql Summary: SQL input/output library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1208,7 +1186,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 >= 7 +Requires: js-jsroot >= 7.5 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -1336,26 +1314,6 @@ 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-2-Clause -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-2-Clause @@ -1368,7 +1326,6 @@ 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}-roofit-common%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1502,7 +1459,6 @@ Summary: Multi-process support for RooFit License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-common%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-zmq%{?_isa} = %{version}-%{release} %description roofit-multiprocess @@ -1552,6 +1508,39 @@ Requires: %{name}-roostats%{?_isa} = %{version}-%{release} %description hist-factory Create RooFit probability density functions from ROOT histograms. + +%package xroofit +Summary: Extra tools for RooFit projects +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-matrix%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-hs3%{?_isa} = %{version}-%{release} +Requires: %{name}-roostats%{?_isa} = %{version}-%{release} + +%description xroofit +The RooFit packages provide a toolkit for modeling the expected +distribution of events in a physics analysis. Models can be used to +perform likelihood fits, produce plots, and generate "toy Monte +Carlo" samples for various studies. The RooFit tools are integrated +with the object-oriented and interactive ROOT graphical environment. + +RooFit has been developed for the BaBar collaboration, a high energy +physics experiment at the Stanford Linear Accelerator Center, and is +primarily targeted to the high-energy physicists using the ROOT +analysis environment, but the general nature of the package make it +suitable for adoption in different disciplines as well. + +This package contains extra tools for RooFit projects. %endif %package sql-mysql @@ -1809,7 +1798,7 @@ written in python. Summary: Static files for the Jupyter ROOT Notebook BuildArch: noarch Requires: %{name}-core = %{version}-%{release} -Requires: js-jsroot >= 7 +Requires: js-jsroot >= 7.5 %if %{?fedora}%{!?fedora:0} # jupyter-notebook not available in RHEL/EPEL # some functionality missing @@ -1993,41 +1982,6 @@ Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} %description tree-ntuple-utils This package contains utility functions for ntuples. - -%if %{roofit} -%package xroofit -Summary: Extra tools for RooFit projects -License: BSD-2-Clause -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-gui%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-matrix%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-hs3%{?_isa} = %{version}-%{release} -Requires: %{name}-roostats%{?_isa} = %{version}-%{release} - -%description xroofit -The RooFit packages provide a toolkit for modeling the expected -distribution of events in a physics analysis. Models can be used to -perform likelihood fits, produce plots, and generate "toy Monte -Carlo" samples for various studies. The RooFit tools are integrated -with the object-oriented and interactive ROOT graphical environment. - -RooFit has been developed for the BaBar collaboration, a high energy -physics experiment at the Stanford Linear Accelerator Center, and is -primarily targeted to the high-energy physicists using the ROOT -analysis environment, but the general nature of the package make it -suitable for adoption in different disciplines as well. - -This package contains extra tools for RooFit projects. -%endif %endif %prep @@ -2050,7 +2004,9 @@ This package contains extra tools for RooFit projects. %patch -P 14 -p1 %patch -P 15 -p1 %patch -P 16 -p1 +%if %{?rhel}%{!?rhel:0} == 8 %patch -P 17 -p1 +%endif # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2063,7 +2019,9 @@ rm -rf graf2d/freetype/src rm -rf builtins/davix rm -rf builtins/glew rm -rf builtins/lz4 +%if ! %{bundlejson} rm -rf builtins/nlohmann +%endif rm -rf builtins/openssl rm -rf builtins/pcre rm -rf builtins/tbb @@ -2073,17 +2031,15 @@ rm -rf builtins/zeromq rm -rf builtins/zlib rm -rf builtins/zstd # * lzma -rm -rf core/lzma/src/*.tar.gz +rm core/lzma/src/*.tar.gz # * gl2ps rm graf3d/gl/src/gl2ps.cxx graf3d/gl/src/gl2ps/gl2ps.h # * unuran -rm -rf math/unuran/src/*.tar.gz +rm math/unuran/src/*.tar.gz # * xrootd-private-devel headers rm -rf proof/xrdinc/* # * x11 extension headers rm -rf graf2d/x11/inc/X11 -# * mathjax -rm -rf documentation/doxygen/mathjax.tar.gz # * jsroot rm -rf js/[^f]* js/files/draw.htm js/files/online.htm @@ -2091,12 +2047,6 @@ rm -rf js/[^f]* js/files/draw.htm js/files/online.htm rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css -%if %{?rhel}%{!?rhel:0} == 8 -# Allow older json on EPEL 8 -sed 's!nlohmann_json 3.9!nlohmann_json 3.6!' \ - -i cmake/modules/SearchInstalledSoftware.cmake -%endif - %build # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO @@ -2142,7 +2092,11 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_llvm:BOOL=ON \ -Dbuiltin_lz4:BOOL=OFF \ -Dbuiltin_lzma:BOOL=OFF \ +%if %{bundlejson} + -Dbuiltin_nlohmannjson:BOOL=ON \ +%else -Dbuiltin_nlohmannjson:BOOL=OFF \ +%endif -Dbuiltin_openssl:BOOL=OFF \ -Dbuiltin_openui5:BOOL=ON \ -Dbuiltin_pcre:BOOL=OFF \ @@ -2156,7 +2110,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dbuiltin_zeromq:BOOL=OFF \ -Dbuiltin_zlib:BOOL=OFF \ -Dbuiltin_zstd:BOOL=OFF \ - -Dalien:BOOL=OFF \ %ifnarch %{ix86} %{arm} -Darrow:BOOL=ON \ %else @@ -2186,12 +2139,9 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dfitsio:BOOL=ON \ -Dfortran:BOOL=ON \ -Dgdml:BOOL=ON \ - -Dgfal:BOOL=ON \ - -Dgsl_shared:BOOL=ON \ -Dgviz:BOOL=ON \ -Dhttp:BOOL=ON \ -Dimt:BOOL=ON \ - -Djemalloc:BOOL=OFF \ -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ @@ -2199,17 +2149,17 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dminuit2_mpi:BOOL=OFF \ -Dminuit2_omp:BOOL=OFF \ -Dmlp:BOOL=ON \ - -Dmonalisa:BOOL=OFF \ -Dmpi:BOOL=OFF \ -Dmysql:BOOL=ON \ -Dodbc:BOOL=ON \ -Dopengl:BOOL=ON \ -Doracle:BOOL=OFF \ -Dpgsql:BOOL=ON \ + -Dproof:BOOL=ON \ + -Dpyroot:BOOL=ON \ + -Dpyroot-python2:BOOL=OFF \ -Dpythia6:BOOL=OFF \ -Dpythia8:BOOL=ON \ - -Dpyroot:BOOL=ON \ - -Dpyroot_legacy:BOOL=OFF \ %ifarch %{qt5_qtwebengine_arches} -Dqt5web:BOOL=ON \ %else @@ -2247,7 +2197,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dspectrum:BOOL=ON \ -Dsqlite:BOOL=ON \ -Dssl:BOOL=ON \ - -Dtcmalloc:BOOL=OFF \ -Dtmva:BOOL=ON \ -Dtmva-cpu:BOOL=ON \ -Dtmva-gpu:BOOL=OFF \ @@ -2258,6 +2207,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" %else -Dtmva-sofie:BOOL=OFF \ %endif + -Dunfold:BOOL=ON \ -Dunuran:BOOL=ON \ %if %{?fedora}%{!?fedora:0} -During:BOOL=ON \ @@ -2272,7 +2222,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dx11:BOOL=ON \ -Dxml:BOOL=ON \ -Dxrootd:BOOL=ON \ - -Dxproofd:BOOL=OFF \ -Dfail-on-missing:BOOL=ON \ -Dtesting:BOOL=ON \ -Dtest_distrdf_pyspark:BOOL=OFF \ @@ -2414,6 +2363,8 @@ sed -e 's!/usr/bin/env python!%{__python3}!' \ %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/GenerateModel.py \ %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/MulticlassKeras.py \ %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/RegressionKeras.py +sed -e 's!/usr/bin/python!%{__python3}!' \ + -i %{buildroot}%{_datadir}/%{name}/pdg_table_update.py # Remove some junk rm %{buildroot}%{_datadir}/%{name}/proof/*.sample @@ -2422,7 +2373,6 @@ rm %{buildroot}%{_datadir}/%{name}/root.desktop rm %{buildroot}%{_bindir}/setxrd* rm %{buildroot}%{_bindir}/thisroot* rm %{buildroot}%{_pkgdocdir}/INSTALL -rm %{buildroot}%{_pkgdocdir}/README.ALIEN rm %{buildroot}%{_pkgdocdir}/README.CXXMODULES.md rm %{buildroot}%{_pkgdocdir}/README.MONALISA @@ -2434,16 +2384,13 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins %if ! %{root7} rm TBrowserImp/P030_RWebBrowserImp.C %endif -rm TDataSetManager/P020_TDataSetManagerAliEn.C -rm TFile/P070_TAlienFile.C +rm TFile/P050_TGFALFile.C rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C -rm TGrid/P010_TAlien.C rm TProofMgr/P010_TXProofMgr.C rm TProofServ/P010_TXProofServ.C rm TSlave/P010_TXSlave.C rm TSQLServer/P040_TOracleServer.C -rm TSystem/P030_TAlienSystem.C rm TVirtualGeoConverter/P010_TGeoVGConverter.C %if ! %{root7} rm TVirtualGeoPainter/P020_RGeoPainter.C @@ -2452,7 +2399,6 @@ rm TVirtualGLImp/P020_TGWin32GL.C rm TVirtualMonitoringWriter/P010_TMonaLisaWriter.C rm TVirtualX/P030_TGWin32.C rm TVirtualX/P050_TGQuartz.C -rmdir TGrid rmdir TProofMgr rmdir TProofServ rmdir TSlave @@ -2460,7 +2406,7 @@ rmdir TVirtualGeoConverter popd # Replace bundled jsroot with symlinks to system version -for x in build img modules scripts files/draw.htm files/online.htm ; do +for x in build img mathjax modules scripts files/draw.htm files/online.htm ; do ln -nrs %{buildroot}%{_jsdir}/jsroot/$x \ %{buildroot}%{_datadir}/%{name}/js/$x done @@ -2481,13 +2427,8 @@ If this target is not used this warning can be ignored.")' \ -e '/Possible reasons include/,/)/d' \ -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets.cmake -# Rename to avoid name clashes -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 - # Create includelist files ... -for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm/*'` ; do +for f in `find %{_vpath_builddir} -name cmake_install.cmake -a '!' -path '*/llvm-project/*'` ; do l=`sed 's!%{_vpath_builddir}/\(.*\)/cmake_install.cmake!includelist-\1!' <<< $f` l=`tr / - <<< $l` tmpdir=`mktemp -d` @@ -2518,6 +2459,9 @@ for x in df014_CsvDataSource_MuRun2010B_cpp.csv \ ln -sf ../../files/tutorials/df014_CsvDataSource_MuRun2010B.csv $x done popd +pushd tmva/tmva/test +ln -s ../../../../files files +popd pushd tmva/tmva/test/DNN ln -s ../../../../../files files popd @@ -2558,7 +2502,7 @@ popd # # - tutorial-dataframe-df104_HiggsToTwoPhotons-py # - tutorial-dataframe-df105_WBosonAnalysis-py -# - tutorial-dataframe-df106_HiggsToFourLeptons-py +# - tutorial-dataframe-df106_HiggsToFourLeptons(-py) # - tutorial-dataframe-df107_SingleTopAnalysis-py # - tutorial-rcanvas-df104-py # - tutorial-rcanvas-df105-py @@ -2577,6 +2521,10 @@ popd # reads input data over network # http://root.cern.ch/files/NanoAOD_DoubleMuon_CMS2011OpenData.root (1.5 GB) # +# - tutorial-v7-ntuple-ntpl008_import +# reads input data over network +# http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root (20 MB) +# # - gtest-net-davix-test-RRawFileDavix # reads input file over network # http://root.cern.ch/files/davix.test @@ -2585,6 +2533,10 @@ popd # reads input file over network # root://eospublic.cern.ch/eos/root-eos/xrootd.test # +# - gtest-net-netxng-test-TNetXNGFileTest +# reads input file over network +# root://eospublic.cern.ch/eos/root-eos/h1/dstarmb.root +# # - gtest-tmva-tmva-test-rreader # - gtest-tmva-tmva-test-rstandardscaler # - tutorial-tmva-tmva003_RReader @@ -2596,6 +2548,10 @@ popd # reads input data over network # http://root.cern/files/tmva101.root # +# - tutorial-tmva-RBatchGenerator_NumPy-py +# reads input data over network +# http://root.cern/files/Higgs_data.root +# # - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py # these tests require the numba python module which is not available @@ -2618,20 +2574,23 @@ 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-df106_HiggsToFourLeptons|\ tutorial-dataframe-df107_SingleTopAnalysis-py|\ tutorial-rcanvas-df104-py|\ tutorial-rcanvas-df105-py|\ tutorial-v7-global_temperatures.cxx|\ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ +tutorial-v7-ntuple-ntpl008_import|\ gtest-net-davix-test-RRawFileDavix|\ gtest-net-netxng-test-RRawFileNetXNG|\ +gtest-net-netxng-test-TNetXNGFileTest|\ gtest-tmva-tmva-test-rreader|\ gtest-tmva-tmva-test-rstandardscaler|\ tutorial-tmva-tmva003_RReader|\ tutorial-tmva-tmva004_RStandardScaler|\ tutorial-tmva-tmva103_Application|\ +tutorial-tmva-RBatchGenerator_NumPy-py|\ test-import-numba|\ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ test-webgui-ping" @@ -2647,12 +2606,18 @@ tutorial-dataframe-df026_AsNumpyArrays-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif +%ifarch %{ix86} +# - gtest-tree-dataframe-test-dataframe-concurrency +# "There's already an active task arena." +excluded="${excluded}|\ +gtest-tree-dataframe-test-dataframe-concurrency" +%endif + %ifarch %{power64} # PPC64LE specific failures # - test-stresshistofit-interpreted # - test-stresshistogram-interpreted # - test-stressmathcore-interpreted -# - test-stressroostats-interpreted # # Always timeout (hang?) # - test-stressinterpreter @@ -2661,7 +2626,6 @@ excluded="${excluded}|\ test-stresshistofit-interpreted|\ test-stresshistogram-interpreted|\ test-stressmathcore-interpreted|\ -test-stressroostats-interpreted|\ test-stressinterpreter|\ tutorial-unuran-unuranFoamTest" @@ -2675,7 +2639,6 @@ tutorial-unuran-unuranFoamTest" # - pyunittests-pyroot-import-load-libs # # - tutorial-fit-combinedFit(-py) -# - tutorial-fit-exampleFit3D # - tutorial-fit-fit2dHist # - tutorial-fit-fitCircle # - tutorial-fit-line3Dfit @@ -2686,10 +2649,17 @@ tutorial-unuran-unuranFoamTest" # - tutorial-multicore-mtbb001_fillHistos # - tutorial-multicore-mtbb101_fillNtuples # - tutorial-multicore-mtbb201_parallelHistoFill +# - tutorial-rcanvas-* +# - tutorial-v7-concurrentfill.cxx +# - tutorial-v7-ntuple-ntpl001_staff +# - tutorial-v7-ntuple-ntpl002_vector +# - tutorial-v7-ntuple-ntpl005_introspection +# - tutorial-v7-ntuple-ntpl006_friends +# - tutorial-v7-ntuple-ntpl007_mtFill +# - tutorial-v7-simple.cxx excluded="${excluded}|\ pyunittests-pyroot-import-load-libs|\ tutorial-fit-combinedFit|\ -tutorial-fit-exampleFit3D|\ tutorial-fit-fit2dHist|\ tutorial-fit-fitCircle|\ tutorial-fit-line3Dfit|\ @@ -2699,32 +2669,64 @@ tutorial-multicore-mt201_parallelHistoFill|\ tutorial-multicore-mt304_fillHistos|\ tutorial-multicore-mtbb001_fillHistos|\ tutorial-multicore-mtbb101_fillNtuples|\ -tutorial-multicore-mtbb201_parallelHistoFill" +tutorial-multicore-mtbb201_parallelHistoFill|\ +tutorial-rcanvas|\ +tutorial-v7-concurrentfill.cxx|\ +tutorial-v7-ntuple-ntpl001_staff|\ +tutorial-v7-ntuple-ntpl002_vector|\ +tutorial-v7-ntuple-ntpl005_introspection|\ +tutorial-v7-ntuple-ntpl006_friends|\ +tutorial-v7-ntuple-ntpl007_mtFill|\ +tutorial-v7-simple.cxx" %endif %endif %ifarch s390x # - gtest-roofit-roofitcore-test-testNaNPacker -# - tutorial-roofit-rf612_recoverFromInvalidParameters # Uses "Packed NaN" feature, not implemented for big endian. excluded="${excluded}|\ -gtest-roofit-roofitcore-test-testNaNPacker|\ -tutorial-roofit-rf612_recoverFromInvalidParameters" +gtest-roofit-roofitcore-test-testNaNPacker" +# - gtest-core-base-test-CoreBaseTests +# - gtest-core-dictgen-test-dictgen-base +# - gtest-core-meta-test-testTDataType +# +# - gtest-tree-dataframe-test-datasource-ntuple # - gtest-tree-ntuple-v7-test-ntuple-basics +# - gtest-tree-ntuple-v7-test-ntuple-bulk # - gtest-tree-ntuple-v7-test-ntuple-endian # - gtest-tree-ntuple-v7-test-ntuple-extended +# - gtest-tree-ntuple-v7-test-ntuple-friends # - gtest-tree-ntuple-v7-test-ntuple-minifile -# - gtest-tree-ntuple-v7-test-ntuple-rdf +# - gtest-tree-ntuple-v7-test-ntuple-modelext +# - gtest-tree-ntuple-v7-test-ntuple-packing +# - gtest-tree-ntuple-v7-test-ntuple-project # - gtest-tree-ntuple-v7-test-ntuple-serialize +# - gtest-tree-ntuple-v7-test-ntuple-show +# - gtest-tree-ntuple-v7-test-ntuple-storage +# - gtest-tree-ntuple-v7-test-ntuple-storage-daos # - gtest-tree-ntuple-v7-test-ntuple-types +# - gtest-tree-ntuple-v7-test-ntuple-view +# - gtest-tree-ntuple-v7-test-rfield-vector +# - gtest-tree-ntupleutil-v7-test-ntuple-importer +# - gtest-tree-ntupleutil-v7-test-ntuple-inspector # https://github.com/root-project/root/issues/12426 # +# - pyunittests-distrdf-unit-backend-test-graph-caching # - pyunittests-pyroot-pyz-rtensor # - pyunittests-pyroot-pyz-stl-vector # - tutorial-dataframe-df006_ranges-py # - tutorial-fit-combinedFit-py +# - tutorial-fit-fitcont +# - tutorial-fit-NumericalMinimization-py # - tutorial-math-exampleFunction-py +# - tutorial-rcanvas-rbox-py +# - tutorial-roofit-rf108_plotbinning-py +# - tutorial-roofit-rf306_condpereventerrors-py +# - tutorial-roofit-rf307_fullpereventerrors-py +# - tutorial-roofit-rf310_sliceplot-py +# - tutorial-roofit-rf708_bphysics-py +# - tutorial-tmva-RBatchGenerator_filters_vectors-py # - tutorial-tmva-TMVA_CNN_Classification-py # - tutorial-tmva-TMVA_Higgs_Classification-py # - tutorial-tmva-TMVA_RNN_Classification-py @@ -2738,18 +2740,43 @@ tutorial-roofit-rf612_recoverFromInvalidParameters" # - test-stresshistogram # - test-stresshistogram-interpreted excluded="${excluded}|\ +gtest-core-base-test-CoreBaseTests|\ +gtest-core-dictgen-test-dictgen-base|\ +gtest-core-meta-test-testTDataType|\ +gtest-tree-dataframe-test-datasource-ntuple|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ +gtest-tree-ntuple-v7-test-ntuple-bulk|\ gtest-tree-ntuple-v7-test-ntuple-endian|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ +gtest-tree-ntuple-v7-test-ntuple-friends|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ -gtest-tree-ntuple-v7-test-ntuple-rdf|\ +gtest-tree-ntuple-v7-test-ntuple-modelext|\ +gtest-tree-ntuple-v7-test-ntuple-packing|\ +gtest-tree-ntuple-v7-test-ntuple-project|\ gtest-tree-ntuple-v7-test-ntuple-serialize|\ +gtest-tree-ntuple-v7-test-ntuple-show|\ +gtest-tree-ntuple-v7-test-ntuple-storage|\ +gtest-tree-ntuple-v7-test-ntuple-storage-daos|\ gtest-tree-ntuple-v7-test-ntuple-types|\ +gtest-tree-ntuple-v7-test-ntuple-view|\ +gtest-tree-ntuple-v7-test-rfield-vector|\ +gtest-tree-ntupleutil-v7-test-ntuple-importer|\ +gtest-tree-ntupleutil-v7-test-ntuple-inspector|\ +pyunittests-distrdf-unit-backend-test-graph-caching|\ pyunittests-pyroot-pyz-rtensor|\ pyunittests-pyroot-pyz-stl-vector|\ tutorial-dataframe-df006_ranges-py|\ tutorial-fit-combinedFit-py|\ +tutorial-fit-fitcont|\ +tutorial-fit-NumericalMinimization-py|\ tutorial-math-exampleFunction-py|\ +tutorial-rcanvas-rbox-py|\ +tutorial-roofit-rf108_plotbinning-py|\ +tutorial-roofit-rf306_condpereventerrors-py|\ +tutorial-roofit-rf307_fullpereventerrors-py|\ +tutorial-roofit-rf310_sliceplot-py|\ +tutorial-roofit-rf708_bphysics-py|\ +tutorial-tmva-RBatchGenerator_filters_vectors-py|\ tutorial-tmva-TMVA_CNN_Classification-py|\ tutorial-tmva-TMVA_Higgs_Classification-py|\ tutorial-tmva-TMVA_RNN_Classification-py|\ @@ -2776,7 +2803,14 @@ test-stressgraphics" # Filter out parts of tests that require remote network access # RNTuple.TClassEBO seg fault # https://github.com/root-project/root/issues/12428 -GTEST_FILTER=-RCsvDS.Remote:RRawFile.Remote:RSqliteDS.Davix:TFile.ReadWithoutGlobalRegistrationWeb:TFile.ReadWithoutGlobalRegistrationNet:RNTuple.TClassEBO \ +GTEST_FILTER=-\ +RCsvDS.Remote:\ +RRawFile.Remote:\ +RSqliteDS.Davix:\ +TChainParsing.RemoteGlob:\ +TFile.ReadWithoutGlobalRegistrationNet:\ +TFile.ReadWithoutGlobalRegistrationWeb:\ +RNTuple.TClassEBO \ %if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) ROOTTEST_IGNORE_PANDAS_PY3=1 \ %endif @@ -2795,12 +2829,9 @@ end %post net-http # Replace bundled jsroot with symlinks to system version -for x in build img modules scripts files/draw.htm files/online.htm ; do +for x in build img mathjax modules scripts files/draw.htm files/online.htm ; do ln -fnrs %{_jsdir}/jsroot/$x %{_datadir}/%{name}/js/$x done -%{?ldconfig} - -%ldconfig_postun net-http %pre -n python%{python3_pkgversion}-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then @@ -2851,143 +2882,6 @@ fi %post core -p /sbin/ldconfig %postun core -p /sbin/ldconfig -%ldconfig_scriptlets multiproc -%ldconfig_scriptlets cling -%ldconfig_scriptlets tpython -%ldconfig_scriptlets -n python%{python3_pkgversion}-%{name} -%ldconfig_scriptlets r -%ldconfig_scriptlets r-tools -%ldconfig_scriptlets genetic -%ldconfig_scriptlets geom -%ldconfig_scriptlets geom-builder -%ldconfig_scriptlets geom-painter -%ldconfig_scriptlets gdml -%ldconfig_scriptlets graf -%ldconfig_scriptlets graf-asimage -%ldconfig_scriptlets graf-fitsio -%ldconfig_scriptlets graf-gpad -%ldconfig_scriptlets graf-gviz -%ldconfig_scriptlets graf-postscript -%ldconfig_scriptlets graf-x11 -%ldconfig_scriptlets graf3d -%ldconfig_scriptlets graf3d-csg -%ldconfig_scriptlets graf3d-eve -%ldconfig_scriptlets graf3d-gl -%ldconfig_scriptlets graf3d-gviz3d -%ldconfig_scriptlets graf3d-x3d -%ldconfig_scriptlets gui -%ldconfig_scriptlets gui-html -%ldconfig_scriptlets gui-fitpanel -%ldconfig_scriptlets gui-ged -%ldconfig_scriptlets gui-builder -%ldconfig_scriptlets gui-recorder -%ldconfig_scriptlets hbook -%ldconfig_scriptlets hist -%ldconfig_scriptlets hist-painter -%ldconfig_scriptlets spectrum -%ldconfig_scriptlets spectrum-painter -%ldconfig_scriptlets html -%ldconfig_scriptlets io -%ldconfig_scriptlets io-dcache -%ldconfig_scriptlets io-gfal -%ldconfig_scriptlets io-sql -%ldconfig_scriptlets io-xml -%ldconfig_scriptlets io-xmlparser -%ldconfig_scriptlets foam -%ldconfig_scriptlets fftw -%ldconfig_scriptlets fumili -%ldconfig_scriptlets genvector -%ldconfig_scriptlets mathcore -%ldconfig_scriptlets mathmore -%ldconfig_scriptlets matrix -%ldconfig_scriptlets minuit -%ldconfig_scriptlets minuit2 -%ldconfig_scriptlets mlp -%ldconfig_scriptlets physics -%ldconfig_scriptlets quadp -%ldconfig_scriptlets smatrix -%ldconfig_scriptlets splot -%ldconfig_scriptlets unuran -%ldconfig_scriptlets vecops -%ldconfig_scriptlets montecarlo-eg -%ldconfig_scriptlets montecarlo-pythia8 -%ldconfig_scriptlets net -%ldconfig_scriptlets net-rpdutils -%ldconfig_scriptlets net-auth -%ldconfig_scriptlets net-davix -%ldconfig_scriptlets net-httpsniff -%ldconfig_scriptlets netx -%ldconfig_scriptlets proof -%ldconfig_scriptlets proof-bench -%ldconfig_scriptlets proof-player -%ldconfig_scriptlets proof-sessionviewer -%if %{roofit} -%ldconfig_scriptlets roofit -%ldconfig_scriptlets roofit-common -%ldconfig_scriptlets roofit-core -%ldconfig_scriptlets roofit-more -%ldconfig_scriptlets roofit-batchcompute -%if %{dataframe} -%ldconfig_scriptlets roofit-dataframe-helpers -%endif -%ldconfig_scriptlets roofit-hs3 -%ldconfig_scriptlets roofit-jsoninterface -%if %{?fedora}%{!?fedora:0} >= 40 -%ldconfig_scriptlets roofit-multiprocess -%ldconfig_scriptlets roofit-zmq -%endif -%ldconfig_scriptlets roostats -%ldconfig_scriptlets hist-factory -%endif -%ldconfig_scriptlets sql-mysql -%ldconfig_scriptlets sql-odbc -%ldconfig_scriptlets sql-sqlite -%ldconfig_scriptlets sql-pgsql -%ldconfig_scriptlets tmva -%if %{dataframe} -%ldconfig_scriptlets tmva-utils -%endif -%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 -%if %{dataframe} -%ldconfig_scriptlets tree-dataframe -%endif -%ldconfig_scriptlets tree-player -%ldconfig_scriptlets tree-viewer -%ldconfig_scriptlets tree-webviewer -%ldconfig_scriptlets unfold -%ldconfig_scriptlets gui-webdisplay -%ifarch %{qt5_qtwebengine_arches} -%ldconfig_scriptlets gui-qt5webdisplay -%endif -%ifarch %{qt6_qtwebengine_arches} -%ldconfig_scriptlets gui-qt6webdisplay -%endif -%ldconfig_scriptlets gui-webgui6 -%if %{root7} -%ldconfig_scriptlets geom-webviewer -%ldconfig_scriptlets graf-gpadv7 -%ldconfig_scriptlets graf-primitives -%ldconfig_scriptlets graf3d-eve7 -%ldconfig_scriptlets gui-browsable -%ldconfig_scriptlets gui-browserv7 -%ldconfig_scriptlets gui-canvaspainter -%ldconfig_scriptlets gui-fitpanelv7 -%ldconfig_scriptlets histv7 -%ldconfig_scriptlets hist-draw -%ldconfig_scriptlets tree-ntuple -%ldconfig_scriptlets tree-ntuple-utils -%if %{roofit} -%ldconfig_scriptlets xroofit -%endif -%endif - %files %{_bindir}/hadd %{_bindir}/root @@ -3055,9 +2949,13 @@ fi %dir %{_datadir}/%{name}/plugins %dir %{_datadir}/%{name}/plugins/* %dir %{_includedir}/%{name} +%if %{bundlejson} +%dir %{_includedir}/%{name}/nlohmann +%{_includedir}/%{name}/nlohmann/json.hpp +%{_includedir}/%{name}/nlohmann/json_fwd.hpp +%endif %{_includedir}/%{name}/RConfigOptions.h %{_includedir}/%{name}/RConfigure.h -%{_includedir}/%{name}/RGitCommit.h %{_includedir}/%{name}/compiledata.h %{_includedir}/%{name}/module.modulemap %dir %{_includedir}/%{name}/Math @@ -3086,13 +2984,10 @@ fi %doc interpreter/cling/CREDITS.txt %doc interpreter/cling/README.md %license interpreter/cling/LICENSE.TXT -%doc interpreter/llvm/src/llvm-CREDITS.TXT -%doc interpreter/llvm/src/llvm-README.txt -%license interpreter/llvm/src/llvm-LICENSE.TXT %files testsupport %{_includedir}/%{name}/ROOT/TestSupport.hxx -%{_libdir}/%{name}/libTestSupport.a +%{_libdir}/%{name}/TestSupport %doc core/testsupport/README.md %files tpython -f includelist-bindings-tpython @@ -3314,11 +3209,6 @@ fi %{_datadir}/%{name}/plugins/TFile/P040_TDCacheFile.C %{_datadir}/%{name}/plugins/TSystem/P020_TDCacheSystem.C -%files io-gfal -f includelist-io-gfal -%{_libdir}/%{name}/libGFAL.* -%{_libdir}/%{name}/libGFAL_rdict.pcm -%{_datadir}/%{name}/plugins/TFile/P050_TGFALFile.C - %files io-sql -f includelist-io-sql %{_libdir}/%{name}/libSQLIO.* %{_libdir}/%{name}/libSQLIO_rdict.pcm @@ -3433,6 +3323,7 @@ fi %{_libdir}/%{name}/libEG.* %{_libdir}/%{name}/libEG_rdict.pcm %{_datadir}/%{name}/pdg_table.txt +%{_datadir}/%{name}/pdg_table_update.py %doc %{_pkgdocdir}/cfortran.doc %files montecarlo-pythia8 -f includelist-montecarlo-pythia8 @@ -3479,6 +3370,7 @@ fi %{_datadir}/%{name}/js/files/wslist.htm %ghost %{_datadir}/%{name}/js/build %ghost %{_datadir}/%{name}/js/img +%ghost %{_datadir}/%{name}/js/mathjax %ghost %{_datadir}/%{name}/js/modules %ghost %{_datadir}/%{name}/js/scripts %ghost %{_datadir}/%{name}/js/files/draw.htm @@ -3544,12 +3436,13 @@ 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 +%dir %{_includedir}/%{name}/RooFit +%dir %{_includedir}/%{name}/RooFit/Detail +%dir %{_includedir}/%{name}/RooFit/TestStatistics +%dir %{_includedir}/%{name}/RooFitLegacy %{_datadir}/gdb/auto-load%{_libdir}/%{name}/libRooFitCore.* %{_datadir}/gdb/auto-load%{_libdir}/%{name}/__pycache__/libRooFitCore.* @@ -3557,10 +3450,9 @@ fi %{_libdir}/%{name}/libRooFitMore.* %{_libdir}/%{name}/libRooFitMore_rdict.pcm -%files roofit-batchcompute -f includelist-roofit-batchcompute +%files roofit-batchcompute %{_libdir}/%{name}/libRooBatchCompute.* %{_libdir}/%{name}/libRooBatchCompute_* -%doc roofit/batchcompute/README.md %if %{dataframe} %files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers @@ -3571,17 +3463,20 @@ fi %files roofit-hs3 -f includelist-roofit-hs3 %{_libdir}/%{name}/libRooFitHS3.* %{_libdir}/%{name}/libRooFitHS3_rdict.pcm +%dir %{_includedir}/%{name}/RooFitHS3 %{_datadir}/%{name}/RooFitHS3_wsexportkeys.json %{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json -%doc roofit/hs3/README.md %files roofit-jsoninterface -f includelist-roofit-jsoninterface %{_libdir}/%{name}/libRooFitJSONInterface.* %{_libdir}/%{name}/libRooFitJSONInterface_rdict.pcm +%dir %{_includedir}/%{name}/RooFit %if %{?fedora}%{!?fedora:0} >= 40 %files roofit-multiprocess -f includelist-roofit-multiprocess %{_libdir}/%{name}/libRooFitMultiProcess.* +%dir %{_includedir}/%{name}/RooFit +%dir %{_includedir}/%{name}/RooFit/MultiProcess %files roofit-zmq %{_libdir}/%{name}/libRooFitZMQ.* @@ -3601,7 +3496,13 @@ fi %{_libdir}/%{name}/libHistFactory_rdict.pcm %{_datadir}/%{name}/HistFactorySchema.dtd %dir %{_includedir}/%{name}/RooStats/HistFactory +%dir %{_includedir}/%{name}/RooStats/HistFactory/Detail %doc roofit/histfactory/doc/README + +%files xroofit -f includelist-roofit-xroofit +%{_libdir}/%{name}/libRooFitXRooFit.* +%{_libdir}/%{name}/libRooFitXRooFit_rdict.pcm +%dir %{_includedir}/%{name}/RooFit/xRooFit %endif %files sql-mysql -f includelist-sql-mysql @@ -3632,6 +3533,8 @@ fi %dir %{_includedir}/%{name}/TMVA/DNN/Architectures %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Cpu %dir %{_includedir}/%{name}/TMVA/DNN/Architectures/Reference +%dir %{_includedir}/%{name}/TMVA/DNN/CNN +%dir %{_includedir}/%{name}/TMVA/DNN/RNN %license tmva/doc/LICENSE %exclude %{_includedir}/%{name}/TMVA/RBDT.hxx %exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx @@ -3777,6 +3680,7 @@ fi %{_libdir}/%{name}/libROOTBrowsable.* %{_libdir}/%{name}/libROOTBrowsable_rdict.pcm %{_libdir}/%{name}/libROOTBranchBrowseProvider.* +%{_libdir}/%{name}/libROOTGeoBrowseProvider.* %{_libdir}/%{name}/libROOTHistDrawProvider.* %{_libdir}/%{name}/libROOTLeafDraw6Provider.* %{_libdir}/%{name}/libROOTLeafDraw7Provider.* @@ -3814,19 +3718,20 @@ fi %files tree-ntuple -f includelist-tree-ntuple %{_libdir}/%{name}/libROOTNTuple.* %{_libdir}/%{name}/libROOTNTuple_rdict.pcm +%dir %{_includedir}/%{name}/ROOT/libdaos_mock %files tree-ntuple-utils -f includelist-tree-ntupleutil %{_libdir}/%{name}/libROOTNTupleUtil.* %{_libdir}/%{name}/libROOTNTupleUtil_rdict.pcm - -%if %{roofit} -%files xroofit -f includelist-roofit-xroofit -%{_libdir}/%{name}/libRooFitXRooFit.* -%{_libdir}/%{name}/libRooFitXRooFit_rdict.pcm -%endif %endif %changelog +* Sat Nov 25 2023 Mattias Ellert - 6.30.00-1 +- Update to 6.30.00 +- Removed subpackages: root-io-gfal and root-roofit-common +- Dropped patches: 6 +- New patches: 6 + * Thu Nov 02 2023 Mattias Ellert - 6.28.08-3 - Rebuilt for libarrow.so.1400 diff --git a/sources b/sources index abdf4dd..3dad81b 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.28.08.tar.xz) = 868d770a05372677da84e4456023c1b2b575ff1eac8b6b841ed45dd1e0fd0c6c7aede533271b986404f2a55c91ea196ac2d8c81b3b4d1edfae159c0b665c415e +SHA512 (root-6.30.00.tar.xz) = 0050fea34b679343829cf0bfe4bbd6ff66d93c8e2ceedef41b71d401c4e82495ec5fa4ecac82ef8d4d58f8cc0c724a6331d59b63998e6af28f022dd1942e3797 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 6d457ab71f59f244f20986dd144dec499ca8dfc1 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 5 Dec 2023 13:15:36 +0100 Subject: [PATCH 20/89] Update to 6.30.02 --- root-Fix-cmake-modules-FindZeroMQ.cmake.patch | 51 ---------------- ...or-failures-on-aarch64-ppc64le-s390x.patch | 32 ++++++++++ root-clad.patch | 2 +- root-np32.patch | 60 +++++++++++++------ root-tmva-rbdt.patch | 40 ------------- root.spec | 26 ++++---- sources | 2 +- 7 files changed, 87 insertions(+), 126 deletions(-) delete mode 100644 root-Fix-cmake-modules-FindZeroMQ.cmake.patch create mode 100644 root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch delete mode 100644 root-tmva-rbdt.patch diff --git a/root-Fix-cmake-modules-FindZeroMQ.cmake.patch b/root-Fix-cmake-modules-FindZeroMQ.cmake.patch deleted file mode 100644 index 196ae81..0000000 --- a/root-Fix-cmake-modules-FindZeroMQ.cmake.patch +++ /dev/null @@ -1,51 +0,0 @@ -From f178a821b57043fdb7b722187e0175b975c7076b Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 1 Nov 2023 10:04:03 +0100 -Subject: [PATCH] Fix cmake/modules/FindZeroMQ.cmake - -It now finds ZeroMQ in Fedora 40. ---- - cmake/modules/FindZeroMQ.cmake | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - -diff --git a/cmake/modules/FindZeroMQ.cmake b/cmake/modules/FindZeroMQ.cmake -index 24a1c171f5..bd8bf0b3db 100644 ---- a/cmake/modules/FindZeroMQ.cmake -+++ b/cmake/modules/FindZeroMQ.cmake -@@ -38,17 +38,21 @@ set ( ZeroMQ_LIBRARIES ${ZeroMQ_LIBRARY} ) - set ( ZeroMQ_INCLUDE_DIRS ${ZeroMQ_INCLUDE_DIR} ) - - # check for zmq_ppoll --if(ZeroMQ_FOUND) -- SET(SAVE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") -- SET(CMAKE_REQUIRED_DEFINITIONS "-DZMQ_BUILD_DRAFT_API") -+if(ZeroMQ_LIBRARIES) -+ include(CheckCXXSymbolExists) -+ set(CMAKE_REQUIRED_LIBRARIES ${ZeroMQ_LIBRARIES}) -+ set(CMAKE_REQUIRED_INCLUDES ${ZeroMQ_INCLUDE_DIRS}) -+ set(CMAKE_REQUIRED_DEFINITIONS "-DZMQ_BUILD_DRAFT_API") - check_cxx_symbol_exists(zmq_ppoll zmq.h ZeroMQ_HAS_PPOLL) -- SET(CMAKE_REQUIRED_DEFINITIONS "${SAVE_CMAKE_REQUIRED_DEFINITIONS}") -+ unset(CMAKE_REQUIRED_LIBRARIES) -+ unset(CMAKE_REQUIRED_INCLUDES) -+ unset(CMAKE_REQUIRED_DEFINITIONS) - endif() - - include ( FindPackageHandleStandardArgs ) - # handle the QUIETLY and REQUIRED arguments and set ZeroMQ_FOUND to TRUE - # if all listed variables are TRUE --find_package_handle_standard_args ( ZeroMQ DEFAULT_MSG ZeroMQ_LIBRARIES ZeroMQ_INCLUDE_DIRS ZeroMQ_HAS_PPOLL) -+find_package_handle_standard_args ( ZeroMQ DEFAULT_MSG ZeroMQ_LIBRARIES ZeroMQ_INCLUDE_DIRS ZeroMQ_HAS_PPOLL ) - - if(ZeroMQ_FOUND) - if(NOT TARGET libzmq) -@@ -57,4 +61,4 @@ if(ZeroMQ_FOUND) - IMPORTED_LOCATION ${ZeroMQ_LIBRARIES} - INTERFACE_INCLUDE_DIRECTORIES ${ZeroMQ_INCLUDE_DIRS}) - endif() --endif() -\ No newline at end of file -+endif() --- -2.41.0 - diff --git a/root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch b/root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch new file mode 100644 index 0000000..05f7fa6 --- /dev/null +++ b/root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch @@ -0,0 +1,32 @@ +From 8e6b901646c0a4139b9f6f18c5d6cd5c98614136 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 2 Dec 2023 18:50:04 +0100 +Subject: [PATCH] Adjust test for failures on aarch64, ppc64le and s390x + +[ RUN ] RooTruthModel.IntegrateSubrange +[#1] INFO:Eval -- RooRealVar::setRange(dt) new range named 'integral' created with bounds [2,2] +/builddir/build/BUILD/root-6.30.02/roofit/roofitcore/test/testRooTruthModel.cxx:38: Failure +Expected equality of these values: + integ->getVal() + Which is: -2.8822093e-17 + 0.0 + Which is: 0 +[ FAILED ] RooTruthModel.IntegrateSubrange (194 ms) +--- + roofit/roofitcore/test/testRooTruthModel.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/roofit/roofitcore/test/testRooTruthModel.cxx b/roofit/roofitcore/test/testRooTruthModel.cxx +index a97fcb7c4e..ff3464a880 100644 +--- a/roofit/roofitcore/test/testRooTruthModel.cxx ++++ b/roofit/roofitcore/test/testRooTruthModel.cxx +@@ -35,5 +35,5 @@ TEST(RooTruthModel, IntegrateSubrange) + dt.setRange("integral", 2, 2); + + std::unique_ptr integ{bcpg.createIntegral({dt}, "integral")}; +- EXPECT_FLOAT_EQ(integ->getVal(), 0.0); ++ EXPECT_NEAR(integ->getVal(), 0.0, 1e-16); + } +-- +2.43.0 + diff --git a/root-clad.patch b/root-clad.patch index 0715240..139775e 100644 --- a/root-clad.patch +++ b/root-clad.patch @@ -12,7 +12,7 @@ index 5cba95407b..81f6539f03 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -74,7 +74,8 @@ if(NOT ROOT_minuit2_FOUND) - endif() + #---Tutorials disabled depending on the build components------------- if(NOT clad) - set(clad_veto fit/minuit2GausFit.C) diff --git a/root-np32.patch b/root-np32.patch index 3ac6f41..832f6c7 100644 --- a/root-np32.patch +++ b/root-np32.patch @@ -1,4 +1,4 @@ -From 88162e7738d810f8203ed0242179f7af94ded500 Mon Sep 17 00:00:00 2001 +From 42b9c691fdd2d0001c61f78cc8adfbb9c994f6b4 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 17 Nov 2023 11:46:14 +0100 Subject: [PATCH 3/3] Fix pythonizations test errors on ix86 Linux @@ -42,15 +42,21 @@ TypeError: none of the 6 overloaded methods succeeded. Full details: TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr) ---------------------------------------------------------------------- --- - .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 2 +- - bindings/pyroot/pythonizations/test/rtensor.py | 7 +++++-- - 2 files changed, 6 insertions(+), 3 deletions(-) + .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 8 ++++---- + bindings/pyroot/pythonizations/test/rtensor.py | 8 +------- + 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -index cd2ebc9b5b..1860bd49f5 100644 +index cd2ebc9b5b..cc46f5bea1 100644 --- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py +++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -@@ -147,7 +147,7 @@ class DataFrameFromNumpy(unittest.TestCase): +@@ -142,19 +142,19 @@ class DataFrameFromNumpy(unittest.TestCase): + gc.collect() + ref4 = sys.getrefcount(x) + self.assertEqual(ref1, ref4) +- ++ + def test_sliced_array(self): """ Test correct reading of a sliced numpy array (#13690) """ @@ -59,31 +65,47 @@ index cd2ebc9b5b..1860bd49f5 100644 columns = {'x': table[:,0], 'y': table[:,1]} df = ROOT.RDF.FromNumpy(columns) x_col = df.Take['Long64_t']("x") + y_col = df.Take['Long64_t']("y") +- self.assertEqual(list(x_col.GetValue()), [1,3]) ++ self.assertEqual(list(x_col.GetValue()), [1,3]) + self.assertEqual(list(y_col.GetValue()), [2,4]) +- ++ + + if __name__ == '__main__': + unittest.main() diff --git a/bindings/pyroot/pythonizations/test/rtensor.py b/bindings/pyroot/pythonizations/test/rtensor.py -index 99b458cfa9..070a5d24d0 100644 +index 99b458cfa9..ca119f0b41 100644 --- a/bindings/pyroot/pythonizations/test/rtensor.py +++ b/bindings/pyroot/pythonizations/test/rtensor.py -@@ -3,6 +3,7 @@ import ROOT +@@ -2,7 +2,6 @@ import unittest + import ROOT RTensor = ROOT.TMVA.Experimental.RTensor import numpy as np - import platform -+import sys +-import platform def check_shape(root_obj, np_obj): -@@ -28,8 +29,10 @@ class AsRTensor(unittest.TestCase): +@@ -21,18 +20,13 @@ class AsRTensor(unittest.TestCase): + dtypes = [ + "int32", "int64", "uint32", "uint64", "float32", "float64" + ] +- cpptypes = ["int", "long", "unsigned int", "unsigned long", "float", "double"] ++ cpptypes = ["int32_t", "int64_t", "uint32_t", "uint64_t", "float", "double"] + + # Tests + def test_dtypes(self): """ Test adoption of numpy arrays with different data types """ - #using long long on Linux does not work although it is same size as long - if (platform.system() == "Windows") : -+ # Using long long on 64 bit Linux does not work although it is -+ # same size as long -+ if ((platform.system() == "Windows") or -+ ((platform.system() == "Linux") and (sys.maxsize < 2**32))) : - self.cpptypes[1] = "long long" - self.cpptypes[3] = "unsigned long long" - +- self.cpptypes[1] = "long long" +- self.cpptypes[3] = "unsigned long long" +- + i = 0 + for dtype in self.dtypes: + np_obj = np.array([[1, 2], [3, 4], [5, 6]], dtype=dtype) -- -2.42.0 +2.43.0 diff --git a/root-tmva-rbdt.patch b/root-tmva-rbdt.patch deleted file mode 100644 index b31769a..0000000 --- a/root-tmva-rbdt.patch +++ /dev/null @@ -1,40 +0,0 @@ -From c3eb92abb450aee2e3a798218ca2d309524dab11 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 14 Oct 2023 15:51:16 +0200 -Subject: [PATCH] src/RBDT.cxx is a source file of libTMVAUtils and should not - also be a source file of libTMVA. Remove it. Adjust test using symbols - defined in this source file to link to libTMVAUtils instead of libTMVA. - ---- - tmva/tmva/CMakeLists.txt | 1 - - tmva/tmva/test/CMakeLists.txt | 2 +- - 2 files changed, 1 insertion(+), 2 deletions(-) - -diff --git a/tmva/tmva/CMakeLists.txt b/tmva/tmva/CMakeLists.txt -index 84efce9d59..109f4c1021 100644 ---- a/tmva/tmva/CMakeLists.txt -+++ b/tmva/tmva/CMakeLists.txt -@@ -334,7 +334,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(TMVA - src/PDEFoamVect.cxx - src/PDF.cxx - src/QuickMVAProbEstimator.cxx -- src/RBDT.cxx - src/Ranking.cxx - src/Reader.cxx - src/RegressionVariance.cxx -diff --git a/tmva/tmva/test/CMakeLists.txt b/tmva/tmva/test/CMakeLists.txt -index ebe1be187b..5dcf5175f2 100644 ---- a/tmva/tmva/test/CMakeLists.txt -+++ b/tmva/tmva/test/CMakeLists.txt -@@ -29,7 +29,7 @@ if(dataframe) - # Tree inference system and user interface - if(NOT MSVC OR llvm13_broken_tests) - ROOT_ADD_GTEST(branchlessForest branchlessForest.cxx LIBRARIES TMVA) -- ROOT_ADD_GTEST(rbdt rbdt.cxx LIBRARIES ROOTVecOps TMVA) -+ ROOT_ADD_GTEST(rbdt rbdt.cxx LIBRARIES ROOTVecOps TMVAUtils) - endif() - endif() - --- -2.41.0 - diff --git a/root.spec b/root.spec index 547164c..07b4412 100644 --- a/root.spec +++ b/root.spec @@ -45,7 +45,7 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.30.00 +Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -99,20 +99,16 @@ Patch9: %{name}-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch # https://github.com/root-project/root/issues/11395 # https://github.com/root-project/root/pull/13771 Patch10: %{name}-pcre2.patch -# src/RBDT.cxx is a source file of both libTMVA and libTMVAUtils -# https://github.com/root-project/root/pull/13863 -Patch11: %{name}-tmva-rbdt.patch -# Fix cmake/modules/FindZeroMQ.cmake -# https://github.com/root-project/root/pull/13995 -Patch12: %{name}-Fix-cmake-modules-FindZeroMQ.cmake.patch # https://github.com/root-project/root/pull/14111 -Patch13: %{name}-avoid-out-of-memory-during-linking.patch +Patch11: %{name}-avoid-out-of-memory-during-linking.patch # https://github.com/root-project/root/pull/14112 -Patch14: %{name}-clad.patch -Patch15: %{name}-gtest-back.patch -Patch16: %{name}-np32.patch +Patch12: %{name}-clad.patch +Patch13: %{name}-gtest-back.patch +Patch14: %{name}-np32.patch +# https://github.com/root-project/root/pull/14164 +Patch15: %{name}-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch # Only for EPEL 8 - disable tests not working with old gtest -Patch17: %{name}-old-gtest.patch +Patch16: %{name}-old-gtest.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -2003,9 +1999,8 @@ This package contains utility functions for ntuples. %patch -P 13 -p1 %patch -P 14 -p1 %patch -P 15 -p1 -%patch -P 16 -p1 %if %{?rhel}%{!?rhel:0} == 8 -%patch -P 17 -p1 +%patch -P 16 -p1 %endif # Remove bundled sources in order to be sure they are not used @@ -3726,6 +3721,9 @@ fi %endif %changelog +* Sat Dec 02 2023 Mattias Ellert - 6.30.02-1 +- Update to 6.30.02 + * Sat Nov 25 2023 Mattias Ellert - 6.30.00-1 - Update to 6.30.00 - Removed subpackages: root-io-gfal and root-roofit-common diff --git a/sources b/sources index 3dad81b..4d9b587 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.30.00.tar.xz) = 0050fea34b679343829cf0bfe4bbd6ff66d93c8e2ceedef41b71d401c4e82495ec5fa4ecac82ef8d4d58f8cc0c724a6331d59b63998e6af28f022dd1942e3797 +SHA512 (root-6.30.02.tar.xz) = 8f4790f2cc81fd637d8e7a499232430648935856738a92b9e33b7d483e9126b6dcd238504c810818397c05aa2f34b04b6eab2dc4821e605da50ccf85db33532e SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 9875b6b48a8345e11b73148f7640510da9bcf537 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 15 Dec 2023 22:08:26 +0100 Subject: [PATCH 21/89] Exclude pyunittests-pyroot-numbadeclare test --- root.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 07b4412..c9a6ed3 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -2549,6 +2549,7 @@ popd # # - test-import-numba # - tutorial-pyroot-pyroot004_NumbaDeclare-py +# - pyunittests-pyroot-numbadeclare # these tests require the numba python module which is not available # # - test-webgui-ping @@ -2588,6 +2589,7 @@ tutorial-tmva-tmva103_Application|\ tutorial-tmva-RBatchGenerator_NumPy-py|\ test-import-numba|\ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ +pyunittests-pyroot-numbadeclare|\ test-webgui-ping" %if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) @@ -3721,6 +3723,9 @@ fi %endif %changelog +* Fri Dec 15 2023 Mattias Ellert - 6.30.02-2 +- Exclude pyunittests-pyroot-numbadeclare test + * Sat Dec 02 2023 Mattias Ellert - 6.30.02-1 - Update to 6.30.02 From 735b7a8692b7ed6d598f5ebe77a3fcbce4f602a5 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 18 Dec 2023 20:23:26 +0100 Subject: [PATCH 22/89] Use "standardsymbolsps" instead of "symbol" when searching for the Symbols font in order to not find Noto Symbols instead --- root-fontconfig.patch | 48 +++++++++++++++++++++---------------------- root.spec | 13 ++++++++++-- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/root-fontconfig.patch b/root-fontconfig.patch index e19c4b4..a8d8a30 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -61,7 +61,7 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a - if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1); + const char *basename = gSystem->BaseName(fn); + -+ char *ttfnt = NULL; ++ char *ttfnt = nullptr; + int ttindex = 0; + + FcPattern *pat, *match; @@ -136,7 +136,7 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); + } + else if (strcmp(basename, "symbol.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); ++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); + FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); + } @@ -163,9 +163,9 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); + } + -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); ++ match = FcFontMatch (nullptr, pat, &result); + FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); + FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); @@ -255,7 +255,7 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ + // Add root's font directory + const char *ttpath = gEnv->GetValue("Root.TTFontPath", + TROOT::GetTTFFontDir()); -+ FcConfigAppFontAddDir (NULL, (const FcChar8*)ttpath); ++ FcConfigAppFontAddDir (nullptr, (const FcChar8*)ttpath); + // load default font (arialbd) SetTextFont(62); @@ -468,7 +468,7 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ - const char *ttpath = gEnv->GetValue("Root.TTFontPath", - TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); -+ char *ttfont = NULL; ++ char *ttfont = nullptr; + int ttindex = 0; - if (!ttfont) { @@ -481,7 +481,7 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ - return 1; - } + FcPattern *pat, *match; -+ FcCharSet *set = NULL; ++ FcCharSet *set = nullptr; + FcResult result; + + pat = FcPatternCreate (); @@ -544,7 +544,7 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ + break; + case 12: + case 15: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); ++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); + FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); + break; @@ -643,9 +643,9 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ + break; } -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); ++ match = FcFontMatch (nullptr, pat, &result); + char *ttfnt; + FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); + ttfont = StrDup (ttfnt); @@ -776,7 +776,7 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ - // try backup free font - thisset = 1; - } -+ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, NULL ); ++ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr ); } - Int_t italic = 0; - if (fontid==15) italic = 1; @@ -860,10 +860,10 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr - fonttable[fontid][0], fonttable[fontid][1]); - char *ttfont = gSystem->Which(ttpath, filename, kReadPermission); + -+ char *ttfont = NULL; ++ char *ttfont = nullptr; + + FcPattern *pat, *match; -+ FcCharSet *set = NULL; ++ FcCharSet *set = nullptr; + FcResult result; + + pat = FcPatternCreate (); @@ -925,7 +925,7 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); + break; + case 12: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); ++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); + FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); + break; @@ -1015,9 +1015,9 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr + break; + } + -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); ++ match = FcFontMatch (nullptr, pat, &result); + char *ttfnt; + FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); + ttfont = StrDup(ttfnt); @@ -1104,11 +1104,11 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/ - ((TObjString*)fgFontFileArray[fileID])->String()); - file = fp; - delete [] fp; -+ char *file = NULL; ++ char *file = nullptr; + int ttindex = 0; + + FcPattern *pat, *match; -+ FcCharSet *set = NULL; ++ FcCharSet *set = nullptr; + FcResult result; + + pat = FcPatternCreate (); @@ -1171,7 +1171,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/ + break; + case 11: + case 14: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); ++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); + FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); + break; @@ -1262,9 +1262,9 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/ + FcPatternAddCharSet (pat, FC_CHARSET, set); } -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); ++ match = FcFontMatch (nullptr, pat, &result); + char *ttfnt; + FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); + file = StrDup (ttfnt); @@ -1431,7 +1431,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/ + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); + break; + case 12: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"symbol"); ++ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); + FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); + FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); + break; @@ -1447,9 +1447,9 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/ + break; + } + -+ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); -+ match = FcFontMatch (NULL, pat, &result); ++ match = FcFontMatch (nullptr, pat, &result); + FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfont); + FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); diff --git a/root.spec b/root.spec index c9a6ed3..74ba73f 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -2554,6 +2554,10 @@ popd # # - test-webgui-ping # error: Cannot display window in native +# +# - gtest-core-metacling-test-TClingLoadUnloadFile +# random failures +# terminate called after throwing an instance of 'std::bad_alloc' excluded="\ test-stressIOPlugins|\ tutorial-dataframe-df101_h1Analysis|\ @@ -2590,7 +2594,8 @@ tutorial-tmva-RBatchGenerator_NumPy-py|\ test-import-numba|\ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ pyunittests-pyroot-numbadeclare|\ -test-webgui-ping" +test-webgui-ping|\ +gtest-core-metacling-test-TClingLoadUnloadFile" %if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) # - test-import-pandas @@ -3723,6 +3728,10 @@ fi %endif %changelog +* Mon Dec 18 2023 Mattias Ellert - 6.30.02-3 +- Use "standardsymbolsps" instead of "symbol" when searching for the + Symbols font in order to not find Noto Symbols instead + * Fri Dec 15 2023 Mattias Ellert - 6.30.02-2 - Exclude pyunittests-pyroot-numbadeclare test From b4f122310f19cf59072c0e56c268d251d5e34b74 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 21 Dec 2023 21:31:38 +0100 Subject: [PATCH 23/89] Adjust tests for zlib-ng --- root-new-zlib.patch | 89 +++++++++++++++++++++++++++++++++++++++++++++ root.spec | 11 +++++- 2 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 root-new-zlib.patch diff --git a/root-new-zlib.patch b/root-new-zlib.patch new file mode 100644 index 0000000..f12eef7 --- /dev/null +++ b/root-new-zlib.patch @@ -0,0 +1,89 @@ +From 260fc202a1387cfc3f3ef756f584923ab5b0a198 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 21 Dec 2023 17:58:49 +0100 +Subject: [PATCH] Adapt tests to work with zlib-ng + +Fedora 40 has replaced zlib with a zlib compatible version of zlib-ng +--- + test/stress.cxx | 2 +- + test/stressGraphics.ref | 28 ++++++++++++++-------------- + 2 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/test/stress.cxx b/test/stress.cxx +index de8061a9fc..77f48d43b8 100644 +--- a/test/stress.cxx ++++ b/test/stress.cxx +@@ -406,7 +406,7 @@ void stress3() + #else + constexpr Long64_t lastgood = 52090; + #endif +- constexpr Long64_t tolerance = 150; ++ constexpr Long64_t tolerance = 300; + #ifdef R__HAS_DEFAULT_LZ4 + constexpr Long64_t difflastgoodlz4 = 5500; + if (last < lastgood - tolerance || last > lastgood + difflastgoodlz4 + tolerance || comp < 1.5 || comp > 2.1) +diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref +index 16d06e33fa..a21068927d 100644 +--- a/test/stressGraphics.ref ++++ b/test/stressGraphics.ref +@@ -2,12 +2,12 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 1 529 50 12767 50 23848 3700 3937 100 569 60 + 2 4627 600 14506 100 13368 7900 9208 3000 4690 600 + 3 452 50 12694 50 11232 4200 3796 10700 492 50 +- 4 23617 1500 19386 100 143320 123000 45665 11000 24908 1500 ++ 4 23617 1500 19386 200 143320 123000 45665 11000 24908 1500 + 5 1025 150 12802 200 33468 9900 30846 5000 1072 200 + 6 430 50 12669 50 9558 100 5325 700 471 50 + 7 4980 50 13893 50 16143 1300 12230 500 5011 70 + 8 5442 80 13473 50 18430 700 12398 300 5469 80 +- 9 9253 100 14377 50 19851 2400 12199 900 9449 100 ++ 9 9253 100 14377 100 19851 2400 12199 900 9449 100 + 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 + 11 12971 100 14444 50 34063 2000 32033 1200 12864 150 + 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 +@@ -15,30 +15,30 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 + 15 15690 5000 17179 200 23076 9500 15202 900 10437 5000 + 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 +- 17 20444 400 21520 100 27511 11000 16867 600 20721 400 +- 18 15894 100 19305 100 27187 10300 15925 350 15925 100 +- 19 22521 300 42926 150 43868 17000 19232 11000 22729 300 ++ 17 20444 400 21520 150 27511 11000 16867 600 20721 400 ++ 18 15894 100 19305 200 27187 10300 15925 350 15925 100 ++ 19 22521 300 42926 200 43868 17000 19232 11000 22729 300 + 20 3664 600 14437 100 19824 6300 10396 900 4220 600 + 21 17608 600 13900 150 49440 6300 37586 9000 5938 600 + 22 4866 600 14162 100 30889 10050 21311 1800 4845 600 +- 23 4131 40 15272 50 34038 2500 12258 1400 4162 40 ++ 23 4131 40 15272 100 34038 2500 12258 1400 4162 40 + 24 7813 300 23739 100 11085 6000 6973 3100 8081 300 + 25 28422 150 29391 300 14104 14800 7386 2800 14493 150 + 26 4545 150 14541 100 27602 14800 13094 2800 4467 150 + 27 6141 200 15967 100 39594 21600 19331 7000 6596 500 + 28 9110 500 16584 200 21346 21600 10645 7000 8869 500 + 29 7419 500 15112 200 18872 21600 7928 7000 7296 500 +- 30 17016 5500 18198 100 32434 17400 22157 5000 20823 5500 +- 31 30615 8200 27176 150 50520 18200 35724 5400 36690 8200 +- 32 3304592 100 712308 500 62688 19000 123056 7000 0 0 ++ 30 17016 5500 18198 250 32434 17400 22157 5000 20823 5500 ++ 31 30615 8200 27176 200 50520 18200 35724 5400 36690 8200 ++ 32 3304592 100 712308 3000 62688 19000 123056 7000 0 0 + 33 89233 500 47975 300 65532 27800 37314 12000 90600 500 + 34 36514 300 16815 200 47408 12700 33739 3700 36399 300 +- 35 207729 750 87126 100 76094 38000 54717 11000 210497 800 +- 36 401670 6500 156361 500 62719 34100 45592 14000 410114 6500 +- 37 566142 5000 225206 750 65828 31800 53934 6500 573396 5000 +- 38 3738751 35000 1292739 8000 60580 9900 133547 3500 3783013 35000 ++ 35 207729 750 87126 750 76094 38000 54717 11000 210497 800 ++ 36 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500 ++ 37 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000 ++ 38 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000 + 39 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500 +- 40 38312 200 56877 250 36524 11800 119641 8000 38121 200 ++ 40 38312 200 56877 750 36524 11800 119641 8000 38121 200 + 41 15025 3000 29289 500 42525 11300 33336 3900 14787 4000 + 42 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000 + 43 4846 150 14075 150 33239 600 25303 300 4877 150 +-- +2.43.0 + diff --git a/root.spec b/root.spec index 74ba73f..ab0b5aa 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -109,6 +109,9 @@ Patch14: %{name}-np32.patch Patch15: %{name}-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch # Only for EPEL 8 - disable tests not working with old gtest Patch16: %{name}-old-gtest.patch +# Adjust tests for zlib-ng +# https://github.com/root-project/root/pull/14295 +Patch17: %{name}-new-zlib.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -2002,6 +2005,7 @@ This package contains utility functions for ntuples. %if %{?rhel}%{!?rhel:0} == 8 %patch -P 16 -p1 %endif +%patch -P 17 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2556,7 +2560,7 @@ popd # error: Cannot display window in native # # - gtest-core-metacling-test-TClingLoadUnloadFile -# random failures +# random failures: https://github.com/root-project/root/issues/14121 # terminate called after throwing an instance of 'std::bad_alloc' excluded="\ test-stressIOPlugins|\ @@ -3728,6 +3732,9 @@ fi %endif %changelog +* Thu Dec 21 2023 Mattias Ellert - 6.30.02-4 +- Adjust tests for zlib-ng + * Mon Dec 18 2023 Mattias Ellert - 6.30.02-3 - Use "standardsymbolsps" instead of "symbol" when searching for the Symbols font in order to not find Noto Symbols instead From 63c341633f6396b3aa4fe09855f0839c464fa9d0 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 12 Jan 2024 20:24:43 +0100 Subject: [PATCH 24/89] Define PYTHON_EXECUTABLE when calling cmake (Fixes EPEL 8 build) --- root.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/root.spec b/root.spec index ab0b5aa..8606d2e 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -206,7 +206,7 @@ BuildRequires: cppzmq-devel %if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif -BuildRequires: python3-rcssmin +BuildRequires: python%{python3_pkgversion}-rcssmin BuildRequires: uglify-js3 BuildRequires: perl-generators BuildRequires: gtest-devel @@ -2074,6 +2074,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ + -DPYTHON_EXECUTABLE=%{__python3} \ -Dgnuinstall:BOOL=ON \ -Dbuiltin_afterimage:BOOL=OFF \ -Dbuiltin_cfitsio:BOOL=OFF \ @@ -3732,6 +3733,9 @@ fi %endif %changelog +* Fri Jan 12 2024 Mattias Ellert - 6.30.02-5 +- Define PYTHON_EXECUTABLE when calling cmake (Fixes EPEL 8 build) + * Thu Dec 21 2023 Mattias Ellert - 6.30.02-4 - Adjust tests for zlib-ng From 40040121b9021fd13242af649095090e71e92877 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Wed, 17 Jan 2024 23:28:26 +0000 Subject: [PATCH 25/89] Rebuilt for TBB 2021.11 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 8606d2e..2cf8e87 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 6%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3733,6 +3733,9 @@ fi %endif %changelog +* Wed Jan 17 2024 Jonathan Wakely - 6.30.02-6 +- Rebuilt for TBB 2021.11 + * Fri Jan 12 2024 Mattias Ellert - 6.30.02-5 - Define PYTHON_EXECUTABLE when calling cmake (Fixes EPEL 8 build) From 277c592ff22f672d0807876d6bf5188c23b39d66 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 22 Jan 2024 11:52:28 +0000 Subject: [PATCH 26/89] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 2cf8e87..088ea04 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 6%{?dist} +Release: 7%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3733,6 +3733,9 @@ fi %endif %changelog +* Mon Jan 22 2024 Fedora Release Engineering - 6.30.02-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Wed Jan 17 2024 Jonathan Wakely - 6.30.02-6 - Rebuilt for TBB 2021.11 From 65481a92449017b145537e66c38eb8445fb70a04 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 26 Jan 2024 07:10:54 +0100 Subject: [PATCH 27/89] Exclude failing gtest-math-matrix-test-testMatrixTSparse on Fedora 40 (aarch64, ppc64le and s390x) --- root.spec | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 088ea04..bce52de 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 7%{?dist} +Release: 8%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -2807,6 +2807,16 @@ test-stressgraphics" %endif %endif +%if %{?fedora}%{!?fedora:0} >= 40 +%ifarch aarch64 %{power64} s390x +# Fails with gcc 14 on aarch64, ppc64le and s390x +# https://github.com/root-project/root/issues/14446 +# - gtest-math-matrix-test-testMatrixTSparse +excluded="${excluded}|\ +gtest-math-matrix-test-testMatrixTSparse" +%endif +%endif + # Filter out parts of tests that require remote network access # RNTuple.TClassEBO seg fault # https://github.com/root-project/root/issues/12428 @@ -3733,6 +3743,10 @@ fi %endif %changelog +* Fri Jan 26 2024 Mattias Ellert - 6.30.02-8 +- Exclude failing gtest-math-matrix-test-testMatrixTSparse on Fedora 40 + (aarch64, ppc64le and s390x) + * Mon Jan 22 2024 Fedora Release Engineering - 6.30.02-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From a5b9453dc488a5f2f4e321f0c845426a8c9b3ff2 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 26 Jan 2024 23:46:38 +0100 Subject: [PATCH 28/89] Rebuilt for libarrow.so.1500 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index bce52de..c116b12 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 8%{?dist} +Release: 9%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3743,6 +3743,9 @@ fi %endif %changelog +* Fri Jan 26 2024 Mattias Ellert - 6.30.02-9 +- Rebuilt for libarrow.so.1500 + * Fri Jan 26 2024 Mattias Ellert - 6.30.02-8 - Exclude failing gtest-math-matrix-test-testMatrixTSparse on Fedora 40 (aarch64, ppc64le and s390x) From c2cd7682c3bcdf161e4c7632f702f9112418c3b0 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 1 Feb 2024 07:40:40 +0100 Subject: [PATCH 29/89] Update to 6.30.04 Drop patch root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch (accepted upstrem) Exclude failing TClingDataMemberInfo.Offset test on s390x --- ...or-failures-on-aarch64-ppc64le-s390x.patch | 32 ------------------- root.spec | 24 +++++++++----- sources | 2 +- 3 files changed, 17 insertions(+), 41 deletions(-) delete mode 100644 root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch diff --git a/root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch b/root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch deleted file mode 100644 index 05f7fa6..0000000 --- a/root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 8e6b901646c0a4139b9f6f18c5d6cd5c98614136 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 2 Dec 2023 18:50:04 +0100 -Subject: [PATCH] Adjust test for failures on aarch64, ppc64le and s390x - -[ RUN ] RooTruthModel.IntegrateSubrange -[#1] INFO:Eval -- RooRealVar::setRange(dt) new range named 'integral' created with bounds [2,2] -/builddir/build/BUILD/root-6.30.02/roofit/roofitcore/test/testRooTruthModel.cxx:38: Failure -Expected equality of these values: - integ->getVal() - Which is: -2.8822093e-17 - 0.0 - Which is: 0 -[ FAILED ] RooTruthModel.IntegrateSubrange (194 ms) ---- - roofit/roofitcore/test/testRooTruthModel.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/roofit/roofitcore/test/testRooTruthModel.cxx b/roofit/roofitcore/test/testRooTruthModel.cxx -index a97fcb7c4e..ff3464a880 100644 ---- a/roofit/roofitcore/test/testRooTruthModel.cxx -+++ b/roofit/roofitcore/test/testRooTruthModel.cxx -@@ -35,5 +35,5 @@ TEST(RooTruthModel, IntegrateSubrange) - dt.setRange("integral", 2, 2); - - std::unique_ptr integ{bcpg.createIntegral({dt}, "integral")}; -- EXPECT_FLOAT_EQ(integ->getVal(), 0.0); -+ EXPECT_NEAR(integ->getVal(), 0.0, 1e-16); - } --- -2.43.0 - diff --git a/root.spec b/root.spec index c116b12..063bdbe 100644 --- a/root.spec +++ b/root.spec @@ -45,9 +45,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.30.02 +Version: 6.30.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 9%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -105,13 +105,11 @@ Patch11: %{name}-avoid-out-of-memory-during-linking.patch Patch12: %{name}-clad.patch Patch13: %{name}-gtest-back.patch Patch14: %{name}-np32.patch -# https://github.com/root-project/root/pull/14164 -Patch15: %{name}-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch -# Only for EPEL 8 - disable tests not working with old gtest -Patch16: %{name}-old-gtest.patch # Adjust tests for zlib-ng # https://github.com/root-project/root/pull/14295 -Patch17: %{name}-new-zlib.patch +Patch15: %{name}-new-zlib.patch +# Only for EPEL 8 - disable tests not working with old gtest +Patch16: %{name}-old-gtest.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -2005,7 +2003,6 @@ This package contains utility functions for ntuples. %if %{?rhel}%{!?rhel:0} == 8 %patch -P 16 -p1 %endif -%patch -P 17 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2818,6 +2815,8 @@ gtest-math-matrix-test-testMatrixTSparse" %endif # Filter out parts of tests that require remote network access +# TClingDataMemberInfo.Offset fails on s390x +# https://github.com/root-project/root/issues/14512 # RNTuple.TClassEBO seg fault # https://github.com/root-project/root/issues/12428 GTEST_FILTER=-\ @@ -2827,6 +2826,9 @@ RSqliteDS.Davix:\ TChainParsing.RemoteGlob:\ TFile.ReadWithoutGlobalRegistrationNet:\ TFile.ReadWithoutGlobalRegistrationWeb:\ +%ifarch s390x +TClingDataMemberInfo.Offset:\ +%endif RNTuple.TClassEBO \ %if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) ROOTTEST_IGNORE_PANDAS_PY3=1 \ @@ -3743,6 +3745,12 @@ fi %endif %changelog +* Wed Jan 31 2024 Mattias Ellert - 6.30.04-1 +- Update to 6.30.04 +- Drop patch root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch + (accepted upstrem) +- Exclude failing TClingDataMemberInfo.Offset test on s390x + * Fri Jan 26 2024 Mattias Ellert - 6.30.02-9 - Rebuilt for libarrow.so.1500 diff --git a/sources b/sources index 4d9b587..c59f721 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.30.02.tar.xz) = 8f4790f2cc81fd637d8e7a499232430648935856738a92b9e33b7d483e9126b6dcd238504c810818397c05aa2f34b04b6eab2dc4821e605da50ccf85db33532e +SHA512 (root-6.30.04.tar.xz) = cb78a34755f4830b3dcc74d10302a391b05198e378257f5fa06bb19f23a0a4c50a45fa58e7e0cc3d4bf91368726a4419d624af40dd683715c4b4720a776133d3 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 29328ac08b05e64a4200cb920cf0ffb3d681b5a9 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 25 Mar 2024 11:16:05 +0100 Subject: [PATCH 30/89] Support StandardSymbolsPS.otf --- root-fontconfig.patch | 5 ++++- root.spec | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/root-fontconfig.patch b/root-fontconfig.patch index a8d8a30..e8ad108 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -268,7 +268,7 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ FT_Done_Face(fgFace[i]); } if (fgRotMatrix) delete fgRotMatrix; -@@ -109,12 +114,19 @@ +@@ -109,12 +114,22 @@ charmap = fgFace[fgCurFontIdx]->charmaps[i]; platform = charmap->platform_id; encoding = charmap->encoding_id; @@ -281,6 +281,9 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ + (platform == 7 && encoding == 2 && + (fgFontID[fgCurFontIdx] == 12 || + fgFontID[fgCurFontIdx] == 14 || ++ fgFontID[fgCurFontIdx] == 15)) || ++ (platform == 0 && encoding == 3 && ++ (fgFontID[fgCurFontIdx] == 12 || + fgFontID[fgCurFontIdx] == 15)) || (platform == 1 && encoding == 0 && - !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) || diff --git a/root.spec b/root.spec index 063bdbe..04a4c38 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3745,6 +3745,9 @@ fi %endif %changelog +* Mon Mar 25 2024 Mattias Ellert - 6.30.04-2 +- Support StandardSymbolsPS.otf + * Wed Jan 31 2024 Mattias Ellert - 6.30.04-1 - Update to 6.30.04 - Drop patch root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch From d22cdf63445b84f2459dd50f2fced00d29deb152 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 5 Apr 2024 15:37:21 +0200 Subject: [PATCH 31/89] Update to 6.30.06 --- root-old-gtest.patch | 29 +++++++++++++++++++++++++++++ root.spec | 30 +++++++++++------------------- sources | 2 +- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/root-old-gtest.patch b/root-old-gtest.patch index bdefd48..87b6fe4 100644 --- a/root-old-gtest.patch +++ b/root-old-gtest.patch @@ -1,3 +1,32 @@ +From 8b7369a527aa52204e1ce529c8cb206cfee4c61b Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 17 Nov 2023 16:18:12 +0100 +Subject: [PATCH] Disable tests that don't compile with old gtest (EPEL 8) + +--- + core/metacling/test/TClingLoadUnloadFileTests.cxx | 2 ++ + roofit/histfactory/test/testHistFactory.cxx | 2 ++ + roofit/roofitcore/test/testRooProdPdf.cxx | 2 ++ + roofit/roofitcore/test/testTestStatistics.cxx | 2 ++ + 4 files changed, 8 insertions(+) + +diff --git a/core/metacling/test/TClingLoadUnloadFileTests.cxx b/core/metacling/test/TClingLoadUnloadFileTests.cxx +index 7f97f3f441..d1b7a65fbc 100644 +--- a/core/metacling/test/TClingLoadUnloadFileTests.cxx ++++ b/core/metacling/test/TClingLoadUnloadFileTests.cxx +@@ -73,6 +73,7 @@ void remove_n_library_artifacts(const std::string &basename, unsigned int n) + } + } + ++/* + TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadSameLib) + { + GTEST_SKIP() << "fails sporadically, see " +@@ -125,3 +126,4 @@ TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadOneLibPerThread) + + remove_n_library_artifacts(basename, n_libraries); + } ++*/ diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx index 7553ba4e4a..fefdca8e97 100644 --- a/roofit/histfactory/test/testHistFactory.cxx diff --git a/root.spec b/root.spec index 04a4c38..9632e82 100644 --- a/root.spec +++ b/root.spec @@ -45,9 +45,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.30.04 +Version: 6.30.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -2556,10 +2556,6 @@ popd # # - test-webgui-ping # error: Cannot display window in native -# -# - gtest-core-metacling-test-TClingLoadUnloadFile -# random failures: https://github.com/root-project/root/issues/14121 -# terminate called after throwing an instance of 'std::bad_alloc' excluded="\ test-stressIOPlugins|\ tutorial-dataframe-df101_h1Analysis|\ @@ -2596,8 +2592,7 @@ tutorial-tmva-RBatchGenerator_NumPy-py|\ test-import-numba|\ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ pyunittests-pyroot-numbadeclare|\ -test-webgui-ping|\ -gtest-core-metacling-test-TClingLoadUnloadFile" +test-webgui-ping" %if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) # - test-import-pandas @@ -2730,7 +2725,6 @@ gtest-roofit-roofitcore-test-testNaNPacker" # - tutorial-roofit-rf307_fullpereventerrors-py # - tutorial-roofit-rf310_sliceplot-py # - tutorial-roofit-rf708_bphysics-py -# - tutorial-tmva-RBatchGenerator_filters_vectors-py # - tutorial-tmva-TMVA_CNN_Classification-py # - tutorial-tmva-TMVA_Higgs_Classification-py # - tutorial-tmva-TMVA_RNN_Classification-py @@ -2780,7 +2774,6 @@ tutorial-roofit-rf306_condpereventerrors-py|\ tutorial-roofit-rf307_fullpereventerrors-py|\ tutorial-roofit-rf310_sliceplot-py|\ tutorial-roofit-rf708_bphysics-py|\ -tutorial-tmva-RBatchGenerator_filters_vectors-py|\ tutorial-tmva-TMVA_CNN_Classification-py|\ tutorial-tmva-TMVA_Higgs_Classification-py|\ tutorial-tmva-TMVA_RNN_Classification-py|\ @@ -2817,19 +2810,16 @@ gtest-math-matrix-test-testMatrixTSparse" # Filter out parts of tests that require remote network access # TClingDataMemberInfo.Offset fails on s390x # https://github.com/root-project/root/issues/14512 -# RNTuple.TClassEBO seg fault -# https://github.com/root-project/root/issues/12428 GTEST_FILTER=-\ +%ifarch s390x +TClingDataMemberInfo.Offset:\ +%endif RCsvDS.Remote:\ RRawFile.Remote:\ RSqliteDS.Davix:\ TChainParsing.RemoteGlob:\ TFile.ReadWithoutGlobalRegistrationNet:\ -TFile.ReadWithoutGlobalRegistrationWeb:\ -%ifarch s390x -TClingDataMemberInfo.Offset:\ -%endif -RNTuple.TClassEBO \ +TFile.ReadWithoutGlobalRegistrationWeb \ %if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) ROOTTEST_IGNORE_PANDAS_PY3=1 \ %endif @@ -2971,12 +2961,11 @@ fi %if %{bundlejson} %dir %{_includedir}/%{name}/nlohmann %{_includedir}/%{name}/nlohmann/json.hpp -%{_includedir}/%{name}/nlohmann/json_fwd.hpp %endif %{_includedir}/%{name}/RConfigOptions.h %{_includedir}/%{name}/RConfigure.h +%{_includedir}/%{name}/ROOT.modulemap %{_includedir}/%{name}/compiledata.h -%{_includedir}/%{name}/module.modulemap %dir %{_includedir}/%{name}/Math %dir %{_includedir}/%{name}/ROOT %config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf @@ -3745,6 +3734,9 @@ fi %endif %changelog +* Fri Apr 05 2024 Mattias Ellert - 6.30.06-1 +- Update to 6.30.06 + * Mon Mar 25 2024 Mattias Ellert - 6.30.04-2 - Support StandardSymbolsPS.otf diff --git a/sources b/sources index c59f721..755c137 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.30.04.tar.xz) = cb78a34755f4830b3dcc74d10302a391b05198e378257f5fa06bb19f23a0a4c50a45fa58e7e0cc3d4bf91368726a4419d624af40dd683715c4b4720a776133d3 +SHA512 (root-6.30.06.tar.xz) = 10309321a8e803f1ea2019a4d8ddde6220b052ddfa1ed7dedd432201db5917da748e944b2323794317251fd0d70048b276ad7bed6e3fcd84835de7be88b4c420 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From fbaff99ab697b5c5d0db6a5bf87e6ca22fdf0fab Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 23 Apr 2024 09:53:13 +0200 Subject: [PATCH 32/89] Rebuilt for libarrow.so.1600 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 9632e82..e5fd7eb 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3734,6 +3734,9 @@ fi %endif %changelog +* Tue Apr 23 2024 Mattias Ellert - 6.30.06-2 +- Rebuilt for libarrow.so.1600 + * Fri Apr 05 2024 Mattias Ellert - 6.30.06-1 - Update to 6.30.06 From 518c033b52372bc24f8c996740dc9f45e5217df6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20=C3=9Acar?= Date: Thu, 25 Apr 2024 16:16:49 +0200 Subject: [PATCH 33/89] R-maint-sig mass rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index e5fd7eb..3aba984 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3734,6 +3734,9 @@ fi %endif %changelog +* Thu Apr 25 2024 Iñaki Úcar - 6.30.06-3 +- R-maint-sig mass rebuild + * Tue Apr 23 2024 Mattias Ellert - 6.30.06-2 - Rebuilt for libarrow.so.1600 From 0f2b684662cd83ea098314b4a50741ab93dc99b6 Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Mon, 19 Feb 2024 13:49:35 -0500 Subject: [PATCH 34/89] Do not test with Pandas on 32-bit architectures https://bugzilla.redhat.com/show_bug.cgi?id=2263999 --- root.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/root.spec b/root.spec index 3aba984..207b1f5 100644 --- a/root.spec +++ b/root.spec @@ -47,7 +47,7 @@ Name: root Version: 6.30.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -201,7 +201,7 @@ BuildRequires: zeromq-devel >= 4.3.5 BuildRequires: cppzmq-devel %endif %endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 +%if (0%{?fedora} && 0%{?__isa_bits} == 64) || 0%{?rhel} == 8 BuildRequires: python%{python3_pkgversion}-pandas %endif BuildRequires: python%{python3_pkgversion}-rcssmin @@ -2594,7 +2594,7 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ pyunittests-pyroot-numbadeclare|\ test-webgui-ping" -%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) +%if (0%{?fedora} && 0%{?__isa_bits} != 64) || 0%{?rhel} == 8 # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py # - tutorial-roofit-rf409_NumPyPandasToRooFit-py @@ -3734,6 +3734,9 @@ fi %endif %changelog +* Sun Apr 28 2024 Benjamin A. Beasley - 6.30.06-4 +- Do not test with Pandas on 32-bit architectures + * Thu Apr 25 2024 Iñaki Úcar - 6.30.06-3 - R-maint-sig mass rebuild From 4d9bac38913ea0c73ef57610b910aa09bd579004 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 15 May 2024 12:58:24 +0200 Subject: [PATCH 35/89] Rebuilt for libarrow.so.1601 Improved fontconfig support --- root-fontconfig.patch | 1461 ++++++++++++++--------------------------- root.spec | 22 +- 2 files changed, 507 insertions(+), 976 deletions(-) diff --git a/root-fontconfig.patch b/root-fontconfig.patch index e8ad108..d0f38b1 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,7 +1,28 @@ -diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base/src/TApplication.cxx ---- root-6.28.00.orig/core/base/src/TApplication.cxx 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/core/base/src/TApplication.cxx 2023-02-04 12:47:19.757759982 +0100 -@@ -251,18 +251,11 @@ +From c5f13cb25c3b803346d1a6cac483badbcf2ced62 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 11 May 2024 20:09:47 +0200 +Subject: [PATCH] Use system fonts via fontconfig + +--- + core/base/src/TApplication.cxx | 11 +- + graf2d/asimage/CMakeLists.txt | 1 + + graf2d/asimage/src/TASImage.cxx | 91 +++++++- + graf2d/graf/CMakeLists.txt | 1 + + graf2d/graf/inc/TTF.h | 3 +- + graf2d/graf/src/TTF.cxx | 291 +++++++++++++++++--------- + graf2d/postscript/CMakeLists.txt | 1 + + graf2d/postscript/src/TPostScript.cxx | 106 +++++----- + graf3d/gl/CMakeLists.txt | 1 + + graf3d/gl/src/TGLFontManager.cxx | 123 ++++++++++- + graf3d/gl/src/TGLText.cxx | 56 +++-- + gui/gui/src/TGApplication.cxx | 10 +- + 12 files changed, 494 insertions(+), 201 deletions(-) + +diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx +index 992713264a..32bfc0bbb9 100644 +--- a/core/base/src/TApplication.cxx ++++ b/core/base/src/TApplication.cxx +@@ -251,18 +251,12 @@ void TApplication::InitializeGraphics(Bool_t only_web) LoadGraphicsLibs(); // Try to load TrueType font renderer. Only try to load if not in batch @@ -14,7 +35,7 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base - // Check for use of DFSG - fonts - if (!ttfont) - ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); -- + #if !defined(R__WIN32) if (!gROOT->IsBatch() && !strcmp(gVirtualX->GetName(), "X11") && - ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { @@ -22,7 +43,7 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/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 -@@ -276,7 +269,6 @@ +@@ -276,7 +270,6 @@ void TApplication::InitializeGraphics(Bool_t only_web) } } #endif @@ -30,10 +51,11 @@ diff -ur root-6.28.00.orig/core/base/src/TApplication.cxx root-6.28.00/core/base } if (!only_web || !fAppImp) { -diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asimage/CMakeLists.txt ---- root-6.28.00.orig/graf2d/asimage/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf2d/asimage/CMakeLists.txt 2023-02-04 12:47:19.757759982 +0100 -@@ -30,6 +30,7 @@ +diff --git a/graf2d/asimage/CMakeLists.txt b/graf2d/asimage/CMakeLists.txt +index 31114ad45d..be95419491 100644 +--- a/graf2d/asimage/CMakeLists.txt ++++ b/graf2d/asimage/CMakeLists.txt +@@ -30,6 +30,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage ${FREETYPE_LIBRARIES} ${X11_LIBRARIES} ZLIB::ZLIB @@ -41,10 +63,11 @@ diff -ur root-6.28.00.orig/graf2d/asimage/CMakeLists.txt root-6.28.00/graf2d/asi DEPENDENCIES Core Graf -diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/asimage/src/TASImage.cxx ---- root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf2d/asimage/src/TASImage.cxx 2023-02-04 12:47:19.760759989 +0100 -@@ -115,6 +115,8 @@ +diff --git a/graf2d/asimage/src/TASImage.cxx b/graf2d/asimage/src/TASImage.cxx +index 7e046f4724..137265bd4a 100644 +--- a/graf2d/asimage/src/TASImage.cxx ++++ b/graf2d/asimage/src/TASImage.cxx +@@ -117,6 +117,8 @@ extern "C" { # include } @@ -53,135 +76,101 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a // auxiliary functions for general polygon filling #include "TASPolyUtils.c" -@@ -2590,14 +2592,120 @@ - TString fn = font_name; - fn.Strip(); - -- // This is for backward compatibility... -- if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1); -+ const char *basename = gSystem->BaseName(fn); -+ -+ char *ttfnt = nullptr; -+ int ttindex = 0; -+ -+ FcPattern *pat, *match; -+ FcResult result; -+ -+ pat = FcPatternCreate (); -+ -+ if (strcmp(basename, "timesi.ttf") == 0 || -+ strcmp(basename, "FreeSerifItalic.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, "timesbd.ttf") == 0 || -+ strcmp(basename, "FreeSerifBold.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "timesbi.ttf") == 0 || -+ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, "arial.ttf") == 0 || -+ strcmp(basename, "FreeSans.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "ariali.ttf") == 0 || -+ strcmp(basename, "FreeSansOblique.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, "arialbd.ttf") == 0 || -+ strcmp(basename, "FreeSansBold.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "arialbi.ttf") == 0 || -+ strcmp(basename, "FreeSansBoldOblique.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, "cour.ttf") == 0 || -+ strcmp(basename, "FreeMono.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "couri.ttf") == 0 || -+ strcmp(basename, "FreeMonoOblique.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, "courbd.ttf") == 0 || -+ strcmp(basename, "FreeMonoBold.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "courbi.ttf") == 0 || -+ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else if (strcmp(basename, "symbol.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "times.ttf") == 0 || -+ strcmp(basename, "FreeSerif.otf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "wingding.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ else if (strcmp(basename, "BlackChancery.ttf") == 0) { -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"urwchanceryl"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ } -+ else { -+ Warning("DrawText", "cannot find a font %s", font_name); -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ } -+ -+ FcConfigSubstitute (nullptr, pat, FcMatchPattern); -+ FcDefaultSubstitute (pat); -+ match = FcFontMatch (nullptr, pat, &result); -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); -+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); +@@ -2595,11 +2597,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, + // This is for backward compatibility... + if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1); - const char *ttpath = gEnv->GetValue("Root.TTFontPath", - TROOT::GetTTFFontDir()); - char *tmpstr = gSystem->Which(ttpath, fn, kReadPermission); - fn = tmpstr; - delete [] tmpstr; -+ fn = ttfnt; ++ const char *basename = gSystem->BaseName(fn); + -+ FcPatternDestroy (match); -+ FcPatternDestroy (pat); ++ int ttindex = 0; ++ ++ FcPattern *pat = nullptr, *match; ++ FcResult result; ++ ++ if (strcmp(basename, "timesi.ttf") == 0 || ++ strcmp(basename, "FreeSerifItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:italic"); ++ } ++ else if (strcmp(basename, "timesbd.ttf") == 0 || ++ strcmp(basename, "FreeSerifBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold"); ++ } ++ else if (strcmp(basename, "timesbi.ttf") == 0 || ++ strcmp(basename, "FreeSerifBoldItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic"); ++ } ++ else if (strcmp(basename, "arial.ttf") == 0 || ++ strcmp(basename, "FreeSans.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans"); ++ } ++ else if (strcmp(basename, "ariali.ttf") == 0 || ++ strcmp(basename, "FreeSansOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:italic"); ++ } ++ else if (strcmp(basename, "arialbd.ttf") == 0 || ++ strcmp(basename, "FreeSansBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold"); ++ } ++ else if (strcmp(basename, "arialbi.ttf") == 0 || ++ strcmp(basename, "FreeSansBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic"); ++ } ++ else if (strcmp(basename, "cour.ttf") == 0 || ++ strcmp(basename, "FreeMono.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono"); ++ } ++ else if (strcmp(basename, "couri.ttf") == 0 || ++ strcmp(basename, "FreeMonoOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:italic"); ++ } ++ else if (strcmp(basename, "courbd.ttf") == 0 || ++ strcmp(basename, "FreeMonoBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold"); ++ } ++ else if (strcmp(basename, "courbi.ttf") == 0 || ++ strcmp(basename, "FreeMonoBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic"); ++ } ++ else if (strcmp(basename, "symbol.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps"); ++ } ++ else if (strcmp(basename, "times.ttf") == 0 || ++ strcmp(basename, "FreeSerif.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif"); ++ } ++ else if (strcmp(basename, "wingding.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "dingbats"); ++ } ++ else if (strcmp(basename, "BlackChancery.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "urwchanceryl"); ++ } ++ else if (gSystem->AccessPathName(fn, kReadPermission) != 0) { ++ // Font name is not a file - usae as pattern ++ pat = FcNameParse ((const FcChar8*) fn.Data()); ++ } ++ ++ if (pat) { ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); ++ FcDefaultSubstitute (pat); ++ match = FcFontMatch (nullptr, pat, &result); ++ if (match) { ++ char *ttfnt; ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt); ++ fn = ttfnt; ++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ FcPatternDestroy (match); ++ } ++ FcPatternDestroy (pat); ++ } 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; -@@ -2621,14 +2729,11 @@ +@@ -2623,7 +2702,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, return; } @@ -189,20 +178,12 @@ diff -ur root-6.28.00.orig/graf2d/asimage/src/TASImage.cxx root-6.28.00/graf2d/a + ASFont *font = get_asfont(gFontManager, fn.Data(), ttindex, size, ASF_GuessWho); if (!font) { -- font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho); -- if (!font) { -- Warning("DrawText", "cannot find a font %s", font_name); -- return; -- } -+ Warning("DrawText", "cannot find a font %s", font_name); -+ return; - } - - get_text_size(text, font, (ASText3DType)type, &width, &height); -diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/CMakeLists.txt ---- root-6.28.00.orig/graf2d/graf/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf2d/graf/CMakeLists.txt 2023-02-04 12:47:19.861760233 +0100 -@@ -91,6 +91,7 @@ + font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho); +diff --git a/graf2d/graf/CMakeLists.txt b/graf2d/graf/CMakeLists.txt +index d7d1b77c21..c4ebb994a4 100644 +--- a/graf2d/graf/CMakeLists.txt ++++ b/graf2d/graf/CMakeLists.txt +@@ -91,6 +91,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Graf ${FREETYPE_LIBRARIES} ZLIB::ZLIB mathtext @@ -210,24 +191,27 @@ diff -ur root-6.28.00.orig/graf2d/graf/CMakeLists.txt root-6.28.00/graf2d/graf/C DEPENDENCIES Hist Matrix -diff -ur root-6.28.00.orig/graf2d/graf/inc/TTF.h root-6.28.00/graf2d/graf/inc/TTF.h ---- root-6.28.00.orig/graf2d/graf/inc/TTF.h 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf2d/graf/inc/TTF.h 2023-02-04 12:47:19.862760235 +0100 -@@ -76,9 +76,8 @@ +diff --git a/graf2d/graf/inc/TTF.h b/graf2d/graf/inc/TTF.h +index 0bef9dcb95..ea96fe47ce 100644 +--- a/graf2d/graf/inc/TTF.h ++++ b/graf2d/graf/inc/TTF.h +@@ -76,9 +76,10 @@ protected: static FT_BBox fgCBox; ///< string control box static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map static Int_t fgCurFontIdx; ///< current font index - static Int_t fgSymbItaFontIdx; ///< Symbol italic font index static Int_t fgFontCount; ///< number of fonts loaded -- static char *fgFontName[kTTMaxFonts]; ///< font name -+ static Int_t fgFontID[kTTMaxFonts]; ///< font ID + static char *fgFontName[kTTMaxFonts]; ///< font name ++ static Int_t fgFontIdx[kTTMaxFonts]; ///< font index in font file ++ static Int_t fgFontIta[kTTMaxFonts]; ///< font slanted using transform 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.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/TTF.cxx ---- root-6.28.00.orig/graf2d/graf/src/TTF.cxx 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf2d/graf/src/TTF.cxx 2023-02-04 12:47:19.863760238 +0100 -@@ -25,6 +25,8 @@ +diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx +index ca38ed1f9c..8f1d62686b 100644 +--- a/graf2d/graf/src/TTF.cxx ++++ b/graf2d/graf/src/TTF.cxx +@@ -25,6 +25,8 @@ Interface to the freetype 2 library. #include "TMath.h" #include "TError.h" @@ -236,19 +220,20 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ // to scale fonts to the same size as the old TT version const Float_t kScale = 0.93376068; -@@ -38,10 +40,9 @@ +@@ -38,10 +40,11 @@ Int_t TTF::fgTBlankW = 0; Int_t TTF::fgWidth = 0; Int_t TTF::fgAscent = 0; Int_t TTF::fgCurFontIdx = -1; -Int_t TTF::fgSymbItaFontIdx = -1; Int_t TTF::fgFontCount = 0; Int_t TTF::fgNumGlyphs = 0; --char *TTF::fgFontName[kTTMaxFonts]; -+Int_t TTF::fgFontID[kTTMaxFonts]; + char *TTF::fgFontName[kTTMaxFonts]; ++Int_t TTF::fgFontIdx[kTTMaxFonts]; ++Int_t TTF::fgFontIta[kTTMaxFonts]; FT_Matrix *TTF::fgRotMatrix = nullptr; FT_Library TTF::fgLibrary; FT_BBox TTF::fgCBox; -@@ -72,6 +73,11 @@ +@@ -72,6 +75,11 @@ void TTF::Init() return; } @@ -260,180 +245,159 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ // load default font (arialbd) SetTextFont(62); } -@@ -84,7 +90,6 @@ - if (!fgInit) return; - - for (int i = 0; i < fgFontCount; i++) { -- delete [] fgFontName[i]; - FT_Done_Face(fgFace[i]); - } - if (fgRotMatrix) delete fgRotMatrix; -@@ -109,12 +114,22 @@ +@@ -109,12 +117,15 @@ Short_t TTF::CharToUnicode(UInt_t code) charmap = fgFace[fgCurFontIdx]->charmaps[i]; platform = charmap->platform_id; encoding = charmap->encoding_id; - if ((platform == 3 && encoding == 1) || + if ((platform == 3 && encoding == 1 && -+ (fgFontID[fgCurFontIdx] != 12 && -+ fgFontID[fgCurFontIdx] != 14 && -+ fgFontID[fgCurFontIdx] != 15)) || ++ (fgFontIta[fgCurFontIdx] & 2) == 0) || (platform == 0 && encoding == 0) || + (platform == 7 && encoding == 2 && -+ (fgFontID[fgCurFontIdx] == 12 || -+ fgFontID[fgCurFontIdx] == 14 || -+ fgFontID[fgCurFontIdx] == 15)) || ++ (fgFontIta[fgCurFontIdx] & 2) != 0) || + (platform == 0 && encoding == 3 && -+ (fgFontID[fgCurFontIdx] == 12 || -+ fgFontID[fgCurFontIdx] == 15)) || ++ (fgFontIta[fgCurFontIdx] & 2) != 0) || (platform == 1 && encoding == 0 && - !strcmp(fgFontName[fgCurFontIdx], "wingding.ttf")) || - (platform == 1 && encoding == 0 && - !strcmp(fgFontName[fgCurFontIdx], "symbol.ttf"))) -+ (fgFontID[fgCurFontIdx] == 12 || -+ fgFontID[fgCurFontIdx] == 14 || -+ fgFontID[fgCurFontIdx] == 15))) ++ (fgFontIta[fgCurFontIdx] & 2) != 0)) { fgCharMap[fgCurFontIdx] = charmap; if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx])) -@@ -381,27 +393,147 @@ - - if (!fontname || !fontname[0]) { - Warning("TTF::SetTextFont", -- "no font name specified, using default font %s", fgFontName[0]); -+ "no font name specified, using default font"); - fgCurFontIdx = 0; - return 0; +@@ -387,21 +398,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) } const char *basename = gSystem->BaseName(fontname); ++ char *ttfont = nullptr; ++ int ttindex = 0; ++ ++ FcPattern *pat = nullptr, *match; ++ FcResult result; ++ + if (strcmp(basename, "timesi.ttf") == 0 || + strcmp(basename, "FreeSerifItalic.otf") == 0) { -+ SetTextFont(12); ++ pat = FcNameParse ((const FcChar8*) "freeserif:italic"); + } + else if (strcmp(basename, "timesbd.ttf") == 0 || + strcmp(basename, "FreeSerifBold.otf") == 0) { -+ SetTextFont(22); ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold"); + } + else if (strcmp(basename, "timesbi.ttf") == 0 || + strcmp(basename, "FreeSerifBoldItalic.otf") == 0) { -+ SetTextFont(32); ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic"); + } + else if (strcmp(basename, "arial.ttf") == 0 || + strcmp(basename, "FreeSans.otf") == 0) { -+ SetTextFont(42); ++ pat = FcNameParse ((const FcChar8*) "freesans"); + } + else if (strcmp(basename, "ariali.ttf") == 0 || + strcmp(basename, "FreeSansOblique.otf") == 0) { -+ SetTextFont(52); ++ pat = FcNameParse ((const FcChar8*) "freesans:italic"); + } + else if (strcmp(basename, "arialbd.ttf") == 0 || + strcmp(basename, "FreeSansBold.otf") == 0) { -+ SetTextFont(62); ++ pat = FcNameParse ((const FcChar8*) "freesans:bold"); + } + else if (strcmp(basename, "arialbi.ttf") == 0 || + strcmp(basename, "FreeSansBoldOblique.otf") == 0) { -+ SetTextFont(72); ++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic"); + } + else if (strcmp(basename, "cour.ttf") == 0 || + strcmp(basename, "FreeMono.otf") == 0) { -+ SetTextFont(82); ++ pat = FcNameParse ((const FcChar8*) "freemono"); + } + else if (strcmp(basename, "couri.ttf") == 0 || + strcmp(basename, "FreeMonoOblique.otf") == 0) { -+ SetTextFont(92); ++ pat = FcNameParse ((const FcChar8*) "freemono:italic"); + } + else if (strcmp(basename, "courbd.ttf") == 0 || + strcmp(basename, "FreeMonoBold.otf") == 0) { -+ SetTextFont(102); ++ pat = FcNameParse ((const FcChar8*) "freemono:bold"); + } + else if (strcmp(basename, "courbi.ttf") == 0 || + strcmp(basename, "FreeMonoBoldOblique.otf") == 0) { -+ SetTextFont(112); ++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic"); + } + else if (strcmp(basename, "symbol.ttf") == 0) { -+ if (italic) -+ SetTextFont(152); -+ else -+ SetTextFont(122); ++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps"); ++ italic &= 2; + } + else if (strcmp(basename, "times.ttf") == 0 || + strcmp(basename, "FreeSerif.otf") == 0) { -+ SetTextFont(132); ++ pat = FcNameParse ((const FcChar8*) "freeserif"); + } + else if (strcmp(basename, "wingding.ttf") == 0) { -+ SetTextFont(142); ++ pat = FcNameParse ((const FcChar8*) "dingbats"); ++ italic &= 2; + } + else if (strcmp(basename, "STIXGeneral.otf") == 0) { -+ SetTextFont(162); ++ pat = FcNameParse ((const FcChar8*) "stixgeneral"); + } + else if (strcmp(basename, "STIXGeneralItalic.otf") == 0) { -+ SetTextFont(172); ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic"); + } + else if (strcmp(basename, "STIXGeneralBol.otf") == 0) { -+ SetTextFont(182); ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold"); + } + else if (strcmp(basename, "STIXGeneralBolIta.otf") == 0) { -+ SetTextFont(192); ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic"); + } + else if (strcmp(basename, "STIXSiz1Sym.otf") == 0) { -+ SetTextFont(202); ++ pat = FcNameParse ((const FcChar8*) "stixsize1"); + } + else if (strcmp(basename, "STIXSiz1SymBol.otf") == 0) { -+ SetTextFont(212); ++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold"); + } + else if (strcmp(basename, "STIXSiz2Sym.otf") == 0) { -+ SetTextFont(222); ++ pat = FcNameParse ((const FcChar8*) "stixsize2"); + } + else if (strcmp(basename, "STIXSiz2SymBol.otf") == 0) { -+ SetTextFont(232); ++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold"); + } + else if (strcmp(basename, "STIXSiz3Sym.otf") == 0) { -+ SetTextFont(242); ++ pat = FcNameParse ((const FcChar8*) "stixsize3"); + } + else if (strcmp(basename, "STIXSiz3SymBol.otf") == 0) { -+ SetTextFont(252); ++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold"); + } + else if (strcmp(basename, "STIXSiz4Sym.otf") == 0) { -+ SetTextFont(262); ++ pat = FcNameParse ((const FcChar8*) "stixsize4"); + } + else if (strcmp(basename, "STIXSiz4SymBol.otf") == 0) { -+ SetTextFont(272); ++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold"); + } + else if (strcmp(basename, "STIXSiz5Sym.otf") == 0) { -+ SetTextFont(282); ++ pat = FcNameParse ((const FcChar8*) "stixsize5"); + } + else if (strcmp(basename, "DroidSansFallback.ttf") == 0) { -+ SetTextFont(292); ++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410"); + } -+ else { -+ Error("TTF::SetTextFont", "font %s not known to ROOT", basename); -+ if (fgFontCount) { -+ Warning("TTF::SetTextFont", "using default font"); -+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor) -+ return 0; -+ } else { -+ return 1; ++ else if (strcmp(basename, "BlackChancery.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "urwchanceryl"); ++ } ++ else if (gSystem->AccessPathName(fontname, kReadPermission) != 0) { ++ // Font name is not a file - usae as pattern ++ pat = FcNameParse ((const FcChar8*) fontname); ++ } ++ ++ if (pat) { ++ FcConfigSubstitute (nullptr, pat, FcMatchPattern); ++ FcDefaultSubstitute (pat); ++ match = FcFontMatch (nullptr, pat, &result); ++ if (match) { ++ const char *ttfnt; ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt); ++ ttfont = StrDup(ttfnt); ++ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ FcPatternDestroy (match); + } ++ FcPatternDestroy (pat); + } + -+ return 0; -+} ++ if (!ttfont) ttfont = StrDup(fontname); + -+//______________________________________________________________________________ -+void TTF::SetTextFont(Font_t fontnumber) -+{ -+ int fontid = fontnumber / 10; -+ if (fontid < 0 || fontid > 31) fontid = 0; -+ -+ Int_t italic = 0; -+ if (fontid==15) italic = 1; -+ -+ if (!fgInit) Init(); -+ -+ if (fontid == 0) { -+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor) -+ return; -+ } ++ basename = gSystem->BaseName(ttfont); + // check if font is in cache int i; @@ -450,30 +414,28 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ - return 0; - } - } -+ if (fgFontID[i] == fontid) { ++ if (!strcmp(fgFontName[i], basename) && ++ (fgFontIdx[i] == ttindex) && ++ (fgFontIta[i] == italic)) { + fgCurFontIdx = i; -+ return; ++ delete [] ttfont; ++ return 0; } } -@@ -409,151 +541,215 @@ - if (fgFontCount >= kTTMaxFonts) { - Error("TTF::SetTextFont", "too many fonts opened (increase kTTMaxFont = %d)", +@@ -411,28 +546,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) kTTMaxFonts); -- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); -+ Warning("TTF::SetTextFont", "using default font"); + Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); fgCurFontIdx = 0; // use font 0 (default font, set in ctor) -- return 0; -+ return; ++ delete [] ttfont; + return 0; } - // try to load font (font must be in Root.TTFontPath resource) - const char *ttpath = gEnv->GetValue("Root.TTFontPath", - TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); -+ char *ttfont = nullptr; -+ int ttindex = 0; - +- - if (!ttfont) { - Error("TTF::SetTextFont", "font file %s not found in path", fontname); - if (fgFontCount) { @@ -483,180 +445,8 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ - } else { - return 1; - } -+ FcPattern *pat, *match; -+ FcCharSet *set = nullptr; -+ FcResult result; -+ -+ pat = FcPatternCreate (); -+ -+ switch (fontid) { -+ case 1: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 2: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 3: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 4: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 5: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 6: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 7: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 8: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 9: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 10: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 11: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 12: -+ case 15: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 13: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 14: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 16: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 17: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 18: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 19: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 20: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 21: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 22: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 23: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 24: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 25: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 26: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 27: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 28: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 29: -+ case 30: -+ case 31: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ set = FcCharSetCreate (); -+ FcCharSetAddChar (set, 0x0410); // Cyrillic -+ FcCharSetAddChar (set, 0x4e00); // CJK -+ FcPatternAddCharSet (pat, FC_CHARSET, set); -+ break; -+ default: -+ Error("TTF::SetTextFont", "font %i not known to ROOT", fontid); -+ FcPatternDestroy (pat); -+ Warning("TTF::SetTextFont", "using default font"); -+ fgCurFontIdx = 0; // use font 0 (default font, set in ctor) -+ return; -+ break; - } - -+ FcConfigSubstitute (nullptr, pat, FcMatchPattern); -+ FcDefaultSubstitute (pat); -+ match = FcFontMatch (nullptr, pat, &result); -+ char *ttfnt; -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); -+ ttfont = StrDup (ttfnt); -+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); -+ FcPatternDestroy (match); -+ FcPatternDestroy (pat); -+ if (set) FcCharSetDestroy (set); -+ +- } +- FT_Face tface = (FT_Face) 0; - if (FT_New_Face(fgLibrary, ttfont, 0, &tface)) { @@ -664,64 +454,34 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ Error("TTF::SetTextFont", "error loading font %s", ttfont); delete [] ttfont; if (tface) FT_Done_Face(tface); -- if (fgFontCount) { -- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); -- fgCurFontIdx = 0; -- return 0; -- } else { -- return 1; -- } -+ Warning("TTF::SetTextFont", "using default font"); -+ fgCurFontIdx = 0; -+ return; - } - +@@ -448,19 +568,20 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) delete [] ttfont; -- fgFontName[fgFontCount] = StrDup(basename); -+ fgFontID[fgFontCount] = fontid; + fgFontName[fgFontCount] = StrDup(basename); ++ fgFontIdx[fgFontCount] = ttindex; ++ fgFontIta[fgFontCount] = italic; fgCurFontIdx = fgFontCount; fgFace[fgCurFontIdx] = tface; fgCharMap[fgCurFontIdx] = (FT_CharMap) 0; fgFontCount++; - if (italic) { +- if (italic) { - fgSymbItaFontIdx = fgCurFontIdx; ++ if ((italic & 1) != 0) { FT_Matrix slantMat; slantMat.xx = (1 << 16); slantMat.xy = ((1 << 16) >> 2); slantMat.yx = 0; slantMat.yy = (1 << 16); - FT_Set_Transform( fgFace[fgSymbItaFontIdx], &slantMat, NULL ); -- } -- -- return 0; --} -- --//////////////////////////////////////////////////////////////////////////////// --/// Set specified font. --/// List of the currently supported fonts (screen and PostScript) --/// --/// | Font ID | X11 | TTF | --/// |---------|---------------------------|------------------| --/// | 1 | times-medium-i-normal | timesi.ttf | --/// | 2 | times-bold-r-normal | timesbd.ttf | --/// | 3 | times-bold-i-normal | timesbi.ttf | --/// | 4 | helvetica-medium-r-normal | arial.ttf | --/// | 5 | helvetica-medium-o-normal | ariali.ttf | --/// | 6 | helvetica-bold-r-normal | arialbd.ttf | --/// | 7 | helvetica-bold-o-normal | arialbi.ttf | --/// | 8 | courier-medium-r-normal | cour.ttf | --/// | 9 | courier-medium-o-normal | couri.ttf | --/// | 10 | courier-bold-r-normal | courbd.ttf | --/// | 11 | courier-bold-o-normal | courbi.ttf | --/// | 12 | symbol-medium-r-normal | symbol.ttf | --/// | 13 | times-medium-r-normal | times.ttf | --/// | 14 | | wingding.ttf | --/// | 15 | symbol oblique is emulated from symbol.ttf | | -- --void TTF::SetTextFont(Font_t fontnumber) --{ ++ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr ); + } + + return 0; +@@ -489,70 +610,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) + + void TTF::SetTextFont(Font_t fontnumber) + { - // Added by cholm for use of DFSG - fonts - based on Kevins fix. - // Table of Microsoft and (for non-MSFT operating systems) backup - // FreeFont TTF fonts. @@ -758,14 +518,47 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ - { "Root.TTFont.ME", "DroidSansFallback.ttf" }, - { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" }, - { "Root.TTFont.CJKGothic", "DroidSansFallback.ttf" } -- }; -- ++ static const char *fonttable[] = { ++ "freesans:bold", ++ "freeserif:italic", ++ "freeserif:bold", ++ "freeserif:bold:italic", ++ "freesans", ++ "freesans:italic", ++ "freesans:bold", ++ "freesans:bold:italic", ++ "freemono", ++ "freemono:italic", ++ "freemono:bold", ++ "freemono:bold:italic", ++ "standardsymbolsps", ++ "freeserif", ++ "dingbats", ++ "standardsymbolsps", ++ "stixgeneral", ++ "stixgeneral:italic", ++ "stixgeneral:bold", ++ "stixgeneral:bold:italic", ++ "stixsize1", ++ "stixsize1:bold", ++ "stixsize2", ++ "stixsize2:bold", ++ "stixsize3", ++ "stixsize3:bold", ++ "stixsize4", ++ "stixsize4:bold", ++ "stixsize5", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410" + }; + - static int fontset = -1; - int thisset = fontset; - -- int fontid = fontnumber / 10; -- if (fontid < 0 || fontid > 31) fontid = 0; -- + int fontid = fontnumber / 10; + if (fontid < 0 || fontid > 31) fontid = 0; + - if (thisset == -1) { - // try to load font (font must be in Root.TTFontPath resource) - // to see which fontset we have available @@ -779,21 +572,26 @@ diff -ur root-6.28.00.orig/graf2d/graf/src/TTF.cxx root-6.28.00/graf2d/graf/src/ - // try backup free font - thisset = 1; - } -+ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr ); - } -- Int_t italic = 0; +- } + Int_t italic = 0; - if (fontid==15) italic = 1; - int ret = SetTextFont(gEnv->GetValue(fonttable[fontid][thisset], fonttable[fontid][1]), italic); - // Do not define font set is we're loading the symbol.ttf - it's - // the same in both cases. - if (ret == 0 && fontid != 12) fontset = thisset; ++ if (fontid==12) italic = 2; ++ if (fontid==14) italic = 2; ++ if (fontid==15) italic = 3; ++ ++ SetTextFont(fonttable[fontid], italic); } //////////////////////////////////////////////////////////////////////////////// -diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/postscript/CMakeLists.txt ---- root-6.28.00.orig/graf2d/postscript/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf2d/postscript/CMakeLists.txt 2023-02-04 12:47:19.863760238 +0100 -@@ -27,6 +27,7 @@ +diff --git a/graf2d/postscript/CMakeLists.txt b/graf2d/postscript/CMakeLists.txt +index eb091bbb39..a05023a3f4 100644 +--- a/graf2d/postscript/CMakeLists.txt ++++ b/graf2d/postscript/CMakeLists.txt +@@ -27,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Postscript LIBRARIES ZLIB::ZLIB mathtext @@ -801,10 +599,11 @@ diff -ur root-6.28.00.orig/graf2d/postscript/CMakeLists.txt root-6.28.00/graf2d/ DEPENDENCIES Graf ) -diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/graf2d/postscript/src/TPostScript.cxx ---- root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf2d/postscript/src/TPostScript.cxx 2023-02-04 12:47:19.864760240 +0100 -@@ -234,6 +234,7 @@ +diff --git a/graf2d/postscript/src/TPostScript.cxx b/graf2d/postscript/src/TPostScript.cxx +index 09ea7ffa9c..180fd5e3c1 100644 +--- a/graf2d/postscript/src/TPostScript.cxx ++++ b/graf2d/postscript/src/TPostScript.cxx +@@ -234,6 +234,7 @@ To change the color model use `gStyle->SetColorModelPS(c)`. #include #include #include @@ -812,7 +611,7 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr #include "strlcpy.h" #include "snprintf.h" -@@ -1585,56 +1586,179 @@ +@@ -1585,56 +1586,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename) void TPostScript::FontEmbed(void) { @@ -849,8 +648,41 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr - { "Root.TTFont.ME", "DroidSansFallback.ttf" }, - { "Root.TTFont.CJKMing", "DroidSansFallback.ttf" }, - { "Root.TTFont.CJKCothic", "DroidSansFallback.ttf" } -- }; -- ++ static const char *fonttable[] = { ++ "freesans:bold", ++ "freeserif:italic", ++ "freeserif:bold", ++ "freeserif:bold:italic", ++ "freesans", ++ "freesans:italic", ++ "freesans:bold", ++ "freesans:bold:italic", ++ "freemono", ++ "freemono:italic", ++ "freemono:bold", ++ "freemono:bold:italic", ++ "standardsymbolsps", ++ "freeserif", ++ "dingbats", ++ "standardsymbolsps", ++ "stixgeneral", ++ "stixgeneral:italic", ++ "stixgeneral:bold", ++ "stixgeneral:bold:italic", ++ "stixsize1", ++ "stixsize1:bold", ++ "stixsize2", ++ "stixsize2:bold", ++ "stixsize3", ++ "stixsize3:bold", ++ "stixsize4", ++ "stixsize4:bold", ++ "stixsize5", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410", ++ "droidsansfallback:charset=4e00 0410" + }; + PrintStr("%%IncludeResource: ProcSet (FontSetInit)@"); - // try to load font (font must be in Root.TTFontPath resource) @@ -862,182 +694,28 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr - const char *filename = gEnv->GetValue( - fonttable[fontid][0], fonttable[fontid][1]); - char *ttfont = gSystem->Which(ttpath, filename, kReadPermission); -+ + char *ttfont = nullptr; + + FcPattern *pat, *match; -+ FcCharSet *set = nullptr; + FcResult result; + -+ pat = FcPatternCreate (); -+ -+ switch (fontid) { -+ case 1: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 2: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 3: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 4: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 5: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 6: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 7: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 8: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 9: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 10: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 11: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 12: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 13: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 14: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 16: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 17: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 18: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 19: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 20: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 21: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 22: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 23: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 24: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 25: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 26: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 27: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 28: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 29: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ set = FcCharSetCreate (); -+ FcCharSetAddChar (set, 0x0410); // Cyrillic -+ FcCharSetAddChar (set, 0x4e00); // CJK -+ FcPatternAddCharSet (pat, FC_CHARSET, set); -+ break; -+ } ++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]); + + FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); + match = FcFontMatch (nullptr, pat, &result); -+ char *ttfnt; -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); -+ ttfont = StrDup(ttfnt); -+ FcPatternDestroy (match); -+ FcPatternDestroy (pat); -+ if (set) FcCharSetDestroy (set); ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont); + if (!ttfont) { - Error("TPostScript::FontEmbed", - "font %d (filename `%s') not found in path", - fontid, filename); -+ Error("TPostScript::FontEmbed", "font %d not found in path", ++ Error("TPostScript::FontEmbed", "font %d not found", + fontid); } else { if (FontEmbedType2(ttfont)) { // nothing -@@ -1643,9 +1767,8 @@ +@@ -1643,12 +1648,13 @@ void TPostScript::FontEmbed(void) } else if(FontEmbedType42(ttfont)) { // nothing } else { @@ -1047,9 +725,15 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr + Error("TPostScript::FontEmbed", "failed to embed font %d)", + fontid); } - delete [] ttfont; +- delete [] ttfont; } -@@ -2837,10 +2960,10 @@ ++ ++ FcPatternDestroy (match); ++ FcPatternDestroy (pat); + } + } + PrintStr("%%IncludeResource: font Times-Roman@"); +@@ -2837,10 +2843,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars) { "Root.PSFont.9", "/FreeMonoOblique" }, { "Root.PSFont.10", "/FreeMonoBold" }, { "Root.PSFont.11", "/FreeMonoBoldOblique" }, @@ -1063,10 +747,11 @@ diff -ur root-6.28.00.orig/graf2d/postscript/src/TPostScript.cxx root-6.28.00/gr { "Root.PSFont.STIXGen", "/STIXGeneral" }, { "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" }, { "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" }, -diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMakeLists.txt ---- root-6.28.00.orig/graf3d/gl/CMakeLists.txt 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf3d/gl/CMakeLists.txt 2023-02-04 12:47:19.867760247 +0100 -@@ -208,6 +208,7 @@ +diff --git a/graf3d/gl/CMakeLists.txt b/graf3d/gl/CMakeLists.txt +index a874da9e1d..5454469606 100644 +--- a/graf3d/gl/CMakeLists.txt ++++ b/graf3d/gl/CMakeLists.txt +@@ -208,6 +208,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL ${GL2PS_LIBRARIES} ${X11_LIBRARIES} RGlew @@ -1074,9 +759,10 @@ diff -ur root-6.28.00.orig/graf3d/gl/CMakeLists.txt root-6.28.00/graf3d/gl/CMake DEPENDENCIES Hist Gui -diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/gl/src/TGLFontManager.cxx ---- root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf3d/gl/src/TGLFontManager.cxx 2023-02-04 12:47:19.867760247 +0100 +diff --git a/graf3d/gl/src/TGLFontManager.cxx b/graf3d/gl/src/TGLFontManager.cxx +index 776e9d286f..c4134c5980 100644 +--- a/graf3d/gl/src/TGLFontManager.cxx ++++ b/graf3d/gl/src/TGLFontManager.cxx @@ -36,6 +36,7 @@ # include "FTGLBitmapFont.h" #endif @@ -1085,16 +771,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/ /** \class TGLFont \ingroup opengl -@@ -419,7 +420,7 @@ - ClassImp(TGLFontManager); - - TObjArray TGLFontManager::fgFontFileArray; --Int_t TGLFontManager::fgExtendedFontStart; -+Int_t TGLFontManager::fgExtendedFontStart = 0; - TGLFontManager::FontSizeVec_t TGLFontManager::fgFontSizeArray; - Bool_t TGLFontManager::fgStaticInitDone = kFALSE; - -@@ -450,17 +451,175 @@ +@@ -450,16 +451,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode)); if (it == fFontMap.end()) { @@ -1107,234 +784,127 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLFontManager.cxx root-6.28.00/graf3d/ - ((TObjString*)fgFontFileArray[fileID])->String()); - file = fp; - delete [] fp; -+ char *file = nullptr; -+ int ttindex = 0; ++ TString file; + -+ FcPattern *pat, *match; -+ FcCharSet *set = nullptr; ++ TString fontname = fileID < fgExtendedFontStart ? ++ ((TObjString*)fgFontFileArray[fileID])->String() + ".ttf" : ++ ((TObjString*)fgFontFileArray[fileID])->String(); ++ ++ FcPattern *pat = nullptr, *match; + FcResult result; + -+ pat = FcPatternCreate (); -+ -+ switch (fileID) { -+ case 0: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 1: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 2: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 3: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 4: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 5: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 6: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 7: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 8: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 9: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 10: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 11: -+ case 14: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 12: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 13: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 15: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 16: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 17: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 18: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixgeneral"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 19: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 20: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize1"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 21: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 22: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize2"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 23: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 24: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize3"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 25: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 26: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize4"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 27: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"stixsize5"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 28: -+ case 29: -+ case 30: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"droidsansfallback"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ set = FcCharSetCreate (); -+ FcCharSetAddChar (set, 0x0410); // Cyrillic -+ FcCharSetAddChar (set, 0x4e00); // CJK -+ FcPatternAddCharSet (pat, FC_CHARSET, set); ++ if (strcmp(fontname, "timesi.ttf") == 0 || ++ strcmp(fontname, "FreeSerifItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:italic"); ++ } ++ else if (strcmp(fontname, "timesbd.ttf") == 0 || ++ strcmp(fontname, "FreeSerifBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold"); ++ } ++ else if (strcmp(fontname, "timesbi.ttf") == 0 || ++ strcmp(fontname, "FreeSerifBoldItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif:bold:italic"); ++ } ++ else if (strcmp(fontname, "arial.ttf") == 0 || ++ strcmp(fontname, "FreeSans.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans"); ++ } ++ else if (strcmp(fontname, "ariali.ttf") == 0 || ++ strcmp(fontname, "FreeSansOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:italic"); ++ } ++ else if (strcmp(fontname, "arialbd.ttf") == 0 || ++ strcmp(fontname, "FreeSansBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold"); ++ } ++ else if (strcmp(fontname, "arialbi.ttf") == 0 || ++ strcmp(fontname, "FreeSansBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freesans:bold:italic"); ++ } ++ else if (strcmp(fontname, "cour.ttf") == 0 || ++ strcmp(fontname, "FreeMono.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono"); ++ } ++ else if (strcmp(fontname, "couri.ttf") == 0 || ++ strcmp(fontname, "FreeMonoOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:italic"); ++ } ++ else if (strcmp(fontname, "courbd.ttf") == 0 || ++ strcmp(fontname, "FreeMonoBold.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold"); ++ } ++ else if (strcmp(fontname, "courbi.ttf") == 0 || ++ strcmp(fontname, "FreeMonoBoldOblique.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freemono:bold:italic"); ++ } ++ else if (strcmp(fontname, "symbol.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "standardsymbolsps"); ++ } ++ else if (strcmp(fontname, "times.ttf") == 0 || ++ strcmp(fontname, "FreeSerif.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "freeserif"); } - ++ else if (strcmp(fontname, "wingding.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "dingbats"); ++ } ++ else if (strcmp(fontname, "STIXGeneral.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral"); ++ } ++ else if (strcmp(fontname, "STIXGeneralItalic.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:italic"); ++ } ++ else if (strcmp(fontname, "STIXGeneralBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold"); ++ } ++ else if (strcmp(fontname, "STIXGeneralBolIta.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixgeneral:bold:italic"); ++ } ++ else if (strcmp(fontname, "STIXSiz1Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize1"); ++ } ++ else if (strcmp(fontname, "STIXSiz1SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize1:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz2Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize2"); ++ } ++ else if (strcmp(fontname, "STIXSiz2SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize2:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz3Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize3"); ++ } ++ else if (strcmp(fontname, "STIXSiz3SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize3:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz4Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize4"); ++ } ++ else if (strcmp(fontname, "STIXSiz4SymBol.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize4:bold"); ++ } ++ else if (strcmp(fontname, "STIXSiz5Sym.otf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "stixsize5"); ++ } ++ else if (strcmp(fontname, "DroidSansFallback.ttf") == 0) { ++ pat = FcNameParse ((const FcChar8*) "droidsansfallback:charset=4e00 0410"); ++ } ++ + FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); + match = FcFontMatch (nullptr, pat, &result); + char *ttfnt; -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfnt); -+ file = StrDup (ttfnt); -+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfnt); ++ file = ttfnt; + FcPatternDestroy (match); + FcPatternDestroy (pat); -+ if (set) FcCharSetDestroy (set); -+ + FTFont* ftfont = 0; switch (mode) - { -@@ -484,10 +643,14 @@ - ftfont = new FTGLTextureFont(file); - break; - default: -+ delete [] file; - Error("TGLFontManager::RegisterFont", "invalid FTGL type"); - return; - break; - } -+ -+ delete [] file; -+ - ftfont->FaceSize(size); - const TGLFont &mf = fFontMap.insert(std::make_pair(TGLFont(size, fileID, mode, ftfont, 0), 1)).first->first; - out.CopyAttributes(mf); -@@ -570,8 +733,6 @@ - { - if (fgStaticInitDone == kFALSE) InitStatics(); - -- assert(fgExtendedFontStart > 0 && "GetExtendedFontStartIndex, invalid index"); -- - return fgExtendedFontStart; - } - -@@ -641,28 +802,6 @@ - fgFontFileArray.Add(new TObjString("wingding")); // 140 - fgFontFileArray.Add(new TObjString("symbol")); // 150 - -- fgExtendedFontStart = fgFontFileArray.GetEntries(); -- //"Extended" fonts for gl-pad. -- //fgPadFontStart + ... -- fgFontFileArray.Add(new TObjString("FreeSerifItalic.otf")); // 10 (160) -- fgFontFileArray.Add(new TObjString("FreeSerifBold.otf")); // 20 (170) -- fgFontFileArray.Add(new TObjString("FreeSerifBoldItalic.otf")); // 30 -- -- fgFontFileArray.Add(new TObjString("FreeSans.otf")); // 40 -- fgFontFileArray.Add(new TObjString("FreeSansOblique.otf")); // 50 -- fgFontFileArray.Add(new TObjString("FreeSansBold.otf")); // 60 -- fgFontFileArray.Add(new TObjString("FreeSansBoldOblique.otf")); // 70 -- -- fgFontFileArray.Add(new TObjString("FreeMono.otf")); // 80 -- fgFontFileArray.Add(new TObjString("FreeMonoOblique.otf")); // 90 -- fgFontFileArray.Add(new TObjString("FreeMonoBold.otf")); // 100 -- fgFontFileArray.Add(new TObjString("FreeMonoBoldOblique.otf")); // 110 -- -- fgFontFileArray.Add(new TObjString("symbol.ttf")); // 120 -- fgFontFileArray.Add(new TObjString("FreeSerif.otf")); // 130 -- fgFontFileArray.Add(new TObjString("wingding.ttf")); // 140 -- fgFontFileArray.Add(new TObjString("symbol.ttf")); // 150 -- - 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.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/TGLText.cxx ---- root-6.28.00.orig/graf3d/gl/src/TGLText.cxx 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/graf3d/gl/src/TGLText.cxx 2023-02-04 12:47:19.868760250 +0100 +diff --git a/graf3d/gl/src/TGLText.cxx b/graf3d/gl/src/TGLText.cxx +index f84f5193d2..8a672c787c 100644 +--- a/graf3d/gl/src/TGLText.cxx ++++ b/graf3d/gl/src/TGLText.cxx @@ -32,6 +32,8 @@ # include "FTGLBitmapFont.h" #endif @@ -1344,7 +914,7 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/ #define FTGL_BITMAP 0 #define FTGL_PIXMAP 1 #define FTGL_OUTLINE 2 -@@ -176,27 +178,92 @@ +@@ -176,27 +178,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber) { int fontid = fontnumber / 10; @@ -1369,96 +939,39 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/ - const char *ttpath = gEnv->GetValue("Root.TTFontPath", - TROOT::GetTTFFontDir()); - char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); ++ static const char *fonttable[] = { ++ "freesans:bold", ++ "freeserif:italic", ++ "freeserif:bold", ++ "freeserif:bold:italic", ++ "freesans", ++ "freesans:italic", ++ "freesans:bold", ++ "freesans:bold:italic", ++ "freemono", ++ "freemono:italic", ++ "freemono:bold", ++ "freemono:bold:italic", ++ "standardsymbolsps", ++ "freeserif", ++ "dingbats", ++ }; ++ ++ char *ttfont; ++ + FcPattern *pat, *match; + FcResult result; -+ char *ttfont; -+ int ttindex; + -+ pat = FcPatternCreate (); -+ -+ switch (fontid) { -+ case 1: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 2: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 3: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 4: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 5: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 0: -+ case 6: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 7: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freesans"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 8: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 9: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 10: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 11: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freemono"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_BOLD); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ITALIC); -+ break; -+ case 12: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"standardsymbolsps"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 13: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"freeserif"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ case 14: -+ FcPatternAddString (pat, FC_FAMILY, (const FcChar8*)"dingbats"); -+ FcPatternAddInteger (pat, FC_WEIGHT, FC_WEIGHT_REGULAR); -+ FcPatternAddInteger (pat, FC_SLANT, FC_SLANT_ROMAN); -+ break; -+ } ++ pat = FcNameParse ((const FcChar8*) fonttable[fontid]); + + FcConfigSubstitute (nullptr, pat, FcMatchPattern); + FcDefaultSubstitute (pat); + match = FcFontMatch (nullptr, pat, &result); -+ FcPatternGetString (match, FC_FILE, 0, (FcChar8**)&ttfont); -+ FcPatternGetInteger (match, FC_INDEX, 0, &ttindex); ++ FcPatternGetString (match, FC_FILE, 0, (FcChar8**) &ttfont); if (fGLTextFont) delete fGLTextFont; -@@ -204,7 +271,9 @@ +@@ -204,7 +214,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber) fGLTextFont = new FTGLPolygonFont(ttfont); @@ -1469,10 +982,11 @@ diff -ur root-6.28.00.orig/graf3d/gl/src/TGLText.cxx root-6.28.00/graf3d/gl/src/ Error("SetGLTextFont","Cannot set FTGL::FaceSize"); - delete [] ttfont; } -diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/src/TGApplication.cxx ---- root-6.28.00.orig/gui/gui/src/TGApplication.cxx 2023-02-03 15:34:27.000000000 +0100 -+++ root-6.28.00/gui/gui/src/TGApplication.cxx 2023-02-04 12:47:19.868760250 +0100 -@@ -81,20 +81,12 @@ +diff --git a/gui/gui/src/TGApplication.cxx b/gui/gui/src/TGApplication.cxx +index 72d7dbbf95..73a44fdd7f 100644 +--- a/gui/gui/src/TGApplication.cxx ++++ b/gui/gui/src/TGApplication.cxx +@@ -81,20 +81,12 @@ TGApplication::TGApplication(const char *appClassName, gROOT->SetBatch(kFALSE); if (strcmp(appClassName, "proofserv")) { @@ -1494,3 +1008,6 @@ diff -ur root-6.28.00.orig/gui/gui/src/TGApplication.cxx root-6.28.00/gui/gui/sr } // Create the canvas colors early so they are allocated before +-- +2.45.0 + diff --git a/root.spec b/root.spec index 207b1f5..bfe8824 100644 --- a/root.spec +++ b/root.spec @@ -41,13 +41,23 @@ %global bundlejson 0 %endif +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 +%ifarch %{ix86} %{arm} +%global pandas 0 +%else +%global pandas 1 +%endif +%else +%global pandas 0 +%endif + # Do not generate autoprovides for Python modules %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root Version: 6.30.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -201,7 +211,7 @@ BuildRequires: zeromq-devel >= 4.3.5 BuildRequires: cppzmq-devel %endif %endif -%if (0%{?fedora} && 0%{?__isa_bits} == 64) || 0%{?rhel} == 8 +%if %{pandas} BuildRequires: python%{python3_pkgversion}-pandas %endif BuildRequires: python%{python3_pkgversion}-rcssmin @@ -2594,7 +2604,7 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ pyunittests-pyroot-numbadeclare|\ test-webgui-ping" -%if (0%{?fedora} && 0%{?__isa_bits} != 64) || 0%{?rhel} == 8 +%if ! %{pandas} # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py # - tutorial-roofit-rf409_NumPyPandasToRooFit-py @@ -2820,7 +2830,7 @@ RSqliteDS.Davix:\ TChainParsing.RemoteGlob:\ TFile.ReadWithoutGlobalRegistrationNet:\ TFile.ReadWithoutGlobalRegistrationWeb \ -%if ! ( %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 ) +%if ! %{pandas} ROOTTEST_IGNORE_PANDAS_PY3=1 \ %endif ROOTTEST_IGNORE_NUMBA_PY3=1 \ @@ -3734,6 +3744,10 @@ fi %endif %changelog +* Wed May 15 2024 Mattias Ellert - 6.30.06-5 +- Rebuilt for libarrow.so.1601 +- Improved fontconfig support + * Sun Apr 28 2024 Benjamin A. Beasley - 6.30.06-4 - Do not test with Pandas on 32-bit architectures From 95f73fc33a01c2cbdedf36cdb9e4fab77a7e6381 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 7 Jun 2024 12:04:22 +0200 Subject: [PATCH 36/89] Update to 6.32.00 Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020) Dropped patches: 12 New patches: 6 The JsMVA python module is now a submodule of the ROOT python module The notebook package was merged with the JupyROOT package --- root-32bit-tests.patch | 16 +- root-avoid-out-of-memory-during-linking.patch | 30 -- root-big-endian-byte-swap.patch | 58 --- root-clad.patch | 26 - root-failure-on-ppc64le-and-s390x.patch | 35 ++ ...-fix-one-more-broken-import-in-JsMVA.patch | 25 + ...e-on-ppc64le-and-aarch64-with-gcc-12.patch | 44 -- root-fontconfig.patch | 8 +- root-format-warnings-32-bit.patch | 73 +++ root-gtest-back.patch | 25 - ...about-RooNaNPacker-not-being-impleme.patch | 33 -- root-jsmva-static.patch | 36 -- root-new-zlib.patch | 89 ---- root-no-export-python-modules.patch | 42 +- root-np32.patch | 111 ---- root-old-gtest.patch | 83 --- root-out-of-bounds.patch | 26 + root-pcre2.patch | 456 ---------------- root-stress.patch | 32 ++ ...istent-wording-in-tmva-test-comments.patch | 86 --- root-write-array.patch | 125 +++++ root.spec | 493 ++++++------------ sources | 2 +- 23 files changed, 500 insertions(+), 1454 deletions(-) delete mode 100644 root-avoid-out-of-memory-during-linking.patch delete mode 100644 root-big-endian-byte-swap.patch delete mode 100644 root-clad.patch create mode 100644 root-failure-on-ppc64le-and-s390x.patch create mode 100644 root-fix-one-more-broken-import-in-JsMVA.patch delete mode 100644 root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch create mode 100644 root-format-warnings-32-bit.patch delete mode 100644 root-gtest-back.patch delete mode 100644 root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch delete mode 100644 root-jsmva-static.patch delete mode 100644 root-new-zlib.patch delete mode 100644 root-np32.patch delete mode 100644 root-old-gtest.patch create mode 100644 root-out-of-bounds.patch delete mode 100644 root-pcre2.patch create mode 100644 root-stress.patch delete mode 100644 root-use-consistent-wording-in-tmva-test-comments.patch create mode 100644 root-write-array.patch diff --git a/root-32bit-tests.patch b/root-32bit-tests.patch index ea926b4..ae15a5d 100644 --- a/root-32bit-tests.patch +++ b/root-32bit-tests.patch @@ -1,7 +1,7 @@ -From 70d941cd6ebbc3726e08ef7f52d0135453f0b840 Mon Sep 17 00:00:00 2001 +From 55446dcd6eabc1fff218f266c11f31697fe99f09 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 13 Mar 2020 16:21:55 +0100 -Subject: [PATCH 2/3] Run tests on 32 bit +Subject: [PATCH] Run tests on 32 bit --- test/stressGeometry.cxx | 8 -------- @@ -9,7 +9,7 @@ Subject: [PATCH 2/3] Run tests on 32 bit 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx -index 5e81f5f2ca..18e41a6f45 100644 +index f8d78f4f54..617b9e1644 100644 --- a/test/stressGeometry.cxx +++ b/test/stressGeometry.cxx @@ -257,14 +257,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg @@ -28,26 +28,26 @@ index 5e81f5f2ca..18e41a6f45 100644 TString fname; for (i=0; i -Date: Fri, 17 Nov 2023 17:15:15 +0100 -Subject: [PATCH] Avoid out of memory during linking regardless of build type - ---- - core/metacling/src/CMakeLists.txt | 7 ++----- - 1 file changed, 2 insertions(+), 5 deletions(-) - -diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt -index e750480eb3..dd50793d29 100644 ---- a/core/metacling/src/CMakeLists.txt -+++ b/core/metacling/src/CMakeLists.txt -@@ -111,11 +111,8 @@ ROOT_LINKER_LIBRARY(Cling - $ - LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS}) - --string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE) --if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO) -- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. -- add_dependencies(Cling rootcling_stage1) --endif() -+# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm. -+add_dependencies(Cling rootcling_stage1) - - if(MSVC) - set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) --- -2.43.0 - diff --git a/root-big-endian-byte-swap.patch b/root-big-endian-byte-swap.patch deleted file mode 100644 index caa3076..0000000 --- a/root-big-endian-byte-swap.patch +++ /dev/null @@ -1,58 +0,0 @@ -From b32c7a1b080cb5d14f242070bf906ea6929d604d Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 25 Mar 2022 11:13:12 +0100 -Subject: [PATCH] Byte swap values read from the protobuf raw data stream on - big endian - ---- - tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 23 +++++++++++++++----- - 1 file changed, 17 insertions(+), 6 deletions(-) - -diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -index ab457dcddc..d701fb3299 100644 ---- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -+++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -@@ -1,3 +1,4 @@ -+#include "Byteswap.h" - #include "TMVA/RModelParser_ONNX.hxx" - #include "onnx_proto3.pb.h" - -@@ -335,9 +336,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose) - case ETensorType::FLOAT: { - std::shared_ptr data(malloc(fLength * sizeof(float)), free); - -- if (tensorproto->raw_data().empty() == false) { -- auto raw_data_ptr = reinterpret_cast(const_cast(tensorproto->raw_data().c_str())); -- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float)); -+ if (!tensorproto->raw_data().empty()) { -+#ifdef R__BYTESWAP -+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float)); -+#else -+ for (std::size_t k = 0; k < fLength; ++k) -+ (reinterpret_cast(data.get()))[k] = -+ Rbswap_32((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); -+#endif - } else { - tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(), - static_cast(data.get())); -@@ -350,9 +356,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose) - case ETensorType::INT64: { - std::shared_ptr data(malloc(fLength * sizeof(int64_t)), free); - -- if (tensorproto->raw_data().empty() == false) { -- auto raw_data_ptr = reinterpret_cast(const_cast(tensorproto->raw_data().c_str())); -- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(int64_t)); -+ if (!tensorproto->raw_data().empty()) { -+#ifdef R__BYTESWAP -+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(int64_t)); -+#else -+ for (std::size_t k = 0; k < fLength; ++k) -+ (reinterpret_cast(data.get()))[k] = -+ Rbswap_64((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); -+#endif - } else { - tensorproto->mutable_int64_data()->ExtractSubrange(0, tensorproto->int64_data_size(), - static_cast(data.get())); --- -2.39.2 - diff --git a/root-clad.patch b/root-clad.patch deleted file mode 100644 index 139775e..0000000 --- a/root-clad.patch +++ /dev/null @@ -1,26 +0,0 @@ -From fae9b92742c5e991ad33769d1357a721838e93f9 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 11:37:23 +0100 -Subject: [PATCH 1/3] Add fit/exampleFit3D.C to clad veto - ---- - tutorials/CMakeLists.txt | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt -index 5cba95407b..81f6539f03 100644 ---- a/tutorials/CMakeLists.txt -+++ b/tutorials/CMakeLists.txt -@@ -74,7 +74,8 @@ if(NOT ROOT_minuit2_FOUND) - #---Tutorials disabled depending on the build components------------- - - if(NOT clad) -- set(clad_veto fit/minuit2GausFit.C) -+ set(clad_veto fit/minuit2GausFit.C -+ fit/exampleFit3D.C) - endif() - - # RBatchGenerator tutorials need Python 3.8+. --- -2.42.0 - diff --git a/root-failure-on-ppc64le-and-s390x.patch b/root-failure-on-ppc64le-and-s390x.patch new file mode 100644 index 0000000..787eab5 --- /dev/null +++ b/root-failure-on-ppc64le-and-s390x.patch @@ -0,0 +1,35 @@ +From d3b5ef223500c69efadb9b8c4735247d9ba5c5ea Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 2 Jun 2024 07:03:42 +0200 +Subject: [PATCH] Fix test failure on ppc64le and s390x + +--- + hist/hist/test/test_tprofile2poly.cxx | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx +index 26b9801593..1dfa93259c 100644 +--- a/hist/hist/test/test_tprofile2poly.cxx ++++ b/hist/hist/test/test_tprofile2poly.cxx +@@ -25,10 +25,16 @@ void FillForTest(TProfile2D* tp2d, TProfile2Poly* tpp, TRandom& ran) { + } + + void globalStatsCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { ++ const double relTol = 1e-12; ++ double cont1, cont2; + for(Int_t c=1; c<=3; ++c) { + ASSERT_DOUBLE_EQ(tp2d->GetMean(c), tpp->GetMean(c)); +- ASSERT_DOUBLE_EQ(tp2d->GetMeanError(c), tpp->GetMeanError(c)); +- ASSERT_DOUBLE_EQ(tp2d->GetStdDev(c), tpp->GetStdDev(c)); ++ cont1 = tp2d->GetMeanError(c); ++ cont2 = tpp->GetMeanError(c); ++ ASSERT_NEAR(cont1, cont2, relTol * cont2); ++ cont1 = tp2d->GetStdDev(c); ++ cont2 = tpp->GetStdDev(c); ++ ASSERT_NEAR(cont1, cont2, relTol * cont2); + } + } + +-- +2.45.1 + diff --git a/root-fix-one-more-broken-import-in-JsMVA.patch b/root-fix-one-more-broken-import-in-JsMVA.patch new file mode 100644 index 0000000..0393bdc --- /dev/null +++ b/root-fix-one-more-broken-import-in-JsMVA.patch @@ -0,0 +1,25 @@ +From de85dbd3344709d1c5ca87e93c87cdbce147ce5b Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 5 Jun 2024 08:49:14 +0200 +Subject: [PATCH] Fix one more broken import in JsMVA + +--- + bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py +index 57358765e4..7f56cd6dd5 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py +@@ -23,7 +23,7 @@ class JsMVAMagic(Magics): + @magic_arguments() + @argument("arg", nargs="?", default="on", help="Enable/Disable JavaScript visualisation for TMVA") + def jsmva(self, line): +- from JsMVA.JPyInterface import functions ++ from .JPyInterface import functions + + args = parse_argstring(self.jsmva, line) + if args.arg == "on": +-- +2.45.1 + diff --git a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch b/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch deleted file mode 100644 index 274aa66..0000000 --- a/root-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 15f50c71b4d89bfbf06ce817dee38e843f0f55cd Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 17 Jan 2022 23:50:47 +0100 -Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12 - -.../hist/hist/test/test_tprofile2poly.cxx:61: Failure -The difference between cont1 and cont2 is 1.4551915228366852e-11, which exceeds delta, where -cont1 evaluates to 54886.064319363642, -cont2 evaluates to 54886.064319363628, and -delta evaluates to 9.999999960041972e-12. -.../hist/hist/test/test_tprofile2poly.cxx:61: Failure -The difference between cont1 and cont2 is 1.4551915228366852e-11, where -cont1 evaluates to 109868.61342004745, -cont2 evaluates to 109868.61342004743. -The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead. ---- - hist/hist/test/test_tprofile2poly.cxx | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx -index 40cb3052a2..ecf559a4b3 100644 ---- a/hist/hist/test/test_tprofile2poly.cxx -+++ b/hist/hist/test/test_tprofile2poly.cxx -@@ -58,15 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { - for(Double_t x=0.5; x<10; x+=2.0) { - cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(x,y)); - cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(x,y)); -- ASSERT_NEAR(cont1, cont2, delta); -+ ASSERT_NEAR(cont1, cont2, 2 * delta); - } - - } - // test overflow - cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11)); - cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11)); -- ASSERT_NEAR(cont1, cont2, delta); -- -+ ASSERT_NEAR(cont1, cont2, 2 * delta); - } - - void binErrorCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { --- -2.39.2 - diff --git a/root-fontconfig.patch b/root-fontconfig.patch index d0f38b1..185b1c4 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -490,10 +490,10 @@ index ca38ed1f9c..8f1d62686b 100644 - { "Root.TTFont.1", "FreeSerifItalic.otf" }, - { "Root.TTFont.2", "FreeSerifBold.otf" }, - { "Root.TTFont.3", "FreeSerifBoldItalic.otf" }, -- { "Root.TTFont.4", "FreeSans.otf" }, -- { "Root.TTFont.5", "FreeSansOblique.otf" }, -- { "Root.TTFont.6", "FreeSansBold.otf" }, -- { "Root.TTFont.7", "FreeSansBoldOblique.otf" }, +- { "Root.TTFont.4", "texgyreheros-regular.otf" }, +- { "Root.TTFont.5", "texgyreheros-italic.otf" }, +- { "Root.TTFont.6", "texgyreheros-bold.otf" }, +- { "Root.TTFont.7", "texgyreheros-bolditalic.otf" }, - { "Root.TTFont.8", "FreeMono.otf" }, - { "Root.TTFont.9", "FreeMonoOblique.otf" }, - { "Root.TTFont.10", "FreeMonoBold.otf" }, diff --git a/root-format-warnings-32-bit.patch b/root-format-warnings-32-bit.patch new file mode 100644 index 0000000..3583398 --- /dev/null +++ b/root-format-warnings-32-bit.patch @@ -0,0 +1,73 @@ +From 8592c5e065b8cf46480f5a1efe0363fcf2150551 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 4 Jun 2024 08:47:04 +0200 +Subject: [PATCH] Correct format - warnings seen on 32 bit architectures + +--- + core/clib/src/mmapsup.c | 2 +- + roofit/xroofit/src/xRooNode.cxx | 2 +- + tree/dataframe/src/RDFDisplay.cxx | 4 ++-- + tree/dataframe/src/RDFHelpers.cxx | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/core/clib/src/mmapsup.c b/core/clib/src/mmapsup.c +index 81f68a2059..da46dc7ba5 100644 +--- a/core/clib/src/mmapsup.c ++++ b/core/clib/src/mmapsup.c +@@ -174,7 +174,7 @@ PTR __mmalloc_mmap_morecore(struct mdesc *mdp, int size) + if (mdp -> top != PAGE_ALIGN(mdp -> top)) { + fprintf(stderr, + "mmap_morecore error: base memory location (%p) is not aligned with %zu as required.\n", +- mdp -> top, (long)pagesize); ++ mdp -> top, pagesize); + return result; + } + mapto = mmap (mdp -> top, mapbytes, PROT_READ | PROT_WRITE, +diff --git a/roofit/xroofit/src/xRooNode.cxx b/roofit/xroofit/src/xRooNode.cxx +index f8c96fbf62..852e6997c0 100644 +--- a/roofit/xroofit/src/xRooNode.cxx ++++ b/roofit/xroofit/src/xRooNode.cxx +@@ -11075,7 +11075,7 @@ std::string cling::printValue(const xRooNode *v) + out += "{"; + out += n->GetName(); + if (out.length() > 100 && left > 0) { +- out += TString::Format(",... and %lu more", left); ++ out += TString::Format(",... and %zu more", left); + break; + } + } +diff --git a/tree/dataframe/src/RDFDisplay.cxx b/tree/dataframe/src/RDFDisplay.cxx +index 9dc555fc1d..2ef7de7ddc 100644 +--- a/tree/dataframe/src/RDFDisplay.cxx ++++ b/tree/dataframe/src/RDFDisplay.cxx +@@ -232,12 +232,12 @@ void RDisplay::Print() const + // Thus, the first column is only the Row column and the actual first column is printed + columnsToPrint = 2; + } +- Info("Print", "Only showing %lu columns out of %lu\n", columnsToPrint, fNColumns); ++ Info("Print", "Only showing %zu columns out of %zu\n", columnsToPrint, fNColumns); + allColumnsFit = false; + } + + if (fNMaxCollectionElements < 1) +- Info("Print", "No collections shown since fNMaxCollectionElements is %lu\n", fNMaxCollectionElements); ++ Info("Print", "No collections shown since fNMaxCollectionElements is %zu\n", fNMaxCollectionElements); + + auto nrRows = fTable.size(); + std::cout << DashesBetweenLines(columnsToPrint, allColumnsFit); // Print dashes in the top of the table +diff --git a/tree/dataframe/src/RDFHelpers.cxx b/tree/dataframe/src/RDFHelpers.cxx +index 4891454cc0..3490901b5d 100644 +--- a/tree/dataframe/src/RDFHelpers.cxx ++++ b/tree/dataframe/src/RDFHelpers.cxx +@@ -74,7 +74,7 @@ unsigned int ROOT::RDF::RunGraphs(std::vector handles) + const unsigned int nToRun = + std::count_if(handles.begin(), handles.end(), [](const auto &h) { return !h.IsReady(); }); + if (nToRun < handles.size()) { +- Warning("RunGraphs", "Got %lu handles from which %lu link to results which are already ready.", handles.size(), ++ Warning("RunGraphs", "Got %zu handles from which %zu link to results which are already ready.", handles.size(), + handles.size() - nToRun); + } + if (nToRun == 0u) +-- +2.45.1 + diff --git a/root-gtest-back.patch b/root-gtest-back.patch deleted file mode 100644 index 1624451..0000000 --- a/root-gtest-back.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1942f5569b1d101f2c89341765ea37850e3de669 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 11:43:46 +0100 -Subject: [PATCH 2/3] Add old gtest compat for SetUpTestSuite/TearDownTestSuite - ---- - tree/tree/test/friendinfo.cxx | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/tree/tree/test/friendinfo.cxx b/tree/tree/test/friendinfo.cxx -index 141a495052..6e94056946 100644 ---- a/tree/tree/test/friendinfo.cxx -+++ b/tree/tree/test/friendinfo.cxx -@@ -14,6 +14,8 @@ - // Backward compatibility for gtest version < 1.10.0 - #ifndef INSTANTIATE_TEST_SUITE_P - #define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P -+#define SetUpTestSuite SetUpTestCase -+#define TearDownTestSuite TearDownTestCase - #endif - - namespace { --- -2.42.0 - diff --git a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch b/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch deleted file mode 100644 index 20e2ee5..0000000 --- a/root-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ba0dc65e558fd916dbe18f8dbe8208a3be932c25 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 28 Mar 2022 09:20:18 +0200 -Subject: [PATCH] Ignore warnings about RooNaNPacker not being implemented for - big endian - -This warning is triggered in many tests, so it makes sense to put it -in the default ignored set. ---- - core/testsupport/src/TestSupport.cxx | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx -index 259ab4e09c..79cd476950 100644 ---- a/core/testsupport/src/TestSupport.cxx -+++ b/core/testsupport/src/TestSupport.cxx -@@ -73,6 +73,13 @@ static struct ForbidDiagnostics { - return; - } - -+ // FIXME: RooNaNPacker warns about not being implemented for big endian -+ if (level == kWarning -+ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) { -+ std::cerr << "Warning in " << location << " " << msg << std::endl; -+ return; -+ } -+ - FAIL() << "Received unexpected diagnostic of severity " - << level - << " at '" << location << "' reading '" << msg << "'.\n" --- -2.42.0 - diff --git a/root-jsmva-static.patch b/root-jsmva-static.patch deleted file mode 100644 index 2550f4d..0000000 --- a/root-jsmva-static.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -ur root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py ---- root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-08-11 09:06:21.894746090 +0200 -@@ -188,7 +188,7 @@ - ## Class for creating the output scripts and inserting them to cell output - class JsDraw: - ## Base repository -- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest" -+ __jsMVARepo = "/static/JsMVA" - - ## String containing the link to JavaScript files - __jsMVASourceDir = __jsMVARepo + "/js" -diff -ur root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py ---- root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-08-11 09:06:21.925746168 +0200 -@@ -188,7 +188,7 @@ - ## Class for creating the output scripts and inserting them to cell output - class JsDraw: - ## Base repository -- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest" -+ __jsMVARepo = "/static/JsMVA" - - ## String containing the link to JavaScript files - __jsMVASourceDir = __jsMVARepo + "/js" -diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js ---- root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js 2021-08-11 09:10:45.638410266 +0200 -@@ -16,7 +16,7 @@ - - (function(factory){ - -- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/"; -+ var JSROOT_source_dir = "/static/scripts/"; - - var url = ""; - if (requirejs.s.contexts.hasOwnProperty("_")) { diff --git a/root-new-zlib.patch b/root-new-zlib.patch deleted file mode 100644 index f12eef7..0000000 --- a/root-new-zlib.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 260fc202a1387cfc3f3ef756f584923ab5b0a198 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 21 Dec 2023 17:58:49 +0100 -Subject: [PATCH] Adapt tests to work with zlib-ng - -Fedora 40 has replaced zlib with a zlib compatible version of zlib-ng ---- - test/stress.cxx | 2 +- - test/stressGraphics.ref | 28 ++++++++++++++-------------- - 2 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/test/stress.cxx b/test/stress.cxx -index de8061a9fc..77f48d43b8 100644 ---- a/test/stress.cxx -+++ b/test/stress.cxx -@@ -406,7 +406,7 @@ void stress3() - #else - constexpr Long64_t lastgood = 52090; - #endif -- constexpr Long64_t tolerance = 150; -+ constexpr Long64_t tolerance = 300; - #ifdef R__HAS_DEFAULT_LZ4 - constexpr Long64_t difflastgoodlz4 = 5500; - if (last < lastgood - tolerance || last > lastgood + difflastgoodlz4 + tolerance || comp < 1.5 || comp > 2.1) -diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref -index 16d06e33fa..a21068927d 100644 ---- a/test/stressGraphics.ref -+++ b/test/stressGraphics.ref -@@ -2,12 +2,12 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN - 1 529 50 12767 50 23848 3700 3937 100 569 60 - 2 4627 600 14506 100 13368 7900 9208 3000 4690 600 - 3 452 50 12694 50 11232 4200 3796 10700 492 50 -- 4 23617 1500 19386 100 143320 123000 45665 11000 24908 1500 -+ 4 23617 1500 19386 200 143320 123000 45665 11000 24908 1500 - 5 1025 150 12802 200 33468 9900 30846 5000 1072 200 - 6 430 50 12669 50 9558 100 5325 700 471 50 - 7 4980 50 13893 50 16143 1300 12230 500 5011 70 - 8 5442 80 13473 50 18430 700 12398 300 5469 80 -- 9 9253 100 14377 50 19851 2400 12199 900 9449 100 -+ 9 9253 100 14377 100 19851 2400 12199 900 9449 100 - 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 - 11 12971 100 14444 50 34063 2000 32033 1200 12864 150 - 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 -@@ -15,30 +15,30 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN - 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 - 15 15690 5000 17179 200 23076 9500 15202 900 10437 5000 - 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 -- 17 20444 400 21520 100 27511 11000 16867 600 20721 400 -- 18 15894 100 19305 100 27187 10300 15925 350 15925 100 -- 19 22521 300 42926 150 43868 17000 19232 11000 22729 300 -+ 17 20444 400 21520 150 27511 11000 16867 600 20721 400 -+ 18 15894 100 19305 200 27187 10300 15925 350 15925 100 -+ 19 22521 300 42926 200 43868 17000 19232 11000 22729 300 - 20 3664 600 14437 100 19824 6300 10396 900 4220 600 - 21 17608 600 13900 150 49440 6300 37586 9000 5938 600 - 22 4866 600 14162 100 30889 10050 21311 1800 4845 600 -- 23 4131 40 15272 50 34038 2500 12258 1400 4162 40 -+ 23 4131 40 15272 100 34038 2500 12258 1400 4162 40 - 24 7813 300 23739 100 11085 6000 6973 3100 8081 300 - 25 28422 150 29391 300 14104 14800 7386 2800 14493 150 - 26 4545 150 14541 100 27602 14800 13094 2800 4467 150 - 27 6141 200 15967 100 39594 21600 19331 7000 6596 500 - 28 9110 500 16584 200 21346 21600 10645 7000 8869 500 - 29 7419 500 15112 200 18872 21600 7928 7000 7296 500 -- 30 17016 5500 18198 100 32434 17400 22157 5000 20823 5500 -- 31 30615 8200 27176 150 50520 18200 35724 5400 36690 8200 -- 32 3304592 100 712308 500 62688 19000 123056 7000 0 0 -+ 30 17016 5500 18198 250 32434 17400 22157 5000 20823 5500 -+ 31 30615 8200 27176 200 50520 18200 35724 5400 36690 8200 -+ 32 3304592 100 712308 3000 62688 19000 123056 7000 0 0 - 33 89233 500 47975 300 65532 27800 37314 12000 90600 500 - 34 36514 300 16815 200 47408 12700 33739 3700 36399 300 -- 35 207729 750 87126 100 76094 38000 54717 11000 210497 800 -- 36 401670 6500 156361 500 62719 34100 45592 14000 410114 6500 -- 37 566142 5000 225206 750 65828 31800 53934 6500 573396 5000 -- 38 3738751 35000 1292739 8000 60580 9900 133547 3500 3783013 35000 -+ 35 207729 750 87126 750 76094 38000 54717 11000 210497 800 -+ 36 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500 -+ 37 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000 -+ 38 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000 - 39 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500 -- 40 38312 200 56877 250 36524 11800 119641 8000 38121 200 -+ 40 38312 200 56877 750 36524 11800 119641 8000 38121 200 - 41 15025 3000 29289 500 42525 11300 33336 3900 14787 4000 - 42 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000 - 43 4846 150 14075 150 33239 600 25303 300 4877 150 --- -2.43.0 - diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch index aa7604d..be22620 100644 --- a/root-no-export-python-modules.patch +++ b/root-no-export-python-modules.patch @@ -1,30 +1,16 @@ -diff -ur root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt root-6.24.02/bindings/jupyroot/CMakeLists.txt ---- root-6.24.02.orig/bindings/jupyroot/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/jupyroot/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200 -@@ -70,8 +70,7 @@ - endforeach() +--- root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-28 06:06:46.000000000 +0200 ++++ root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-29 09:47:08.960324940 +0200 +@@ -189,11 +189,10 @@ + # Create meta-target PyROOT3 (INTERFACE library) + # Export of targets are not supported for custom targets(add_custom_targets()) + add_library(PyROOT INTERFACE) +-target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations) ++target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy) - # Install library -- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries -+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) - -diff -ur root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt ---- root-6.24.02.orig/bindings/pyroot/pythonizations/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200 -+++ root-6.24.02/bindings/pyroot/pythonizations/CMakeLists.txt 2021-08-11 10:53:03.272202496 +0200 -@@ -137,11 +137,10 @@ - # Create meta-target PyROOT2 and PyROOT3 (INTERFACE library) - # Export of targets are not supported for custom targets(add_custom_targets()) - add_library(PyROOT${python_major_version_string} INTERFACE) -- target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string} ROOTPythonizations${python_under_version_string}) -+ target_link_libraries(PyROOT${python_major_version_string} INTERFACE cppyy_backend${python_under_version_string} cppyy${python_under_version_string}) - - # Install library -- install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries -+ install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) + # Install library +-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries ++install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries + LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) diff --git a/root-np32.patch b/root-np32.patch deleted file mode 100644 index 832f6c7..0000000 --- a/root-np32.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 42b9c691fdd2d0001c61f78cc8adfbb9c994f6b4 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 11:46:14 +0100 -Subject: [PATCH 3/3] Fix pythonizations test errors on ix86 Linux - -====================================================================== -ERROR: test_sliced_array (rdataframe_makenumpy.DataFrameFromNumpy.test_sliced_array) -Test correct reading of a sliced numpy array (#13690) ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py", line 153, in test_sliced_array - x_col = df.Take['Long64_t']("x") - ^^^^^^^^^^^^^^^^^^^^^^^^ -cppyy.gbl.std.runtime_error: Could not instantiate Take: - ROOT::RDF::RResultPtr > ROOT::RDF::RInterface::Take(basic_string_view > column = "") => - runtime_error: Column x has type int while the id specified is associated to type Long64_t ----------------------------------------------------------------------- - -====================================================================== -ERROR: test_dtypes (rtensor.AsRTensor.test_dtypes) -Test adoption of numpy arrays with different data types ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rtensor.py", line 45, in test_dtypes - root_obj = ROOT.TMVA.Experimental.RTensor(self.cpptypes[i])(np_obj) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/builddir/build/BUILD/root-6.30.00/redhat-linux-build/lib/ROOT/_pythonization/_tmva/_rtensor.py", line 131, in RTensorInit - return self._original_init_(data,shape,layout) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -TypeError: none of the 6 overloaded methods succeeded. Full details: - RTensor >::RTensor >(TMVA::Experimental::RTensor >&&) => - TypeError: takes at most 1 arguments (3 given) - RTensor >::RTensor >(const TMVA::Experimental::RTensor >&) => - TypeError: takes at most 1 arguments (3 given) - RTensor >::RTensor >(shared_ptr > container, vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: could not convert argument 1 - RTensor >::RTensor >(vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: takes at most 2 arguments (3 given) - RTensor >::RTensor >(long* data, vector shape, vector strides, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr) - RTensor >::RTensor >(long* data, vector shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) => - TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr) ----------------------------------------------------------------------- ---- - .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 8 ++++---- - bindings/pyroot/pythonizations/test/rtensor.py | 8 +------- - 2 files changed, 5 insertions(+), 11 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -index cd2ebc9b5b..cc46f5bea1 100644 ---- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -@@ -142,19 +142,19 @@ class DataFrameFromNumpy(unittest.TestCase): - gc.collect() - ref4 = sys.getrefcount(x) - self.assertEqual(ref1, ref4) -- -+ - def test_sliced_array(self): - """ - Test correct reading of a sliced numpy array (#13690) - """ -- table = np.array([[1,2], [3,4]]) -+ table = np.array([[1,2], [3,4]], dtype="int64") - columns = {'x': table[:,0], 'y': table[:,1]} - df = ROOT.RDF.FromNumpy(columns) - x_col = df.Take['Long64_t']("x") - y_col = df.Take['Long64_t']("y") -- self.assertEqual(list(x_col.GetValue()), [1,3]) -+ self.assertEqual(list(x_col.GetValue()), [1,3]) - self.assertEqual(list(y_col.GetValue()), [2,4]) -- -+ - - if __name__ == '__main__': - unittest.main() -diff --git a/bindings/pyroot/pythonizations/test/rtensor.py b/bindings/pyroot/pythonizations/test/rtensor.py -index 99b458cfa9..ca119f0b41 100644 ---- a/bindings/pyroot/pythonizations/test/rtensor.py -+++ b/bindings/pyroot/pythonizations/test/rtensor.py -@@ -2,7 +2,6 @@ import unittest - import ROOT - RTensor = ROOT.TMVA.Experimental.RTensor - import numpy as np --import platform - - - def check_shape(root_obj, np_obj): -@@ -21,18 +20,13 @@ class AsRTensor(unittest.TestCase): - dtypes = [ - "int32", "int64", "uint32", "uint64", "float32", "float64" - ] -- cpptypes = ["int", "long", "unsigned int", "unsigned long", "float", "double"] -+ cpptypes = ["int32_t", "int64_t", "uint32_t", "uint64_t", "float", "double"] - - # Tests - def test_dtypes(self): - """ - Test adoption of numpy arrays with different data types - """ -- #using long long on Linux does not work although it is same size as long -- if (platform.system() == "Windows") : -- self.cpptypes[1] = "long long" -- self.cpptypes[3] = "unsigned long long" -- - i = 0 - for dtype in self.dtypes: - np_obj = np.array([[1, 2], [3, 4], [5, 6]], dtype=dtype) --- -2.43.0 - diff --git a/root-old-gtest.patch b/root-old-gtest.patch deleted file mode 100644 index 87b6fe4..0000000 --- a/root-old-gtest.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 8b7369a527aa52204e1ce529c8cb206cfee4c61b Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 17 Nov 2023 16:18:12 +0100 -Subject: [PATCH] Disable tests that don't compile with old gtest (EPEL 8) - ---- - core/metacling/test/TClingLoadUnloadFileTests.cxx | 2 ++ - roofit/histfactory/test/testHistFactory.cxx | 2 ++ - roofit/roofitcore/test/testRooProdPdf.cxx | 2 ++ - roofit/roofitcore/test/testTestStatistics.cxx | 2 ++ - 4 files changed, 8 insertions(+) - -diff --git a/core/metacling/test/TClingLoadUnloadFileTests.cxx b/core/metacling/test/TClingLoadUnloadFileTests.cxx -index 7f97f3f441..d1b7a65fbc 100644 ---- a/core/metacling/test/TClingLoadUnloadFileTests.cxx -+++ b/core/metacling/test/TClingLoadUnloadFileTests.cxx -@@ -73,6 +73,7 @@ void remove_n_library_artifacts(const std::string &basename, unsigned int n) - } - } - -+/* - TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadSameLib) - { - GTEST_SKIP() << "fails sporadically, see " -@@ -125,3 +126,4 @@ TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadOneLibPerThread) - - remove_n_library_artifacts(basename, n_libraries); - } -+*/ -diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx -index 7553ba4e4a..fefdca8e97 100644 ---- a/roofit/histfactory/test/testHistFactory.cxx -+++ b/roofit/histfactory/test/testHistFactory.cxx -@@ -752,6 +752,7 @@ std::string getNameFromInfo(testing::TestParamInfo const & - return getName(paramInfo.param, false); - } - -+/* - INSTANTIATE_TEST_SUITE_P( - HistFactory, HFFixture, - testing::Combine(testing::Values(MakeModelMode::OverallSyst, MakeModelMode::HistoSyst, MakeModelMode::StatSyst, -@@ -784,3 +785,4 @@ INSTANTIATE_TEST_SUITE_P(HistFactoryCodeGen, HFFixtureFit, - testing::Values(RooFit::EvalBackend::Codegen())), - getNameFromInfo); - #endif -+*/ -diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx -index 34fb559cd1..09734f5c5d 100644 ---- a/roofit/roofitcore/test/testRooProdPdf.cxx -+++ b/roofit/roofitcore/test/testRooProdPdf.cxx -@@ -64,6 +64,7 @@ TEST_P(TestProdPdf, CachingOpt) - << "b=" << b.getVal() << " +- " << b.getError() << " doesn't match truth value with O" << _optimize << "."; - } - -+/* - INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, - testing::Combine(testing::Values(0, 1, 2), - testing::Values(ROOFIT_EVAL_BACKENDS)), -@@ -72,6 +73,7 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf, - ss << "opt" << std::get<0>(paramInfo.param) << std::get<1>(paramInfo.param).name(); - return ss.str(); - }); -+*/ - - TEST(RooProdPdf, TestGetPartIntList) - { -diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx -index 3099d82060..5846353043 100644 ---- a/roofit/roofitcore/test/testTestStatistics.cxx -+++ b/roofit/roofitcore/test/testTestStatistics.cxx -@@ -585,6 +585,7 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values(ROOFIT_EV - return ss.str(); - }); - -+/* - INSTANTIATE_TEST_SUITE_P(RooNLLVar, OffsetBinTest, - testing::Combine(testing::Values(ROOFIT_EVAL_BACKENDS), // EvalBackend - testing::Values(false, true), // unbinned or binned -@@ -622,3 +623,4 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVarBinnedL, OffsetBinTest, - ss << (std::get<5>(paramInfo.param) ? "BinnedL" : ""); - return ss.str(); - }); -+*/ diff --git a/root-out-of-bounds.patch b/root-out-of-bounds.patch new file mode 100644 index 0000000..fbae2ea --- /dev/null +++ b/root-out-of-bounds.patch @@ -0,0 +1,26 @@ +From 069359fe9e6c36a4287a64d3356246d516409149 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Tue, 4 Jun 2024 12:53:53 +0200 +Subject: [PATCH] [RF] Set size of offsets vector in LikelihoodJob correctly + +When `std::copy`ing into a vector, it needs to have the right size +before. Doing only `std::reserve` is not enough. + +Fixes #15730. +--- + roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx +index 85c3d02c02ccf..42d191833d14c 100644 +--- a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx ++++ b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx +@@ -93,7 +93,7 @@ void LikelihoodJob::update_state() + assert(!more); + auto offsets_message_begin = offsets_message.data>(); + std::size_t N_offsets = offsets_message.size() / sizeof(ROOT::Math::KahanSum); +- shared_offset_.offsets().reserve(N_offsets); ++ shared_offset_.offsets().resize(N_offsets); + auto offsets_message_end = offsets_message_begin + N_offsets; + std::copy(offsets_message_begin, offsets_message_end, shared_offset_.offsets().begin()); + } diff --git a/root-pcre2.patch b/root-pcre2.patch deleted file mode 100644 index 359acc2..0000000 --- a/root-pcre2.patch +++ /dev/null @@ -1,456 +0,0 @@ -From f89fc640f9ca1b2cccf0dc496b0b7ea434b53fad Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 2 Oct 2023 09:25:13 +0200 -Subject: [PATCH] Support PCRE2 - ---- - .../pythonizations/test/import_load_libs.py | 1 + - cmake/modules/FindPCRE2.cmake | 106 ++++++++++++++++++ - cmake/modules/SearchInstalledSoftware.cmake | 17 +-- - core/base/CMakeLists.txt | 9 +- - core/base/src/TPRegexp.cxx | 99 +++++++++++++++- - tutorials/legacy/regexp/regexp.C | 6 +- - 6 files changed, 223 insertions(+), 15 deletions(-) - create mode 100644 cmake/modules/FindPCRE2.cmake - -diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py -index 087db7da5c..179c76f6fd 100644 ---- a/bindings/pyroot/pythonizations/test/import_load_libs.py -+++ b/bindings/pyroot/pythonizations/test/import_load_libs.py -@@ -23,6 +23,7 @@ class ImportLoadLibs(unittest.TestCase): - 'libc', - 'libdl', - 'libpcre', -+ 'libpcre2-8', - # libCling and dependencies - 'libCling.*', - 'librt', -diff --git a/cmake/modules/FindPCRE2.cmake b/cmake/modules/FindPCRE2.cmake -new file mode 100644 -index 0000000000..2417453e8b ---- /dev/null -+++ b/cmake/modules/FindPCRE2.cmake -@@ -0,0 +1,106 @@ -+# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. -+# All rights reserved. -+# -+# For the licensing terms see $ROOTSYS/LICENSE. -+# For the list of contributors see $ROOTSYS/README/CREDITS. -+ -+#.rst: -+# FindPCRE2 -+# -------- -+# -+# Find PCRE2 library -+# -+# Imported Targets -+# ^^^^^^^^^^^^^^^^ -+# -+# This module defines :prop_tgt:`IMPORTED` target: -+# -+# ``PCRE2::PCRE2`` -+# The pcre2 library, if found. -+# -+# Result Variables -+# ^^^^^^^^^^^^^^^^ -+# This module will set the following variables in your project: -+# -+# ``PCRE2_FOUND`` -+# True if PCRE2 has been found. -+# ``PCRE2_INCLUDE_DIRS`` -+# Where to find pcre2.h -+# ``PCRE2_LIBRARIES`` -+# The libraries to link against to use PCRE2. -+# ``PCRE2_VERSION`` -+# The version of the PCRE2 found (e.g. 10.42) -+# -+# Obsolete variables -+# ^^^^^^^^^^^^^^^^^^ -+# -+# The following variables may also be set, for backwards compatibility: -+# -+# ``PCRE2_PCRE2_LIBRARY`` -+# where to find the PCRE2_PCRE2 library. -+# ``PCRE2_INCLUDE_DIR`` -+# where to find the pcre2.h header (same as PCRE2_INCLUDE_DIRS) -+# -+ -+foreach(var PCRE2_FOUND PCRE2_INCLUDE_DIR PCRE2_PCRE2_LIBRARY PCRE2_LIBRARIES) -+ unset(${var} CACHE) -+endforeach() -+ -+find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h PATH_SUFFIXES include) -+mark_as_advanced(PCRE2_INCLUDE_DIR) -+ -+if (PCRE2_INCLUDE_DIR AND EXISTS "${PCRE2_INCLUDE_DIR}/pcre2.h") -+ file(STRINGS "${PCRE2_INCLUDE_DIR}/pcre2.h" PCRE2_H REGEX "^#define PCRE2_(MAJOR|MINOR).*$") -+ string(REGEX REPLACE "^.*PCRE2_MAJOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MAJOR "${PCRE2_H}") -+ string(REGEX REPLACE "^.*PCRE2_MINOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MINOR "${PCRE2_H}") -+ set(PCRE2_VERSION "${PCRE2_VERSION_MAJOR}.${PCRE2_VERSION_MINOR}") -+endif() -+ -+if(NOT PCRE2_PCRE2_LIBRARY) -+ find_library(PCRE2_PCRE2_LIBRARY_RELEASE NAMES pcre2-8) -+ find_library(PCRE2_PCRE2_LIBRARY_DEBUG NAMES pcre2-8${CMAKE_DEBUG_POSTFIX} pcre2-8d) -+ include(SelectLibraryConfigurations) -+ select_library_configurations(PCRE2_PCRE2) -+endif() -+ -+include(FindPackageHandleStandardArgs) -+find_package_handle_standard_args(PCRE2 -+ REQUIRED_VARS -+ PCRE2_INCLUDE_DIR -+ PCRE2_PCRE2_LIBRARY -+ VERSION_VAR -+ PCRE2_VERSION -+) -+ -+if(PCRE2_FOUND) -+ set(PCRE2_INCLUDE_DIRS "${PCRE2_INCLUDE_DIR}") -+ -+ if (NOT PCRE2_LIBRARIES) -+ set(PCRE2_LIBRARIES "${PCRE2_PCRE2_LIBRARY}") -+ endif() -+ -+ if(NOT TARGET PCRE2::PCRE2) -+ add_library(PCRE2::PCRE2 UNKNOWN IMPORTED) -+ set_target_properties(PCRE2::PCRE2 PROPERTIES -+ INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIRS}") -+ -+ if(PCRE2_PCRE2_LIBRARY_DEBUG) -+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS DEBUG) -+ set_target_properties(PCRE2::PCRE2 PROPERTIES -+ IMPORTED_LOCATION_DEBUG "${PCRE2_PCRE2_LIBRARY_DEBUG}") -+ endif() -+ -+ if(PCRE2_PCRE2_LIBRARY_RELEASE) -+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS RELEASE) -+ set_target_properties(PCRE2::PCRE2 PROPERTIES -+ IMPORTED_LOCATION_RELEASE "${PCRE2_PCRE2_LIBRARY_RELEASE}") -+ endif() -+ -+ if(NOT PCRE2_PCRE2_LIBRARY_DEBUG AND NOT PCRE2_PCRE2_LIBRARY_RELEASE) -+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY -+ IMPORTED_LOCATION "${PCRE2_PCRE2_LIBRARY}") -+ endif() -+ endif() -+endif() -diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake -index 464155fd50..252aa56737 100644 ---- a/cmake/modules/SearchInstalledSoftware.cmake -+++ b/cmake/modules/SearchInstalledSoftware.cmake -@@ -204,13 +204,16 @@ if(NOT builtin_pcre) - foreach(suffix FOUND INCLUDE_DIR PCRE_LIBRARY) - unset(PCRE_${suffix} CACHE) - endforeach() -- if(fail-on-missing) -- find_package(PCRE REQUIRED) -- else() -- find_package(PCRE) -- if(NOT PCRE_FOUND) -- message(STATUS "PCRE not found. Switching on builtin_pcre option") -- set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE) -+ find_package(PCRE2) -+ if(NOT PCRE2_FOUND) -+ if(fail-on-missing) -+ find_package(PCRE REQUIRED) -+ else() -+ find_package(PCRE) -+ if(NOT PCRE_FOUND) -+ message(STATUS "PCRE not found. Switching on builtin_pcre option") -+ set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE) -+ endif() - endif() - endif() - endif() -diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt -index df701fedea..5798c93775 100644 ---- a/core/base/CMakeLists.txt -+++ b/core/base/CMakeLists.txt -@@ -214,7 +214,14 @@ target_include_directories(Core PUBLIC - $ - ) - --target_link_libraries(Core PRIVATE PCRE::PCRE) -+if(PCRE2_FOUND) -+ target_link_libraries(Core PRIVATE PCRE2::PCRE2) -+ set_source_files_properties(src/TPRegexp.cxx -+ TARGET_DIRECTORY Core -+ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2) -+else() -+ target_link_libraries(Core PRIVATE PCRE::PCRE) -+endif() - - ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS}) - -diff --git a/core/base/src/TPRegexp.cxx b/core/base/src/TPRegexp.cxx -index 949b8cc8e9..d70f3e5b8b 100644 ---- a/core/base/src/TPRegexp.cxx -+++ b/core/base/src/TPRegexp.cxx -@@ -25,19 +25,36 @@ found at : http://perldoc.perl.org/perlre.html - #include "TObjString.h" - #include "TError.h" - -+#ifdef USE_PCRE2 -+#ifdef R__WIN32 -+#define PCRE2_STATIC -+#endif -+#define PCRE2_CODE_UNIT_WIDTH 8 -+#include -+#define PCRE_CASELESS PCRE2_CASELESS -+#define PCRE_MULTILINE PCRE2_MULTILINE -+#define PCRE_DOTALL PCRE2_DOTALL -+#define PCRE_EXTENDED PCRE2_EXTENDED -+#define PCRE_ERROR_NOMATCH PCRE2_ERROR_NOMATCH -+#else - #ifdef R__WIN32 - #define PCRE_STATIC - #endif - #include -+#endif - - #include - #include - - struct PCREPriv_t { -+#ifdef USE_PCRE2 -+ pcre2_code *fPCRE; -+ PCREPriv_t() { fPCRE = nullptr; } -+#else - pcre *fPCRE; - pcre_extra *fPCREExtra; -- - PCREPriv_t() { fPCRE = nullptr; fPCREExtra = nullptr; } -+#endif - }; - - -@@ -79,10 +96,15 @@ TPRegexp::TPRegexp(const TPRegexp &p) - - TPRegexp::~TPRegexp() - { -+#ifdef USE_PCRE2 -+ if (fPriv->fPCRE) -+ pcre2_code_free(fPriv->fPCRE); -+#else - if (fPriv->fPCRE) - pcre_free(fPriv->fPCRE); - if (fPriv->fPCREExtra) - pcre_free(fPriv->fPCREExtra); -+#endif - delete fPriv; - } - -@@ -93,12 +115,18 @@ TPRegexp &TPRegexp::operator=(const TPRegexp &p) - { - if (this != &p) { - fPattern = p.fPattern; -+#ifdef USE_PCRE2 -+ if (fPriv->fPCRE) -+ pcre2_code_free(fPriv->fPCRE); -+ fPriv->fPCRE = nullptr; -+#else - if (fPriv->fPCRE) - pcre_free(fPriv->fPCRE); - fPriv->fPCRE = nullptr; - if (fPriv->fPCREExtra) - pcre_free(fPriv->fPCREExtra); - fPriv->fPCREExtra = nullptr; -+#endif - fPCREOpts = p.fPCREOpts; - } - return *this; -@@ -197,31 +225,50 @@ TString TPRegexp::GetModifiers() const - - void TPRegexp::Compile() - { -+#ifdef USE_PCRE2 -+ if (fPriv->fPCRE) -+ pcre2_code_free(fPriv->fPCRE); -+#else - if (fPriv->fPCRE) - pcre_free(fPriv->fPCRE); -+#endif - - if (fPCREOpts & kPCRE_DEBUG_MSGS) - Info("Compile", "PREGEX compiling %s", fPattern.Data()); - -+#ifdef USE_PCRE2 -+ int errcode; -+ PCRE2_SIZE patIndex; -+ fPriv->fPCRE = pcre2_compile((PCRE2_SPTR)fPattern.Data(), fPattern.Length(), -+ fPCREOpts & kPCRE_INTMASK, -+ &errcode, &patIndex, nullptr); -+#else - const char *errstr; - Int_t patIndex; - fPriv->fPCRE = pcre_compile(fPattern.Data(), fPCREOpts & kPCRE_INTMASK, - &errstr, &patIndex, nullptr); -+#endif - - if (!fPriv->fPCRE) { -+#ifdef USE_PCRE2 -+ PCRE2_UCHAR errstr[256]; -+ pcre2_get_error_message(errcode, errstr, 256); -+#endif - if (fgThrowAtCompileError) { - throw std::runtime_error - (TString::Format("TPRegexp::Compile() compilation of TPRegexp(%s) failed at: %d because %s", -- fPattern.Data(), patIndex, errstr).Data()); -+ fPattern.Data(), (int)patIndex, errstr).Data()); - } else { - Error("Compile", "compilation of TPRegexp(%s) failed at: %d because %s", -- fPattern.Data(), patIndex, errstr); -+ fPattern.Data(), (int)patIndex, errstr); - return; - } - } - -+#ifndef USE_PCRE2 - if (fPriv->fPCREExtra || (fPCREOpts & kPCRE_OPTIMIZE)) - Optimize(); -+#endif - } - - //////////////////////////////////////////////////////////////////////////////// -@@ -229,6 +276,7 @@ void TPRegexp::Compile() - - void TPRegexp::Optimize() - { -+#ifndef USE_PCRE2 - if (fPriv->fPCREExtra) - pcre_free(fPriv->fPCREExtra); - -@@ -243,6 +291,7 @@ void TPRegexp::Optimize() - Error("Optimize", "Optimization of TPRegexp(%s) failed: %s", - fPattern.Data(), errstr); - } -+#endif - } - - //////////////////////////////////////////////////////////////////////////////// -@@ -308,21 +357,43 @@ Int_t TPRegexp::MatchInternal(const TString &s, Int_t start, - Int_t nMaxMatch, TArrayI *pos) const - { - Int_t *offVec = new Int_t[3*nMaxMatch]; -+ -+#ifdef USE_PCRE2 -+ pcre2_match_data *match_data; -+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr); -+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR8)s.Data(), -+ s.Length(), start, 0, -+ match_data, nullptr); -+#else - // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS. - Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(), - s.Length(), start, 0, - offVec, 3*nMaxMatch); -+#endif - - if (nrMatch == PCRE_ERROR_NOMATCH) - nrMatch = 0; - else if (nrMatch <= 0) { - Error("Match","pcre_exec error = %d", nrMatch); -+#ifdef USE_PCRE2 -+ pcre2_match_data_free(match_data); -+#endif - delete [] offVec; - return 0; - } - -- if (pos) -+ if (pos) { -+#ifdef USE_PCRE2 -+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data); -+ for (int i = 0; i < 2 * nrMatch; ++i) -+ offVec[i] = oVec[i]; -+#endif - pos->Set(2*nrMatch, offVec); -+ } -+ -+#ifdef USE_PCRE2 -+ pcre2_match_data_free(match_data); -+#endif - delete [] offVec; - - return nrMatch; -@@ -404,13 +475,24 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, - Int_t offset = start; - Int_t last = 0; - -+#ifdef USE_PCRE2 -+ pcre2_match_data *match_data; -+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr); -+#endif -+ - while (kTRUE) { - - // find next matching subs - // pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS. -+#ifdef USE_PCRE2 -+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR)s.Data(), -+ s.Length(), offset, 0, -+ match_data, nullptr); -+#else - Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(), - s.Length(), offset, 0, - offVec, 3*nMaxMatch); -+#endif - - if (nrMatch == PCRE_ERROR_NOMATCH) { - break; -@@ -419,6 +501,12 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, - break; - } - -+#ifdef USE_PCRE2 -+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data); -+ for (int i = 0; i < 2 * nrMatch; ++i) -+ offVec[i] = oVec[i]; -+#endif -+ - // append anything previously unmatched, but not substituted - if (last <= offVec[0]) { - fin += s(last,offVec[0]-last); -@@ -446,6 +534,9 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern, - } - } - -+#ifdef USE_PCRE2 -+ pcre2_match_data_free(match_data); -+#endif - delete [] offVec; - - fin += s(last,s.Length()-last); -diff --git a/tutorials/legacy/regexp/regexp.C b/tutorials/legacy/regexp/regexp.C -index 995b823bce..f38ed6799e 100644 ---- a/tutorials/legacy/regexp/regexp.C -+++ b/tutorials/legacy/regexp/regexp.C -@@ -94,11 +94,11 @@ void regexp() - // criteria: - // 1) It should be of the form string1@string2 . The "^" and "$" ensure that we compare the complete - // email string -- // 2) ([\\w-\\.]+) : -+ // 2) ([\\w\\-\\.]+) : - // string1 is only allowed to be composed out of the alphanumeric characters, "-" and "." . - // The "+" ensures that string1 can not be empty . - // 3) string2 is matched against three different parts : -- // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+)) : -+ // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+)) : - // This regular expression ensures that EITHER the string starts with "[" followed by three groups - // of numbers, separated by "." , where each group has 1 to 3 numbers, OR alphanumeric strings, - // possibly containing "-" characters, separated by "." . -@@ -108,7 +108,7 @@ void regexp() - // At most one "]" character . - - TString s5("fons.rademakers@cern.ch"); -- TPRegexp r5("^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); -+ TPRegexp r5("^([\\w\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); - cout << "Check if the email address \"" << s5 << "\" is valid: " << (r5.MatchB(s5) ? "TRUE" : "FALSE") << endl; - - // Substitute Example with pattern modifier : --- -2.41.0 - diff --git a/root-stress.patch b/root-stress.patch new file mode 100644 index 0000000..bf7f468 --- /dev/null +++ b/root-stress.patch @@ -0,0 +1,32 @@ +From 706c94ca916387287f7459c984d61439e52c1aba Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 2 Jun 2024 06:19:43 +0200 +Subject: [PATCH] Adjust stressGraphics.ref + +--- + test/stressGraphics.ref | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref +index 37077a2fb9..9d5cd0352d 100644 +--- a/test/stressGraphics.ref ++++ b/test/stressGraphics.ref +@@ -7,13 +7,13 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 6 430 50 12669 50 9558 100 5325 700 471 50 + 7 4980 50 13893 50 16143 1300 12230 500 5011 70 + 8 5442 80 13473 50 18430 700 12398 300 5469 80 +- 9 9253 100 14377 100 19851 2400 12199 900 9283 100 ++ 9 9253 100 14377 150 19851 2400 12199 900 9283 100 + 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 + 11 12971 100 14444 50 34063 2000 32033 1200 12864 150 + 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 + 13 5600 400 13242 300 16881 400 15063 800 5638 400 + 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 +- 15 15690 5000 17179 200 23076 9500 14232 1000 10437 5000 ++ 15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000 + 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 + 17 20444 400 21520 150 27511 11000 16867 600 20721 400 + 18 15894 100 19305 200 27187 10300 15925 350 15925 100 +-- +2.45.1 + diff --git a/root-use-consistent-wording-in-tmva-test-comments.patch b/root-use-consistent-wording-in-tmva-test-comments.patch deleted file mode 100644 index 1d3e52a..0000000 --- a/root-use-consistent-wording-in-tmva-test-comments.patch +++ /dev/null @@ -1,86 +0,0 @@ -From e6928c405fe1647a0ee6ea32543b18ebc3828227 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 23 Feb 2023 22:10:46 +0100 -Subject: [PATCH] Use consistent wording of the comments in the different TMVA - classification tests to avoid confusion. - ---- - tutorials/tmva/TMVA_CNN_Classification.C | 2 +- - tutorials/tmva/TMVA_CNN_Classification.py | 4 ++-- - tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++-- - tutorials/tmva/TMVA_RNN_Classification.py | 5 +++-- - 4 files changed, 10 insertions(+), 7 deletions(-) - -diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C -index cc6829a24d..db5af784d4 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.C -+++ b/tutorials/tmva/TMVA_CNN_Classification.C -@@ -134,7 +134,7 @@ void TMVA_CNN_Classification(int nevts = 1000, std::vector opt = {1, 1, 1, - - bool writeOutputFile = true; - -- int num_threads = 4; // use by default 4 threads if value is not set before -+ int num_threads = 4; // use max 4 threads - // switch off MT in OpenBLAS to avoid conflict with tbb - gSystem->Setenv("OMP_NUM_THREADS", "1"); - -diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py -index 85fde20763..5d3c6e7220 100644 ---- a/tutorials/tmva/TMVA_CNN_Classification.py -+++ b/tutorials/tmva/TMVA_CNN_Classification.py -@@ -25,7 +25,7 @@ - - import ROOT - --#switch off MT in OpenMP (BLAS) -+# switch off MT in OpenBLAS to avoid conflict with tbb - ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") - - TMVA = ROOT.TMVA -@@ -145,7 +145,7 @@ if not useTMVACNN: - - writeOutputFile = True - --num_threads = 4 # use default threads -+num_threads = 4 # use max 4 threads - max_epochs = 10 # maximum number of epochs used for training - - -diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C -index 8701ba6c19..d4bb7a4e4a 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.C -+++ b/tutorials/tmva/TMVA_RNN_Classification.C -@@ -191,8 +191,10 @@ void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1) - useKeras = false; - #endif - -- int num_threads = 4; // use by default all threads -- gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS -+ int num_threads = 4; // use max 4 threads -+ // switch off MT in OpenBLAS to avoid conflict with tbb -+ gSystem->Setenv("OMP_NUM_THREADS", "1"); -+ - // do enable MT running - if (num_threads >= 0) { - ROOT::EnableImplicitMT(num_threads); -diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py -index 625a120b3d..65aa83c070 100644 ---- a/tutorials/tmva/TMVA_RNN_Classification.py -+++ b/tutorials/tmva/TMVA_RNN_Classification.py -@@ -26,10 +26,11 @@ num_threads = 4 # use max 4 threads - # do enable MT running - if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes": - ROOT.EnableImplicitMT(num_threads) -- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS -+ # switch off MT in OpenBLAS to avoid conflict with tbb -+ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") - print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize())) - else: -- print("Running in serail mode since ROOT does not support MT") -+ print("Running in serial mode since ROOT does not support MT") - - - TMVA = ROOT.TMVA --- -2.39.2 - diff --git a/root-write-array.patch b/root-write-array.patch new file mode 100644 index 0000000..30b5945 --- /dev/null +++ b/root-write-array.patch @@ -0,0 +1,125 @@ +From a7be6f726b13a7ccf1c46dec35f53520781159df Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 7 Jun 2024 06:49:39 +0200 +Subject: [PATCH] Put back check for n = 0 + +--- + io/io/src/TBufferFile.cxx | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx +index 81e0f95e02..b5b7ef9831 100644 +--- a/io/io/src/TBufferFile.cxx ++++ b/io/io/src/TBufferFile.cxx +@@ -1948,6 +1948,8 @@ void TBufferFile::WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElemen + + void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(UChar_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -1974,6 +1976,8 @@ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n) + + void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Char_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -1995,6 +1999,8 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n) + + void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Char_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2023,6 +2029,8 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n) + + void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Short_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2054,7 +2062,8 @@ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n) + + void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n) + { +- ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = 4; + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2086,6 +2095,8 @@ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n) + + void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = 8; + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2108,6 +2119,8 @@ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n) + + void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = 8; + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2128,6 +2141,8 @@ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n) + + void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Long64_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2154,6 +2169,8 @@ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n) + + void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2185,6 +2202,8 @@ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n) + + void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Double_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2212,6 +2231,8 @@ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n) + + void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +@@ -2270,6 +2291,8 @@ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerE + + void TBufferFile::WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele) + { ++ if (n == 0) return; ++ + constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); + const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; + if (n < 0 || n > maxElements) +-- +2.45.2 + diff --git a/root.spec b/root.spec index bfe8824..c39adee 100644 --- a/root.spec +++ b/root.spec @@ -1,47 +1,16 @@ -# Needed for EPEL 8 -%undefine __cmake_in_source_build - # Disable package note flags, since root saves the compiler/linker flags # used during the build %undefine _package_note_flags -%global python3_version_uscore %(tr . _ <<< "%{python3_version}") - %global root7 1 - -%if %{?rhel}%{!?rhel:0} == 8 -%ifarch %{power64} -# These modules cause "pure virtual method called" errors -# https://github.com/root-project/root/issues/12372 -%global dataframe 0 -%global roofit 0 -%global tmvasofieparser 0 -%else %global dataframe 1 %global roofit 1 %global tmvasofieparser 1 -%endif -%else -%global dataframe 1 -%global roofit 1 -%global tmvasofieparser 1 -%endif - -%if %{?rhel}%{!?rhel:0} == 8 -# DistRDF requires Python 3.8 or later, RHEL 8 has version 3.6 -%global distrdf 0 -%else %global distrdf %{dataframe} -%endif -%if %{?rhel}%{!?rhel:0} == 8 -# Requires nlohmann json version 3.9 or later, RHEL 8 has version 3.6 -%global bundlejson 1 -%else %global bundlejson 0 -%endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} == 8 +%if %{?fedora}%{!?fedora:0} %ifarch %{ix86} %{arm} %global pandas 0 %else @@ -55,9 +24,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.30.06 +Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -92,39 +61,33 @@ Patch2: %{name}-dont-install-minicern.patch Patch3: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled Patch4: %{name}-32bit-tests.patch -# Use local static script and style files for JsMVA -Patch5: %{name}-jsmva-static.patch -# Fix test failure on ppc64le and aarch64 with gcc 12 -# https://github.com/root-project/root/pull/9601 -Patch6: %{name}-fix-test-failure-on-ppc64le-and-aarch64-with-gcc-12.patch -# Byte swap values read from the protobuf raw data stream on -# big endian architectures -# https://github.com/root-project/root/pull/10308 -Patch7: %{name}-big-endian-byte-swap.patch -# https://github.com/root-project/root/pull/12375 -Patch8: %{name}-use-consistent-wording-in-tmva-test-comments.patch -# https://github.com/root-project/root/pull/10303 -Patch9: %{name}-ignore-warnings-about-RooNaNPacker-not-being-impleme.patch -# Port to pcre2 -# https://github.com/root-project/root/issues/11395 -# https://github.com/root-project/root/pull/13771 -Patch10: %{name}-pcre2.patch -# https://github.com/root-project/root/pull/14111 -Patch11: %{name}-avoid-out-of-memory-during-linking.patch -# https://github.com/root-project/root/pull/14112 -Patch12: %{name}-clad.patch -Patch13: %{name}-gtest-back.patch -Patch14: %{name}-np32.patch -# Adjust tests for zlib-ng -# https://github.com/root-project/root/pull/14295 -Patch15: %{name}-new-zlib.patch -# Only for EPEL 8 - disable tests not working with old gtest -Patch16: %{name}-old-gtest.patch +# Adjust stress graphics reference +# https://github.com/root-project/root/pull/15735 +Patch5: %{name}-stress.patch +# Avoid segmentation fault on ix86 +# https://github.com/root-project/root/issues/15738 +# https://github.com/root-project/root/pull/15780 +Patch6: %{name}-write-array.patch +# Adjust test limit +# https://github.com/root-project/root/pull/15734 +Patch7: %{name}-failure-on-ppc64le-and-s390x.patch +# Correct format warnings seen on 32 bit architectures +# https://github.com/root-project/root/pull/15732 +Patch8: %{name}-format-warnings-32-bit.patch +# Out-of-bounds vector access +# https://github.com/root-project/root/issues/15730 +# https://github.com/root-project/root/pull/15739 +Patch9: %{name}-out-of-bounds.patch +# Fix one more broken import in JsMVA +# https://github.com/root-project/root/pull/15752 +Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: make -BuildRequires: cmake >= 3.16 +# root on Linux requires cmake 3.16 +# but 3.19 is needed for flexiblas support +BuildRequires: cmake >= 3.19 BuildRequires: libX11-devel BuildRequires: libXpm-devel BuildRequires: libXft-devel @@ -141,9 +104,10 @@ BuildRequires: xz-devel BuildRequires: lz4-devel BuildRequires: xxhash-devel BuildRequires: libzstd-devel -# Require a version of libAfterImage that is properly linked to -# its dependencies -BuildRequires: libAfterImage-devel >= 1.20-21 +BuildRequires: libtiff-devel +BuildRequires: libpng-devel +BuildRequires: giflib-devel +BuildRequires: libjpeg-devel BuildRequires: ncurses-devel BuildRequires: libxml2-devel BuildRequires: fftw-devel @@ -155,7 +119,7 @@ BuildRequires: unixODBC-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel BuildRequires: libpq-devel -BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-devel >= 3.7 BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy %ifarch %{qt5_qtwebengine_arches} @@ -172,23 +136,17 @@ BuildRequires: desktop-file-utils BuildRequires: dcap-devel BuildRequires: xrootd-client-devel >= 1:5.0.0 BuildRequires: cfitsio-devel -BuildRequires: davix-devel >= 0.6.4 +# Davix version >= 0.6.4, but not between 0.6.8 and 0.7.0 +BuildRequires: davix-devel >= 0.7.1 BuildRequires: R-Rcpp-devel BuildRequires: R-RInside-devel BuildRequires: readline-devel -BuildRequires: tbb-devel >= 2018 +BuildRequires: tbb-devel >= 2020 BuildRequires: libuuid-devel BuildRequires: graphviz-devel BuildRequires: expat-devel BuildRequires: pythia8-devel >= 8.1.80 -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 BuildRequires: flexiblas-devel -# Required for FlexiBLAS support in FindBLAS.cmake -# (in cmake 3.19.0, backported to cmake 3.18.3-1 in Fedora) -BuildRequires: cmake-data >= 3.18.3-1 -%else -BuildRequires: openblas-devel -%endif %if ! %{bundlejson} BuildRequires: json-devel >= 3.9 %endif @@ -361,26 +319,6 @@ Obsoletes: %{name}-montecarlo-vmc < 6.26.00 Obsoletes: %{name}-doc < 6.26.00 Obsoletes: %{name}-io-gfal < 6.30.00 Obsoletes: %{name}-roofit-common < 6.30.00 -%if %{?rhel}%{!?rhel:0} == 8 -# Obsolete the DistRDF package in EPEL 8 -# Minimum Python version requirement introduced -Obsoletes: python%{python3_pkgversion}-distrdf < 6.26.00 -%ifarch %{power64} -# Obsolete for ppc64le in EPEL 8 -# These modules cause "pure virtual method called" errors -Obsoletes: %{name}-tree-dataframe < 6.28.00 -Obsoletes: %{name}-roofit < 6.28.00 -Obsoletes: %{name}-roofit-common < 6.28.00 -Obsoletes: %{name}-roofit-core < 6.28.00 -Obsoletes: %{name}-roofit-more < 6.28.00 -Obsoletes: %{name}-roofit-batchcompute < 6.28.00 -Obsoletes: %{name}-roofit-dataframe-helpers < 6.28.00 -Obsoletes: %{name}-roofit-hs3 < 6.28.00 -Obsoletes: %{name}-roostats < 6.28.00 -Obsoletes: %{name}-hist-factory < 6.28.00 -Obsoletes: %{name}-tmva-sofie-parser < 6.28.00 -%endif -%endif %description core This package contains the core libraries used by ROOT: libCore, libNew, @@ -446,6 +384,9 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split (tpython from Python bindings) Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00 +# JsMVA python module is now a submodule of ROOT python module +Provides: python%{python3_pkgversion}-jsmva = %{version}-%{release} +Obsoletes: python%{python3_pkgversion}-jsmva < 6.32.00 %description -n python%{python3_pkgversion}-%{name} This package contains the Python extension for ROOT. It makes it @@ -453,12 +394,18 @@ possible to use ROOT classes in Python. %package -n python%{python3_pkgversion}-jupyroot Summary: ROOT Jupyter kernel +BuildArch: noarch %py_provides python%{python3_pkgversion}-jupyroot -Requires: python%{python3_pkgversion}-%{name}%{?_isa} = %{version}-%{release} -Requires: python%{python3_pkgversion}-jsmva = %{version}-%{release} -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-notebook = %{version}-%{release} +Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} +Requires: %{name}-core = %{version}-%{release} +# notebook package was merged with JupyROOT package +Provides: %{name}-notebook = %{version}-%{release} +Obsoletes: %{name}-notebook < 6.32.00 +Requires: js-jsroot >= 7.5 %if %{?fedora}%{!?fedora:0} +# jupyter-notebook not available in RHEL/EPEL +# some functionality missing +Requires: jupyter-notebook # python-metakernel not available in RHEL/EPEL # some functionality missing Requires: python%{python3_pkgversion}-ipython @@ -469,15 +416,6 @@ Requires: python-jupyter-filesystem %description -n python%{python3_pkgversion}-jupyroot The Jupyter kernel for the ROOT notebook. -%package -n python%{python3_pkgversion}-jsmva -Summary: TMVA interface used by JupyROOT -BuildArch: noarch -%py_provides python%{python3_pkgversion}-jsmva -Requires: %{name}-tmva = %{version}-%{release} - -%description -n python%{python3_pkgversion}-jsmva -TMVA interface used by JupyROOT. - %if %{distrdf} %package -n python%{python3_pkgversion}-distrdf Summary: Distributed RDataFrame @@ -594,9 +532,6 @@ Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -# Require a version of libAfterImage that is properly linked to -# its dependencies -Requires: libAfterImage >= 1.20-21 %description graf-asimage This package contains the AfterImage renderer for ROOT, which allows @@ -1801,20 +1736,6 @@ Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} The ROOT command line utilities is a set of scripts for common tasks written in python. -%package notebook -Summary: Static files for the Jupyter ROOT Notebook -BuildArch: noarch -Requires: %{name}-core = %{version}-%{release} -Requires: js-jsroot >= 7.5 -%if %{?fedora}%{!?fedora:0} -# jupyter-notebook not available in RHEL/EPEL -# some functionality missing -Requires: jupyter-notebook -%endif - -%description notebook -Javascript and style files for the Jupyter ROOT Notebook. - %package gui-webdisplay Summary: Web display for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1994,46 +1915,34 @@ This package contains utility functions for ntuples. %prep %setup -q -a 1 -%patch -P 0 -p1 -%patch -P 1 -p1 -%patch -P 2 -p1 -%patch -P 3 -p1 -%patch -P 4 -p1 -%patch -P 5 -p1 -%patch -P 6 -p1 -%patch -P 7 -p1 -%patch -P 8 -p1 -%patch -P 9 -p1 -%patch -P 10 -p1 -%patch -P 11 -p1 -%patch -P 12 -p1 -%patch -P 13 -p1 -%patch -P 14 -p1 -%patch -P 15 -p1 -%if %{?rhel}%{!?rhel:0} == 8 -%patch -P 16 -p1 -%endif +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 +%patch -P3 -p1 +%patch -P4 -p1 +%patch -P5 -p1 +%patch -P6 -p1 +%patch -P7 -p1 +%patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage -rm -rf graf2d/asimage/src/libAfterImage +rm -rf graf2d/asimage/src/libAfterImage/{libjpeg,libpng,libungif,zlib} +sed '/zlib\/zlib.h/d' -i graf2d/asimage/src/libAfterImage/.depend # * ftgl rm -rf graf3d/ftgl/src graf3d/ftgl/inc # * freetype rm -rf graf2d/freetype/src -# * davix, glew, lz4, nlohmann, openssl, pcre, tbb, xxhash, zlib, zstd -rm -rf builtins/davix +# * glew, lz4, nlohmann, pcre, xxhash, zlib, zstd rm -rf builtins/glew rm -rf builtins/lz4 %if ! %{bundlejson} rm -rf builtins/nlohmann %endif -rm -rf builtins/openssl rm -rf builtins/pcre -rm -rf builtins/tbb -rm -rf builtins/xrootd rm -rf builtins/xxhash -rm -rf builtins/zeromq rm -rf builtins/zlib rm -rf builtins/zstd # * lzma @@ -2053,6 +1962,9 @@ rm -rf js/[^f]* js/files/draw.htm js/files/online.htm rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css +# Additional documentation +install -p -m 644 %{SOURCE7} bindings/jupyroot + %build # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO @@ -2070,20 +1982,15 @@ for s in etc/notebook/JsMVA/css/*.css ; do python3 -m rcssmin < ${s} > ${s%.css}.min.css done -# Avoid overlinking (this is the default on Fedora and EPEL 9) -%if %{?rhel}%{!?rhel:0} == 8 -LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -%endif - %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir}/%{name} \ -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ - -DPYTHON_EXECUTABLE=%{__python3} \ + -DPython3_EXECUTABLE=%{__python3} \ -Dgnuinstall:BOOL=ON \ - -Dbuiltin_afterimage:BOOL=OFF \ + -Dbuiltin_afterimage:BOOL=ON \ -Dbuiltin_cfitsio:BOOL=OFF \ -Dbuiltin_clang:BOOL=ON \ -Dbuiltin_cling:BOOL=ON \ @@ -2129,6 +2036,7 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dclad:BOOL=OFF \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ + -Dcudnn:BOOL=OFF \ -Dcxxmodules:BOOL=OFF \ -Ddaos:BOOL=OFF \ %if %{dataframe} @@ -2139,7 +2047,6 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Ddavix:BOOL=ON \ -Ddcache:BOOL=ON \ -Ddev:BOOL=OFF \ - -Dexceptions:BOOL=ON \ -Dfcgi:BOOL=ON \ -Dfftw3:BOOL=ON \ -DFIREFOX_EXECUTABLE:PATH=/usr/bin/firefox \ @@ -2152,20 +2059,15 @@ LDFLAGS="-Wl,--as-needed %{?__global_ldflags}" -Dlibcxx:BOOL=OFF \ -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ - -Dminuit2:BOOL=ON \ -Dminuit2_mpi:BOOL=OFF \ -Dminuit2_omp:BOOL=OFF \ - -Dmlp:BOOL=ON \ -Dmpi:BOOL=OFF \ -Dmysql:BOOL=ON \ -Dodbc:BOOL=ON \ -Dopengl:BOOL=ON \ - -Doracle:BOOL=OFF \ -Dpgsql:BOOL=ON \ -Dproof:BOOL=ON \ -Dpyroot:BOOL=ON \ - -Dpyroot-python2:BOOL=OFF \ - -Dpythia6:BOOL=OFF \ -Dpythia8:BOOL=ON \ %ifarch %{qt5_qtwebengine_arches} -Dqt5web:BOOL=ON \ @@ -2259,9 +2161,6 @@ install -p -m 644 %{SOURCE5} %{buildroot}%{_datadir}/mime/packages install -p -m 644 %{SOURCE6} \ %{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes -# Additional documentation -install -p -m 644 %{SOURCE7} %{buildroot}%{_pkgdocdir} - # Move python cli helper to its own directory mkdir -p %{buildroot}%{_datadir}/%{name}/cli mv %{buildroot}%{python3_sitearch}/cmdLineUtils.py \ @@ -2274,43 +2173,37 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} # Fix python extension suffix -mv %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} -rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}.so - -mv %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{version} \ - %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} -rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so.%{libversion} -rm %{buildroot}%{python3_sitearch}/libJupyROOT%{python3_version_uscore}.so +mv %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{version} \ + %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix} +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{libversion} +rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so # Move noarch python modules to sitelib if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then mkdir -p %{buildroot}%{python3_sitelib} -mv %{buildroot}%{python3_sitearch}/JsMVA %{buildroot}%{python3_sitelib} +mv %{buildroot}%{python3_sitearch}/JupyROOT %{buildroot}%{python3_sitelib} %if %{distrdf} mv %{buildroot}%{python3_sitearch}/DistRDF %{buildroot}%{python3_sitelib} %endif fi -# Create .egg-info files so that rpm auto-generates provides +# Create .dist-info files so that rpm auto-generates provides +mkdir %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info echo 'Name: ROOT' > \ - %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info + %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info + %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA +mkdir %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info echo 'Name: JupyROOT' > \ - %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info + %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info -echo 'Name: JsMVA' > \ - %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info -echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info + %{buildroot}%{python3_sitelib}/JupyROOT-%{version}.dist-info/METADATA %if %{distrdf} +mkdir %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info echo 'Name: DistRDF' > \ - %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info + %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA echo 'Version: %{version}' >> \ - %{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info + %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA %endif # Put jupyter stuff in the right places @@ -2322,7 +2215,7 @@ sed -e 's/ROOT C++/& (Python 3)/' \ -e 's!python[0-9]*\.[0-9]*!%{__python3}!' \ -i %{buildroot}%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot/kernel.json sed -e '/^\#!/d' \ - -i %{buildroot}%{python3_sitearch}/JupyROOT/kernel/rootkernel.py + -i %{buildroot}%{python3_sitelib}/JupyROOT/kernel/rootkernel.py rm -rf %{buildroot}%{_datadir}/%{name}/notebook/custom rm -rf %{buildroot}%{_datadir}/%{name}/notebook/html @@ -2391,10 +2284,10 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins %if ! %{root7} rm TBrowserImp/P030_RWebBrowserImp.C %endif -rm TFile/P050_TGFALFile.C rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TProofMgr/P010_TXProofMgr.C +rm TProofMonSender/P010_TProofMonSenderML.C rm TProofServ/P010_TXProofServ.C rm TSlave/P010_TXSlave.C rm TSQLServer/P040_TOracleServer.C @@ -2516,10 +2409,6 @@ popd # reads input data over network: # root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ # -# - tutorial-v7-global_temperatures.cxx -# reads input data over network -# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv -# # - tutorial-v7-ntuple-ntpl003_lhcbOpenData # reads input data over network # http://root.cern.ch/files/LHCb/lhcb_B2HHH_MagnetUp.root (425 MB) @@ -2532,6 +2421,10 @@ popd # reads input data over network # http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root (20 MB) # +# - tutorial-v7-ntuple-ntpl011_global_temperatures +# reads input data over network +# http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv +# # - gtest-net-davix-test-RRawFileDavix # reads input file over network # http://root.cern.ch/files/davix.test @@ -2586,10 +2479,10 @@ tutorial-dataframe-df106_HiggsToFourLeptons|\ tutorial-dataframe-df107_SingleTopAnalysis-py|\ tutorial-rcanvas-df104-py|\ tutorial-rcanvas-df105-py|\ -tutorial-v7-global_temperatures.cxx|\ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ tutorial-v7-ntuple-ntpl008_import|\ +tutorial-v7-ntuple-ntpl011_global_temperatures|\ gtest-net-davix-test-RRawFileDavix|\ gtest-net-netxng-test-RRawFileNetXNG|\ gtest-net-netxng-test-TNetXNGFileTest|\ @@ -2607,87 +2500,36 @@ test-webgui-ping" %if ! %{pandas} # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py +# - tutorial-dataframe-df035_RDFFromPandas-py # - tutorial-roofit-rf409_NumPyPandasToRooFit-py # Requires the pandas python module not (yet) available in RHEL/EPEL 9 excluded="${excluded}|\ test-import-pandas|\ tutorial-dataframe-df026_AsNumpyArrays-py|\ +tutorial-dataframe-df035_RDFFromPandas-py|\ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif %ifarch %{ix86} # - gtest-tree-dataframe-test-dataframe-concurrency # "There's already an active task arena." +# +# - gtest-tree-dataframe-test-dataframe-simple +# free(): invalid pointer excluded="${excluded}|\ -gtest-tree-dataframe-test-dataframe-concurrency" +gtest-tree-dataframe-test-dataframe-concurrency|\ +gtest-tree-dataframe-test-dataframe-simple" %endif %ifarch %{power64} -# PPC64LE specific failures -# - test-stresshistofit-interpreted -# - test-stresshistogram-interpreted -# - test-stressmathcore-interpreted +# - test-stressgraphics(-interpreted) +# *** stack smashing detected ***: terminated # -# Always timeout (hang?) -# - test-stressinterpreter -# - tutorial-unuran-unuranFoamTest +# - tutorial-roostats-IntervalExamples-py +# *** Break *** segmentation violation excluded="${excluded}|\ -test-stresshistofit-interpreted|\ -test-stresshistogram-interpreted|\ -test-stressmathcore-interpreted|\ -test-stressinterpreter|\ -tutorial-unuran-unuranFoamTest" - -%if %{?rhel}%{!?rhel:0} == 8 -# Fails on ppc64le since RHEL 8.5 update -# Exception: Found not whitelisted libraries after importing ROOT: -# - libpthread-2.28 -# - libm-2.28 -# - libc-2.28 -# - librt-2.28 -# - pyunittests-pyroot-import-load-libs -# -# - tutorial-fit-combinedFit(-py) -# - tutorial-fit-fit2dHist -# - tutorial-fit-fitCircle -# - tutorial-fit-line3Dfit -# - tutorial-math-exampleFunction-py -# - tutorial-multicore-mt103_fillNtupleFromMultipleThreads -# - tutorial-multicore-mt201_parallelHistoFill -# - tutorial-multicore-mt304_fillHistos -# - tutorial-multicore-mtbb001_fillHistos -# - tutorial-multicore-mtbb101_fillNtuples -# - tutorial-multicore-mtbb201_parallelHistoFill -# - tutorial-rcanvas-* -# - tutorial-v7-concurrentfill.cxx -# - tutorial-v7-ntuple-ntpl001_staff -# - tutorial-v7-ntuple-ntpl002_vector -# - tutorial-v7-ntuple-ntpl005_introspection -# - tutorial-v7-ntuple-ntpl006_friends -# - tutorial-v7-ntuple-ntpl007_mtFill -# - tutorial-v7-simple.cxx -excluded="${excluded}|\ -pyunittests-pyroot-import-load-libs|\ -tutorial-fit-combinedFit|\ -tutorial-fit-fit2dHist|\ -tutorial-fit-fitCircle|\ -tutorial-fit-line3Dfit|\ -tutorial-math-exampleFunction-py|\ -tutorial-multicore-mt103_fillNtupleFromMultipleThreads|\ -tutorial-multicore-mt201_parallelHistoFill|\ -tutorial-multicore-mt304_fillHistos|\ -tutorial-multicore-mtbb001_fillHistos|\ -tutorial-multicore-mtbb101_fillNtuples|\ -tutorial-multicore-mtbb201_parallelHistoFill|\ -tutorial-rcanvas|\ -tutorial-v7-concurrentfill.cxx|\ -tutorial-v7-ntuple-ntpl001_staff|\ -tutorial-v7-ntuple-ntpl002_vector|\ -tutorial-v7-ntuple-ntpl005_introspection|\ -tutorial-v7-ntuple-ntpl006_friends|\ -tutorial-v7-ntuple-ntpl007_mtFill|\ -tutorial-v7-simple.cxx" -%endif +test-stressgraphics|\ +tutorial-roostats-IntervalExamples-py" %endif %ifarch s390x @@ -2696,19 +2538,21 @@ tutorial-v7-simple.cxx" excluded="${excluded}|\ gtest-roofit-roofitcore-test-testNaNPacker" -# - gtest-core-base-test-CoreBaseTests # - gtest-core-dictgen-test-dictgen-base -# - gtest-core-meta-test-testTDataType +# - gtest-tree-dataframe-test-dataframe-unified-constructor # # - gtest-tree-dataframe-test-datasource-ntuple # - gtest-tree-ntuple-v7-test-ntuple-basics # - gtest-tree-ntuple-v7-test-ntuple-bulk +# - gtest-tree-ntuple-v7-test-ntuple-compat # - gtest-tree-ntuple-v7-test-ntuple-endian # - gtest-tree-ntuple-v7-test-ntuple-extended # - gtest-tree-ntuple-v7-test-ntuple-friends +# - gtest-tree-ntuple-v7-test-ntuple-merger # - gtest-tree-ntuple-v7-test-ntuple-minifile # - gtest-tree-ntuple-v7-test-ntuple-modelext # - gtest-tree-ntuple-v7-test-ntuple-packing +# - gtest-tree-ntuple-v7-test-ntuple-parallel-writer # - gtest-tree-ntuple-v7-test-ntuple-project # - gtest-tree-ntuple-v7-test-ntuple-serialize # - gtest-tree-ntuple-v7-test-ntuple-show @@ -2716,6 +2560,8 @@ gtest-roofit-roofitcore-test-testNaNPacker" # - gtest-tree-ntuple-v7-test-ntuple-storage-daos # - gtest-tree-ntuple-v7-test-ntuple-types # - gtest-tree-ntuple-v7-test-ntuple-view +# - gtest-tree-ntuple-v7-test-rfield-class +# - gtest-tree-ntuple-v7-test-rfield-variant # - gtest-tree-ntuple-v7-test-rfield-vector # - gtest-tree-ntupleutil-v7-test-ntuple-importer # - gtest-tree-ntupleutil-v7-test-ntuple-inspector @@ -2726,18 +2572,9 @@ gtest-roofit-roofitcore-test-testNaNPacker" # - pyunittests-pyroot-pyz-stl-vector # - tutorial-dataframe-df006_ranges-py # - tutorial-fit-combinedFit-py -# - tutorial-fit-fitcont # - tutorial-fit-NumericalMinimization-py # - tutorial-math-exampleFunction-py # - tutorial-rcanvas-rbox-py -# - tutorial-roofit-rf108_plotbinning-py -# - tutorial-roofit-rf306_condpereventerrors-py -# - tutorial-roofit-rf307_fullpereventerrors-py -# - tutorial-roofit-rf310_sliceplot-py -# - tutorial-roofit-rf708_bphysics-py -# - tutorial-tmva-TMVA_CNN_Classification-py -# - tutorial-tmva-TMVA_Higgs_Classification-py -# - tutorial-tmva-TMVA_RNN_Classification-py # https://github.com/root-project/root/issues/12429 # # - tutorial-tree-drawsparse @@ -2748,18 +2585,20 @@ gtest-roofit-roofitcore-test-testNaNPacker" # - test-stresshistogram # - test-stresshistogram-interpreted excluded="${excluded}|\ -gtest-core-base-test-CoreBaseTests|\ gtest-core-dictgen-test-dictgen-base|\ -gtest-core-meta-test-testTDataType|\ +gtest-tree-dataframe-test-dataframe-unified-constructor|\ gtest-tree-dataframe-test-datasource-ntuple|\ gtest-tree-ntuple-v7-test-ntuple-basics|\ gtest-tree-ntuple-v7-test-ntuple-bulk|\ +gtest-tree-ntuple-v7-test-ntuple-compat|\ gtest-tree-ntuple-v7-test-ntuple-endian|\ gtest-tree-ntuple-v7-test-ntuple-extended|\ gtest-tree-ntuple-v7-test-ntuple-friends|\ +gtest-tree-ntuple-v7-test-ntuple-merger|\ gtest-tree-ntuple-v7-test-ntuple-minifile|\ gtest-tree-ntuple-v7-test-ntuple-modelext|\ gtest-tree-ntuple-v7-test-ntuple-packing|\ +gtest-tree-ntuple-v7-test-ntuple-parallel-writer|\ gtest-tree-ntuple-v7-test-ntuple-project|\ gtest-tree-ntuple-v7-test-ntuple-serialize|\ gtest-tree-ntuple-v7-test-ntuple-show|\ @@ -2767,6 +2606,8 @@ gtest-tree-ntuple-v7-test-ntuple-storage|\ gtest-tree-ntuple-v7-test-ntuple-storage-daos|\ gtest-tree-ntuple-v7-test-ntuple-types|\ gtest-tree-ntuple-v7-test-ntuple-view|\ +gtest-tree-ntuple-v7-test-rfield-class|\ +gtest-tree-ntuple-v7-test-rfield-variant|\ gtest-tree-ntuple-v7-test-rfield-vector|\ gtest-tree-ntupleutil-v7-test-ntuple-importer|\ gtest-tree-ntupleutil-v7-test-ntuple-inspector|\ @@ -2775,36 +2616,14 @@ pyunittests-pyroot-pyz-rtensor|\ pyunittests-pyroot-pyz-stl-vector|\ tutorial-dataframe-df006_ranges-py|\ tutorial-fit-combinedFit-py|\ -tutorial-fit-fitcont|\ tutorial-fit-NumericalMinimization-py|\ tutorial-math-exampleFunction-py|\ tutorial-rcanvas-rbox-py|\ -tutorial-roofit-rf108_plotbinning-py|\ -tutorial-roofit-rf306_condpereventerrors-py|\ -tutorial-roofit-rf307_fullpereventerrors-py|\ -tutorial-roofit-rf310_sliceplot-py|\ -tutorial-roofit-rf708_bphysics-py|\ -tutorial-tmva-TMVA_CNN_Classification-py|\ -tutorial-tmva-TMVA_Higgs_Classification-py|\ -tutorial-tmva-TMVA_RNN_Classification-py|\ tutorial-tree-drawsparse|\ test-stresshistofit\$\$|\ test-stresshistofit-interpreted|\ test-stresshistogram\$\$|\ test-stresshistogram-interpreted" - -%if %{?rhel}%{!?rhel:0} == 8 -# Issues with file sizes on EPEL 8 s390x -# - gtest-tree-readspeed-test-readspeed-general -# - gtest-tree-tree-test-testTBranch -# - test-stress -# - test-stressgraphics(-interpreted) -excluded="${excluded}|\ -gtest-tree-readspeed-test-readspeed-general|\ -gtest-tree-tree-test-testTBranch|\ -test-stress\$\$|\ -test-stressgraphics" -%endif %endif %if %{?fedora}%{!?fedora:0} >= 40 @@ -2818,15 +2637,21 @@ gtest-math-matrix-test-testMatrixTSparse" %endif # Filter out parts of tests that require remote network access +# RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) # TClingDataMemberInfo.Offset fails on s390x # https://github.com/root-project/root/issues/14512 GTEST_FILTER=-\ +%ifarch %{ix86} +RNTuple.StdAtomic:\ +%endif %ifarch s390x TClingDataMemberInfo.Offset:\ %endif RCsvDS.Remote:\ +RNTuple.OpenHTTP:\ RRawFile.Remote:\ RSqliteDS.Davix:\ +TChainParsing.DoubleSlash:\ TChainParsing.RemoteGlob:\ TFile.ReadWithoutGlobalRegistrationNet:\ TFile.ReadWithoutGlobalRegistrationWeb \ @@ -2859,38 +2684,36 @@ if [ -r /var/lib/alternatives/libPyROOT.so ] ; then done fi -%post notebook +%post -n python%{python3_pkgversion}-jupyroot mkdir -p /etc/jupyter if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py fi cat << EOF >> /etc/jupyter/jupyter_notebook_config.py -# Extra static path for JupyROOT - start - do not remove this line +# Extra static paths for JupyROOT - start - do not remove this line c.NotebookApp.extra_static_paths.append('%{_jsdir}/jsroot') -c.NotebookApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') -# Extra static path for JupyROOT - end - do not remove this line +# Extra static paths for JupyROOT - end - do not remove this line EOF if [ -e /etc/jupyter/jupyter_server_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py fi cat << EOF >> /etc/jupyter/jupyter_server_config.py -# Extra static path for JupyROOT - start - do not remove this line +# Extra static paths for JupyROOT - start - do not remove this line c.ServerApp.extra_static_paths.append('%{_jsdir}/jsroot') -c.ServerApp.extra_static_paths.append('%{_datadir}/%{name}/notebook') -# Extra static path for JupyROOT - end - do not remove this line +# Extra static paths for JupyROOT - end - do not remove this line EOF -%postun notebook +%postun -n python%{python3_pkgversion}-jupyroot if [ $1 -eq 0 ] ; then if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py if [ ! -s /etc/jupyter/jupyter_notebook_config.py ] ; then rm /etc/jupyter/jupyter_notebook_config.py rmdir /etc/jupyter 2>/dev/null || : fi fi if [ -e /etc/jupyter/jupyter_server_config.py ] ; then - sed '/Extra static path for JupyROOT - start/','/Extra static path for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py + sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_server_config.py if [ ! -s /etc/jupyter/jupyter_server_config.py ] ; then rm /etc/jupyter/jupyter_server_config.py rmdir /etc/jupyter 2>/dev/null || : @@ -3016,29 +2839,27 @@ fi %{python3_sitearch}/cppyy %{python3_sitearch}/cppyy_backend %{python3_sitearch}/ROOT -%{python3_sitearch}/ROOT-*.egg-info -%{python3_sitearch}/libcppyy%{python3_version_uscore}.so -%{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so -%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix} -%{_libdir}/%{name}/libcppyy%{python3_version_uscore}.* -%{_libdir}/%{name}/libcppyy_backend%{python3_version_uscore}.* +%{python3_sitearch}/ROOT-*.dist-info +%{python3_sitearch}/libcppyy.so +%{python3_sitearch}/libcppyy_backend.so +%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix} +%{_libdir}/%{name}/libcppyy.* +%{_libdir}/%{name}/libcppyy_backend.* %dir %{_includedir}/%{name}/CPyCppyy %files -n python%{python3_pkgversion}-jupyroot -%{python3_sitearch}/JupyROOT -%{python3_sitearch}/JupyROOT-*.egg-info -%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix} +%{python3_sitelib}/JupyROOT +%{python3_sitelib}/JupyROOT-*.dist-info %{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot +%{_bindir}/rootnb.exe +%{_datadir}/%{name}/notebook %doc bindings/jupyroot/README.md - -%files -n python%{python3_pkgversion}-jsmva -%{python3_sitelib}/JsMVA -%{python3_sitelib}/JsMVA-*.egg-info +%doc bindings/jupyroot/JupyROOT-on-EPEL %if %{distrdf} %files -n python%{python3_pkgversion}-distrdf %{python3_sitelib}/DistRDF -%{python3_sitelib}/DistRDF-*.egg-info +%{python3_sitelib}/DistRDF-*.dist-info %endif %files r -f includelist-bindings-r @@ -3433,7 +3254,6 @@ fi %{_libdir}/%{name}/libProofDraw_rdict.pcm %{_libdir}/%{name}/libProofPlayer.* %{_libdir}/%{name}/libProofPlayer_rdict.pcm -%{_datadir}/%{name}/plugins/TProofMonSender/P010_TProofMonSenderML.C %{_datadir}/%{name}/plugins/TProofMonSender/P020_TProofMonSenderSQL.C %{_datadir}/%{name}/plugins/TVirtualProofPlayer/P010_TProofPlayer.C %{_datadir}/%{name}/plugins/TVirtualProofPlayer/P020_TProofPlayerRemote.C @@ -3554,33 +3374,30 @@ fi %dir %{_includedir}/%{name}/TMVA/DNN/CNN %dir %{_includedir}/%{name}/TMVA/DNN/RNN %license tmva/doc/LICENSE +%exclude %{_includedir}/%{name}/TMVA/RBatchGenerator.hxx +%exclude %{_includedir}/%{name}/TMVA/RBatchLoader.hxx %exclude %{_includedir}/%{name}/TMVA/RBDT.hxx +%exclude %{_includedir}/%{name}/TMVA/RChunkLoader.hxx %exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx %exclude %{_includedir}/%{name}/TMVA/RReader.hxx %exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx %exclude %{_includedir}/%{name}/TMVA/RStandardScaler.hxx %exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx -%exclude %{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx %if %{dataframe} %files tmva-utils %{_libdir}/%{name}/libTMVAUtils.* %{_libdir}/%{name}/libTMVAUtils_rdict.pcm %dir %{_includedir}/%{name}/TMVA -%dir %{_includedir}/%{name}/TMVA/TreeInference +%{_includedir}/%{name}/TMVA/RBatchGenerator.hxx +%{_includedir}/%{name}/TMVA/RBatchLoader.hxx %{_includedir}/%{name}/TMVA/RBDT.hxx +%{_includedir}/%{name}/TMVA/RChunkLoader.hxx %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx %{_includedir}/%{name}/TMVA/RReader.hxx %{_includedir}/%{name}/TMVA/RSofieReader.hxx %{_includedir}/%{name}/TMVA/RStandardScaler.hxx %{_includedir}/%{name}/TMVA/RTensorUtils.hxx -%{_includedir}/%{name}/TMVA/TreeInference/BranchlessTree.hxx -%{_includedir}/%{name}/TMVA/TreeInference/Forest.hxx -%{_includedir}/%{name}/TMVA/TreeInference/Objectives.hxx -%{_includedir}/%{name}/TMVA/TreeInference/PythonHelpers.hxx %endif %files tmva-python -f includelist-tmva-pymva @@ -3650,14 +3467,10 @@ fi %{_bindir}/rootslimtree %{_datadir}/%{name}/cli -%files notebook -%{_bindir}/rootnb.exe -%{_datadir}/%{name}/notebook -%doc %{_pkgdocdir}/JupyROOT-on-EPEL - %files gui-webdisplay -f includelist-gui-webdisplay %{_libdir}/%{name}/libROOTWebDisplay.* %{_libdir}/%{name}/libROOTWebDisplay_rdict.pcm +%{_datadir}/%{name}/runfirefox.sh %{_datadir}/%{name}/ui5 %ifarch %{qt5_qtwebengine_arches} @@ -3744,6 +3557,14 @@ fi %endif %changelog +* Mon Jun 03 2024 Mattias Ellert - 6.32.00-1 +- Update to 6.32.00 +- Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020) +- Dropped patches: 12 +- New patches: 6 +- The JsMVA python module is now a submodule of the ROOT python module +- The notebook package was merged with the JupyROOT package + * Wed May 15 2024 Mattias Ellert - 6.30.06-5 - Rebuilt for libarrow.so.1601 - Improved fontconfig support diff --git a/sources b/sources index 755c137..a8ec13f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.30.06.tar.xz) = 10309321a8e803f1ea2019a4d8ddde6220b052ddfa1ed7dedd432201db5917da748e944b2323794317251fd0d70048b276ad7bed6e3fcd84835de7be88b4c420 +SHA512 (root-6.32.00.tar.xz) = 4b1015684b79aa352edd42316a3a87ae48f4330a7566230349f0a5c4e3ff49cddca79b5171128300d88575dfe2503ab1357cb3bd99d2c2a78985cc9aabd742f6 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 559fe2b850daf3fb8eb9c05ba2d993284eb66d7d Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 8 Jun 2024 22:04:11 +0200 Subject: [PATCH 37/89] Python 3.13 compatibility --- root-pyroot-add-python-3.13-attributes.patch | 62 ++++++++++++++++++++ root.spec | 18 +++++- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 root-pyroot-add-python-3.13-attributes.patch diff --git a/root-pyroot-add-python-3.13-attributes.patch b/root-pyroot-add-python-3.13-attributes.patch new file mode 100644 index 0000000..9ba3149 --- /dev/null +++ b/root-pyroot-add-python-3.13-attributes.patch @@ -0,0 +1,62 @@ +From 4d1486b95cd8c7850b12bd1777ea4463529f0b96 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 8 Jun 2024 17:08:48 +0200 +Subject: [PATCH] [pyroot] Add __firstlineno__ and __static_attributes__ to + blacklist + +For compatibility with Python 3.13 + +See: https://docs.python.org/3.13/whatsnew/3.13.html + +From the above page: + +* Classes have a new __firstlineno__ attribute, populated by the + compiler, with the line number of the first line of the class + definition. (Contributed by Serhiy Storchaka in gh-118465.) + +* Classes have a new __static_attributes__ attribute, populated by the + compiler, with a tuple of names of attributes of this class which + are accessed through self.X from any function in its + body. (Contributed by Irit Katriel in gh-115775.) + +Without adding the new attributes to the blacklist there are errors: + +AttributeError: 'int' object attribute 'doc' is read-only +from the __firstlineno__ attribute. + +AttributeError: 'tuple' object attribute 'doc' is read-only +from the __static_attributes__ attribute. +--- + .../python/ROOT/_pythonization/_roofit/__init__.py | 2 +- + .../pythonizations/python/ROOT/_pythonization/_tmva/__init__.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py +index 83b3b69e3b..4ebd53736d 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py +@@ -122,7 +122,7 @@ def get_defined_attributes(klass, consider_base_classes=False): + any of its base classes (except for `object`). + """ + +- blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__"] ++ blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__", "__firstlineno__", "__static_attributes__"] + + if not consider_base_classes: + return sorted([attr for attr in klass.__dict__.keys() if attr not in blacklist]) +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py +index b2dea5b541..72c210663d 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py +@@ -69,7 +69,7 @@ def get_defined_attributes(klass, consider_base_classes=False): + any of its base classes (except for `object`). + """ + +- blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__"] ++ blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__", "__firstlineno__", "__static_attributes__"] + + if not consider_base_classes: + return sorted([attr for attr in klass.__dict__.keys() if attr not in blacklist]) +-- +2.45.2 + diff --git a/root.spec b/root.spec index c39adee..8ae9e2f 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -81,6 +81,10 @@ Patch9: %{name}-out-of-bounds.patch # Fix one more broken import in JsMVA # https://github.com/root-project/root/pull/15752 Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch +# Python 3.13 compatibility +# https://github.com/root-project/root/issues/15430 +# https://github.com/root-project/root/pull/15798 +Patch11: %{name}-pyroot-add-python-3.13-attributes.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1926,6 +1930,7 @@ This package contains utility functions for ntuples. %patch -P8 -p1 %patch -P9 -p1 %patch -P10 -p1 +%patch -P11 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2497,6 +2502,14 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ pyunittests-pyroot-numbadeclare|\ test-webgui-ping" +%if %{?fedora}%{!?fedora:0} >= 41 +# - pyunittests-pyroot-pyz-ttree-setbranchaddress +# Segfault with Python 3.13: +# https://github.com/root-project/root/issues/15799 +excluded="${excluded}|\ +pyunittests-pyroot-pyz-ttree-setbranchaddress" +%endif + %if ! %{pandas} # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py @@ -3557,6 +3570,9 @@ fi %endif %changelog +* Sat Jun 08 2024 Mattias Ellert - 6.32.00-2 +- Python 3.13 compatibility + * Mon Jun 03 2024 Mattias Ellert - 6.32.00-1 - Update to 6.32.00 - Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020) From 48045b2bdf7e46b48746527048b2d1c25b230141 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Sun, 9 Jun 2024 02:47:16 +0200 Subject: [PATCH 38/89] Rebuilt for Python 3.13 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 8ae9e2f..cd12db9 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3570,6 +3570,9 @@ fi %endif %changelog +* Sun Jun 09 2024 Python Maint - 6.32.00-3 +- Rebuilt for Python 3.13 + * Sat Jun 08 2024 Mattias Ellert - 6.32.00-2 - Python 3.13 compatibility From 4946c86aeaca3ac3a3ae44d713c58afa26604fa8 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 10 Jun 2024 22:42:59 +0200 Subject: [PATCH 39/89] Backport fix for failing test with Python 3.13 --- ...-allow-any-openssl-3.x-with-civetweb.patch | 30 +++ ...TTree-SetBranchAddress-pythonization.patch | 214 ++++++++++++++++++ root.spec | 23 +- 3 files changed, 258 insertions(+), 9 deletions(-) create mode 100644 root-allow-any-openssl-3.x-with-civetweb.patch create mode 100644 root-python-3.13-TTree-SetBranchAddress-pythonization.patch diff --git a/root-allow-any-openssl-3.x-with-civetweb.patch b/root-allow-any-openssl-3.x-with-civetweb.patch new file mode 100644 index 0000000..05e2a64 --- /dev/null +++ b/root-allow-any-openssl-3.x-with-civetweb.patch @@ -0,0 +1,30 @@ +From 6952dd5ca51e7be8a8ae74b446ac268949f5f383 Mon Sep 17 00:00:00 2001 +From: Sergey Linev +Date: Mon, 10 Jun 2024 09:19:47 +0200 +Subject: [PATCH] [http] Allow to use any of openssl 3.x with civetweb + +civetweb was designed when only openssl 3.0 was existing. +Therefore name of define is `OPENSSL_API_3_0` +Meanwhile there is openssl 3.1 and 3.2. +While seems to be there is no changes in API both can +be used with civetweb. +--- + net/http/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/net/http/CMakeLists.txt b/net/http/CMakeLists.txt +index 02d7514400..6ef98a604b 100644 +--- a/net/http/CMakeLists.txt ++++ b/net/http/CMakeLists.txt +@@ -78,7 +78,7 @@ if(ssl) + MESSAGE(STATUS "Use SSL API VERSION 1.1 for civetweb") + target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_1_1) + set(link_ssl ON) +- elseif((${ssl_major} EQUAL "3") AND ((${ssl_minor} EQUAL "0") OR (${ssl_minor} EQUAL "1"))) ++ elseif(${ssl_major} EQUAL "3") + MESSAGE(STATUS "Use SSL API VERSION 3.${ssl_minor} for civetweb") + target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_3_0) + set(link_ssl ON) +-- +2.45.2 + diff --git a/root-python-3.13-TTree-SetBranchAddress-pythonization.patch b/root-python-3.13-TTree-SetBranchAddress-pythonization.patch new file mode 100644 index 0000000..f891893 --- /dev/null +++ b/root-python-3.13-TTree-SetBranchAddress-pythonization.patch @@ -0,0 +1,214 @@ +From 0cc7d61c6f732e701ef6ed263344105b01ef9613 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Mon, 10 Jun 2024 12:32:42 +0200 +Subject: [PATCH] [PyROOT] Implement TTree SetBranchAddress pythonization in + Python + +The pythonization of `TTree::SetBranchAddress` was implemented in C++, +hacking into CPyCppy by using implementation details like data member +caches (this call: `((CPPInstance *)address)GetDatamemberCache()`). Not +too surprising that it apparently breaks with the upcoming Python 3.13. + +It's better to implement the pythonizations in Python and also manage +the lifetime of the necessary data in Python. This is done in this +commit. + +The pythonization is extensively tested in `ttree_setbranchaddress.py`. + +Possible closes #15799. +--- + .../python/ROOT/_pythonization/_ttree.py | 67 ++++++++++++++++--- + .../pythonizations/src/PyROOTModule.cxx | 2 - + .../pythonizations/src/PyROOTPythonize.h | 1 - + .../pyroot/pythonizations/src/TTreePyz.cxx | 63 ----------------- + 4 files changed, 59 insertions(+), 74 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py +index 2781189e45..18840bb43e 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py +@@ -130,7 +130,7 @@ ds.SetBranchAddress('structb', ms) + */ + ''' + +-from libROOTPythonizations import GetBranchAttr, SetBranchAddressPyz, BranchPyz ++from libROOTPythonizations import GetBranchAttr, BranchPyz + from . import pythonization + + # TTree iterator +@@ -145,15 +145,66 @@ def _TTree__iter__(self): + if bytes_read == -1: + raise RuntimeError("TTree I/O error") + +-def _SetBranchAddress(self, *args): +- # Modify the behaviour if args is (const char*, void*) +- res = SetBranchAddressPyz(self, *args) ++def _pythonize_branch_addr(branch, addr_orig): ++ """Helper for the SetBranchAddress pythonization, extracting the relevant ++ address from a Python object if possible. ++ """ ++ import cppyy ++ import ctypes + +- if res is None: +- # Fall back to the original implementation for the rest of overloads +- res = self._OriginalSetBranchAddress(*args) ++ # Pythonization for cppyy proxies (of type CPPInstance) ++ if isinstance(addr_orig, cppyy._backend.CPPInstance): + +- return res ++ is_leaf_list = branch.IsA() is cppyy.gbl.TBranch.Class() ++ ++ if is_leaf_list: ++ # If the branch is a leaf list, SetBranchAddress expects the ++ # address of the object that has the corresponding data members. ++ return ctypes.c_void_p(cppyy.addressof(instance=addr_orig, byref=False)) ++ ++ # Otherwise, SetBranchAddress is expecting a pointer to the address of ++ # the object, and the pointer needs to stay alive. Therefore, we create ++ # a container for the pointer and cache it in the original cppyy proxy. ++ addr_view = cppyy.gbl.array["std::intptr_t", 1]([cppyy.addressof(instance=addr_orig, byref=False)]) ++ ++ if not hasattr(addr_orig, "_set_branch_cached_pointers"): ++ addr_orig._set_branch_cached_pointers = [] ++ addr_orig._set_branch_cached_pointers.append(addr_view) ++ ++ # Finally, we have to return the address of the container ++ return ctypes.c_void_p(cppyy.addressof(instance=addr_view, byref=False)) ++ ++ # For NumPy arrays ++ if hasattr(addr_orig, "__array_interface__"): ++ return ctypes.c_void_p(addr_orig.__array_interface__["data"][0]) ++ ++ # For the builtin array library ++ if hasattr(addr_orig, "buffer_info"): ++ return ctypes.c_void_p(addr_orig.buffer_info()[0]) ++ ++ # We don't know how to pythonize the address parameter. return the ++ # original value one. ++ return addr_orig ++ ++def _SetBranchAddress(self, bname, addr, *args, **kwargs): ++ """ ++ Pythonization for TTree::SetBranchAddress. ++ ++ Modify the behaviour of SetBranchAddress so that proxy references can be passed ++ as arguments from the Python side, more precisely in cases where the C++ ++ implementation of the method expects the address of a pointer. ++ ++ For example: ++ ``` ++ v = ROOT.std.vector('int')() ++ t.SetBranchAddress("my_vector_branch", v) ++ ``` ++ """ ++ ++ branch = self.GetBranch(bname) ++ addr = _pythonize_branch_addr(branch, addr) ++ ++ return self._OriginalSetBranchAddress(bname, addr, *args, **kwargs) + + def _Branch(self, *args): + # Modify the behaviour if args is one of: +diff --git a/bindings/pyroot/pythonizations/src/PyROOTModule.cxx b/bindings/pyroot/pythonizations/src/PyROOTModule.cxx +index e943e0ad4b..b74bae358e 100644 +--- a/bindings/pyroot/pythonizations/src/PyROOTModule.cxx ++++ b/bindings/pyroot/pythonizations/src/PyROOTModule.cxx +@@ -48,8 +48,6 @@ static PyMethodDef gPyROOTMethods[] = { + (char *)"Cast the void* returned by TClass::DynamicCast to the right type"}, + {(char *)"AddTObjectEqNePyz", (PyCFunction)PyROOT::AddTObjectEqNePyz, METH_VARARGS, + (char *)"Add equality and inequality comparison operators to TObject"}, +- {(char *)"SetBranchAddressPyz", (PyCFunction)PyROOT::SetBranchAddressPyz, METH_VARARGS, +- (char *)"Fully enable the use of TTree::SetBranchAddress from Python"}, + {(char *)"BranchPyz", (PyCFunction)PyROOT::BranchPyz, METH_VARARGS, + (char *)"Fully enable the use of TTree::Branch from Python"}, + {(char *)"AddPrettyPrintingPyz", (PyCFunction)PyROOT::AddPrettyPrintingPyz, METH_VARARGS, +diff --git a/bindings/pyroot/pythonizations/src/PyROOTPythonize.h b/bindings/pyroot/pythonizations/src/PyROOTPythonize.h +index 9f2d4506b6..684f256596 100644 +--- a/bindings/pyroot/pythonizations/src/PyROOTPythonize.h ++++ b/bindings/pyroot/pythonizations/src/PyROOTPythonize.h +@@ -22,7 +22,6 @@ PyObject *AddPrettyPrintingPyz(PyObject *self, PyObject *args); + + PyObject *GetBranchAttr(PyObject *self, PyObject *args); + PyObject *BranchPyz(PyObject *self, PyObject *args); +-PyObject *SetBranchAddressPyz(PyObject *self, PyObject *args); + + PyObject *AddTClassDynamicCastPyz(PyObject *self, PyObject *args); + +diff --git a/bindings/pyroot/pythonizations/src/TTreePyz.cxx b/bindings/pyroot/pythonizations/src/TTreePyz.cxx +index d6763fdb25..f06811c43c 100644 +--- a/bindings/pyroot/pythonizations/src/TTreePyz.cxx ++++ b/bindings/pyroot/pythonizations/src/TTreePyz.cxx +@@ -201,69 +201,6 @@ PyObject *PyROOT::GetBranchAttr(PyObject * /*self*/, PyObject *args) + return 0; + } + +-//////////////////////////////////////////////////////////////////////////// +-/// \brief Add pythonization for TTree::SetBranchAddress. +-/// \param[in] self Always null, since this is a module function. +-/// \param[in] args Pointer to a Python tuple object containing the arguments +-/// received from Python. +-/// +-/// Modify the behaviour of SetBranchAddress so that proxy references can be passed +-/// as arguments from the Python side, more precisely in cases where the C++ +-/// implementation of the method expects the address of a pointer. +-/// +-/// For example: +-/// ~~~{.py} +-/// v = ROOT.std.vector('int')() +-/// t.SetBranchAddress("my_vector_branch", v) +-/// ~~~ +-PyObject *PyROOT::SetBranchAddressPyz(PyObject * /* self */, PyObject *args) +-{ +- PyObject *treeObj = nullptr, *name = nullptr, *address = nullptr; +- +- int argc = PyTuple_GET_SIZE(args); +- +- // Look for the (const char*, void*) overload +- auto argParseStr = "OUO:SetBranchAddress"; +- if (argc == 3 && PyArg_ParseTuple(args, argParseStr, &treeObj, &name, &address)) { +- +- auto tree = (TTree *)GetTClass(treeObj)->DynamicCast(TTree::Class(), CPyCppyy::Instance_AsVoidPtr(treeObj)); +- +- if (!tree) { +- PyErr_SetString(PyExc_TypeError, +- "TTree::SetBranchAddress must be called with a TTree instance as first argument"); +- return nullptr; +- } +- +- auto branchName = PyUnicode_AsUTF8(name); +- auto branch = tree->GetBranch(branchName); +- if (!branch) { +- PyErr_SetString(PyExc_TypeError, "TTree::SetBranchAddress must be called with a valid branch name"); +- return nullptr; +- } +- +- bool isLeafList = branch->IsA() == TBranch::Class(); +- +- void *buf = 0; +- if (CPyCppyy::Instance_Check(address)) { +- ((CPPInstance *)address)->GetDatamemberCache(); // force creation of cache +- +- if (((CPPInstance *)address)->fFlags & CPPInstance::kIsReference || isLeafList) +- buf = CPyCppyy::Instance_AsVoidPtr(address); +- else +- buf = (void *)&(((CPPInstance *)address)->GetObjectRaw()); +- } else +- Utility::GetBuffer(address, '*', 1, buf, false); +- +- if (buf != nullptr) { +- auto res = tree->SetBranchAddress(PyUnicode_AsUTF8(name), buf); +- return PyInt_FromLong(res); +- } +- } +- +- // Not the overload we wanted to pythonize, return None +- Py_RETURN_NONE; +-} +- + //////////////////////////////////////////////////////////////////////////// + /// Try to match the arguments of TTree::Branch to the following overload: + /// - ( const char*, void*, const char*, Int_t = 32000 ) +-- +2.45.2 + diff --git a/root.spec b/root.spec index cd12db9..a2adb6c 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -85,6 +85,14 @@ Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch # https://github.com/root-project/root/issues/15430 # https://github.com/root-project/root/pull/15798 Patch11: %{name}-pyroot-add-python-3.13-attributes.patch +# Implement TTree SetBranchAddress pythonization in Python +# Backport fix for failing test with Python 3.13 +# pyunittests-pyroot-pyz-ttree-setbranchaddress +# https://github.com/root-project/root/issues/15799 +# https://github.com/root-project/root/pull/15807 +Patch12: %{name}-python-3.13-TTree-SetBranchAddress-pythonization.patch +# Backport build fix from upstream +Patch13: %{name}-allow-any-openssl-3.x-with-civetweb.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1931,6 +1939,8 @@ This package contains utility functions for ntuples. %patch -P9 -p1 %patch -P10 -p1 %patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2502,14 +2512,6 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ pyunittests-pyroot-numbadeclare|\ test-webgui-ping" -%if %{?fedora}%{!?fedora:0} >= 41 -# - pyunittests-pyroot-pyz-ttree-setbranchaddress -# Segfault with Python 3.13: -# https://github.com/root-project/root/issues/15799 -excluded="${excluded}|\ -pyunittests-pyroot-pyz-ttree-setbranchaddress" -%endif - %if ! %{pandas} # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py @@ -3570,6 +3572,9 @@ fi %endif %changelog +* Mon Jun 10 2024 Mattias Ellert - 6.32.00-4 +- Backport fix for failing test with Python 3.13 + * Sun Jun 09 2024 Python Maint - 6.32.00-3 - Rebuilt for Python 3.13 From ea27f7093bee4e9b47ff5449eb5433f89593d0e8 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 18 Jun 2024 04:22:08 +0200 Subject: [PATCH 40/89] Add dependency on liburing-devel to root-io Exclude failing tutorial-tmva-RBatchGenerator_filters_vectors-py test on aarch64 (Fedora 40+) --- root.spec | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/root.spec b/root.spec index a2adb6c..eb906de 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -413,7 +413,7 @@ Requires: %{name}-core = %{version}-%{release} # notebook package was merged with JupyROOT package Provides: %{name}-notebook = %{version}-%{release} Obsoletes: %{name}-notebook < 6.32.00 -Requires: js-jsroot >= 7.5 +Requires: js-jsroot >= 7.7 %if %{?fedora}%{!?fedora:0} # jupyter-notebook not available in RHEL/EPEL # some functionality missing @@ -838,6 +838,9 @@ from marked up sources. %package io Summary: Input/output of ROOT objects Requires: %{name}-core%{?_isa} = %{version}-%{release} +%if %{?fedora}%{!?fedora:0} +Requires: liburing-devel +%endif %description io This package provides I/O routines for ROOT objects. @@ -1140,7 +1143,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 >= 7.5 +Requires: js-jsroot >= 7.7 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -2536,6 +2539,15 @@ gtest-tree-dataframe-test-dataframe-concurrency|\ gtest-tree-dataframe-test-dataframe-simple" %endif +%if %{?fedora}%{!?fedora:0} >= 40 +# - tutorial-tmva-RBatchGenerator_filters_vectors-py +# *** Break *** segmentation violation +%ifarch aarch64 +excluded="${excluded}|\ +tutorial-tmva-RBatchGenerator_filters_vectors-py" +%endif +%endif + %ifarch %{power64} # - test-stressgraphics(-interpreted) # *** stack smashing detected ***: terminated @@ -3572,6 +3584,11 @@ fi %endif %changelog +* Mon Jun 17 2024 Mattias Ellert - 6.32.00-5 +- Add dependency on liburing-devel to root-io +- Exclude failing tutorial-tmva-RBatchGenerator_filters_vectors-py test + on aarch64 (Fedora 40+) + * Mon Jun 10 2024 Mattias Ellert - 6.32.00-4 - Backport fix for failing test with Python 3.13 @@ -3583,7 +3600,7 @@ fi * Mon Jun 03 2024 Mattias Ellert - 6.32.00-1 - Update to 6.32.00 -- Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020) +- Drop EPEL 8 build (now requires Python >= 3.7 and tbb >= 2020) - Dropped patches: 12 - New patches: 6 - The JsMVA python module is now a submodule of the ROOT python module From c1e2a7a6b3ee9893404417a2c17fe1b1b5f239e7 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 18 Jun 2024 17:15:43 +0200 Subject: [PATCH 41/89] Update to 6.32.02 Drop paches accepted upstream --- root-failure-on-ppc64le-and-s390x.patch | 35 --- ...-fix-one-more-broken-import-in-JsMVA.patch | 25 -- root-format-warnings-32-bit.patch | 73 ------ root-out-of-bounds.patch | 26 --- root-pyroot-add-python-3.13-attributes.patch | 62 ----- ...TTree-SetBranchAddress-pythonization.patch | 214 ------------------ root.spec | 46 +--- sources | 2 +- 8 files changed, 11 insertions(+), 472 deletions(-) delete mode 100644 root-failure-on-ppc64le-and-s390x.patch delete mode 100644 root-fix-one-more-broken-import-in-JsMVA.patch delete mode 100644 root-format-warnings-32-bit.patch delete mode 100644 root-out-of-bounds.patch delete mode 100644 root-pyroot-add-python-3.13-attributes.patch delete mode 100644 root-python-3.13-TTree-SetBranchAddress-pythonization.patch diff --git a/root-failure-on-ppc64le-and-s390x.patch b/root-failure-on-ppc64le-and-s390x.patch deleted file mode 100644 index 787eab5..0000000 --- a/root-failure-on-ppc64le-and-s390x.patch +++ /dev/null @@ -1,35 +0,0 @@ -From d3b5ef223500c69efadb9b8c4735247d9ba5c5ea Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 2 Jun 2024 07:03:42 +0200 -Subject: [PATCH] Fix test failure on ppc64le and s390x - ---- - hist/hist/test/test_tprofile2poly.cxx | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx -index 26b9801593..1dfa93259c 100644 ---- a/hist/hist/test/test_tprofile2poly.cxx -+++ b/hist/hist/test/test_tprofile2poly.cxx -@@ -25,10 +25,16 @@ void FillForTest(TProfile2D* tp2d, TProfile2Poly* tpp, TRandom& ran) { - } - - void globalStatsCompare(TProfile2D* tp2d, TProfile2Poly* tpp) { -+ const double relTol = 1e-12; -+ double cont1, cont2; - for(Int_t c=1; c<=3; ++c) { - ASSERT_DOUBLE_EQ(tp2d->GetMean(c), tpp->GetMean(c)); -- ASSERT_DOUBLE_EQ(tp2d->GetMeanError(c), tpp->GetMeanError(c)); -- ASSERT_DOUBLE_EQ(tp2d->GetStdDev(c), tpp->GetStdDev(c)); -+ cont1 = tp2d->GetMeanError(c); -+ cont2 = tpp->GetMeanError(c); -+ ASSERT_NEAR(cont1, cont2, relTol * cont2); -+ cont1 = tp2d->GetStdDev(c); -+ cont2 = tpp->GetStdDev(c); -+ ASSERT_NEAR(cont1, cont2, relTol * cont2); - } - } - --- -2.45.1 - diff --git a/root-fix-one-more-broken-import-in-JsMVA.patch b/root-fix-one-more-broken-import-in-JsMVA.patch deleted file mode 100644 index 0393bdc..0000000 --- a/root-fix-one-more-broken-import-in-JsMVA.patch +++ /dev/null @@ -1,25 +0,0 @@ -From de85dbd3344709d1c5ca87e93c87cdbce147ce5b Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 5 Jun 2024 08:49:14 +0200 -Subject: [PATCH] Fix one more broken import in JsMVA - ---- - bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py -index 57358765e4..7f56cd6dd5 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/JsMVA/JsMVAMagic.py -@@ -23,7 +23,7 @@ class JsMVAMagic(Magics): - @magic_arguments() - @argument("arg", nargs="?", default="on", help="Enable/Disable JavaScript visualisation for TMVA") - def jsmva(self, line): -- from JsMVA.JPyInterface import functions -+ from .JPyInterface import functions - - args = parse_argstring(self.jsmva, line) - if args.arg == "on": --- -2.45.1 - diff --git a/root-format-warnings-32-bit.patch b/root-format-warnings-32-bit.patch deleted file mode 100644 index 3583398..0000000 --- a/root-format-warnings-32-bit.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 8592c5e065b8cf46480f5a1efe0363fcf2150551 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 4 Jun 2024 08:47:04 +0200 -Subject: [PATCH] Correct format - warnings seen on 32 bit architectures - ---- - core/clib/src/mmapsup.c | 2 +- - roofit/xroofit/src/xRooNode.cxx | 2 +- - tree/dataframe/src/RDFDisplay.cxx | 4 ++-- - tree/dataframe/src/RDFHelpers.cxx | 2 +- - 4 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/core/clib/src/mmapsup.c b/core/clib/src/mmapsup.c -index 81f68a2059..da46dc7ba5 100644 ---- a/core/clib/src/mmapsup.c -+++ b/core/clib/src/mmapsup.c -@@ -174,7 +174,7 @@ PTR __mmalloc_mmap_morecore(struct mdesc *mdp, int size) - if (mdp -> top != PAGE_ALIGN(mdp -> top)) { - fprintf(stderr, - "mmap_morecore error: base memory location (%p) is not aligned with %zu as required.\n", -- mdp -> top, (long)pagesize); -+ mdp -> top, pagesize); - return result; - } - mapto = mmap (mdp -> top, mapbytes, PROT_READ | PROT_WRITE, -diff --git a/roofit/xroofit/src/xRooNode.cxx b/roofit/xroofit/src/xRooNode.cxx -index f8c96fbf62..852e6997c0 100644 ---- a/roofit/xroofit/src/xRooNode.cxx -+++ b/roofit/xroofit/src/xRooNode.cxx -@@ -11075,7 +11075,7 @@ std::string cling::printValue(const xRooNode *v) - out += "{"; - out += n->GetName(); - if (out.length() > 100 && left > 0) { -- out += TString::Format(",... and %lu more", left); -+ out += TString::Format(",... and %zu more", left); - break; - } - } -diff --git a/tree/dataframe/src/RDFDisplay.cxx b/tree/dataframe/src/RDFDisplay.cxx -index 9dc555fc1d..2ef7de7ddc 100644 ---- a/tree/dataframe/src/RDFDisplay.cxx -+++ b/tree/dataframe/src/RDFDisplay.cxx -@@ -232,12 +232,12 @@ void RDisplay::Print() const - // Thus, the first column is only the Row column and the actual first column is printed - columnsToPrint = 2; - } -- Info("Print", "Only showing %lu columns out of %lu\n", columnsToPrint, fNColumns); -+ Info("Print", "Only showing %zu columns out of %zu\n", columnsToPrint, fNColumns); - allColumnsFit = false; - } - - if (fNMaxCollectionElements < 1) -- Info("Print", "No collections shown since fNMaxCollectionElements is %lu\n", fNMaxCollectionElements); -+ Info("Print", "No collections shown since fNMaxCollectionElements is %zu\n", fNMaxCollectionElements); - - auto nrRows = fTable.size(); - std::cout << DashesBetweenLines(columnsToPrint, allColumnsFit); // Print dashes in the top of the table -diff --git a/tree/dataframe/src/RDFHelpers.cxx b/tree/dataframe/src/RDFHelpers.cxx -index 4891454cc0..3490901b5d 100644 ---- a/tree/dataframe/src/RDFHelpers.cxx -+++ b/tree/dataframe/src/RDFHelpers.cxx -@@ -74,7 +74,7 @@ unsigned int ROOT::RDF::RunGraphs(std::vector handles) - const unsigned int nToRun = - std::count_if(handles.begin(), handles.end(), [](const auto &h) { return !h.IsReady(); }); - if (nToRun < handles.size()) { -- Warning("RunGraphs", "Got %lu handles from which %lu link to results which are already ready.", handles.size(), -+ Warning("RunGraphs", "Got %zu handles from which %zu link to results which are already ready.", handles.size(), - handles.size() - nToRun); - } - if (nToRun == 0u) --- -2.45.1 - diff --git a/root-out-of-bounds.patch b/root-out-of-bounds.patch deleted file mode 100644 index fbae2ea..0000000 --- a/root-out-of-bounds.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 069359fe9e6c36a4287a64d3356246d516409149 Mon Sep 17 00:00:00 2001 -From: Jonas Rembser -Date: Tue, 4 Jun 2024 12:53:53 +0200 -Subject: [PATCH] [RF] Set size of offsets vector in LikelihoodJob correctly - -When `std::copy`ing into a vector, it needs to have the right size -before. Doing only `std::reserve` is not enough. - -Fixes #15730. ---- - roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx -index 85c3d02c02ccf..42d191833d14c 100644 ---- a/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx -+++ b/roofit/roofitcore/src/TestStatistics/LikelihoodJob.cxx -@@ -93,7 +93,7 @@ void LikelihoodJob::update_state() - assert(!more); - auto offsets_message_begin = offsets_message.data>(); - std::size_t N_offsets = offsets_message.size() / sizeof(ROOT::Math::KahanSum); -- shared_offset_.offsets().reserve(N_offsets); -+ shared_offset_.offsets().resize(N_offsets); - auto offsets_message_end = offsets_message_begin + N_offsets; - std::copy(offsets_message_begin, offsets_message_end, shared_offset_.offsets().begin()); - } diff --git a/root-pyroot-add-python-3.13-attributes.patch b/root-pyroot-add-python-3.13-attributes.patch deleted file mode 100644 index 9ba3149..0000000 --- a/root-pyroot-add-python-3.13-attributes.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 4d1486b95cd8c7850b12bd1777ea4463529f0b96 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sat, 8 Jun 2024 17:08:48 +0200 -Subject: [PATCH] [pyroot] Add __firstlineno__ and __static_attributes__ to - blacklist - -For compatibility with Python 3.13 - -See: https://docs.python.org/3.13/whatsnew/3.13.html - -From the above page: - -* Classes have a new __firstlineno__ attribute, populated by the - compiler, with the line number of the first line of the class - definition. (Contributed by Serhiy Storchaka in gh-118465.) - -* Classes have a new __static_attributes__ attribute, populated by the - compiler, with a tuple of names of attributes of this class which - are accessed through self.X from any function in its - body. (Contributed by Irit Katriel in gh-115775.) - -Without adding the new attributes to the blacklist there are errors: - -AttributeError: 'int' object attribute 'doc' is read-only -from the __firstlineno__ attribute. - -AttributeError: 'tuple' object attribute 'doc' is read-only -from the __static_attributes__ attribute. ---- - .../python/ROOT/_pythonization/_roofit/__init__.py | 2 +- - .../pythonizations/python/ROOT/_pythonization/_tmva/__init__.py | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py -index 83b3b69e3b..4ebd53736d 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py -@@ -122,7 +122,7 @@ def get_defined_attributes(klass, consider_base_classes=False): - any of its base classes (except for `object`). - """ - -- blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__"] -+ blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__", "__firstlineno__", "__static_attributes__"] - - if not consider_base_classes: - return sorted([attr for attr in klass.__dict__.keys() if attr not in blacklist]) -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py -index b2dea5b541..72c210663d 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py -@@ -69,7 +69,7 @@ def get_defined_attributes(klass, consider_base_classes=False): - any of its base classes (except for `object`). - """ - -- blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__"] -+ blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__", "__firstlineno__", "__static_attributes__"] - - if not consider_base_classes: - return sorted([attr for attr in klass.__dict__.keys() if attr not in blacklist]) --- -2.45.2 - diff --git a/root-python-3.13-TTree-SetBranchAddress-pythonization.patch b/root-python-3.13-TTree-SetBranchAddress-pythonization.patch deleted file mode 100644 index f891893..0000000 --- a/root-python-3.13-TTree-SetBranchAddress-pythonization.patch +++ /dev/null @@ -1,214 +0,0 @@ -From 0cc7d61c6f732e701ef6ed263344105b01ef9613 Mon Sep 17 00:00:00 2001 -From: Jonas Rembser -Date: Mon, 10 Jun 2024 12:32:42 +0200 -Subject: [PATCH] [PyROOT] Implement TTree SetBranchAddress pythonization in - Python - -The pythonization of `TTree::SetBranchAddress` was implemented in C++, -hacking into CPyCppy by using implementation details like data member -caches (this call: `((CPPInstance *)address)GetDatamemberCache()`). Not -too surprising that it apparently breaks with the upcoming Python 3.13. - -It's better to implement the pythonizations in Python and also manage -the lifetime of the necessary data in Python. This is done in this -commit. - -The pythonization is extensively tested in `ttree_setbranchaddress.py`. - -Possible closes #15799. ---- - .../python/ROOT/_pythonization/_ttree.py | 67 ++++++++++++++++--- - .../pythonizations/src/PyROOTModule.cxx | 2 - - .../pythonizations/src/PyROOTPythonize.h | 1 - - .../pyroot/pythonizations/src/TTreePyz.cxx | 63 ----------------- - 4 files changed, 59 insertions(+), 74 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py -index 2781189e45..18840bb43e 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py -@@ -130,7 +130,7 @@ ds.SetBranchAddress('structb', ms) - */ - ''' - --from libROOTPythonizations import GetBranchAttr, SetBranchAddressPyz, BranchPyz -+from libROOTPythonizations import GetBranchAttr, BranchPyz - from . import pythonization - - # TTree iterator -@@ -145,15 +145,66 @@ def _TTree__iter__(self): - if bytes_read == -1: - raise RuntimeError("TTree I/O error") - --def _SetBranchAddress(self, *args): -- # Modify the behaviour if args is (const char*, void*) -- res = SetBranchAddressPyz(self, *args) -+def _pythonize_branch_addr(branch, addr_orig): -+ """Helper for the SetBranchAddress pythonization, extracting the relevant -+ address from a Python object if possible. -+ """ -+ import cppyy -+ import ctypes - -- if res is None: -- # Fall back to the original implementation for the rest of overloads -- res = self._OriginalSetBranchAddress(*args) -+ # Pythonization for cppyy proxies (of type CPPInstance) -+ if isinstance(addr_orig, cppyy._backend.CPPInstance): - -- return res -+ is_leaf_list = branch.IsA() is cppyy.gbl.TBranch.Class() -+ -+ if is_leaf_list: -+ # If the branch is a leaf list, SetBranchAddress expects the -+ # address of the object that has the corresponding data members. -+ return ctypes.c_void_p(cppyy.addressof(instance=addr_orig, byref=False)) -+ -+ # Otherwise, SetBranchAddress is expecting a pointer to the address of -+ # the object, and the pointer needs to stay alive. Therefore, we create -+ # a container for the pointer and cache it in the original cppyy proxy. -+ addr_view = cppyy.gbl.array["std::intptr_t", 1]([cppyy.addressof(instance=addr_orig, byref=False)]) -+ -+ if not hasattr(addr_orig, "_set_branch_cached_pointers"): -+ addr_orig._set_branch_cached_pointers = [] -+ addr_orig._set_branch_cached_pointers.append(addr_view) -+ -+ # Finally, we have to return the address of the container -+ return ctypes.c_void_p(cppyy.addressof(instance=addr_view, byref=False)) -+ -+ # For NumPy arrays -+ if hasattr(addr_orig, "__array_interface__"): -+ return ctypes.c_void_p(addr_orig.__array_interface__["data"][0]) -+ -+ # For the builtin array library -+ if hasattr(addr_orig, "buffer_info"): -+ return ctypes.c_void_p(addr_orig.buffer_info()[0]) -+ -+ # We don't know how to pythonize the address parameter. return the -+ # original value one. -+ return addr_orig -+ -+def _SetBranchAddress(self, bname, addr, *args, **kwargs): -+ """ -+ Pythonization for TTree::SetBranchAddress. -+ -+ Modify the behaviour of SetBranchAddress so that proxy references can be passed -+ as arguments from the Python side, more precisely in cases where the C++ -+ implementation of the method expects the address of a pointer. -+ -+ For example: -+ ``` -+ v = ROOT.std.vector('int')() -+ t.SetBranchAddress("my_vector_branch", v) -+ ``` -+ """ -+ -+ branch = self.GetBranch(bname) -+ addr = _pythonize_branch_addr(branch, addr) -+ -+ return self._OriginalSetBranchAddress(bname, addr, *args, **kwargs) - - def _Branch(self, *args): - # Modify the behaviour if args is one of: -diff --git a/bindings/pyroot/pythonizations/src/PyROOTModule.cxx b/bindings/pyroot/pythonizations/src/PyROOTModule.cxx -index e943e0ad4b..b74bae358e 100644 ---- a/bindings/pyroot/pythonizations/src/PyROOTModule.cxx -+++ b/bindings/pyroot/pythonizations/src/PyROOTModule.cxx -@@ -48,8 +48,6 @@ static PyMethodDef gPyROOTMethods[] = { - (char *)"Cast the void* returned by TClass::DynamicCast to the right type"}, - {(char *)"AddTObjectEqNePyz", (PyCFunction)PyROOT::AddTObjectEqNePyz, METH_VARARGS, - (char *)"Add equality and inequality comparison operators to TObject"}, -- {(char *)"SetBranchAddressPyz", (PyCFunction)PyROOT::SetBranchAddressPyz, METH_VARARGS, -- (char *)"Fully enable the use of TTree::SetBranchAddress from Python"}, - {(char *)"BranchPyz", (PyCFunction)PyROOT::BranchPyz, METH_VARARGS, - (char *)"Fully enable the use of TTree::Branch from Python"}, - {(char *)"AddPrettyPrintingPyz", (PyCFunction)PyROOT::AddPrettyPrintingPyz, METH_VARARGS, -diff --git a/bindings/pyroot/pythonizations/src/PyROOTPythonize.h b/bindings/pyroot/pythonizations/src/PyROOTPythonize.h -index 9f2d4506b6..684f256596 100644 ---- a/bindings/pyroot/pythonizations/src/PyROOTPythonize.h -+++ b/bindings/pyroot/pythonizations/src/PyROOTPythonize.h -@@ -22,7 +22,6 @@ PyObject *AddPrettyPrintingPyz(PyObject *self, PyObject *args); - - PyObject *GetBranchAttr(PyObject *self, PyObject *args); - PyObject *BranchPyz(PyObject *self, PyObject *args); --PyObject *SetBranchAddressPyz(PyObject *self, PyObject *args); - - PyObject *AddTClassDynamicCastPyz(PyObject *self, PyObject *args); - -diff --git a/bindings/pyroot/pythonizations/src/TTreePyz.cxx b/bindings/pyroot/pythonizations/src/TTreePyz.cxx -index d6763fdb25..f06811c43c 100644 ---- a/bindings/pyroot/pythonizations/src/TTreePyz.cxx -+++ b/bindings/pyroot/pythonizations/src/TTreePyz.cxx -@@ -201,69 +201,6 @@ PyObject *PyROOT::GetBranchAttr(PyObject * /*self*/, PyObject *args) - return 0; - } - --//////////////////////////////////////////////////////////////////////////// --/// \brief Add pythonization for TTree::SetBranchAddress. --/// \param[in] self Always null, since this is a module function. --/// \param[in] args Pointer to a Python tuple object containing the arguments --/// received from Python. --/// --/// Modify the behaviour of SetBranchAddress so that proxy references can be passed --/// as arguments from the Python side, more precisely in cases where the C++ --/// implementation of the method expects the address of a pointer. --/// --/// For example: --/// ~~~{.py} --/// v = ROOT.std.vector('int')() --/// t.SetBranchAddress("my_vector_branch", v) --/// ~~~ --PyObject *PyROOT::SetBranchAddressPyz(PyObject * /* self */, PyObject *args) --{ -- PyObject *treeObj = nullptr, *name = nullptr, *address = nullptr; -- -- int argc = PyTuple_GET_SIZE(args); -- -- // Look for the (const char*, void*) overload -- auto argParseStr = "OUO:SetBranchAddress"; -- if (argc == 3 && PyArg_ParseTuple(args, argParseStr, &treeObj, &name, &address)) { -- -- auto tree = (TTree *)GetTClass(treeObj)->DynamicCast(TTree::Class(), CPyCppyy::Instance_AsVoidPtr(treeObj)); -- -- if (!tree) { -- PyErr_SetString(PyExc_TypeError, -- "TTree::SetBranchAddress must be called with a TTree instance as first argument"); -- return nullptr; -- } -- -- auto branchName = PyUnicode_AsUTF8(name); -- auto branch = tree->GetBranch(branchName); -- if (!branch) { -- PyErr_SetString(PyExc_TypeError, "TTree::SetBranchAddress must be called with a valid branch name"); -- return nullptr; -- } -- -- bool isLeafList = branch->IsA() == TBranch::Class(); -- -- void *buf = 0; -- if (CPyCppyy::Instance_Check(address)) { -- ((CPPInstance *)address)->GetDatamemberCache(); // force creation of cache -- -- if (((CPPInstance *)address)->fFlags & CPPInstance::kIsReference || isLeafList) -- buf = CPyCppyy::Instance_AsVoidPtr(address); -- else -- buf = (void *)&(((CPPInstance *)address)->GetObjectRaw()); -- } else -- Utility::GetBuffer(address, '*', 1, buf, false); -- -- if (buf != nullptr) { -- auto res = tree->SetBranchAddress(PyUnicode_AsUTF8(name), buf); -- return PyInt_FromLong(res); -- } -- } -- -- // Not the overload we wanted to pythonize, return None -- Py_RETURN_NONE; --} -- - //////////////////////////////////////////////////////////////////////////// - /// Try to match the arguments of TTree::Branch to the following overload: - /// - ( const char*, void*, const char*, Int_t = 32000 ) --- -2.45.2 - diff --git a/root.spec b/root.spec index eb906de..9f600e4 100644 --- a/root.spec +++ b/root.spec @@ -24,9 +24,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.32.00 +Version: 6.32.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -68,31 +68,8 @@ Patch5: %{name}-stress.patch # https://github.com/root-project/root/issues/15738 # https://github.com/root-project/root/pull/15780 Patch6: %{name}-write-array.patch -# Adjust test limit -# https://github.com/root-project/root/pull/15734 -Patch7: %{name}-failure-on-ppc64le-and-s390x.patch -# Correct format warnings seen on 32 bit architectures -# https://github.com/root-project/root/pull/15732 -Patch8: %{name}-format-warnings-32-bit.patch -# Out-of-bounds vector access -# https://github.com/root-project/root/issues/15730 -# https://github.com/root-project/root/pull/15739 -Patch9: %{name}-out-of-bounds.patch -# Fix one more broken import in JsMVA -# https://github.com/root-project/root/pull/15752 -Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch -# Python 3.13 compatibility -# https://github.com/root-project/root/issues/15430 -# https://github.com/root-project/root/pull/15798 -Patch11: %{name}-pyroot-add-python-3.13-attributes.patch -# Implement TTree SetBranchAddress pythonization in Python -# Backport fix for failing test with Python 3.13 -# pyunittests-pyroot-pyz-ttree-setbranchaddress -# https://github.com/root-project/root/issues/15799 -# https://github.com/root-project/root/pull/15807 -Patch12: %{name}-python-3.13-TTree-SetBranchAddress-pythonization.patch # Backport build fix from upstream -Patch13: %{name}-allow-any-openssl-3.x-with-civetweb.patch +Patch7: %{name}-allow-any-openssl-3.x-with-civetweb.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1938,12 +1915,6 @@ This package contains utility functions for ntuples. %patch -P5 -p1 %patch -P6 -p1 %patch -P7 -p1 -%patch -P8 -p1 -%patch -P9 -p1 -%patch -P10 -p1 -%patch -P11 -p1 -%patch -P12 -p1 -%patch -P13 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2539,14 +2510,13 @@ gtest-tree-dataframe-test-dataframe-concurrency|\ gtest-tree-dataframe-test-dataframe-simple" %endif -%if %{?fedora}%{!?fedora:0} >= 40 -# - tutorial-tmva-RBatchGenerator_filters_vectors-py -# *** Break *** segmentation violation %ifarch aarch64 +# - tutorial-tmva-RBatchGenerator_filters_vectors-py +# Randomly segfaults +# *** Break *** segmentation violation excluded="${excluded}|\ tutorial-tmva-RBatchGenerator_filters_vectors-py" %endif -%endif %ifarch %{power64} # - test-stressgraphics(-interpreted) @@ -3584,6 +3554,10 @@ fi %endif %changelog +* Tue Jun 18 2024 Mattias Ellert - 6.32.02-1 +- Update to 6.32.02 +- Drop paches accepted upstream + * Mon Jun 17 2024 Mattias Ellert - 6.32.00-5 - Add dependency on liburing-devel to root-io - Exclude failing tutorial-tmva-RBatchGenerator_filters_vectors-py test diff --git a/sources b/sources index a8ec13f..274fb5a 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.32.00.tar.xz) = 4b1015684b79aa352edd42316a3a87ae48f4330a7566230349f0a5c4e3ff49cddca79b5171128300d88575dfe2503ab1357cb3bd99d2c2a78985cc9aabd742f6 +SHA512 (root-6.32.02.tar.xz) = 603bb458fd6dc5cfd6e995319b3572bef81be1e1c7a777099939a810d8bcf62e6260c39ba4e5ba2edbfc947378aaa43026af24c3cf19157d58666613fdf91368 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 82f076284ecc7521e99982a36d31707360702775 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 11 Jul 2024 21:27:50 +0200 Subject: [PATCH 42/89] Add openssl-devel-engine build requirement on Fedora 41+ --- root.spec | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/root.spec b/root.spec index 9f600e4..dd35d09 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -120,6 +120,10 @@ BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtwebengine-devel %endif BuildRequires: openssl-devel +%if %{?fedora}%{!?fedora:0} >= 41 +# Needed by civetweb.c in root-net-http +BuildRequires: openssl-devel-engine +%endif BuildRequires: libtool-ltdl-devel BuildRequires: desktop-file-utils BuildRequires: dcap-devel @@ -1078,7 +1082,7 @@ Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release} %description montecarlo-pythia8 This package contains the Pythia version 8 plug-in for ROOT. This -package provide the ROOT user with transparent interface to the Pythia +package provides 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. @@ -3554,6 +3558,9 @@ fi %endif %changelog +* Thu Jul 11 2024 Mattias Ellert - 6.32.02-2 +- Add openssl-devel-engine build requirement on Fedora 41+ + * Tue Jun 18 2024 Mattias Ellert - 6.32.02-1 - Update to 6.32.02 - Drop paches accepted upstream From 8bc319c31877c65b76cd90e9932ded85ea1a7d3f Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 12 Jul 2024 01:01:14 +0200 Subject: [PATCH 43/89] Fixes for TUri class (PCRE2 compatibility) Fix test failure with tbb 2021.13.0 --- ...-regular-expression-for-the-scheme-p.patch | 42 ++++++++++++++ root-Make-TUri-class-PCRE2-compatible.patch | 56 +++++++++++++++++++ ...-libtbbmalloc-in-library-import-test.patch | 40 +++++++++++++ root.spec | 12 ++++ 4 files changed, 150 insertions(+) create mode 100644 root-Correct-the-regular-expression-for-the-scheme-p.patch create mode 100644 root-Make-TUri-class-PCRE2-compatible.patch create mode 100644 root-Whitelist-libtbbmalloc-in-library-import-test.patch diff --git a/root-Correct-the-regular-expression-for-the-scheme-p.patch b/root-Correct-the-regular-expression-for-the-scheme-p.patch new file mode 100644 index 0000000..25999ea --- /dev/null +++ b/root-Correct-the-regular-expression-for-the-scheme-p.patch @@ -0,0 +1,42 @@ +From defef44f15aebc5eca9e34df767f3f92688d594c Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 4 Jul 2024 18:21:06 +0200 +Subject: [PATCH 2/2] [core] Correct the regular expression for the scheme part + in TUri class + +RFC 3986 (https://datatracker.ietf.org/doc/html/rfc3986) defines the +scheme part of a URI as: + + scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + +The regular expression for finding the scheme part in the TUri class +was defined as + + ^[[:alpha:]][[:alpha:][:digit:]+-.]*$ + +This does not match the definition in the RFC, since +-. in regular +expression syntax is the range of ascii codes from '+' to '.', which +means '+', ',', '-' and '.'. I.e. the ',' is included in the regular +expression in error. This commit adds a backslash escape to the '-' so +that it is interpreted as a literal '-' sign instead of indicating a +range in the regular expression. +--- + core/base/src/TUri.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/base/src/TUri.cxx b/core/base/src/TUri.cxx +index 9660470556..b324d0ffea 100644 +--- a/core/base/src/TUri.cxx ++++ b/core/base/src/TUri.cxx +@@ -270,7 +270,7 @@ Bool_t TUri::SetScheme(const TString &scheme) + Bool_t TUri::IsScheme(const TString &string) + { + return TPRegexp( +- "^[[:alpha:]][[:alpha:][:digit:]+-.]*$" ++ "^[[:alpha:]][[:alpha:][:digit:]+\\-.]*$" + ).Match(string); + } + +-- +2.45.2 + diff --git a/root-Make-TUri-class-PCRE2-compatible.patch b/root-Make-TUri-class-PCRE2-compatible.patch new file mode 100644 index 0000000..e21501c --- /dev/null +++ b/root-Make-TUri-class-PCRE2-compatible.patch @@ -0,0 +1,56 @@ +From 9f696986449451d9df951891eb930231e718989b Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 4 Jul 2024 18:08:32 +0200 +Subject: [PATCH 1/2] [core] Make TUri class PCRE2 compatible + +PCRE2 has a stricter regular expression syntax parsing than PCRE. +Some non-conforming regular expressions that were accepted by PCRE are +correcrly rejected by PCRE2. + +Some of the regular expressions used by the TUri class do not follow +the syntax rules and were relying on them being acceped by PCRE +anyway. This commit corrects the syntax of these expressions so that +they are now accepted by PCRE2. The corrected expressions still work +correctly with the old PCRE. +--- + core/base/src/TUri.cxx | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/core/base/src/TUri.cxx b/core/base/src/TUri.cxx +index 04aab1edb3..9660470556 100644 +--- a/core/base/src/TUri.cxx ++++ b/core/base/src/TUri.cxx +@@ -27,10 +27,10 @@ a validating parser. + + //RFC3986: + // pchar = unreserved / pct-encoded / sub-delims / ":" / "@" +-const char* const kURI_pchar = "(?:[[:alpha:][:digit:]-._~!$&'()*+,;=:@]|%[0-9A-Fa-f][0-9A-Fa-f])"; ++const char* const kURI_pchar = "(?:[[:alpha:][:digit:]\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f][0-9A-Fa-f])"; + + //unreserved characters, see chapter 2.3 +-const char* const kURI_unreserved = "[[:alpha:][:digit:]-._~]"; ++const char* const kURI_unreserved = "[[:alpha:][:digit:]\\-._~]"; + + // reserved characters, see chapter + // reserved = gen-delims / sub-delims +@@ -900,7 +900,7 @@ Bool_t TUri::IsPathAbsolute(const TString &string) + Bool_t TUri::IsPathNoscheme(const TString &string) + { + return (TPRegexp( +- TString("^(([[:alpha:][:digit:]-._~!$&'()*+,;=@]|%[0-9A-Fa-f][0-9A-Fa-f])+)(/") + TString(kURI_pchar) + "*)*$" ++ TString("^(([[:alpha:][:digit:]\\-._~!$&'()*+,;=@]|%[0-9A-Fa-f][0-9A-Fa-f])+)(/") + TString(kURI_pchar) + "*)*$" + ).Match(string) > 0); + } + +@@ -950,7 +950,7 @@ Bool_t TUri::IsPort(const TString &string) + Bool_t TUri::IsRegName(const TString &string) + { + return (TPRegexp( +- "^([[:alpha:][:digit:]-._~!$&'()*+,;=]|%[0-9A-Fa-f][0-9A-Fa-f])*$").Match(string) > 0); ++ "^([[:alpha:][:digit:]\\-._~!$&'()*+,;=]|%[0-9A-Fa-f][0-9A-Fa-f])*$").Match(string) > 0); + } + + //////////////////////////////////////////////////////////////////////////////// +-- +2.45.2 + diff --git a/root-Whitelist-libtbbmalloc-in-library-import-test.patch b/root-Whitelist-libtbbmalloc-in-library-import-test.patch new file mode 100644 index 0000000..a01c4cf --- /dev/null +++ b/root-Whitelist-libtbbmalloc-in-library-import-test.patch @@ -0,0 +1,40 @@ +From 8dc4654de6d569e5040313065fd5cd04d651fb92 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 12 Jul 2024 00:20:04 +0200 +Subject: [PATCH] [pyroot] Whitelist libtbbmalloc in library import test + + 6/1344 Test #12: pyunittests-pyroot-import-load-libs .......................................***Failed 1.35 sec +test_import (import_load_libs.ImportLoadLibs.test_import) +Test libraries loaded after importing ROOT ... ERROR +====================================================================== +ERROR: test_import (import_load_libs.ImportLoadLibs.test_import) +Test libraries loaded after importing ROOT +---------------------------------------------------------------------- +Exception: Found not whitelisted libraries after importing ROOT: + - libtbbmalloc +If the test fails with a library that is loaded on purpose, please add it to the whitelist. +---------------------------------------------------------------------- +Ran 1 test in 1.186s +FAILED (errors=1) + +This failure is seen in Fedora 41 after tbb was updated from version +2021.11.0 to version 2021.13.0 in the distribution. +--- + bindings/pyroot/pythonizations/test/import_load_libs.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py +index 179c76f6fd..c370a3cd42 100644 +--- a/bindings/pyroot/pythonizations/test/import_load_libs.py ++++ b/bindings/pyroot/pythonizations/test/import_load_libs.py +@@ -40,6 +40,7 @@ class ImportLoadLibs(unittest.TestCase): + 'libssl', + 'libcrypt.*', # by libssl + 'libtbb', ++ 'libtbbmalloc', + 'liburing', # by libRIO if uring option is enabled + # On centos7 libssl links against kerberos pulling in all dependencies below, removed with libssl1.1.0 + 'libgssapi_krb5', +-- +2.45.2 + diff --git a/root.spec b/root.spec index dd35d09..fb68047 100644 --- a/root.spec +++ b/root.spec @@ -70,6 +70,13 @@ Patch5: %{name}-stress.patch Patch6: %{name}-write-array.patch # Backport build fix from upstream Patch7: %{name}-allow-any-openssl-3.x-with-civetweb.patch +# Fixes for TUri class +# https://github.com/root-project/root/pull/15988 +Patch8: root-Make-TUri-class-PCRE2-compatible.patch +Patch9: root-Correct-the-regular-expression-for-the-scheme-p.patch +# Fix test failure with tbb 2021.13.0 +# https://github.com/root-project/root/pull/16016 +Patch10: root-Whitelist-libtbbmalloc-in-library-import-test.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1919,6 +1926,9 @@ This package contains utility functions for ntuples. %patch -P5 -p1 %patch -P6 -p1 %patch -P7 -p1 +%patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3560,6 +3570,8 @@ fi %changelog * Thu Jul 11 2024 Mattias Ellert - 6.32.02-2 - Add openssl-devel-engine build requirement on Fedora 41+ +- Fixes for TUri class (PCRE2 compatibility) +- Fix test failure with tbb 2021.13.0 * Tue Jun 18 2024 Mattias Ellert - 6.32.02-1 - Update to 6.32.02 From c960d44c7d57140f8724c68bc3e6eb894a50ad40 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jul 2024 18:44:52 +0000 Subject: [PATCH 44/89] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index fb68047..1707564 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3568,6 +3568,9 @@ fi %endif %changelog +* Fri Jul 19 2024 Fedora Release Engineering - 6.32.02-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Thu Jul 11 2024 Mattias Ellert - 6.32.02-2 - Add openssl-devel-engine build requirement on Fedora 41+ - Fixes for TUri class (PCRE2 compatibility) From dafa5d9be68997265dd02220b91dcf5cbc41b3d5 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 21 Jul 2024 23:44:51 +0200 Subject: [PATCH 45/89] Update ROOT's R interface for Rcpp 1.0.13 --- root-r.patch | 32 ++++++++++++++++++++++++++++++++ root.spec | 9 ++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 root-r.patch diff --git a/root-r.patch b/root-r.patch new file mode 100644 index 0000000..8be2617 --- /dev/null +++ b/root-r.patch @@ -0,0 +1,32 @@ +From 141f62e800bfc54d2fdf76c0750dc6082d00910d Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 21 Jul 2024 23:09:54 +0200 +Subject: [PATCH] Update ROOT's R interface for Rcpp 1.0.13 + +--- + bindings/r/inc/TRInternalFunction.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/bindings/r/inc/TRInternalFunction.h b/bindings/r/inc/TRInternalFunction.h +index d9bf532205..fa77cbddbc 100644 +--- a/bindings/r/inc/TRInternalFunction.h ++++ b/bindings/r/inc/TRInternalFunction.h +@@ -31,7 +31,15 @@ public: + + RCPP_GENERATE_CTOR_ASSIGN(TRInternalFunction_Impl) + ++#if RCPP_VERSION >= Rcpp_Version(1,0,13) ++ template ++ TRInternalFunction_Impl(OUT(*fun)(T...)) ++ { ++ set(Rcpp::XPtr< Rcpp::CppFunctionN >(new Rcpp::CppFunctionN(fun), false)); ++ } ++#else + #include ++#endif + void update(SEXP) {} + private: + +-- +2.45.2 + diff --git a/root.spec b/root.spec index 1707564..386248b 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -77,6 +77,9 @@ Patch9: root-Correct-the-regular-expression-for-the-scheme-p.patch # Fix test failure with tbb 2021.13.0 # https://github.com/root-project/root/pull/16016 Patch10: root-Whitelist-libtbbmalloc-in-library-import-test.patch +# Update ROOT's R interface for Rcpp 1.0.13 +# https://github.com/root-project/root/pull/16075 +Patch11: root-r.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1929,6 +1932,7 @@ This package contains utility functions for ntuples. %patch -P8 -p1 %patch -P9 -p1 %patch -P10 -p1 +%patch -P11 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3568,6 +3572,9 @@ fi %endif %changelog +* Sun Jul 21 2024 Mattias Ellert - 6.32.02-4 +- Update ROOT's R interface for Rcpp 1.0.13 + * Fri Jul 19 2024 Fedora Release Engineering - 6.32.02-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 1617973423cdc5ee967e9b349d058c5225043132 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 16 Aug 2024 06:35:34 +0200 Subject: [PATCH 46/89] Update to 6.32.04 Drop patches accepted upstream Disable Qt5 Web display for Fedora 41+ (broken qt5-qtwebengine package) --- ...-regular-expression-for-the-scheme-p.patch | 42 -------------- root-Make-TUri-class-PCRE2-compatible.patch | 56 ------------------- ...-libtbbmalloc-in-library-import-test.patch | 40 ------------- root-r.patch | 32 ----------- root.spec | 34 ++++++----- sources | 2 +- 6 files changed, 17 insertions(+), 189 deletions(-) delete mode 100644 root-Correct-the-regular-expression-for-the-scheme-p.patch delete mode 100644 root-Make-TUri-class-PCRE2-compatible.patch delete mode 100644 root-Whitelist-libtbbmalloc-in-library-import-test.patch delete mode 100644 root-r.patch diff --git a/root-Correct-the-regular-expression-for-the-scheme-p.patch b/root-Correct-the-regular-expression-for-the-scheme-p.patch deleted file mode 100644 index 25999ea..0000000 --- a/root-Correct-the-regular-expression-for-the-scheme-p.patch +++ /dev/null @@ -1,42 +0,0 @@ -From defef44f15aebc5eca9e34df767f3f92688d594c Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 4 Jul 2024 18:21:06 +0200 -Subject: [PATCH 2/2] [core] Correct the regular expression for the scheme part - in TUri class - -RFC 3986 (https://datatracker.ietf.org/doc/html/rfc3986) defines the -scheme part of a URI as: - - scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) - -The regular expression for finding the scheme part in the TUri class -was defined as - - ^[[:alpha:]][[:alpha:][:digit:]+-.]*$ - -This does not match the definition in the RFC, since +-. in regular -expression syntax is the range of ascii codes from '+' to '.', which -means '+', ',', '-' and '.'. I.e. the ',' is included in the regular -expression in error. This commit adds a backslash escape to the '-' so -that it is interpreted as a literal '-' sign instead of indicating a -range in the regular expression. ---- - core/base/src/TUri.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/core/base/src/TUri.cxx b/core/base/src/TUri.cxx -index 9660470556..b324d0ffea 100644 ---- a/core/base/src/TUri.cxx -+++ b/core/base/src/TUri.cxx -@@ -270,7 +270,7 @@ Bool_t TUri::SetScheme(const TString &scheme) - Bool_t TUri::IsScheme(const TString &string) - { - return TPRegexp( -- "^[[:alpha:]][[:alpha:][:digit:]+-.]*$" -+ "^[[:alpha:]][[:alpha:][:digit:]+\\-.]*$" - ).Match(string); - } - --- -2.45.2 - diff --git a/root-Make-TUri-class-PCRE2-compatible.patch b/root-Make-TUri-class-PCRE2-compatible.patch deleted file mode 100644 index e21501c..0000000 --- a/root-Make-TUri-class-PCRE2-compatible.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 9f696986449451d9df951891eb930231e718989b Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 4 Jul 2024 18:08:32 +0200 -Subject: [PATCH 1/2] [core] Make TUri class PCRE2 compatible - -PCRE2 has a stricter regular expression syntax parsing than PCRE. -Some non-conforming regular expressions that were accepted by PCRE are -correcrly rejected by PCRE2. - -Some of the regular expressions used by the TUri class do not follow -the syntax rules and were relying on them being acceped by PCRE -anyway. This commit corrects the syntax of these expressions so that -they are now accepted by PCRE2. The corrected expressions still work -correctly with the old PCRE. ---- - core/base/src/TUri.cxx | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/core/base/src/TUri.cxx b/core/base/src/TUri.cxx -index 04aab1edb3..9660470556 100644 ---- a/core/base/src/TUri.cxx -+++ b/core/base/src/TUri.cxx -@@ -27,10 +27,10 @@ a validating parser. - - //RFC3986: - // pchar = unreserved / pct-encoded / sub-delims / ":" / "@" --const char* const kURI_pchar = "(?:[[:alpha:][:digit:]-._~!$&'()*+,;=:@]|%[0-9A-Fa-f][0-9A-Fa-f])"; -+const char* const kURI_pchar = "(?:[[:alpha:][:digit:]\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f][0-9A-Fa-f])"; - - //unreserved characters, see chapter 2.3 --const char* const kURI_unreserved = "[[:alpha:][:digit:]-._~]"; -+const char* const kURI_unreserved = "[[:alpha:][:digit:]\\-._~]"; - - // reserved characters, see chapter - // reserved = gen-delims / sub-delims -@@ -900,7 +900,7 @@ Bool_t TUri::IsPathAbsolute(const TString &string) - Bool_t TUri::IsPathNoscheme(const TString &string) - { - return (TPRegexp( -- TString("^(([[:alpha:][:digit:]-._~!$&'()*+,;=@]|%[0-9A-Fa-f][0-9A-Fa-f])+)(/") + TString(kURI_pchar) + "*)*$" -+ TString("^(([[:alpha:][:digit:]\\-._~!$&'()*+,;=@]|%[0-9A-Fa-f][0-9A-Fa-f])+)(/") + TString(kURI_pchar) + "*)*$" - ).Match(string) > 0); - } - -@@ -950,7 +950,7 @@ Bool_t TUri::IsPort(const TString &string) - Bool_t TUri::IsRegName(const TString &string) - { - return (TPRegexp( -- "^([[:alpha:][:digit:]-._~!$&'()*+,;=]|%[0-9A-Fa-f][0-9A-Fa-f])*$").Match(string) > 0); -+ "^([[:alpha:][:digit:]\\-._~!$&'()*+,;=]|%[0-9A-Fa-f][0-9A-Fa-f])*$").Match(string) > 0); - } - - //////////////////////////////////////////////////////////////////////////////// --- -2.45.2 - diff --git a/root-Whitelist-libtbbmalloc-in-library-import-test.patch b/root-Whitelist-libtbbmalloc-in-library-import-test.patch deleted file mode 100644 index a01c4cf..0000000 --- a/root-Whitelist-libtbbmalloc-in-library-import-test.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 8dc4654de6d569e5040313065fd5cd04d651fb92 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 12 Jul 2024 00:20:04 +0200 -Subject: [PATCH] [pyroot] Whitelist libtbbmalloc in library import test - - 6/1344 Test #12: pyunittests-pyroot-import-load-libs .......................................***Failed 1.35 sec -test_import (import_load_libs.ImportLoadLibs.test_import) -Test libraries loaded after importing ROOT ... ERROR -====================================================================== -ERROR: test_import (import_load_libs.ImportLoadLibs.test_import) -Test libraries loaded after importing ROOT ----------------------------------------------------------------------- -Exception: Found not whitelisted libraries after importing ROOT: - - libtbbmalloc -If the test fails with a library that is loaded on purpose, please add it to the whitelist. ----------------------------------------------------------------------- -Ran 1 test in 1.186s -FAILED (errors=1) - -This failure is seen in Fedora 41 after tbb was updated from version -2021.11.0 to version 2021.13.0 in the distribution. ---- - bindings/pyroot/pythonizations/test/import_load_libs.py | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py -index 179c76f6fd..c370a3cd42 100644 ---- a/bindings/pyroot/pythonizations/test/import_load_libs.py -+++ b/bindings/pyroot/pythonizations/test/import_load_libs.py -@@ -40,6 +40,7 @@ class ImportLoadLibs(unittest.TestCase): - 'libssl', - 'libcrypt.*', # by libssl - 'libtbb', -+ 'libtbbmalloc', - 'liburing', # by libRIO if uring option is enabled - # On centos7 libssl links against kerberos pulling in all dependencies below, removed with libssl1.1.0 - 'libgssapi_krb5', --- -2.45.2 - diff --git a/root-r.patch b/root-r.patch deleted file mode 100644 index 8be2617..0000000 --- a/root-r.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 141f62e800bfc54d2fdf76c0750dc6082d00910d Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 21 Jul 2024 23:09:54 +0200 -Subject: [PATCH] Update ROOT's R interface for Rcpp 1.0.13 - ---- - bindings/r/inc/TRInternalFunction.h | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/bindings/r/inc/TRInternalFunction.h b/bindings/r/inc/TRInternalFunction.h -index d9bf532205..fa77cbddbc 100644 ---- a/bindings/r/inc/TRInternalFunction.h -+++ b/bindings/r/inc/TRInternalFunction.h -@@ -31,7 +31,15 @@ public: - - RCPP_GENERATE_CTOR_ASSIGN(TRInternalFunction_Impl) - -+#if RCPP_VERSION >= Rcpp_Version(1,0,13) -+ template -+ TRInternalFunction_Impl(OUT(*fun)(T...)) -+ { -+ set(Rcpp::XPtr< Rcpp::CppFunctionN >(new Rcpp::CppFunctionN(fun), false)); -+ } -+#else - #include -+#endif - void update(SEXP) {} - private: - --- -2.45.2 - diff --git a/root.spec b/root.spec index 386248b..e22edeb 100644 --- a/root.spec +++ b/root.spec @@ -20,13 +20,18 @@ %global pandas 0 %endif +%if %{?fedora}%{!?fedora:0} >= 41 +# Disable Qt5 Web display for Fedora 41+ (broken qt5-qtwebengine package) +%global qt5_qtwebengine_arches none +%endif + # Do not generate autoprovides for Python modules %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.32.02 +Version: 6.32.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -70,16 +75,6 @@ Patch5: %{name}-stress.patch Patch6: %{name}-write-array.patch # Backport build fix from upstream Patch7: %{name}-allow-any-openssl-3.x-with-civetweb.patch -# Fixes for TUri class -# https://github.com/root-project/root/pull/15988 -Patch8: root-Make-TUri-class-PCRE2-compatible.patch -Patch9: root-Correct-the-regular-expression-for-the-scheme-p.patch -# Fix test failure with tbb 2021.13.0 -# https://github.com/root-project/root/pull/16016 -Patch10: root-Whitelist-libtbbmalloc-in-library-import-test.patch -# Update ROOT's R interface for Rcpp 1.0.13 -# https://github.com/root-project/root/pull/16075 -Patch11: root-r.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1929,10 +1924,6 @@ This package contains utility functions for ntuples. %patch -P5 -p1 %patch -P6 -p1 %patch -P7 -p1 -%patch -P8 -p1 -%patch -P9 -p1 -%patch -P10 -p1 -%patch -P11 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2549,9 +2540,11 @@ tutorial-roostats-IntervalExamples-py" %ifarch s390x # - gtest-roofit-roofitcore-test-testNaNPacker +# - gtest-roofit-roofitcore-test-testLikelihoodGradientJob # Uses "Packed NaN" feature, not implemented for big endian. excluded="${excluded}|\ -gtest-roofit-roofitcore-test-testNaNPacker" +gtest-roofit-roofitcore-test-testNaNPacker|\ +gtest-roofit-roofitcore-test-testLikelihoodGradientJob" # - gtest-core-dictgen-test-dictgen-base # - gtest-tree-dataframe-test-dataframe-unified-constructor @@ -3572,6 +3565,11 @@ fi %endif %changelog +* Wed Aug 14 2024 Mattias Ellert - 6.32.04-1 +- Update to 6.32.04 +- Drop patches accepted upstream +- Disable Qt5 Web display for Fedora 41+ (broken qt5-qtwebengine package) + * Sun Jul 21 2024 Mattias Ellert - 6.32.02-4 - Update ROOT's R interface for Rcpp 1.0.13 @@ -3585,7 +3583,7 @@ fi * Tue Jun 18 2024 Mattias Ellert - 6.32.02-1 - Update to 6.32.02 -- Drop paches accepted upstream +- Drop patches accepted upstream * Mon Jun 17 2024 Mattias Ellert - 6.32.00-5 - Add dependency on liburing-devel to root-io diff --git a/sources b/sources index 274fb5a..3eca7e9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.32.02.tar.xz) = 603bb458fd6dc5cfd6e995319b3572bef81be1e1c7a777099939a810d8bcf62e6260c39ba4e5ba2edbfc947378aaa43026af24c3cf19157d58666613fdf91368 +SHA512 (root-6.32.04.tar.xz) = 2ab96e3f6e541973c2f69e0e83f366af4fdf6e978d5ae586a6f039d97d2f50e2e373b1d9e70d736e1bb3bad6fb76000d9179bc3263b52a76eb65a7451e2648b0 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 59f38a443a111761d3138922f61d42d7aa6daab5 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 21 Aug 2024 16:38:38 +0200 Subject: [PATCH 47/89] Re-enable Qt5 Web display for Fedora 41+ (qt5-qtwebengine fixed) --- root.spec | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/root.spec b/root.spec index e22edeb..68bfa8a 100644 --- a/root.spec +++ b/root.spec @@ -20,18 +20,13 @@ %global pandas 0 %endif -%if %{?fedora}%{!?fedora:0} >= 41 -# Disable Qt5 Web display for Fedora 41+ (broken qt5-qtwebengine package) -%global qt5_qtwebengine_arches none -%endif - # Do not generate autoprovides for Python modules %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root Version: 6.32.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3565,6 +3560,9 @@ fi %endif %changelog +* Wed Aug 21 2024 Mattias Ellert - 6.32.04-2 +- Re-enable Qt5 Web display for Fedora 41+ (qt5-qtwebengine fixed) + * Wed Aug 14 2024 Mattias Ellert - 6.32.04-1 - Update to 6.32.04 - Drop patches accepted upstream From 5498e74cafacb6aa40dbeaa24ad55b4ee2a788ff Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 25 Sep 2024 14:02:06 +0200 Subject: [PATCH 48/89] Update to 6.32.06 Split out ROOT 7 dependent parts of root-browsable to a separate package Split out ROOT 7 dependent parts of root-browserv7 to a separate package --- root.spec | 133 +++++++++++++++++++++++++++++++++--------------------- sources | 2 +- 2 files changed, 82 insertions(+), 53 deletions(-) diff --git a/root.spec b/root.spec index 68bfa8a..2a8e296 100644 --- a/root.spec +++ b/root.spec @@ -24,9 +24,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.32.04 +Version: 6.32.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -1776,7 +1776,37 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description gui-webgui6 This package provides a Web based GUI for ROOT. -%if %{root7} +%package gui-browsable +Summary: ROOT GUI browsable providers +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +# Package split (gui-browsable-v7 from gui-browsable) +Obsoletes: %{name}-gui-browsable < 6.32.06 + +%description gui-browsable +This package contains ROOT GUI browsable providers. + +%package gui-browserv7 +Summary: ROOT file browser and browser widgets +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-webviewer%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-webgui6%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-webviewer%{?_isa} = %{version}-%{release} +# Package split (gui-browserv7-v7 from gui-browserv7) +Obsoletes: %{name}-gui-browserv7 < 6.32.06 + +%description gui-browserv7 +This package contains the ROOT file browser (RBrowser) and browser widgets. + %package geom-webviewer Summary: Geometry web viewer library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1788,6 +1818,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description geom-webviewer This package contains a library for viewing geometries in a web GUI. +%if %{root7} %package graf-gpadv7 Summary: Canvas and pad library for ROOT (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1823,35 +1854,32 @@ Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} %description graf3d-eve7 This package contains a library for defining event displays in ROOT 7. -%package gui-browsable -Summary: GUI browsable (ROOT 7) +%package gui-browsable-v7 +Summary: Additional ROOT GUI browsable providers (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} -Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} - -%description gui-browsable -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}-geom-webviewer%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-webgui6%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-draw%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} -Requires: %{name}-tree-webviewer%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +# Package split (gui-browsable-v7 from gui-browsable) +Obsoletes: %{name}-gui-browsable < 6.32.06 -%description gui-browserv7 -This package contains a file browser for ROOT 7. +%description gui-browsable-v7 +This package contains additional ROOT GUI browsable providers for ROOT 7. + +%package gui-browserv7-v7 +Summary: Additional ROOT browser widgets (ROOT 7) +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-browserv7%{?_isa} = %{version}-%{release} +# Package split (gui-browserv7-v7 from gui-browserv7) +Obsoletes: %{name}-gui-browserv7 < 6.32.06 + +%description gui-browserv7-v7 +This package contains additional ROOT browser widgets for ROOT 7. %package gui-canvaspainter Summary: Canvas painter (ROOT 7) @@ -2166,10 +2194,8 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} # Fix python extension suffix -mv %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{version} \ +mv %{buildroot}%{python3_sitearch}/libROOTPythonizations.so \ %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix} -rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so.%{libversion} -rm %{buildroot}%{python3_sitearch}/libROOTPythonizations.so # Move noarch python modules to sitelib if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then @@ -2274,9 +2300,6 @@ 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 TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TProofMgr/P010_TXProofMgr.C @@ -2285,9 +2308,6 @@ rm TProofServ/P010_TXProofServ.C rm TSlave/P010_TXSlave.C rm TSQLServer/P040_TOracleServer.C rm TVirtualGeoConverter/P010_TGeoVGConverter.C -%if ! %{root7} -rm TVirtualGeoPainter/P020_RGeoPainter.C -%endif rm TVirtualGLImp/P020_TGWin32GL.C rm TVirtualMonitoringWriter/P010_TMonaLisaWriter.C rm TVirtualX/P030_TGWin32.C @@ -3492,12 +3512,29 @@ fi %{_datadir}/%{name}/plugins/TCanvasImp/P010_TWebCanvas.C %{_datadir}/%{name}/plugins/TControlBarImp/P010_TWebControlBar.C -%if %{root7} +%files gui-browsable -f includelist-gui-browsable +%{_libdir}/%{name}/libROOTBrowsable.* +%{_libdir}/%{name}/libROOTBrowsable_rdict.pcm +%{_libdir}/%{name}/libROOTBranchBrowseProvider.* +%{_libdir}/%{name}/libROOTGeoBrowseProvider.* +%{_libdir}/%{name}/libROOTLeafDraw6Provider.* +%{_libdir}/%{name}/libROOTObjectDraw6Provider.* + +%files gui-browserv7 -f includelist-gui-browserv7 +%{_libdir}/%{name}/libROOTBrowserv7.* +%{_libdir}/%{name}/libROOTBrowserv7_rdict.pcm +%{_libdir}/%{name}/libROOTBrowserGeomWidget.* +%{_libdir}/%{name}/libROOTBrowserTCanvasWidget.* +%{_libdir}/%{name}/libROOTBrowserTreeWidget.* +%{_libdir}/%{name}/libROOTBrowserWidgets.* +%{_datadir}/%{name}/plugins/TBrowserImp/P030_RWebBrowserImp.C + %files geom-webviewer -f includelist-geom-webviewer %{_libdir}/%{name}/libROOTGeomViewer.* %{_libdir}/%{name}/libROOTGeomViewer_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualGeoPainter/P020_RGeoPainter.C +%if %{root7} %files graf-gpadv7 -f includelist-graf2d-gpadv7 %{_libdir}/%{name}/libROOTGpadv7.* %{_libdir}/%{name}/libROOTGpadv7_rdict.pcm @@ -3510,29 +3547,16 @@ fi %{_libdir}/%{name}/libROOTEve.* %{_libdir}/%{name}/libROOTEve_rdict.pcm -%files gui-browsable -f includelist-gui-browsable -%{_libdir}/%{name}/libROOTBrowsable.* -%{_libdir}/%{name}/libROOTBrowsable_rdict.pcm -%{_libdir}/%{name}/libROOTBranchBrowseProvider.* -%{_libdir}/%{name}/libROOTGeoBrowseProvider.* +%files gui-browsable-v7 %{_libdir}/%{name}/libROOTHistDrawProvider.* -%{_libdir}/%{name}/libROOTLeafDraw6Provider.* %{_libdir}/%{name}/libROOTLeafDraw7Provider.* %{_libdir}/%{name}/libROOTNTupleBrowseProvider.* %{_libdir}/%{name}/libROOTNTupleDraw6Provider.* %{_libdir}/%{name}/libROOTNTupleDraw7Provider.* -%{_libdir}/%{name}/libROOTObjectDraw6Provider.* %{_libdir}/%{name}/libROOTObjectDraw7Provider.* -%files gui-browserv7 -f includelist-gui-browserv7 -%{_libdir}/%{name}/libROOTBrowserv7.* -%{_libdir}/%{name}/libROOTBrowserv7_rdict.pcm -%{_libdir}/%{name}/libROOTBrowserGeomWidget.* +%files gui-browserv7-v7 %{_libdir}/%{name}/libROOTBrowserRCanvasWidget.* -%{_libdir}/%{name}/libROOTBrowserTCanvasWidget.* -%{_libdir}/%{name}/libROOTBrowserTreeWidget.* -%{_libdir}/%{name}/libROOTBrowserWidgets.* -%{_datadir}/%{name}/plugins/TBrowserImp/P030_RWebBrowserImp.C %files gui-canvaspainter %{_libdir}/%{name}/libROOTCanvasPainter.* @@ -3560,6 +3584,11 @@ fi %endif %changelog +* Mon Sep 23 2024 Mattias Ellert - 6.32.06-1 +- Update to 6.32.06 +- Split out ROOT 7 dependent parts of root-browsable to a separate package +- Split out ROOT 7 dependent parts of root-browserv7 to a separate package + * Wed Aug 21 2024 Mattias Ellert - 6.32.04-2 - Re-enable Qt5 Web display for Fedora 41+ (qt5-qtwebengine fixed) diff --git a/sources b/sources index 3eca7e9..03824b4 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.32.04.tar.xz) = 2ab96e3f6e541973c2f69e0e83f366af4fdf6e978d5ae586a6f039d97d2f50e2e373b1d9e70d736e1bb3bad6fb76000d9179bc3263b52a76eb65a7451e2648b0 +SHA512 (root-6.32.06.tar.xz) = 2588dc266fe71a612fbcc3a261372a80848334ee1e4bc606df4599d707d6c30ca665cd6d919b59902f404e276ea35923cc320bef0c9c5856ecea0626a2df9158 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From 6b314d2ebb48580b60d746d569184eb4dbdfe604 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 14 Nov 2024 22:31:01 +0100 Subject: [PATCH 49/89] Update to 6.32.08 --- root.spec | 5 ++++- sources | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/root.spec b/root.spec index 2a8e296..99a1259 100644 --- a/root.spec +++ b/root.spec @@ -24,7 +24,7 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.32.06 +Version: 6.32.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -3584,6 +3584,9 @@ fi %endif %changelog +* Thu Nov 14 2024 Mattias Ellert - 6.32.08-1 +- Update to 6.32.08 + * Mon Sep 23 2024 Mattias Ellert - 6.32.06-1 - Update to 6.32.06 - Split out ROOT 7 dependent parts of root-browsable to a separate package diff --git a/sources b/sources index 03824b4..afea219 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (root-6.32.06.tar.xz) = 2588dc266fe71a612fbcc3a261372a80848334ee1e4bc606df4599d707d6c30ca665cd6d919b59902f404e276ea35923cc320bef0c9c5856ecea0626a2df9158 +SHA512 (root-6.32.08.tar.xz) = 268f68745bcf545aff5b3ad4208e8b6b373800da3885cc3d7a8083a6b4ab8c92788a4da0163b3344c24cd62e50a7b74319bc65ee519de4e53f4394330687a2be SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f From cac5562c15443d18842254eb8b9f8307718573b6 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 27 Nov 2024 14:35:57 +0000 Subject: [PATCH 50/89] Rebuild for libarrow 18 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 99a1259..9a0316e 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3584,6 +3584,9 @@ fi %endif %changelog +* Wed Nov 27 2024 Richard W.M. Jones - 6.32.08-2 +- Rebuild for libarrow 18 + * Thu Nov 14 2024 Mattias Ellert - 6.32.08-1 - Update to 6.32.08 From 75f062bccd02b4f92a9d9b5c8dc84dce6b6461b4 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 26 Dec 2024 10:59:52 +0100 Subject: [PATCH 51/89] Update to 6.34.02 Build CLAD plugin Removed package: root-roofit-dataframe-helpers --- root-Fix-compilation-on-s390x.patch | 38 +++ root-Make-DCLAD_SOURCE_DIR-option-work.patch | 66 ++++ ...-allow-any-openssl-3.x-with-civetweb.patch | 30 -- root-stress.patch | 32 -- root-tmva-sofie-Fix-Tile-operator.patch | 79 +++++ root-write-array.patch | 125 ------- root.spec | 310 ++++++++++-------- sources | 3 +- 8 files changed, 351 insertions(+), 332 deletions(-) create mode 100644 root-Fix-compilation-on-s390x.patch create mode 100644 root-Make-DCLAD_SOURCE_DIR-option-work.patch delete mode 100644 root-allow-any-openssl-3.x-with-civetweb.patch delete mode 100644 root-stress.patch create mode 100644 root-tmva-sofie-Fix-Tile-operator.patch delete mode 100644 root-write-array.patch diff --git a/root-Fix-compilation-on-s390x.patch b/root-Fix-compilation-on-s390x.patch new file mode 100644 index 0000000..be89d3f --- /dev/null +++ b/root-Fix-compilation-on-s390x.patch @@ -0,0 +1,38 @@ +From 67e3b45b5d346a779533636397e28b1c48a21070 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 16 Dec 2024 15:32:21 +0100 +Subject: [PATCH] Fix compilation on s390x + +There were changes to the code but the big endian code was not updated +to match the changes in the little endian code. +--- + tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +index 81a4b23697..1415e06e0f 100644 +--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx ++++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx +@@ -131,9 +131,9 @@ std::shared_ptr GetInitializedTensorData(onnx::TensorProto * tensorproto, + #ifdef R__BYTESWAP + std::memcpy(data.get(), tensorproto->raw_data().c_str(), length * sizeof(T)); + #else +- for (std::size_t k = 0; k < fLength; ++k) +- (reinterpret_cast(data.get()))[k] = +- Rbswap_32((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); ++ for (std::size_t k = 0; k < length; ++k) ++ (reinterpret_cast::value_type *>(data.get()))[k] = ++ RByteSwap::bswap((reinterpret_cast::value_type *>(tensorproto->raw_data().c_str()))[k]); + #endif + } else { + ExtractDataFromTP::Copy(tensorproto, data.get()); +@@ -628,4 +628,4 @@ void RModelParser_ONNX::ParseONNXGraph(RModel & rmodel, const onnx::GraphProto & + + } // namespace SOFIE + } // namespace Experimental +-} // namespace TMVA +\ No newline at end of file ++} // namespace TMVA +-- +2.47.1 + diff --git a/root-Make-DCLAD_SOURCE_DIR-option-work.patch b/root-Make-DCLAD_SOURCE_DIR-option-work.patch new file mode 100644 index 0000000..a4aaada --- /dev/null +++ b/root-Make-DCLAD_SOURCE_DIR-option-work.patch @@ -0,0 +1,66 @@ +From 7d5ae0dcfbf770cc3943cc25283bf2d39329d9f3 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 16 Dec 2024 15:48:42 +0100 +Subject: [PATCH] Make -DCLAD_SOURCE_DIR option work + +Using the -DCLAD_SOURCE_DIR currently does not disable the git checkout. +From the cmake documentation for ExternalProject_Add: + +Note: If a download method is specified, any existing contents of the +source directory may be deleted. Only the URL download method checks +whether this directory is either missing or empty before initiating +the download, stopping with an error if it is not empty. All other +download methods silently discard any previous contents of the source +directory. + +Currently cmake deletes the source directory defined by +-DCLAD_SOURCE_DIR and then tries to recreate it using a git checkout, +but fails if there is no network available: + +Cloning into 'clad-1.7'... +fatal: unable to access 'https://github.com/vgvassilev/clad.git/': Could not resolve host: github.com +Cloning into 'clad-1.7'... +fatal: unable to access 'https://github.com/vgvassilev/clad.git/': Could not resolve host: github.com +Cloning into 'clad-1.7'... +fatal: unable to access 'https://github.com/vgvassilev/clad.git/': Could not resolve host: github.com +Had to git clone more than once: 3 times. +CMake Error at redhat-linux-build/interpreter/cling/tools/plugins/clad/clad-prefix/tmp/clad-gitclone.cmake:50 (message): + Failed to clone repository: 'https://github.com/vgvassilev/clad.git' + +The attempt to disable the git checkout by setting the +DOWNLOAD_COMMAND option to an empty string is not working. + +This commit fixes the issue by only defining the GIT_REPOSITORY and +GIT_TAG options when CLAD_SOURCE_DIR is not defined. +--- + interpreter/cling/tools/plugins/clad/CMakeLists.txt | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/interpreter/cling/tools/plugins/clad/CMakeLists.txt b/interpreter/cling/tools/plugins/clad/CMakeLists.txt +index ba5f09786c..3c70d00a10 100644 +--- a/interpreter/cling/tools/plugins/clad/CMakeLists.txt ++++ b/interpreter/cling/tools/plugins/clad/CMakeLists.txt +@@ -68,8 +68,10 @@ set(_clad_extra_settings + # If the CLAD_SOURCE_DIR variable is defined in the CMake configuration, we're + # skipping the download of the repository and use the passed directory. + if (DEFINED CLAD_SOURCE_DIR) +- list(APPEND _clad_extra_settings DOWNLOAD_COMMAND "") + list(APPEND _clad_extra_settings SOURCE_DIR ${CLAD_SOURCE_DIR}) ++else() ++ list(APPEND _clad_extra_settings GIT_REPOSITORY https://github.com/vgvassilev/clad.git) ++ list(APPEND _clad_extra_settings GIT_TAG v1.7) + endif() + + #list(APPEND _clad_patches_list "patch1.patch" "patch2.patch") +@@ -82,8 +84,6 @@ endif() + + ExternalProject_Add( + clad +- GIT_REPOSITORY https://github.com/vgvassilev/clad.git +- GIT_TAG v1.7 + UPDATE_COMMAND "" + PATCH_COMMAND ${_clad_patch_command} + CMAKE_ARGS -G ${CMAKE_GENERATOR} +-- +2.47.1 + diff --git a/root-allow-any-openssl-3.x-with-civetweb.patch b/root-allow-any-openssl-3.x-with-civetweb.patch deleted file mode 100644 index 05e2a64..0000000 --- a/root-allow-any-openssl-3.x-with-civetweb.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 6952dd5ca51e7be8a8ae74b446ac268949f5f383 Mon Sep 17 00:00:00 2001 -From: Sergey Linev -Date: Mon, 10 Jun 2024 09:19:47 +0200 -Subject: [PATCH] [http] Allow to use any of openssl 3.x with civetweb - -civetweb was designed when only openssl 3.0 was existing. -Therefore name of define is `OPENSSL_API_3_0` -Meanwhile there is openssl 3.1 and 3.2. -While seems to be there is no changes in API both can -be used with civetweb. ---- - net/http/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/net/http/CMakeLists.txt b/net/http/CMakeLists.txt -index 02d7514400..6ef98a604b 100644 ---- a/net/http/CMakeLists.txt -+++ b/net/http/CMakeLists.txt -@@ -78,7 +78,7 @@ if(ssl) - MESSAGE(STATUS "Use SSL API VERSION 1.1 for civetweb") - target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_1_1) - set(link_ssl ON) -- elseif((${ssl_major} EQUAL "3") AND ((${ssl_minor} EQUAL "0") OR (${ssl_minor} EQUAL "1"))) -+ elseif(${ssl_major} EQUAL "3") - MESSAGE(STATUS "Use SSL API VERSION 3.${ssl_minor} for civetweb") - target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_3_0) - set(link_ssl ON) --- -2.45.2 - diff --git a/root-stress.patch b/root-stress.patch deleted file mode 100644 index bf7f468..0000000 --- a/root-stress.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 706c94ca916387287f7459c984d61439e52c1aba Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 2 Jun 2024 06:19:43 +0200 -Subject: [PATCH] Adjust stressGraphics.ref - ---- - test/stressGraphics.ref | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref -index 37077a2fb9..9d5cd0352d 100644 ---- a/test/stressGraphics.ref -+++ b/test/stressGraphics.ref -@@ -7,13 +7,13 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN - 6 430 50 12669 50 9558 100 5325 700 471 50 - 7 4980 50 13893 50 16143 1300 12230 500 5011 70 - 8 5442 80 13473 50 18430 700 12398 300 5469 80 -- 9 9253 100 14377 100 19851 2400 12199 900 9283 100 -+ 9 9253 100 14377 150 19851 2400 12199 900 9283 100 - 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 - 11 12971 100 14444 50 34063 2000 32033 1200 12864 150 - 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 - 13 5600 400 13242 300 16881 400 15063 800 5638 400 - 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 -- 15 15690 5000 17179 200 23076 9500 14232 1000 10437 5000 -+ 15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000 - 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 - 17 20444 400 21520 150 27511 11000 16867 600 20721 400 - 18 15894 100 19305 200 27187 10300 15925 350 15925 100 --- -2.45.1 - diff --git a/root-tmva-sofie-Fix-Tile-operator.patch b/root-tmva-sofie-Fix-Tile-operator.patch new file mode 100644 index 0000000..1bf2667 --- /dev/null +++ b/root-tmva-sofie-Fix-Tile-operator.patch @@ -0,0 +1,79 @@ +From ef1f3bba9059cd2e61d7de5f46fbfc26c4746ebc Mon Sep 17 00:00:00 2001 +From: moneta +Date: Thu, 19 Dec 2024 15:22:37 +0100 +Subject: [PATCH] [tmva][sofie] Fix Tile operator + +Fix the casting of the input repeats vector data of the Tile operator. +The type of data should be int64_t and not size_t +The previous code could have some issue when the size of size_t is 32 bits +--- + tmva/sofie/inc/TMVA/ROperator_Tile.hxx | 31 ++++++++++++++++---------- + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/tmva/sofie/inc/TMVA/ROperator_Tile.hxx b/tmva/sofie/inc/TMVA/ROperator_Tile.hxx +index 869cd55d9a439..3686db1e0914a 100644 +--- a/tmva/sofie/inc/TMVA/ROperator_Tile.hxx ++++ b/tmva/sofie/inc/TMVA/ROperator_Tile.hxx +@@ -51,12 +51,17 @@ public: + } + fShapeInput=model.GetTensorShape(fNInput); + +- // Retrieve the data pointer for the repeats tensor ++ // if repeats vector is not initialized we cannot deduce shape of output ++ // not support for time being this case ++ if (!model.IsInitializedTensor(fNRepeats)) { ++ throw std::runtime_error("TMVA SOFIE Tile Op: non-initialized repeats input is not supported"); ++ } ++ ++ // Retrieve the data pointer for the repeats tensor + auto repptr = model.GetInitializedTensorData(fNRepeats); + // Cast the raw pointer to the appropriate type (size_t*) +- auto repeat_shape = static_cast(repptr.get()); +- +- if (repeat_shape == nullptr) { ++ auto repeats_data = static_cast(repptr.get()); ++ if (repeats_data == nullptr) { + throw std::runtime_error("Failed to retrieve the data for the repeats tensor."); + } + // Get the shape of the repeats tensor to determine the number of elements +@@ -66,12 +71,18 @@ public: + throw std::runtime_error("Repeats tensor is not 1D."); + } + size_t num_elements = repeats_shape[0]; +- // Convert the data to a vector +- std::vector repeats_vector(repeat_shape, repeat_shape + num_elements); ++ // Convert the data to a vector of size_t ++ std::vector repeats_vector(num_elements); ++ std::copy(repeats_data, repeats_data + num_elements, repeats_vector.begin()); ++ + + fShapeY = ShapeInference({fShapeInput,repeats_vector})[0]; + + model.AddIntermediateTensor(fNY, model.GetTensorType(fNInput), fShapeY); ++ ++ if (model.Verbose()) ++ std::cout << "Tile: " << fNInput << " " << ConvertShapeToString(fShapeInput) << " -> " << fNY << " with shape " << ConvertShapeToString(fShapeY) ++ << " given repeats " << ConvertShapeToString(repeats_vector) << std::endl; + } + + std::string Generate(std::string OpName){ +@@ -89,17 +100,13 @@ public: + std::string output = "tensor_" + fNY; + out << "///-------- Tile operator\n"; + out << "{\n"; // add scope to re-use same names +- out << "std::vector input_shape = " << ConvertShapeToString(fShapeInput) << ";\n"; +- std::vector repeats = fShapeY; +- for (size_t i = 0; i < repeats.size(); i++) +- repeats[i] /= fShapeInput[i]; ++ out << "const int input_shape[" << fShapeInput.size() << "] = " << ConvertShapeToString(fShapeInput) << ";\n"; + +- out << "std::vector repeats = " << ConvertShapeToString(repeats) << ";\n"; + out << "int inputLength = " << ConvertShapeToLength(fShapeInput) << ";\n"; + out << "int s = 1;\n"; + // loop from inverse dim order + out << "for (int i = " << fShapeInput.size()-1 << "; i >=0; i--) {\n"; +- out << SP << "int r = repeats[i];\n"; ++ out << SP << "int r = tensor_" << fNRepeats << "[i];\n"; + // we cannot exclude case where repeats=1 since we need offset + //out << SP << "if (r == 1 && i < " << fShapeInput.size()-1 << ") continue;\n"; + out << SP << "int i_offset = 0, o_offset = 0;\n"; diff --git a/root-write-array.patch b/root-write-array.patch deleted file mode 100644 index 30b5945..0000000 --- a/root-write-array.patch +++ /dev/null @@ -1,125 +0,0 @@ -From a7be6f726b13a7ccf1c46dec35f53520781159df Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 7 Jun 2024 06:49:39 +0200 -Subject: [PATCH] Put back check for n = 0 - ---- - io/io/src/TBufferFile.cxx | 25 ++++++++++++++++++++++++- - 1 file changed, 24 insertions(+), 1 deletion(-) - -diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx -index 81e0f95e02..b5b7ef9831 100644 ---- a/io/io/src/TBufferFile.cxx -+++ b/io/io/src/TBufferFile.cxx -@@ -1948,6 +1948,8 @@ void TBufferFile::WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElemen - - void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(UChar_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -1974,6 +1976,8 @@ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n) - - void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Char_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -1995,6 +1999,8 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n) - - void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Char_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2023,6 +2029,8 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n) - - void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Short_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2054,7 +2062,8 @@ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n) - - void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n) - { -- -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = 4; - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2086,6 +2095,8 @@ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n) - - void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = 8; - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2108,6 +2119,8 @@ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n) - - void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = 8; - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2128,6 +2141,8 @@ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n) - - void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Long64_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2154,6 +2169,8 @@ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n) - - void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2185,6 +2202,8 @@ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n) - - void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Double_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2212,6 +2231,8 @@ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n) - - void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) -@@ -2270,6 +2291,8 @@ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerE - - void TBufferFile::WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele) - { -+ if (n == 0) return; -+ - constexpr Int_t dataWidth = static_cast(sizeof(Float_t)); - const Int_t maxElements = (std::numeric_limits::max() - Length())/dataWidth; - if (n < 0 || n > maxElements) --- -2.45.2 - diff --git a/root.spec b/root.spec index 9a0316e..b00cbc1 100644 --- a/root.spec +++ b/root.spec @@ -24,9 +24,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.32.08 +Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -49,6 +49,9 @@ Source6: application-x-root.png Source7: JupyROOT-on-EPEL # Script to generate Source0 Source8: %{name}-get-src.sh +# Clad is a source-transformation automatic differentiation (AD) +# library for C++, implemented as a plugin for the Clang compiler +Source9: https://github.com/vgvassilev/clad/archive/v1.7/clad-1.7.tar.gz # Use system fonts Patch0: %{name}-fontconfig.patch # Reduce memory usage during linking on ARM and x86 by generating @@ -61,15 +64,15 @@ Patch2: %{name}-dont-install-minicern.patch Patch3: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled Patch4: %{name}-32bit-tests.patch -# Adjust stress graphics reference -# https://github.com/root-project/root/pull/15735 -Patch5: %{name}-stress.patch -# Avoid segmentation fault on ix86 -# https://github.com/root-project/root/issues/15738 -# https://github.com/root-project/root/pull/15780 -Patch6: %{name}-write-array.patch -# Backport build fix from upstream -Patch7: %{name}-allow-any-openssl-3.x-with-civetweb.patch +# Fix compilation of TMVA SOFIE parser on s390x +# https://github.com/root-project/root/pull/17307 +Patch5: %{name}-Fix-compilation-on-s390x.patch +# Make -DCLAD_SOURCE_DIR option work +# https://github.com/root-project/root/pull/17308 +Patch6: %{name}-Make-DCLAD_SOURCE_DIR-option-work.patch +# Fix segmentation fault during testing on ix86 +# https://github.com/root-project/root/pull/17314 +Patch7: %{name}-tmva-sofie-Fix-Tile-operator.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1267,6 +1270,8 @@ 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 +# Dataframe helpers are now part of core +Obsoletes: %{name}-roofit-dataframe-helpers < 6.34.00 %description roofit-core The RooFit packages provide a toolkit for modeling the expected @@ -1329,28 +1334,6 @@ multiple times for different vector instuction set architectures and the optimal code is executed during runtime, as a result of an automatic hardware detection mechanism that this library contains. -%if %{dataframe} -%package roofit-dataframe-helpers -Summary: RooFit DaraFrame helpers -License: BSD-2-Clause -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 -%endif - %package roofit-hs3 Summary: RooFit HS3 License: BSD-2-Clause @@ -1937,7 +1920,7 @@ This package contains utility functions for ntuples. %endif %prep -%setup -q -a 1 +%setup -q -a 1 -a 9 %patch -P0 -p1 %patch -P1 -p1 @@ -1987,9 +1970,11 @@ rm etc/notebook/JsMVA/css/*.min.css install -p -m 644 %{SOURCE7} bindings/jupyroot %build +%if %{?fedora}%{!?fedora:0} == 40 # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO %define _lto_cflags %{nil} +%endif unset QTDIR unset QTLIB @@ -2009,9 +1994,8 @@ done -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ - -DPython3_EXECUTABLE=%{__python3} \ + -DPython3_EXECUTABLE:PATH=%{__python3} \ -Dgnuinstall:BOOL=ON \ - -Dbuiltin_afterimage:BOOL=ON \ -Dbuiltin_cfitsio:BOOL=OFF \ -Dbuiltin_clang:BOOL=ON \ -Dbuiltin_cling:BOOL=ON \ @@ -2054,11 +2038,10 @@ done -Dccache:BOOL=OFF \ -Ddistcc:BOOL=OFF \ -Dcefweb:BOOL=OFF \ - -Dclad:BOOL=OFF \ + -Dclad:BOOL=ON \ + -DCLAD_SOURCE_DIR:PATH=${PWD}/clad-1.7 \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ - -Dcudnn:BOOL=OFF \ - -Dcxxmodules:BOOL=OFF \ -Ddaos:BOOL=OFF \ %if %{dataframe} -Ddataframe:BOOL=ON \ @@ -2074,7 +2057,10 @@ done -Dfitsio:BOOL=ON \ -Dfortran:BOOL=ON \ -Dgdml:BOOL=ON \ + -Dgeom:BOOL=ON \ + -Dgeombuilder:BOOL=ON \ -Dgviz:BOOL=ON \ + -Dhtml:BOOL=ON \ -Dhttp:BOOL=ON \ -Dimt:BOOL=ON \ -Dlibcxx:BOOL=OFF \ @@ -2129,6 +2115,7 @@ done -Dssl:BOOL=ON \ -Dtmva:BOOL=ON \ -Dtmva-cpu:BOOL=ON \ + -Dtmva-cudnn:BOOL=OFF \ -Dtmva-gpu:BOOL=OFF \ -Dtmva-pymva:BOOL=ON \ -Dtmva-rmva:BOOL=ON \ @@ -2137,6 +2124,7 @@ done %else -Dtmva-sofie:BOOL=OFF \ %endif + -Dtpython:BOOL=ON \ -Dunfold:BOOL=ON \ -Dunuran:BOOL=ON \ %if %{?fedora}%{!?fedora:0} @@ -2154,6 +2142,7 @@ done -Dxrootd:BOOL=ON \ -Dfail-on-missing:BOOL=ON \ -Dtesting:BOOL=ON \ + -Dtestsupport:BOOL=ON \ -Dtest_distrdf_pyspark:BOOL=OFF \ -Dtest_distrdf_dask:BOOL=OFF \ -Dclingtest:BOOL=OFF \ @@ -2274,7 +2263,6 @@ sed -e 's!/usr/bin/env /usr/bin/python.*!%{__python3}!' \ -i %{buildroot}%{_bindir}/rootdrawtree sed -e 's!/usr/bin/env python!%{__python3}!' \ -i %{buildroot}%{_datadir}/%{name}/dictpch/makepch.py \ - %{buildroot}%{_pkgdocdir}/tutorials/histfactory/example.py \ %{buildroot}%{_pkgdocdir}/tutorials/histfactory/makeQuickModel.py \ %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ApplicationClassificationKeras.py \ %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ApplicationRegressionKeras.py \ @@ -2293,7 +2281,6 @@ rm %{buildroot}%{_bindir}/setxrd* rm %{buildroot}%{_bindir}/thisroot* rm %{buildroot}%{_pkgdocdir}/INSTALL rm %{buildroot}%{_pkgdocdir}/README.CXXMODULES.md -rm %{buildroot}%{_pkgdocdir}/README.MONALISA # Only used on Windows rm %{buildroot}%{_datadir}/%{name}/macros/fileopen.C @@ -2303,13 +2290,11 @@ pushd %{buildroot}%{_datadir}/%{name}/plugins rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TProofMgr/P010_TXProofMgr.C -rm TProofMonSender/P010_TProofMonSenderML.C rm TProofServ/P010_TXProofServ.C rm TSlave/P010_TXSlave.C rm TSQLServer/P040_TOracleServer.C rm TVirtualGeoConverter/P010_TGeoVGConverter.C rm TVirtualGLImp/P020_TGWin32GL.C -rm TVirtualMonitoringWriter/P010_TMonaLisaWriter.C rm TVirtualX/P030_TGWin32.C rm TVirtualX/P050_TGQuartz.C rmdir TProofMgr @@ -2408,7 +2393,7 @@ popd # root://eospublic.cern.ch//eos/opendata/cms/derived-data/ # AOD2NanoAODOutreachTool/Run2012BC_DoubleMuParked_Muons.root # -# - gtest-tree-treeplayer-test-treeprocessormt-remotefiles +# - gtest-tree-treeplayer-treeprocessormt-remotefiles # - tutorial-dataframe-df103_NanoAODHiggsAnalysis(-py)? # reads input data over network: # root://eospublic.cern.ch//eos/root-eos/cms_opendata_2012_nanoaod/ @@ -2438,20 +2423,20 @@ popd # reads input data over network # http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv # -# - gtest-net-davix-test-RRawFileDavix +# - gtest-net-davix-RRawFileDavix # reads input file over network # http://root.cern.ch/files/davix.test # -# - gtest-net-netxng-test-RRawFileNetXNG +# - gtest-net-netxng-RRawFileNetXNG # reads input file over network # root://eospublic.cern.ch/eos/root-eos/xrootd.test # -# - gtest-net-netxng-test-TNetXNGFileTest +# - gtest-net-netxng-TNetXNGFileTest # reads input file over network # root://eospublic.cern.ch/eos/root-eos/h1/dstarmb.root # -# - gtest-tmva-tmva-test-rreader -# - gtest-tmva-tmva-test-rstandardscaler +# - gtest-tmva-tmva-rreader +# - gtest-tmva-tmva-rstandardscaler # - tutorial-tmva-tmva003_RReader # - tutorial-tmva-tmva004_RStandardScaler # reads input data over network @@ -2484,7 +2469,7 @@ tutorial-multicore-imt101_parTreeProcessing|\ tutorial-dataframe-df..._SQlite|\ tutorial-dataframe-df033_Describe-py|\ tutorial-dataframe-df102_NanoAODDimuonAnalysis|\ -gtest-tree-treeplayer-test-treeprocessormt-remotefiles|\ +gtest-tree-treeplayer-treeprocessormt-remotefiles|\ tutorial-dataframe-df103_NanoAODHiggsAnalysis|\ tutorial-dataframe-df104_HiggsToTwoPhotons-py|\ tutorial-dataframe-df105_WBosonAnalysis-py|\ @@ -2496,11 +2481,11 @@ tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ tutorial-v7-ntuple-ntpl004_dimuon|\ tutorial-v7-ntuple-ntpl008_import|\ tutorial-v7-ntuple-ntpl011_global_temperatures|\ -gtest-net-davix-test-RRawFileDavix|\ -gtest-net-netxng-test-RRawFileNetXNG|\ -gtest-net-netxng-test-TNetXNGFileTest|\ -gtest-tmva-tmva-test-rreader|\ -gtest-tmva-tmva-test-rstandardscaler|\ +gtest-net-davix-RRawFileDavix|\ +gtest-net-netxng-RRawFileNetXNG|\ +gtest-net-netxng-TNetXNGFileTest|\ +gtest-tmva-tmva-rreader|\ +gtest-tmva-tmva-rstandardscaler|\ tutorial-tmva-tmva003_RReader|\ tutorial-tmva-tmva004_RStandardScaler|\ tutorial-tmva-tmva103_Application|\ @@ -2510,6 +2495,42 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\ pyunittests-pyroot-numbadeclare|\ test-webgui-ping" +# gtest-roofit-roofit-vectorisedPDFs-testLandau: +# Expected equality of these values: +# nFarOff +# Which is: 1 +# 0u +# Which is: 0 +# +# test-stressgraphics-firefox-skip3d: +# requires firefox... +# +# gtest-tree-treeplayer-treetreeplayertestUnit: +# segmentation fault +# +# tutorial-webcanv-fonts_ttf.cxx: +# Requires web graphics +# +# tutorial-roofit-rf617_simulation_based_inference_multidimensional-py: +# from sklearn.neural_network import MLPClassifier +# +# tutorial-roofit-rf618_mixture_models-py: +# import xgboost as xgb +excluded="${excluded}|\ +gtest-roofit-roofit-vectorisedPDFs-testLandau|\ +test-stressgraphics-firefox-skip3d|\ +gtest-tree-treeplayer-treetreeplayertestUnit|\ +tutorial-webcanv-fonts_ttf.cxx|\ +tutorial-roofit-rf617_simulation_based_inference_multidimensional-py|\ +tutorial-roofit-rf618_mixture_models-py" + +# Test using tensorflow and torch +# Disabled for Python >= 3.12, but must be excluded for Python < 3.12 +excluded="${excluded}|\ +pyunittests-bindings-pyroot-pythonizations-batchgen|\ +test-import-tensorflow|\ +test-import-torch" + %if ! %{pandas} # - test-import-pandas # - tutorial-dataframe-df026_AsNumpyArrays-py @@ -2524,14 +2545,10 @@ tutorial-roofit-rf409_NumPyPandasToRooFit-py" %endif %ifarch %{ix86} -# - gtest-tree-dataframe-test-dataframe-concurrency +# - gtest-tree-dataframe-dataframe-concurrency # "There's already an active task arena." -# -# - gtest-tree-dataframe-test-dataframe-simple -# free(): invalid pointer excluded="${excluded}|\ -gtest-tree-dataframe-test-dataframe-concurrency|\ -gtest-tree-dataframe-test-dataframe-simple" +gtest-tree-dataframe-dataframe-concurrency" %endif %ifarch aarch64 @@ -2543,60 +2560,62 @@ tutorial-tmva-RBatchGenerator_filters_vectors-py" %endif %ifarch %{power64} -# - test-stressgraphics(-interpreted) -# *** stack smashing detected ***: terminated -# # - tutorial-roostats-IntervalExamples-py # *** Break *** segmentation violation excluded="${excluded}|\ -test-stressgraphics|\ +gtest-tree-ntuple-v7-ntuple-evolution|\ tutorial-roostats-IntervalExamples-py" %endif %ifarch s390x -# - gtest-roofit-roofitcore-test-testNaNPacker -# - gtest-roofit-roofitcore-test-testLikelihoodGradientJob +# - gtest-roofit-roofitcore-testNaNPacker +# - gtest-roofit-roofitcore-testLikelihoodGradientJob # Uses "Packed NaN" feature, not implemented for big endian. excluded="${excluded}|\ -gtest-roofit-roofitcore-test-testNaNPacker|\ -gtest-roofit-roofitcore-test-testLikelihoodGradientJob" +gtest-roofit-roofitcore-testNaNPacker|\ +gtest-roofit-roofitcore-testLikelihoodGradientJob" -# - gtest-core-dictgen-test-dictgen-base -# - gtest-tree-dataframe-test-dataframe-unified-constructor +# - gtest-core-dictgen-dictgen-base +# - gtest-tmva-sofie-TestCustomModelsFromONNX +# - gtest-tree-dataframe-dataframe-unified-constructor # -# - gtest-tree-dataframe-test-datasource-ntuple -# - gtest-tree-ntuple-v7-test-ntuple-basics -# - gtest-tree-ntuple-v7-test-ntuple-bulk -# - gtest-tree-ntuple-v7-test-ntuple-compat -# - gtest-tree-ntuple-v7-test-ntuple-endian -# - gtest-tree-ntuple-v7-test-ntuple-extended -# - gtest-tree-ntuple-v7-test-ntuple-friends -# - gtest-tree-ntuple-v7-test-ntuple-merger -# - gtest-tree-ntuple-v7-test-ntuple-minifile -# - gtest-tree-ntuple-v7-test-ntuple-modelext -# - gtest-tree-ntuple-v7-test-ntuple-packing -# - gtest-tree-ntuple-v7-test-ntuple-parallel-writer -# - gtest-tree-ntuple-v7-test-ntuple-project -# - gtest-tree-ntuple-v7-test-ntuple-serialize -# - gtest-tree-ntuple-v7-test-ntuple-show -# - gtest-tree-ntuple-v7-test-ntuple-storage -# - gtest-tree-ntuple-v7-test-ntuple-storage-daos -# - gtest-tree-ntuple-v7-test-ntuple-types -# - gtest-tree-ntuple-v7-test-ntuple-view -# - gtest-tree-ntuple-v7-test-rfield-class -# - gtest-tree-ntuple-v7-test-rfield-variant -# - gtest-tree-ntuple-v7-test-rfield-vector -# - gtest-tree-ntupleutil-v7-test-ntuple-importer -# - gtest-tree-ntupleutil-v7-test-ntuple-inspector +# - gtest-tree-dataframe-datasource-ntuple +# - gtest-tree-ntuple-v7-ntuple-basics +# - gtest-tree-ntuple-v7-ntuple-bulk +# - gtest-tree-ntuple-v7-ntuple-cast +# - gtest-tree-ntuple-v7-ntuple-compat +# - gtest-tree-ntuple-v7-ntuple-extended +# - gtest-tree-ntuple-v7-ntuple-friends +# - gtest-tree-ntuple-v7-ntuple-index +# - gtest-tree-ntuple-v7-ntuple-merger +# - gtest-tree-ntuple-v7-ntuple-model +# - gtest-tree-ntuple-v7-ntuple-modelext +# - gtest-tree-ntuple-v7-ntuple-multi-column +# - gtest-tree-ntuple-v7-ntuple-packing +# - gtest-tree-ntuple-v7-ntuple-parallel-writer +# - gtest-tree-ntuple-v7-ntuple-project +# - gtest-tree-ntuple-v7-ntuple-processor +# - gtest-tree-ntuple-v7-ntuple-show +# - gtest-tree-ntuple-v7-ntuple-storage +# - gtest-tree-ntuple-v7-ntuple-storage-daos +# - gtest-tree-ntuple-v7-ntuple-types +# - gtest-tree-ntuple-v7-ntuple-view +# - gtest-tree-ntuple-v7-rfield-class +# - gtest-tree-ntuple-v7-rfield-streamer +# - gtest-tree-ntuple-v7-rfield-variant +# - gtest-tree-ntuple-v7-rfield-vector +# - gtest-tree-ntupleutil-v7-ntuple-importer +# - gtest-tree-ntupleutil-v7-ntuple-inspector # https://github.com/root-project/root/issues/12426 # -# - pyunittests-distrdf-unit-backend-test-graph-caching -# - pyunittests-pyroot-pyz-rtensor -# - pyunittests-pyroot-pyz-stl-vector +# - pyunittests-bindings-experimental-distrdf-backend-distrdf-unit-backend-graph-caching +# - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor +# - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector # - tutorial-dataframe-df006_ranges-py # - tutorial-fit-combinedFit-py # - tutorial-fit-NumericalMinimization-py # - tutorial-math-exampleFunction-py +# - tutorial-pyroot-hsum-py # - tutorial-rcanvas-rbox-py # https://github.com/root-project/root/issues/12429 # @@ -2608,39 +2627,44 @@ gtest-roofit-roofitcore-test-testLikelihoodGradientJob" # - test-stresshistogram # - test-stresshistogram-interpreted excluded="${excluded}|\ -gtest-core-dictgen-test-dictgen-base|\ -gtest-tree-dataframe-test-dataframe-unified-constructor|\ -gtest-tree-dataframe-test-datasource-ntuple|\ -gtest-tree-ntuple-v7-test-ntuple-basics|\ -gtest-tree-ntuple-v7-test-ntuple-bulk|\ -gtest-tree-ntuple-v7-test-ntuple-compat|\ -gtest-tree-ntuple-v7-test-ntuple-endian|\ -gtest-tree-ntuple-v7-test-ntuple-extended|\ -gtest-tree-ntuple-v7-test-ntuple-friends|\ -gtest-tree-ntuple-v7-test-ntuple-merger|\ -gtest-tree-ntuple-v7-test-ntuple-minifile|\ -gtest-tree-ntuple-v7-test-ntuple-modelext|\ -gtest-tree-ntuple-v7-test-ntuple-packing|\ -gtest-tree-ntuple-v7-test-ntuple-parallel-writer|\ -gtest-tree-ntuple-v7-test-ntuple-project|\ -gtest-tree-ntuple-v7-test-ntuple-serialize|\ -gtest-tree-ntuple-v7-test-ntuple-show|\ -gtest-tree-ntuple-v7-test-ntuple-storage|\ -gtest-tree-ntuple-v7-test-ntuple-storage-daos|\ -gtest-tree-ntuple-v7-test-ntuple-types|\ -gtest-tree-ntuple-v7-test-ntuple-view|\ -gtest-tree-ntuple-v7-test-rfield-class|\ -gtest-tree-ntuple-v7-test-rfield-variant|\ -gtest-tree-ntuple-v7-test-rfield-vector|\ -gtest-tree-ntupleutil-v7-test-ntuple-importer|\ -gtest-tree-ntupleutil-v7-test-ntuple-inspector|\ -pyunittests-distrdf-unit-backend-test-graph-caching|\ -pyunittests-pyroot-pyz-rtensor|\ -pyunittests-pyroot-pyz-stl-vector|\ +gtest-core-dictgen-dictgen-base|\ +gtest-tmva-sofie-TestCustomModelsFromONNX|\ +gtest-tree-dataframe-dataframe-unified-constructor|\ +gtest-tree-dataframe-datasource-ntuple|\ +gtest-tree-ntuple-v7-ntuple-basics|\ +gtest-tree-ntuple-v7-ntuple-bulk|\ +gtest-tree-ntuple-v7-ntuple-cast|\ +gtest-tree-ntuple-v7-ntuple-compat|\ +gtest-tree-ntuple-v7-ntuple-extended|\ +gtest-tree-ntuple-v7-ntuple-friends|\ +gtest-tree-ntuple-v7-ntuple-index|\ +gtest-tree-ntuple-v7-ntuple-merger|\ +gtest-tree-ntuple-v7-ntuple-model\$\$|\ +gtest-tree-ntuple-v7-ntuple-modelext|\ +gtest-tree-ntuple-v7-ntuple-multi-column|\ +gtest-tree-ntuple-v7-ntuple-packing|\ +gtest-tree-ntuple-v7-ntuple-parallel-writer|\ +gtest-tree-ntuple-v7-ntuple-project|\ +gtest-tree-ntuple-v7-ntuple-processor|\ +gtest-tree-ntuple-v7-ntuple-show|\ +gtest-tree-ntuple-v7-ntuple-storage\$\$|\ +gtest-tree-ntuple-v7-ntuple-storage-daos|\ +gtest-tree-ntuple-v7-ntuple-types|\ +gtest-tree-ntuple-v7-ntuple-view|\ +gtest-tree-ntuple-v7-rfield-class|\ +gtest-tree-ntuple-v7-rfield-streamer|\ +gtest-tree-ntuple-v7-rfield-variant|\ +gtest-tree-ntuple-v7-rfield-vector|\ +gtest-tree-ntupleutil-v7-ntuple-importer|\ +gtest-tree-ntupleutil-v7-ntuple-inspector|\ +pyunittests-bindings-experimental-distrdf-backend-distrdf-unit-backend-graph-caching|\ +pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor|\ +pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector|\ tutorial-dataframe-df006_ranges-py|\ tutorial-fit-combinedFit-py|\ tutorial-fit-NumericalMinimization-py|\ tutorial-math-exampleFunction-py|\ +tutorial-pyroot-hsum-py|\ tutorial-rcanvas-rbox-py|\ tutorial-tree-drawsparse|\ test-stresshistofit\$\$|\ @@ -2653,9 +2677,9 @@ test-stresshistogram-interpreted" %ifarch aarch64 %{power64} s390x # Fails with gcc 14 on aarch64, ppc64le and s390x # https://github.com/root-project/root/issues/14446 -# - gtest-math-matrix-test-testMatrixTSparse +# - gtest-math-matrix-testMatrixTSparse excluded="${excluded}|\ -gtest-math-matrix-test-testMatrixTSparse" +gtest-math-matrix-testMatrixTSparse" %endif %endif @@ -2803,6 +2827,7 @@ fi %{_datadir}/%{name}/system.rootauthrc %{_datadir}/%{name}/system.rootdaemonrc %{_datadir}/%{name}/system.rootrc +%{_datadir}/%{name}/valgrind-root.supp %{_datadir}/%{name}/valgrind-root-python.supp %{_mandir}/man1/system.rootdaemonrc.1* %dir %{_datadir}/%{name}/cmake @@ -3254,9 +3279,7 @@ fi %files proof -f includelist-proof-proof %{_bindir}/proofserv %{_bindir}/proofserv.exe -%{_bindir}/xpdtest %{_mandir}/man1/proofserv.1* -%{_mandir}/man1/xpdtest.1* %{_libdir}/%{name}/libProof.* %{_libdir}/%{name}/libProof_rdict.pcm %{_datadir}/%{name}/plugins/TChain/P010_TProofChain.C @@ -3265,7 +3288,6 @@ fi %{_datadir}/%{name}/plugins/TProof/P020_TProofSuperMaster.C %{_datadir}/%{name}/plugins/TProof/P030_TProofLite.C %{_datadir}/%{name}/plugins/TProof/P040_TProof.C -%{_datadir}/%{name}/valgrind-root.supp %files proof-bench -f includelist-proof-proofbench %{_libdir}/%{name}/libProofBench.* @@ -3315,12 +3337,6 @@ fi %{_libdir}/%{name}/libRooBatchCompute.* %{_libdir}/%{name}/libRooBatchCompute_* -%if %{dataframe} -%files roofit-dataframe-helpers -f includelist-roofit-RDataFrameHelpers -%{_libdir}/%{name}/libRooFitRDataFrameHelpers.* -%{_libdir}/%{name}/libRooFitRDataFrameHelpers_rdict.pcm -%endif - %files roofit-hs3 -f includelist-roofit-hs3 %{_libdir}/%{name}/libRooFitHS3.* %{_libdir}/%{name}/libRooFitHS3_rdict.pcm @@ -3397,30 +3413,31 @@ fi %dir %{_includedir}/%{name}/TMVA/DNN/CNN %dir %{_includedir}/%{name}/TMVA/DNN/RNN %license tmva/doc/LICENSE -%exclude %{_includedir}/%{name}/TMVA/RBatchGenerator.hxx -%exclude %{_includedir}/%{name}/TMVA/RBatchLoader.hxx %exclude %{_includedir}/%{name}/TMVA/RBDT.hxx -%exclude %{_includedir}/%{name}/TMVA/RChunkLoader.hxx %exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx %exclude %{_includedir}/%{name}/TMVA/RReader.hxx %exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx %exclude %{_includedir}/%{name}/TMVA/RStandardScaler.hxx %exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx +%exclude %{_includedir}/%{name}/TMVA/BatchGenerator/RBatchGenerator.hxx +%exclude %{_includedir}/%{name}/TMVA/BatchGenerator/RBatchLoader.hxx +%exclude %{_includedir}/%{name}/TMVA/BatchGenerator/RChunkLoader.hxx %if %{dataframe} %files tmva-utils %{_libdir}/%{name}/libTMVAUtils.* %{_libdir}/%{name}/libTMVAUtils_rdict.pcm %dir %{_includedir}/%{name}/TMVA -%{_includedir}/%{name}/TMVA/RBatchGenerator.hxx -%{_includedir}/%{name}/TMVA/RBatchLoader.hxx %{_includedir}/%{name}/TMVA/RBDT.hxx -%{_includedir}/%{name}/TMVA/RChunkLoader.hxx %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx %{_includedir}/%{name}/TMVA/RReader.hxx %{_includedir}/%{name}/TMVA/RSofieReader.hxx %{_includedir}/%{name}/TMVA/RStandardScaler.hxx %{_includedir}/%{name}/TMVA/RTensorUtils.hxx +%dir %{_includedir}/%{name}/TMVA/BatchGenerator +%{_includedir}/%{name}/TMVA/BatchGenerator/RBatchGenerator.hxx +%{_includedir}/%{name}/TMVA/BatchGenerator/RBatchLoader.hxx +%{_includedir}/%{name}/TMVA/BatchGenerator/RChunkLoader.hxx %endif %files tmva-python -f includelist-tmva-pymva @@ -3584,6 +3601,11 @@ fi %endif %changelog +* Wed Dec 25 2024 Mattias Ellert - 6.34.02-1 +- Update to 6.34.02 +- Build CLAD plugin +- Removed package: root-roofit-dataframe-helpers + * Wed Nov 27 2024 Richard W.M. Jones - 6.32.08-2 - Rebuild for libarrow 18 diff --git a/sources b/sources index afea219..c6afe84 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ -SHA512 (root-6.32.08.tar.xz) = 268f68745bcf545aff5b3ad4208e8b6b373800da3885cc3d7a8083a6b4ab8c92788a4da0163b3344c24cd62e50a7b74319bc65ee519de4e53f4394330687a2be +SHA512 (root-6.34.02.tar.xz) = 565218eb073ecec509851c99c9ac018bb9de1abae4be023fe2862e28aa967a4a353d77fce1b8173fea87ed17b943bcd2bbce69a55573a1686f138a6495612fa5 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f +SHA512 (clad-1.7.tar.gz) = ff9856ed4901625b4c31bc4b5ac97f464667f58c567caaab8b2a2567de4e0908ff0fffbb566fe728fc6184d3d6bc156bbabacf24d83009e36b2956d535171066 From 8d9fc44478f580646c938ca338aad05290c20d6c Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 12 Jan 2025 10:48:54 +0100 Subject: [PATCH 52/89] Adjust stressGraphics.ref Build for EPEL 10 Disable the R interface for EPEL 10 (R not yet abailable) Enable uring support for EPEL 9 (supported in kernel since RHEL 9.3) --- root-Adjust-test-stressGraphics.ref.patch | 39 ++++++++++ root.spec | 92 ++++++++++++++++++----- 2 files changed, 113 insertions(+), 18 deletions(-) create mode 100644 root-Adjust-test-stressGraphics.ref.patch diff --git a/root-Adjust-test-stressGraphics.ref.patch b/root-Adjust-test-stressGraphics.ref.patch new file mode 100644 index 0000000..92db744 --- /dev/null +++ b/root-Adjust-test-stressGraphics.ref.patch @@ -0,0 +1,39 @@ +From b0f07c642c8edb62788f8519dcdb322f99395661 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 9 Jan 2025 21:44:14 +0100 +Subject: [PATCH] Adjust test/stressGraphics.ref + +One of the tests fails with just a few bytes on latest Fedora +releases. Failures can be seen for both test-stressgraphics and +test-stressgraphics-interpreted. Failures are reported for sizes being +201, 202 or 203 bytes larger than the reference, with thw limit +currently set to 200 bytes. + +Test 19: TGaxis 3 (Time on axis)................................... OK + PDF output......................................... 19 FAILED + Result = 42723 + Reference = 42926 + Error = 203 (was 200) + JPG output................................................ OK + PNG output................................................ OK + C file result............................................. OK +--- + test/stressGraphics.ref | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref +index 28ac0b9b7b..e1382d2d45 100644 +--- a/test/stressGraphics.ref ++++ b/test/stressGraphics.ref +@@ -17,7 +17,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 + 17 20444 400 21520 150 27511 11000 16867 600 20721 400 + 18 15894 100 19305 200 27187 10300 15925 350 15925 100 +- 19 22521 300 42926 200 43868 17000 19232 11000 22729 300 ++ 19 22521 300 42926 250 43868 17000 19232 11000 22729 300 + 20 3664 600 14437 150 19824 6300 10396 900 4220 600 + 21 17608 600 13900 150 49440 6300 37586 9000 5938 600 + 22 4866 600 14162 100 30889 10050 21311 1800 4845 600 +-- +2.47.1 + diff --git a/root.spec b/root.spec index b00cbc1..431d547 100644 --- a/root.spec +++ b/root.spec @@ -20,13 +20,20 @@ %global pandas 0 %endif +%if %{?rhel}%{!?rhel:0} == 10 +# R not yet available in EPEL 10 +%global rrr 0 +%else +%global rrr 1 +%endif + # Do not generate autoprovides for Python modules %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -73,6 +80,9 @@ Patch6: %{name}-Make-DCLAD_SOURCE_DIR-option-work.patch # Fix segmentation fault during testing on ix86 # https://github.com/root-project/root/pull/17314 Patch7: %{name}-tmva-sofie-Fix-Tile-operator.patch +# Adjust test/stressGraphics.ref +# https://github.com/root-project/root/pull/17398 +Patch8: %{name}-Adjust-test-stressGraphics.ref.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -134,8 +144,10 @@ BuildRequires: xrootd-client-devel >= 1:5.0.0 BuildRequires: cfitsio-devel # Davix version >= 0.6.4, but not between 0.6.8 and 0.7.0 BuildRequires: davix-devel >= 0.7.1 +%if %{rrr} BuildRequires: R-Rcpp-devel BuildRequires: R-RInside-devel +%endif BuildRequires: readline-devel BuildRequires: tbb-devel >= 2020 BuildRequires: libuuid-devel @@ -146,9 +158,10 @@ BuildRequires: flexiblas-devel %if ! %{bundlejson} BuildRequires: json-devel >= 3.9 %endif -%if %{?fedora}%{!?fedora:0} -# Disable uring in EPEL 8 and 9 (liburing is available, -# but uring not supported by the kernel) +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 +# Disable uring in EPEL 8 (liburing is available, +# but uring not supported by the RHEL 8 kernel) +# Supported by the RHEL kernel since RHEL 9.3 BuildRequires: liburing-devel %endif %if %{tmvasofieparser} @@ -425,6 +438,7 @@ A layer on top of RDataFrame to enable distributed computations. It is a port of the previously known PyRDF python package. %endif +%if %{rrr} %package r Summary: R interface for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -451,6 +465,7 @@ Requires: %{name}-r%{?_isa} = %{version}-%{release} %description r-tools This package contains a minimizer module for ROOT that uses the ROOT R interface. +%endif %package genetic Summary: Genetic algorithms for ROOT @@ -476,6 +491,7 @@ This package contains a library for defining geometries in ROOT. Summary: Geometry builder library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} # Package split (geom-builder and geom-painter from geom) @@ -524,6 +540,8 @@ This package contains the 2-dimensional graphics library for ROOT. Summary: AfterImage graphics renderer for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-postscript%{?_isa} = %{version}-%{release} Requires: %{name}-gui%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -630,6 +648,7 @@ This package contains a library for defining event displays in ROOT. Summary: GL renderer for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-asimage%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} @@ -822,7 +841,7 @@ from marked up sources. %package io Summary: Input/output of ROOT objects Requires: %{name}-core%{?_isa} = %{version}-%{release} -%if %{?fedora}%{!?fedora:0} +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 Requires: liburing-devel %endif @@ -913,6 +932,7 @@ Requires: %{name}-core%{?_isa} = %{version}-%{release} # Dynamic dependencies Requires: %{name}-mathmore%{?_isa} = %{version}-%{release} Requires: %{name}-minuit%{?_isa} = %{version}-%{release} +Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} %description mathcore This package contains the MathCore library for ROOT. @@ -1100,6 +1120,7 @@ This package contains the ROOT networking library. %package net-rpdutils Summary: Authentication utilities used by xproofd Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-net%{?_isa} = %{version}-%{release} %description net-rpdutils This package contains authentication utilities used by xproofd. @@ -1201,6 +1222,7 @@ Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} +Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-proof%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} @@ -1266,7 +1288,10 @@ 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-multiprocess%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-zmq%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1317,9 +1342,6 @@ This package contains RooFit classes that use the mathmore library. Summary: Optimized computation functions for PDFs License: BSD-2-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} %description roofit-batchcompute While fitting, a significant amount of time and processing power is @@ -1344,7 +1366,6 @@ Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-roofit%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-jsoninterface%{?_isa} = %{version}-%{release} -Requires: %{name}-roostats%{?_isa} = %{version}-%{release} %description roofit-hs3 When using RooFit, statistical models can be conveniently handled and @@ -1425,6 +1446,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} Requires: %{name}-roofit%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-jsoninterface%{?_isa} = %{version}-%{release} Requires: %{name}-roostats%{?_isa} = %{version}-%{release} %description hist-factory @@ -1437,6 +1459,7 @@ 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-fitpanel%{?_isa} = %{version}-%{release} Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} @@ -1447,6 +1470,7 @@ Requires: %{name}-roofit%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-hs3%{?_isa} = %{version}-%{release} Requires: %{name}-roostats%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} %description xroofit The RooFit packages provide a toolkit for modeling the expected @@ -1571,6 +1595,7 @@ Requires: python%{python3_pkgversion}-numpy %description tmva-python Python integration with TMVA. +%if %{rrr} %package tmva-r Summary: Toolkit for multivariate data analysis (R) License: BSD-3-Clause @@ -1581,11 +1606,13 @@ Requires: %{name}-tmva%{?_isa} = %{version}-%{release} %description tmva-r R integration with TMVA. +%endif %package tmva-sofie Summary: ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} %description tmva-sofie ROOT/TMVA SOFIE (System for Optimized Fast Inference code Emit) @@ -1617,6 +1644,7 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-io-xml%{?_isa} = %{version}-%{release} Requires: %{name}-matrix%{?_isa} = %{version}-%{release} Requires: %{name}-tmva%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-viewer%{?_isa} = %{version}-%{release} %description tmva-gui @@ -1718,6 +1746,7 @@ written in python. %package gui-webdisplay Summary: Web display for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-net-http%{?_isa} = %{version}-%{release} @@ -1755,6 +1784,7 @@ Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-net-http%{?_isa} = %{version}-%{release} %description gui-webgui6 This package provides a Web based GUI for ROOT. @@ -1794,6 +1824,7 @@ This package contains the ROOT file browser (RBrowser) and browser widgets. Summary: Geometry web viewer library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-painter%{?_isa} = %{version}-%{release} Requires: %{name}-graf3d-csg%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1821,9 +1852,10 @@ This package contains graphics primitives for ROOT 7 Summary: Event display library for ROOT (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-geom-webviewer%{?_isa} = %{version}-%{release} Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_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} @@ -1878,6 +1910,7 @@ This package contains a canvas painter extension for ROOT 7 Summary: GUI element for fits in ROOT (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1913,6 +1946,9 @@ This package contains an ntuple extension for ROOT 7. %package tree-ntuple-utils Summary: Ntuple utility library (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} %description tree-ntuple-utils @@ -1930,6 +1966,7 @@ This package contains utility functions for ntuples. %patch -P5 -p1 %patch -P6 -p1 %patch -P7 -p1 +%patch -P8 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1970,7 +2007,7 @@ rm etc/notebook/JsMVA/css/*.min.css install -p -m 644 %{SOURCE7} bindings/jupyroot %build -%if %{?fedora}%{!?fedora:0} == 40 +%if %{?fedora}%{!?fedora:0} == 40 || %{?rhel}%{!?rhel:0} == 10 # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO %define _lto_cflags %{nil} @@ -2086,7 +2123,11 @@ done %else -Dqt6web:BOOL=OFF \ %endif +%if %{rrr} -Dr:BOOL=ON \ +%else + -Dr:BOOL=OFF \ +%endif %if %{roofit} -Droofit:BOOL=ON \ %if %{?fedora}%{!?fedora:0} >= 40 @@ -2118,7 +2159,11 @@ done -Dtmva-cudnn:BOOL=OFF \ -Dtmva-gpu:BOOL=OFF \ -Dtmva-pymva:BOOL=ON \ +%if %{rrr} -Dtmva-rmva:BOOL=ON \ +%else + -Dtmva-rmva:BOOL=OFF \ +%endif %if %{tmvasofieparser} -Dtmva-sofie:BOOL=ON \ %else @@ -2127,7 +2172,7 @@ done -Dtpython:BOOL=ON \ -Dunfold:BOOL=ON \ -Dunuran:BOOL=ON \ -%if %{?fedora}%{!?fedora:0} +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -During:BOOL=ON \ %else -During:BOOL=OFF \ @@ -2287,6 +2332,9 @@ rm %{buildroot}%{_datadir}/%{name}/macros/fileopen.C # Remove plugin definitions for non-built and obsolete plugins pushd %{buildroot}%{_datadir}/%{name}/plugins +%if ! %{rrr} +rm ROOT@@Math@@Minimizer/P090_RMinimizer.C +%endif rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C rm TProofMgr/P010_TXProofMgr.C @@ -2673,15 +2721,13 @@ test-stresshistogram\$\$|\ test-stresshistogram-interpreted" %endif -%if %{?fedora}%{!?fedora:0} >= 40 -%ifarch aarch64 %{power64} s390x -# Fails with gcc 14 on aarch64, ppc64le and s390x +%if %{?fedora}%{!?fedora:0} >= 40 || %{?rhel}%{!?rhel:0} >= 10 +# Fails with gcc 14 on aarch64, ppc64le and s390x (on EPEL 10 also x86_64) # https://github.com/root-project/root/issues/14446 # - gtest-math-matrix-testMatrixTSparse excluded="${excluded}|\ gtest-math-matrix-testMatrixTSparse" %endif -%endif # Filter out parts of tests that require remote network access # RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) @@ -2910,6 +2956,7 @@ fi %{python3_sitelib}/DistRDF-*.dist-info %endif +%if %{rrr} %files r -f includelist-bindings-r %{_libdir}/%{name}/libRInterface.* %{_libdir}/%{name}/libRInterface_rdict.pcm @@ -2919,6 +2966,7 @@ fi %{_libdir}/%{name}/libRtools.* %{_libdir}/%{name}/libRtools_rdict.pcm %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P090_RMinimizer.C +%endif %files genetic -f includelist-math-genetic %{_libdir}/%{name}/libGenetic.* @@ -3444,9 +3492,11 @@ fi %{_libdir}/%{name}/libPyMVA.* %{_libdir}/%{name}/libPyMVA_rdict.pcm +%if %{rrr} %files tmva-r -f includelist-tmva-rmva %{_libdir}/%{name}/libRMVA.* %{_libdir}/%{name}/libRMVA_rdict.pcm +%endif %files tmva-sofie -f includelist-tmva-sofie %{_libdir}/%{name}/libROOTTMVASofie.* @@ -3601,6 +3651,12 @@ fi %endif %changelog +* Sun Jan 12 2025 Mattias Ellert - 6.34.02-2 +- Adjust stressGraphics.ref +- Build for EPEL 10 +- Disable the R interface for EPEL 10 (R not yet abailable) +- Enable uring support for EPEL 9 (supported in kernel since RHEL 9.3) + * Wed Dec 25 2024 Mattias Ellert - 6.34.02-1 - Update to 6.34.02 - Build CLAD plugin @@ -3654,7 +3710,7 @@ fi * Sat Jun 08 2024 Mattias Ellert - 6.32.00-2 - Python 3.13 compatibility -* Mon Jun 03 2024 Mattias Ellert - 6.32.00-1 +* Mon Jun 03 2024 Mattias Ellert - 6.32.00-1 - Update to 6.32.00 - Drop EPEL 8 build (now requires Python >= 3.7 and tbb >= 2020) - Dropped patches: 12 @@ -3681,7 +3737,7 @@ fi * Mon Mar 25 2024 Mattias Ellert - 6.30.04-2 - Support StandardSymbolsPS.otf -* Wed Jan 31 2024 Mattias Ellert - 6.30.04-1 +* Wed Jan 31 2024 Mattias Ellert - 6.30.04-1 - Update to 6.30.04 - Drop patch root-adjust-test-for-failures-on-aarch64-ppc64le-s390x.patch (accepted upstrem) From 745e82c601a72e0f3a419549894a9fac3194c568 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 15 Jan 2025 06:32:29 +0100 Subject: [PATCH 53/89] Don't add dependencies on root-roofit-multiprocess and root-roofit-zmq to root-roofit-core for EPEL builds --- root.spec | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/root.spec b/root.spec index 431d547..dca3376 100644 --- a/root.spec +++ b/root.spec @@ -27,13 +27,19 @@ %global rrr 1 %endif +%if %{?fedora}%{!?fedora:0} >= 40 +%global roofitmp 1 +%else +%global roofitmp 0 +%endif + # Do not generate autoprovides for Python modules %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -171,7 +177,7 @@ BuildRequires: protobuf-devel >= 3.0 BuildRequires: libarrow-devel %endif %if %{roofit} -%if %{?fedora}%{!?fedora:0} >= 40 +%if %{roofitmp} # Required for roofit-multiprocess # Requires new zeromq with zmq_ppoll BuildRequires: zeromq-devel >= 4.3.5 @@ -410,7 +416,7 @@ Requires: %{name}-core = %{version}-%{release} # notebook package was merged with JupyROOT package Provides: %{name}-notebook = %{version}-%{release} Obsoletes: %{name}-notebook < 6.32.00 -Requires: js-jsroot >= 7.7 +Requires: js-jsroot >= 7.8 %if %{?fedora}%{!?fedora:0} # jupyter-notebook not available in RHEL/EPEL # some functionality missing @@ -1148,7 +1154,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 >= 7.7 +Requires: js-jsroot >= 7.8 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -1290,8 +1296,10 @@ 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} +%if %{roofitmp} Requires: %{name}-roofit-multiprocess%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-zmq%{?_isa} = %{version}-%{release} +%endif Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split / Library split (from roofit) Obsoletes: %{name}-roofit < 6.20.00 @@ -1395,7 +1403,7 @@ suitable for adoption in different disciplines as well. This package contains the JSON interface to RooFit. -%if %{?fedora}%{!?fedora:0} >= 40 +%if %{roofitmp} %package roofit-multiprocess Summary: Multi-process support for RooFit License: BSD-2-Clause @@ -2130,7 +2138,7 @@ done %endif %if %{roofit} -Droofit:BOOL=ON \ -%if %{?fedora}%{!?fedora:0} >= 40 +%if %{roofitmp} -Droofit_multiprocess:BOOL=ON \ %else -Droofit_multiprocess:BOOL=OFF \ @@ -3397,7 +3405,7 @@ fi %{_libdir}/%{name}/libRooFitJSONInterface_rdict.pcm %dir %{_includedir}/%{name}/RooFit -%if %{?fedora}%{!?fedora:0} >= 40 +%if %{roofitmp} %files roofit-multiprocess -f includelist-roofit-multiprocess %{_libdir}/%{name}/libRooFitMultiProcess.* %dir %{_includedir}/%{name}/RooFit @@ -3651,6 +3659,10 @@ fi %endif %changelog +* Wed Jan 15 2025 Mattias Ellert - 6.34.02-3 +- Don't add dependencies on root-roofit-multiprocess and root-roofit-zmq + to root-roofit-core for EPEL builds + * Sun Jan 12 2025 Mattias Ellert - 6.34.02-2 - Adjust stressGraphics.ref - Build for EPEL 10 From 2ad57ba760241d470f7bceebe3bc728b9edfe7d3 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 18 Jan 2025 22:37:32 +0000 Subject: [PATCH 54/89] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index dca3376..5e7d337 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3659,6 +3659,9 @@ fi %endif %changelog +* Sat Jan 18 2025 Fedora Release Engineering - 6.34.02-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Wed Jan 15 2025 Mattias Ellert - 6.34.02-3 - Don't add dependencies on root-roofit-multiprocess and root-roofit-zmq to root-roofit-core for EPEL builds From 3487b3a0607005a2c68a7ba59a4ecc790ea51dbd Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 31 Jan 2025 13:22:57 +0100 Subject: [PATCH 55/89] Apply patches to fix build with gcc 15 Enable roofit-multiprocess for EPEL 10 (dependencies available) Rebuild for pythia8 8.3.13 --- root-Add-a-missing-include-to-RTensor.patch | 26 +++++++ ...ing-include-to-RVirtualCanvasPainter.patch | 26 +++++++ root-Fix-out-of-bounds-error-in-pyroot.patch | 52 ++++++++++++++ ...-and-conflicting-function-declaratio.patch | 44 ++++++++++++ ...x-Debug-Assertion-Failure-in-libGpad.patch | 30 ++++++++ ...kport-fix-for-compilation-issue-with.patch | 41 +++++++++++ root.spec | 69 ++++++++++++++----- 7 files changed, 271 insertions(+), 17 deletions(-) create mode 100644 root-Add-a-missing-include-to-RTensor.patch create mode 100644 root-Add-a-missing-include-to-RVirtualCanvasPainter.patch create mode 100644 root-Fix-out-of-bounds-error-in-pyroot.patch create mode 100644 root-Remove-redundant-and-conflicting-function-declaratio.patch create mode 100644 root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch create mode 100644 root-llvm-project-Backport-fix-for-compilation-issue-with.patch diff --git a/root-Add-a-missing-include-to-RTensor.patch b/root-Add-a-missing-include-to-RTensor.patch new file mode 100644 index 0000000..e5fbd5b --- /dev/null +++ b/root-Add-a-missing-include-to-RTensor.patch @@ -0,0 +1,26 @@ +From cfc922131c8a977e14c6611ed991f0889b0c47c8 Mon Sep 17 00:00:00 2001 +From: Stephan Hageboeck +Date: Fri, 17 Jan 2025 10:35:37 +0100 +Subject: [PATCH 2/2] Add a missing include to RTensor. + +In gcc-15, needs to be included to use fixed-size integer +types. +--- + tmva/tmva/inc/TMVA/RTensor.hxx | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tmva/tmva/inc/TMVA/RTensor.hxx b/tmva/tmva/inc/TMVA/RTensor.hxx +index ad152f219a..795cc70689 100644 +--- a/tmva/tmva/inc/TMVA/RTensor.hxx ++++ b/tmva/tmva/inc/TMVA/RTensor.hxx +@@ -3,6 +3,7 @@ + + #include + #include // std::size_t ++#include + #include // std::runtime_error + #include // std::stringstream + #include // std::shared_ptr +-- +2.48.0 + diff --git a/root-Add-a-missing-include-to-RVirtualCanvasPainter.patch b/root-Add-a-missing-include-to-RVirtualCanvasPainter.patch new file mode 100644 index 0000000..4acfae1 --- /dev/null +++ b/root-Add-a-missing-include-to-RVirtualCanvasPainter.patch @@ -0,0 +1,26 @@ +From 2884f67f5a145ef5d2ba1f8050b2b1a543d97881 Mon Sep 17 00:00:00 2001 +From: Stephan Hageboeck +Date: Fri, 17 Jan 2025 10:32:04 +0100 +Subject: [PATCH 1/2] Add a missing include to RVirtualCanvasPainter. + +In gcc-15, needs to be included when fixed-size integer types +are used. +--- + graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx b/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx +index be2a467280..f5f255ec48 100644 +--- a/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx ++++ b/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx +@@ -9,6 +9,7 @@ + #ifndef ROOT7_RVirtualCanvasPainter + #define ROOT7_RVirtualCanvasPainter + ++#include + #include + #include + #include +-- +2.48.0 + diff --git a/root-Fix-out-of-bounds-error-in-pyroot.patch b/root-Fix-out-of-bounds-error-in-pyroot.patch new file mode 100644 index 0000000..4a1611e --- /dev/null +++ b/root-Fix-out-of-bounds-error-in-pyroot.patch @@ -0,0 +1,52 @@ +From 4bece824e886f84b7b05e08baea3762d02f892d6 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 29 Jan 2025 00:31:31 +0100 +Subject: [PATCH] Fix out-of-bounds error in pyroot + + 526/1416 Test #63: pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-tf-pycallables ..........................***Failed 75.51 sec +test_callable (tf_pycallables.TF1.test_callable) +Test function provided as callable ... /usr/include/c++/15/bits/stl_bvector.h:1134: std::vector::reference std::vector::operator[](size_type) [with _Alloc = std::allocator; reference = std::vector::reference; size_type = long unsigned int]: Assertion '__n < this->size()' failed. + *** Break *** abort + +=========================================================== +The lines below might hint at the cause of the crash. If you see question +marks as part of the stack trace, try to recompile with debugging information +enabled and export CLING_DEBUG=1 environment variable before running. +You may get help by asking at the ROOT forum https://root.cern/forum +preferably using the command (.forum bug) in the ROOT prompt. +Only if you are really convinced it is a bug in ROOT then please submit a +report at https://root.cern/bugs or (preferably) using the command (.gh bug) in +the ROOT prompt. Please post the ENTIRE stack trace +from above as an attachment in addition to anything else +that might help us fixing this issue. +=========================================================== + #10 0x00007f6bcac7fea4 in __pthread_kill_implementation () from /lib64/libc.so.6 + #11 0x00007f6bcac264de in raise () from /lib64/libc.so.6 + #12 0x00007f6bcac0e350 in abort () from /lib64/libc.so.6 + #13 0x00007f6bc9a0be02 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) () from /lib64/libstdc++.so.6 + #14 0x00007f6bb9b15257 in std::vector >::operator[](unsigned long) [clone .part.0] [clone .lto_priv.0] (__n=, this=) at /usr/include/c++/15/bits/stl_bvector.h:1134 + #15 0x00007f6bb9bab976 in std::vector >::operator[] (this=, __n=0) at /usr/include/c++/15/bits/stl_bvector.h:201 + #16 CPyCppyy::Utility::ConstructCallbackPreamble (retType="Double_t", argtypes=..., code=Python Exception : list index out of range + #17 0x00007f6bb9b389e0 in PyFunction_AsCPointer (pyobject=, pyobject +entry=0x7f6bb8f838c0, rettype="Double_t", signature="(Double_t*,Double_t*)") at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2713 + #18 0x00007f6bb9b39851 in CPyCppyy::(anonymous namespace)::FunctionPointerConverter::SetArg (this=0x55eb25d61d40, pyobject=0x7f6bb8f838c0, para=..., ctxt=0x7ffc484855c0) at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2768 +--- + bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx +index 7cfb76032a..2741caeb32 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx ++++ b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx +@@ -645,7 +645,7 @@ void CPyCppyy::Utility::ConstructCallbackPreamble(const std::string& retType, + << retType << "\"), CPyCppyy::DestroyConverter};\n"; + std::vector arg_is_ptr; + if (nArgs) { +- arg_is_ptr.reserve(nArgs); ++ arg_is_ptr.resize(nArgs); + code << " CPYCPPYY_STATIC std::vector>> argcvs;\n" + << " if (argcvs.empty()) {\n" + << " argcvs.reserve(" << nArgs << ");\n"; +-- +2.48.1 + diff --git a/root-Remove-redundant-and-conflicting-function-declaratio.patch b/root-Remove-redundant-and-conflicting-function-declaratio.patch new file mode 100644 index 0000000..54a9e32 --- /dev/null +++ b/root-Remove-redundant-and-conflicting-function-declaratio.patch @@ -0,0 +1,44 @@ +From d28f5ac3a6947e13b30325bc2b373cff2fcda276 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 19 Jan 2025 13:57:25 +0100 +Subject: [PATCH] Remove redundant (and conflicting) function declarations + +The function fchtak() is implemented earlier in the same file. There +is therefore no need to declare the function later in the same file. +The later declarations redefines the function with an empty parameter +list, which conflicts with the original definition. + +The function stat() is defined by including . The +following daclaration redefines the function with an empty parameter +list, which conflicts with the original definition. +--- + misc/minicern/src/cernlib.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/misc/minicern/src/cernlib.c b/misc/minicern/src/cernlib.c +index b882db2d90..98f7282ce6 100644 +--- a/misc/minicern/src/cernlib.c ++++ b/misc/minicern/src/cernlib.c +@@ -172,8 +172,8 @@ int cfstati_(char *fname, int *info, int *lgname) + #endif + { + struct stat buf; +- char *ptname, *fchtak(); +- int istat=-1, stat(); ++ char *ptname; ++ int istat = -1; + ptname = fchtak(fname,*lgname); + if (ptname == ((void *)0)) return -1; + istat = stat(ptname, &buf); +@@ -226,7 +226,7 @@ void cfopei_(int *lundes, int *medium, int *nwrec, int *mode, int *nbuf, + char *ftext, int *astat, int *lgtx) + #endif + { +- char *pttext, *fchtak(); ++ char *pttext; + int flags = 0; + int fildes; + int perm; +-- +2.48.1 + diff --git a/root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch b/root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch new file mode 100644 index 0000000..2c2147a --- /dev/null +++ b/root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch @@ -0,0 +1,30 @@ +From 456d5421706525974d4804e0e1a7880afd7df4fb Mon Sep 17 00:00:00 2001 +From: Bertrand Bellenot +Date: Wed, 11 Dec 2024 14:49:52 +0100 +Subject: [PATCH] [gpad] Fix Debug Assertion Failure in libGpad + +Fix the following error in Debug mode with Runtime Check on Windows: +Debug Assertion Failed! +Epression: vector subscript out of range +--- + graf2d/gpad/src/TPad.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx +index 9c907335f3..dd5abeba91 100644 +--- a/graf2d/gpad/src/TPad.cxx ++++ b/graf2d/gpad/src/TPad.cxx +@@ -3435,8 +3435,8 @@ void TPad::FillCollideGridTH1(TObject *o) + else y2l = fUymin; + } + y2 = (Int_t)((y2l-fY1)/ys); +- for (j=y1; j<=y2; j++) { +- NotFree(x1, j); ++ for (j=y1; jGetBinLowEdge(i); +-- +2.48.1 + diff --git a/root-llvm-project-Backport-fix-for-compilation-issue-with.patch b/root-llvm-project-Backport-fix-for-compilation-issue-with.patch new file mode 100644 index 0000000..c51d4d3 --- /dev/null +++ b/root-llvm-project-Backport-fix-for-compilation-issue-with.patch @@ -0,0 +1,41 @@ +From 60da0f7f5971c86407898408abf540c5a43d2d10 Mon Sep 17 00:00:00 2001 +From: Devajith Valaparambil Sreeramaswamy + +Date: Fri, 24 Jan 2025 09:36:13 +0100 +Subject: [PATCH] [llvm-project] Backport fix for compilation issue with gcc-15 + +Update the LLVM tag with the following commits: +2468812ca0d9 UPSTREAM: Add missing include to X86MCTargetDesc.h (#123320) +ed4f96704966 UPSTREAM: [ADT] Add `` to SmallVector (#101761) +--- + interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h | 1 + + .../llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h b/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h +index 09676d792d..17444147b1 100644 +--- a/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h ++++ b/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h b/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h +index 437a7bd6ff..fd7d794849 100644 +--- a/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h ++++ b/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h +@@ -13,6 +13,7 @@ + #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H + #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H + ++#include + #include + #include + +-- +2.48.1 + diff --git a/root.spec b/root.spec index 5e7d337..8e8b13f 100644 --- a/root.spec +++ b/root.spec @@ -27,7 +27,7 @@ %global rrr 1 %endif -%if %{?fedora}%{!?fedora:0} >= 40 +%if %{?fedora}%{!?fedora:0} >= 40 || %{?rhel}%{!?rhel:0} >= 10 %global roofitmp 1 %else %global roofitmp 0 @@ -39,7 +39,7 @@ Name: root Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -89,6 +89,22 @@ Patch7: %{name}-tmva-sofie-Fix-Tile-operator.patch # Adjust test/stressGraphics.ref # https://github.com/root-project/root/pull/17398 Patch8: %{name}-Adjust-test-stressGraphics.ref.patch +# Fix out of bounds error reported with gcc 15 +# https://github.com/root-project/root/pull/17249 +Patch9: %{name}-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch +# Missing includes for compiling with gcc 15 +# https://github.com/root-project/root/pull/17443 +Patch10: %{name}-Add-a-missing-include-to-RVirtualCanvasPainter.patch +Patch11: %{name}-Add-a-missing-include-to-RTensor.patch +# Conflicting declarations (gcc 15) +# https://github.com/root-project/root/pull/17455 +Patch12: %{name}-Remove-redundant-and-conflicting-function-declaratio.patch +# Missing includes for compiling with gcc 15 +# https://github.com/root-project/root/pull/17510 +Patch13: %{name}-llvm-project-Backport-fix-for-compilation-issue-with.patch +# Fix out of bounds errors reported with gcc 15 +# https://github.com/root-project/root/pull/17551 +Patch14: %{name}-Fix-out-of-bounds-error-in-pyroot.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1975,6 +1991,12 @@ This package contains utility functions for ntuples. %patch -P6 -p1 %patch -P7 -p1 %patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 +%patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1 +%patch -P14 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2558,12 +2580,12 @@ test-webgui-ping" # 0u # Which is: 0 # -# test-stressgraphics-firefox-skip3d: -# requires firefox... -# # gtest-tree-treeplayer-treetreeplayertestUnit: # segmentation fault # +# test-stressgraphics-firefox-skip3d: +# requires firefox... +# # tutorial-webcanv-fonts_ttf.cxx: # Requires web graphics # @@ -2574,8 +2596,8 @@ test-webgui-ping" # import xgboost as xgb excluded="${excluded}|\ gtest-roofit-roofit-vectorisedPDFs-testLandau|\ -test-stressgraphics-firefox-skip3d|\ gtest-tree-treeplayer-treetreeplayertestUnit|\ +test-stressgraphics-firefox-skip3d|\ tutorial-webcanv-fonts_ttf.cxx|\ tutorial-roofit-rf617_simulation_based_inference_multidimensional-py|\ tutorial-roofit-rf618_mixture_models-py" @@ -2607,20 +2629,18 @@ excluded="${excluded}|\ gtest-tree-dataframe-dataframe-concurrency" %endif -%ifarch aarch64 -# - tutorial-tmva-RBatchGenerator_filters_vectors-py -# Randomly segfaults -# *** Break *** segmentation violation -excluded="${excluded}|\ -tutorial-tmva-RBatchGenerator_filters_vectors-py" -%endif - %ifarch %{power64} # - tutorial-roostats-IntervalExamples-py # *** Break *** segmentation violation excluded="${excluded}|\ -gtest-tree-ntuple-v7-ntuple-evolution|\ tutorial-roostats-IntervalExamples-py" + +%if %{?fedora}%{!?fedora:0} >= 42 +# - gtest-tree-ntuple-v7-ntuple-evolution +# waitpid() failed +excluded="${excluded}|\ +gtest-tree-ntuple-v7-ntuple-evolution" +%endif %endif %ifarch s390x @@ -2649,8 +2669,8 @@ gtest-roofit-roofitcore-testLikelihoodGradientJob" # - gtest-tree-ntuple-v7-ntuple-multi-column # - gtest-tree-ntuple-v7-ntuple-packing # - gtest-tree-ntuple-v7-ntuple-parallel-writer -# - gtest-tree-ntuple-v7-ntuple-project # - gtest-tree-ntuple-v7-ntuple-processor +# - gtest-tree-ntuple-v7-ntuple-project # - gtest-tree-ntuple-v7-ntuple-show # - gtest-tree-ntuple-v7-ntuple-storage # - gtest-tree-ntuple-v7-ntuple-storage-daos @@ -2700,8 +2720,8 @@ gtest-tree-ntuple-v7-ntuple-modelext|\ gtest-tree-ntuple-v7-ntuple-multi-column|\ gtest-tree-ntuple-v7-ntuple-packing|\ gtest-tree-ntuple-v7-ntuple-parallel-writer|\ -gtest-tree-ntuple-v7-ntuple-project|\ gtest-tree-ntuple-v7-ntuple-processor|\ +gtest-tree-ntuple-v7-ntuple-project|\ gtest-tree-ntuple-v7-ntuple-show|\ gtest-tree-ntuple-v7-ntuple-storage\$\$|\ gtest-tree-ntuple-v7-ntuple-storage-daos|\ @@ -2737,6 +2757,16 @@ excluded="${excluded}|\ gtest-math-matrix-testMatrixTSparse" %endif +%if %{?fedora}%{!?fedora:0} >= 42 +# Fail with gcc 15 due to changes in std::hash templates +# - tutorial-roofit-*-py +# - tutorial-roostats-*-py +# https://github.com/root-project/root/issues/17456 +excluded="${excluded}|\ +tutorial-roofit-.*-py|\ +tutorial-roostats-.*-py" +%endif + # Filter out parts of tests that require remote network access # RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) # TClingDataMemberInfo.Offset fails on s390x @@ -3659,6 +3689,11 @@ fi %endif %changelog +* Fri Jan 31 2025 Mattias Ellert - 6.34.02-5 +- Apply patches to fix build with gcc 15 +- Enable roofit-multiprocess for EPEL 10 (dependencies available) +- Rebuild for pythia8 8.3.13 + * Sat Jan 18 2025 Fedora Release Engineering - 6.34.02-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 02870ffba16dcadae0a4e149a4f2c191057c4592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sat, 1 Feb 2025 19:57:12 +0100 Subject: [PATCH 56/89] Add explicit BR: libxcrypt-devel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Björn Esser --- root.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 8e8b13f..54165c3 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 6%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -143,6 +143,7 @@ BuildRequires: unixODBC-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel BuildRequires: libpq-devel +BuildRequires: libxcrypt-devel BuildRequires: python%{python3_pkgversion}-devel >= 3.7 BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy @@ -3689,6 +3690,9 @@ fi %endif %changelog +* Sat Feb 01 2025 Björn Esser - 6.34.02-6 +- Add explicit BR: libxcrypt-devel + * Fri Jan 31 2025 Mattias Ellert - 6.34.02-5 - Apply patches to fix build with gcc 15 - Enable roofit-multiprocess for EPEL 10 (dependencies available) From b1bbc0fadf36cb3c461617b215a41f7b8ea1a0ed Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Sun, 2 Feb 2025 13:48:38 -0700 Subject: [PATCH 57/89] Rebuild with gsl 2.8 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 54165c3..78298b2 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 6%{?dist} +Release: 7%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3690,6 +3690,9 @@ fi %endif %changelog +* Sun Feb 02 2025 Orion Poplawski - 6.34.02-7 +- Rebuild with gsl 2.8 + * Sat Feb 01 2025 Björn Esser - 6.34.02-6 - Add explicit BR: libxcrypt-devel From 71b6707207dd15f30022c8f640b747cd2c999095 Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Thu, 13 Feb 2025 21:44:04 -0500 Subject: [PATCH 58/89] Rebuilt for libarrow 19 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 78298b2..cf6ddbd 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 7%{?dist} +Release: 8%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3690,6 +3690,9 @@ fi %endif %changelog +* Fri Feb 14 2025 Benjamin A. Beasley - 6.34.02-8 +- Rebuilt for libarrow 19 + * Sun Feb 02 2025 Orion Poplawski - 6.34.02-7 - Rebuild with gsl 2.8 From 40be88f67c48e55030b894eaaf0b7ee5d8f5ea89 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 14 Feb 2025 22:05:06 +0100 Subject: [PATCH 59/89] Update to 6.34.04 Drop patches accepted upstream or previously backported --- root-Add-a-missing-include-to-RTensor.patch | 26 ------ ...ing-include-to-RVirtualCanvasPainter.patch | 26 ------ root-Fix-compilation-on-s390x.patch | 38 --------- root-Make-DCLAD_SOURCE_DIR-option-work.patch | 66 ---------------- ...-and-conflicting-function-declaratio.patch | 44 ----------- ...kport-fix-for-compilation-issue-with.patch | 41 ---------- root-tmva-sofie-Fix-Tile-operator.patch | 79 ------------------- root.spec | 46 +++-------- sources | 2 +- 9 files changed, 14 insertions(+), 354 deletions(-) delete mode 100644 root-Add-a-missing-include-to-RTensor.patch delete mode 100644 root-Add-a-missing-include-to-RVirtualCanvasPainter.patch delete mode 100644 root-Fix-compilation-on-s390x.patch delete mode 100644 root-Make-DCLAD_SOURCE_DIR-option-work.patch delete mode 100644 root-Remove-redundant-and-conflicting-function-declaratio.patch delete mode 100644 root-llvm-project-Backport-fix-for-compilation-issue-with.patch delete mode 100644 root-tmva-sofie-Fix-Tile-operator.patch diff --git a/root-Add-a-missing-include-to-RTensor.patch b/root-Add-a-missing-include-to-RTensor.patch deleted file mode 100644 index e5fbd5b..0000000 --- a/root-Add-a-missing-include-to-RTensor.patch +++ /dev/null @@ -1,26 +0,0 @@ -From cfc922131c8a977e14c6611ed991f0889b0c47c8 Mon Sep 17 00:00:00 2001 -From: Stephan Hageboeck -Date: Fri, 17 Jan 2025 10:35:37 +0100 -Subject: [PATCH 2/2] Add a missing include to RTensor. - -In gcc-15, needs to be included to use fixed-size integer -types. ---- - tmva/tmva/inc/TMVA/RTensor.hxx | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tmva/tmva/inc/TMVA/RTensor.hxx b/tmva/tmva/inc/TMVA/RTensor.hxx -index ad152f219a..795cc70689 100644 ---- a/tmva/tmva/inc/TMVA/RTensor.hxx -+++ b/tmva/tmva/inc/TMVA/RTensor.hxx -@@ -3,6 +3,7 @@ - - #include - #include // std::size_t -+#include - #include // std::runtime_error - #include // std::stringstream - #include // std::shared_ptr --- -2.48.0 - diff --git a/root-Add-a-missing-include-to-RVirtualCanvasPainter.patch b/root-Add-a-missing-include-to-RVirtualCanvasPainter.patch deleted file mode 100644 index 4acfae1..0000000 --- a/root-Add-a-missing-include-to-RVirtualCanvasPainter.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 2884f67f5a145ef5d2ba1f8050b2b1a543d97881 Mon Sep 17 00:00:00 2001 -From: Stephan Hageboeck -Date: Fri, 17 Jan 2025 10:32:04 +0100 -Subject: [PATCH 1/2] Add a missing include to RVirtualCanvasPainter. - -In gcc-15, needs to be included when fixed-size integer types -are used. ---- - graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx b/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx -index be2a467280..f5f255ec48 100644 ---- a/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx -+++ b/graf2d/gpadv7/inc/ROOT/RVirtualCanvasPainter.hxx -@@ -9,6 +9,7 @@ - #ifndef ROOT7_RVirtualCanvasPainter - #define ROOT7_RVirtualCanvasPainter - -+#include - #include - #include - #include --- -2.48.0 - diff --git a/root-Fix-compilation-on-s390x.patch b/root-Fix-compilation-on-s390x.patch deleted file mode 100644 index be89d3f..0000000 --- a/root-Fix-compilation-on-s390x.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 67e3b45b5d346a779533636397e28b1c48a21070 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 16 Dec 2024 15:32:21 +0100 -Subject: [PATCH] Fix compilation on s390x - -There were changes to the code but the big endian code was not updated -to match the changes in the little endian code. ---- - tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -index 81a4b23697..1415e06e0f 100644 ---- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -+++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx -@@ -131,9 +131,9 @@ std::shared_ptr GetInitializedTensorData(onnx::TensorProto * tensorproto, - #ifdef R__BYTESWAP - std::memcpy(data.get(), tensorproto->raw_data().c_str(), length * sizeof(T)); - #else -- for (std::size_t k = 0; k < fLength; ++k) -- (reinterpret_cast(data.get()))[k] = -- Rbswap_32((reinterpret_cast(tensorproto->raw_data().c_str()))[k]); -+ for (std::size_t k = 0; k < length; ++k) -+ (reinterpret_cast::value_type *>(data.get()))[k] = -+ RByteSwap::bswap((reinterpret_cast::value_type *>(tensorproto->raw_data().c_str()))[k]); - #endif - } else { - ExtractDataFromTP::Copy(tensorproto, data.get()); -@@ -628,4 +628,4 @@ void RModelParser_ONNX::ParseONNXGraph(RModel & rmodel, const onnx::GraphProto & - - } // namespace SOFIE - } // namespace Experimental --} // namespace TMVA -\ No newline at end of file -+} // namespace TMVA --- -2.47.1 - diff --git a/root-Make-DCLAD_SOURCE_DIR-option-work.patch b/root-Make-DCLAD_SOURCE_DIR-option-work.patch deleted file mode 100644 index a4aaada..0000000 --- a/root-Make-DCLAD_SOURCE_DIR-option-work.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 7d5ae0dcfbf770cc3943cc25283bf2d39329d9f3 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Mon, 16 Dec 2024 15:48:42 +0100 -Subject: [PATCH] Make -DCLAD_SOURCE_DIR option work - -Using the -DCLAD_SOURCE_DIR currently does not disable the git checkout. -From the cmake documentation for ExternalProject_Add: - -Note: If a download method is specified, any existing contents of the -source directory may be deleted. Only the URL download method checks -whether this directory is either missing or empty before initiating -the download, stopping with an error if it is not empty. All other -download methods silently discard any previous contents of the source -directory. - -Currently cmake deletes the source directory defined by --DCLAD_SOURCE_DIR and then tries to recreate it using a git checkout, -but fails if there is no network available: - -Cloning into 'clad-1.7'... -fatal: unable to access 'https://github.com/vgvassilev/clad.git/': Could not resolve host: github.com -Cloning into 'clad-1.7'... -fatal: unable to access 'https://github.com/vgvassilev/clad.git/': Could not resolve host: github.com -Cloning into 'clad-1.7'... -fatal: unable to access 'https://github.com/vgvassilev/clad.git/': Could not resolve host: github.com -Had to git clone more than once: 3 times. -CMake Error at redhat-linux-build/interpreter/cling/tools/plugins/clad/clad-prefix/tmp/clad-gitclone.cmake:50 (message): - Failed to clone repository: 'https://github.com/vgvassilev/clad.git' - -The attempt to disable the git checkout by setting the -DOWNLOAD_COMMAND option to an empty string is not working. - -This commit fixes the issue by only defining the GIT_REPOSITORY and -GIT_TAG options when CLAD_SOURCE_DIR is not defined. ---- - interpreter/cling/tools/plugins/clad/CMakeLists.txt | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/interpreter/cling/tools/plugins/clad/CMakeLists.txt b/interpreter/cling/tools/plugins/clad/CMakeLists.txt -index ba5f09786c..3c70d00a10 100644 ---- a/interpreter/cling/tools/plugins/clad/CMakeLists.txt -+++ b/interpreter/cling/tools/plugins/clad/CMakeLists.txt -@@ -68,8 +68,10 @@ set(_clad_extra_settings - # If the CLAD_SOURCE_DIR variable is defined in the CMake configuration, we're - # skipping the download of the repository and use the passed directory. - if (DEFINED CLAD_SOURCE_DIR) -- list(APPEND _clad_extra_settings DOWNLOAD_COMMAND "") - list(APPEND _clad_extra_settings SOURCE_DIR ${CLAD_SOURCE_DIR}) -+else() -+ list(APPEND _clad_extra_settings GIT_REPOSITORY https://github.com/vgvassilev/clad.git) -+ list(APPEND _clad_extra_settings GIT_TAG v1.7) - endif() - - #list(APPEND _clad_patches_list "patch1.patch" "patch2.patch") -@@ -82,8 +84,6 @@ endif() - - ExternalProject_Add( - clad -- GIT_REPOSITORY https://github.com/vgvassilev/clad.git -- GIT_TAG v1.7 - UPDATE_COMMAND "" - PATCH_COMMAND ${_clad_patch_command} - CMAKE_ARGS -G ${CMAKE_GENERATOR} --- -2.47.1 - diff --git a/root-Remove-redundant-and-conflicting-function-declaratio.patch b/root-Remove-redundant-and-conflicting-function-declaratio.patch deleted file mode 100644 index 54a9e32..0000000 --- a/root-Remove-redundant-and-conflicting-function-declaratio.patch +++ /dev/null @@ -1,44 +0,0 @@ -From d28f5ac3a6947e13b30325bc2b373cff2fcda276 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Sun, 19 Jan 2025 13:57:25 +0100 -Subject: [PATCH] Remove redundant (and conflicting) function declarations - -The function fchtak() is implemented earlier in the same file. There -is therefore no need to declare the function later in the same file. -The later declarations redefines the function with an empty parameter -list, which conflicts with the original definition. - -The function stat() is defined by including . The -following daclaration redefines the function with an empty parameter -list, which conflicts with the original definition. ---- - misc/minicern/src/cernlib.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/misc/minicern/src/cernlib.c b/misc/minicern/src/cernlib.c -index b882db2d90..98f7282ce6 100644 ---- a/misc/minicern/src/cernlib.c -+++ b/misc/minicern/src/cernlib.c -@@ -172,8 +172,8 @@ int cfstati_(char *fname, int *info, int *lgname) - #endif - { - struct stat buf; -- char *ptname, *fchtak(); -- int istat=-1, stat(); -+ char *ptname; -+ int istat = -1; - ptname = fchtak(fname,*lgname); - if (ptname == ((void *)0)) return -1; - istat = stat(ptname, &buf); -@@ -226,7 +226,7 @@ void cfopei_(int *lundes, int *medium, int *nwrec, int *mode, int *nbuf, - char *ftext, int *astat, int *lgtx) - #endif - { -- char *pttext, *fchtak(); -+ char *pttext; - int flags = 0; - int fildes; - int perm; --- -2.48.1 - diff --git a/root-llvm-project-Backport-fix-for-compilation-issue-with.patch b/root-llvm-project-Backport-fix-for-compilation-issue-with.patch deleted file mode 100644 index c51d4d3..0000000 --- a/root-llvm-project-Backport-fix-for-compilation-issue-with.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 60da0f7f5971c86407898408abf540c5a43d2d10 Mon Sep 17 00:00:00 2001 -From: Devajith Valaparambil Sreeramaswamy - -Date: Fri, 24 Jan 2025 09:36:13 +0100 -Subject: [PATCH] [llvm-project] Backport fix for compilation issue with gcc-15 - -Update the LLVM tag with the following commits: -2468812ca0d9 UPSTREAM: Add missing include to X86MCTargetDesc.h (#123320) -ed4f96704966 UPSTREAM: [ADT] Add `` to SmallVector (#101761) ---- - interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h | 1 + - .../llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h b/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h -index 09676d792d..17444147b1 100644 ---- a/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h -+++ b/interpreter/llvm-project/llvm/include/llvm/ADT/SmallVector.h -@@ -19,6 +19,7 @@ - #include - #include - #include -+#include - #include - #include - #include -diff --git a/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h b/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h -index 437a7bd6ff..fd7d794849 100644 ---- a/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h -+++ b/interpreter/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h -@@ -13,6 +13,7 @@ - #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H - #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H - -+#include - #include - #include - --- -2.48.1 - diff --git a/root-tmva-sofie-Fix-Tile-operator.patch b/root-tmva-sofie-Fix-Tile-operator.patch deleted file mode 100644 index 1bf2667..0000000 --- a/root-tmva-sofie-Fix-Tile-operator.patch +++ /dev/null @@ -1,79 +0,0 @@ -From ef1f3bba9059cd2e61d7de5f46fbfc26c4746ebc Mon Sep 17 00:00:00 2001 -From: moneta -Date: Thu, 19 Dec 2024 15:22:37 +0100 -Subject: [PATCH] [tmva][sofie] Fix Tile operator - -Fix the casting of the input repeats vector data of the Tile operator. -The type of data should be int64_t and not size_t -The previous code could have some issue when the size of size_t is 32 bits ---- - tmva/sofie/inc/TMVA/ROperator_Tile.hxx | 31 ++++++++++++++++---------- - 1 file changed, 19 insertions(+), 12 deletions(-) - -diff --git a/tmva/sofie/inc/TMVA/ROperator_Tile.hxx b/tmva/sofie/inc/TMVA/ROperator_Tile.hxx -index 869cd55d9a439..3686db1e0914a 100644 ---- a/tmva/sofie/inc/TMVA/ROperator_Tile.hxx -+++ b/tmva/sofie/inc/TMVA/ROperator_Tile.hxx -@@ -51,12 +51,17 @@ public: - } - fShapeInput=model.GetTensorShape(fNInput); - -- // Retrieve the data pointer for the repeats tensor -+ // if repeats vector is not initialized we cannot deduce shape of output -+ // not support for time being this case -+ if (!model.IsInitializedTensor(fNRepeats)) { -+ throw std::runtime_error("TMVA SOFIE Tile Op: non-initialized repeats input is not supported"); -+ } -+ -+ // Retrieve the data pointer for the repeats tensor - auto repptr = model.GetInitializedTensorData(fNRepeats); - // Cast the raw pointer to the appropriate type (size_t*) -- auto repeat_shape = static_cast(repptr.get()); -- -- if (repeat_shape == nullptr) { -+ auto repeats_data = static_cast(repptr.get()); -+ if (repeats_data == nullptr) { - throw std::runtime_error("Failed to retrieve the data for the repeats tensor."); - } - // Get the shape of the repeats tensor to determine the number of elements -@@ -66,12 +71,18 @@ public: - throw std::runtime_error("Repeats tensor is not 1D."); - } - size_t num_elements = repeats_shape[0]; -- // Convert the data to a vector -- std::vector repeats_vector(repeat_shape, repeat_shape + num_elements); -+ // Convert the data to a vector of size_t -+ std::vector repeats_vector(num_elements); -+ std::copy(repeats_data, repeats_data + num_elements, repeats_vector.begin()); -+ - - fShapeY = ShapeInference({fShapeInput,repeats_vector})[0]; - - model.AddIntermediateTensor(fNY, model.GetTensorType(fNInput), fShapeY); -+ -+ if (model.Verbose()) -+ std::cout << "Tile: " << fNInput << " " << ConvertShapeToString(fShapeInput) << " -> " << fNY << " with shape " << ConvertShapeToString(fShapeY) -+ << " given repeats " << ConvertShapeToString(repeats_vector) << std::endl; - } - - std::string Generate(std::string OpName){ -@@ -89,17 +100,13 @@ public: - std::string output = "tensor_" + fNY; - out << "///-------- Tile operator\n"; - out << "{\n"; // add scope to re-use same names -- out << "std::vector input_shape = " << ConvertShapeToString(fShapeInput) << ";\n"; -- std::vector repeats = fShapeY; -- for (size_t i = 0; i < repeats.size(); i++) -- repeats[i] /= fShapeInput[i]; -+ out << "const int input_shape[" << fShapeInput.size() << "] = " << ConvertShapeToString(fShapeInput) << ";\n"; - -- out << "std::vector repeats = " << ConvertShapeToString(repeats) << ";\n"; - out << "int inputLength = " << ConvertShapeToLength(fShapeInput) << ";\n"; - out << "int s = 1;\n"; - // loop from inverse dim order - out << "for (int i = " << fShapeInput.size()-1 << "; i >=0; i--) {\n"; -- out << SP << "int r = repeats[i];\n"; -+ out << SP << "int r = tensor_" << fNRepeats << "[i];\n"; - // we cannot exclude case where repeats=1 since we need offset - //out << SP << "if (r == 1 && i < " << fShapeInput.size()-1 << ") continue;\n"; - out << SP << "int i_offset = 0, o_offset = 0;\n"; diff --git a/root.spec b/root.spec index cf6ddbd..4629e7d 100644 --- a/root.spec +++ b/root.spec @@ -37,9 +37,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.34.02 +Version: 6.34.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 8%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -77,34 +77,15 @@ Patch2: %{name}-dont-install-minicern.patch Patch3: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled Patch4: %{name}-32bit-tests.patch -# Fix compilation of TMVA SOFIE parser on s390x -# https://github.com/root-project/root/pull/17307 -Patch5: %{name}-Fix-compilation-on-s390x.patch -# Make -DCLAD_SOURCE_DIR option work -# https://github.com/root-project/root/pull/17308 -Patch6: %{name}-Make-DCLAD_SOURCE_DIR-option-work.patch -# Fix segmentation fault during testing on ix86 -# https://github.com/root-project/root/pull/17314 -Patch7: %{name}-tmva-sofie-Fix-Tile-operator.patch # Adjust test/stressGraphics.ref # https://github.com/root-project/root/pull/17398 -Patch8: %{name}-Adjust-test-stressGraphics.ref.patch +Patch5: %{name}-Adjust-test-stressGraphics.ref.patch # Fix out of bounds error reported with gcc 15 # https://github.com/root-project/root/pull/17249 -Patch9: %{name}-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch -# Missing includes for compiling with gcc 15 -# https://github.com/root-project/root/pull/17443 -Patch10: %{name}-Add-a-missing-include-to-RVirtualCanvasPainter.patch -Patch11: %{name}-Add-a-missing-include-to-RTensor.patch -# Conflicting declarations (gcc 15) -# https://github.com/root-project/root/pull/17455 -Patch12: %{name}-Remove-redundant-and-conflicting-function-declaratio.patch -# Missing includes for compiling with gcc 15 -# https://github.com/root-project/root/pull/17510 -Patch13: %{name}-llvm-project-Backport-fix-for-compilation-issue-with.patch +Patch6: %{name}-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch # Fix out of bounds errors reported with gcc 15 # https://github.com/root-project/root/pull/17551 -Patch14: %{name}-Fix-out-of-bounds-error-in-pyroot.patch +Patch7: %{name}-Fix-out-of-bounds-error-in-pyroot.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -143,7 +124,7 @@ BuildRequires: unixODBC-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel BuildRequires: libpq-devel -BuildRequires: libxcrypt-devel +BuildRequires: libxcrypt-devel BuildRequires: python%{python3_pkgversion}-devel >= 3.7 BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy @@ -1991,13 +1972,6 @@ This package contains utility functions for ntuples. %patch -P5 -p1 %patch -P6 -p1 %patch -P7 -p1 -%patch -P8 -p1 -%patch -P9 -p1 -%patch -P10 -p1 -%patch -P11 -p1 -%patch -P12 -p1 -%patch -P13 -p1 -%patch -P14 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2581,8 +2555,9 @@ test-webgui-ping" # 0u # Which is: 0 # +# gtest-tree-treeplayer-ttreeindex-clone # gtest-tree-treeplayer-treetreeplayertestUnit: -# segmentation fault +# Randomly fail - can't open file that was just created - race condition? # # test-stressgraphics-firefox-skip3d: # requires firefox... @@ -2597,6 +2572,7 @@ test-webgui-ping" # import xgboost as xgb excluded="${excluded}|\ gtest-roofit-roofit-vectorisedPDFs-testLandau|\ +gtest-tree-treeplayer-ttreeindex-clone|\ gtest-tree-treeplayer-treetreeplayertestUnit|\ test-stressgraphics-firefox-skip3d|\ tutorial-webcanv-fonts_ttf.cxx|\ @@ -3690,6 +3666,10 @@ fi %endif %changelog +* Fri Feb 14 2025 Mattias Ellert - 6.34.04-1 +- Update to 6.34.04 +- Drop patches accepted upstream or previously backported + * Fri Feb 14 2025 Benjamin A. Beasley - 6.34.02-8 - Rebuilt for libarrow 19 diff --git a/sources b/sources index c6afe84..4269611 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.34.02.tar.xz) = 565218eb073ecec509851c99c9ac018bb9de1abae4be023fe2862e28aa967a4a353d77fce1b8173fea87ed17b943bcd2bbce69a55573a1686f138a6495612fa5 +SHA512 (root-6.34.04.tar.xz) = fc13e3efc6254b817f48c0009e70943890f8e6b10efcee54c4113293ded1b0e202e3ef635e2150e5f359da6426c6a48b4456dfe7900740b7beaa73c23fa69fb7 SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f SHA512 (clad-1.7.tar.gz) = ff9856ed4901625b4c31bc4b5ac97f464667f58c567caaab8b2a2567de4e0908ff0fffbb566fe728fc6184d3d6bc156bbabacf24d83009e36b2956d535171066 From 450c67721aa4e1fa7cf2955ef73414d4aede4c8a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 19 Feb 2025 08:36:52 +0100 Subject: [PATCH 60/89] Fix roofit/roostats test failures with gcc 15 --- ...h_not_enabled-to-names-from-std-name.patch | 35 +++++++++++++++++++ root.spec | 19 +++++----- 2 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch diff --git a/root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch b/root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch new file mode 100644 index 0000000..0b2803d --- /dev/null +++ b/root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch @@ -0,0 +1,35 @@ +From 3280847501bfb354a3a9ff1e023c8fd3b74548f4 Mon Sep 17 00:00:00 2001 +From: Stephan Hageboeck +Date: Wed, 12 Feb 2025 14:42:43 +0100 +Subject: [PATCH] [PyROOT] Add __hash_not_enabled to names from std namespace. + +With gcc-15, the lookups of std::hash lead to the following error: +input_line_50:1:16: error: explicit instantiation of 'std::__hash_not_enabled' + must occur in namespace 'std' +template class __hash_not_enabled; + +Adding this class to the list of names that require "std::" fixes the +error. + +Fix #17456. +--- + .../cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx +index 3aa6704a0b..08972d1460 100644 +--- a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx ++++ b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx +@@ -275,7 +275,8 @@ public: + "slice_array", "slice", "stack", "string", "strstream", "strstreambuf", + "time_get_byname", "time_get", "time_put_byname", "time_put", "unary_function", + "unary_negate", "unique_ptr", "underflow_error", "unordered_map", "unordered_multimap", +- "unordered_multiset", "unordered_set", "valarray", "vector", "weak_ptr", "wstring"}; ++ "unordered_multiset", "unordered_set", "valarray", "vector", "weak_ptr", "wstring", ++ "__hash_not_enabled"}; + for (auto& name : stl_names) + gSTLNames.insert(name); + +-- +2.48.1 + diff --git a/root.spec b/root.spec index 4629e7d..1d622b4 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -86,6 +86,9 @@ Patch6: %{name}-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch # Fix out of bounds errors reported with gcc 15 # https://github.com/root-project/root/pull/17551 Patch7: %{name}-Fix-out-of-bounds-error-in-pyroot.patch +# Fix roofit/roostats test failures with gcc 15 +# https://github.com/root-project/root/pull/17702 +Patch8: %{name}-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1972,6 +1975,7 @@ This package contains utility functions for ntuples. %patch -P5 -p1 %patch -P6 -p1 %patch -P7 -p1 +%patch -P8 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2734,16 +2738,6 @@ excluded="${excluded}|\ gtest-math-matrix-testMatrixTSparse" %endif -%if %{?fedora}%{!?fedora:0} >= 42 -# Fail with gcc 15 due to changes in std::hash templates -# - tutorial-roofit-*-py -# - tutorial-roostats-*-py -# https://github.com/root-project/root/issues/17456 -excluded="${excluded}|\ -tutorial-roofit-.*-py|\ -tutorial-roostats-.*-py" -%endif - # Filter out parts of tests that require remote network access # RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) # TClingDataMemberInfo.Offset fails on s390x @@ -3666,6 +3660,9 @@ fi %endif %changelog +* Wed Feb 19 2025 Mattias Ellert - 6.34.04-2 +- Fix roofit/roostats test failures with gcc 15 + * Fri Feb 14 2025 Mattias Ellert - 6.34.04-1 - Update to 6.34.04 - Drop patches accepted upstream or previously backported From fe8a030c521f75f6d2ff98536c1ac92b4287b89a Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 31 Mar 2025 15:19:04 +0200 Subject: [PATCH 61/89] Update to 6.34.06 Drop patches accepted upstream or previously backported --- root-Fix-out-of-bounds-error-in-pyroot.patch | 52 ---------------- ...h_not_enabled-to-names-from-std-name.patch | 35 ----------- ...h-the-geometries-from-EOS-and-not-fr.patch | 60 +++++++++++++++++++ ...x-Debug-Assertion-Failure-in-libGpad.patch | 30 ---------- root-testfiles.sh | 7 --- root.spec | 52 ++++------------ sources | 4 +- 7 files changed, 73 insertions(+), 167 deletions(-) delete mode 100644 root-Fix-out-of-bounds-error-in-pyroot.patch delete mode 100644 root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch create mode 100644 root-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch delete mode 100644 root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch diff --git a/root-Fix-out-of-bounds-error-in-pyroot.patch b/root-Fix-out-of-bounds-error-in-pyroot.patch deleted file mode 100644 index 4a1611e..0000000 --- a/root-Fix-out-of-bounds-error-in-pyroot.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 4bece824e886f84b7b05e08baea3762d02f892d6 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 29 Jan 2025 00:31:31 +0100 -Subject: [PATCH] Fix out-of-bounds error in pyroot - - 526/1416 Test #63: pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-tf-pycallables ..........................***Failed 75.51 sec -test_callable (tf_pycallables.TF1.test_callable) -Test function provided as callable ... /usr/include/c++/15/bits/stl_bvector.h:1134: std::vector::reference std::vector::operator[](size_type) [with _Alloc = std::allocator; reference = std::vector::reference; size_type = long unsigned int]: Assertion '__n < this->size()' failed. - *** Break *** abort - -=========================================================== -The lines below might hint at the cause of the crash. If you see question -marks as part of the stack trace, try to recompile with debugging information -enabled and export CLING_DEBUG=1 environment variable before running. -You may get help by asking at the ROOT forum https://root.cern/forum -preferably using the command (.forum bug) in the ROOT prompt. -Only if you are really convinced it is a bug in ROOT then please submit a -report at https://root.cern/bugs or (preferably) using the command (.gh bug) in -the ROOT prompt. Please post the ENTIRE stack trace -from above as an attachment in addition to anything else -that might help us fixing this issue. -=========================================================== - #10 0x00007f6bcac7fea4 in __pthread_kill_implementation () from /lib64/libc.so.6 - #11 0x00007f6bcac264de in raise () from /lib64/libc.so.6 - #12 0x00007f6bcac0e350 in abort () from /lib64/libc.so.6 - #13 0x00007f6bc9a0be02 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) () from /lib64/libstdc++.so.6 - #14 0x00007f6bb9b15257 in std::vector >::operator[](unsigned long) [clone .part.0] [clone .lto_priv.0] (__n=, this=) at /usr/include/c++/15/bits/stl_bvector.h:1134 - #15 0x00007f6bb9bab976 in std::vector >::operator[] (this=, __n=0) at /usr/include/c++/15/bits/stl_bvector.h:201 - #16 CPyCppyy::Utility::ConstructCallbackPreamble (retType="Double_t", argtypes=..., code=Python Exception : list index out of range - #17 0x00007f6bb9b389e0 in PyFunction_AsCPointer (pyobject=, pyobject -entry=0x7f6bb8f838c0, rettype="Double_t", signature="(Double_t*,Double_t*)") at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2713 - #18 0x00007f6bb9b39851 in CPyCppyy::(anonymous namespace)::FunctionPointerConverter::SetArg (this=0x55eb25d61d40, pyobject=0x7f6bb8f838c0, para=..., ctxt=0x7ffc484855c0) at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2768 ---- - bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx -index 7cfb76032a..2741caeb32 100644 ---- a/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx -+++ b/bindings/pyroot/cppyy/CPyCppyy/src/Utility.cxx -@@ -645,7 +645,7 @@ void CPyCppyy::Utility::ConstructCallbackPreamble(const std::string& retType, - << retType << "\"), CPyCppyy::DestroyConverter};\n"; - std::vector arg_is_ptr; - if (nArgs) { -- arg_is_ptr.reserve(nArgs); -+ arg_is_ptr.resize(nArgs); - code << " CPYCPPYY_STATIC std::vector>> argcvs;\n" - << " if (argcvs.empty()) {\n" - << " argcvs.reserve(" << nArgs << ");\n"; --- -2.48.1 - diff --git a/root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch b/root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch deleted file mode 100644 index 0b2803d..0000000 --- a/root-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 3280847501bfb354a3a9ff1e023c8fd3b74548f4 Mon Sep 17 00:00:00 2001 -From: Stephan Hageboeck -Date: Wed, 12 Feb 2025 14:42:43 +0100 -Subject: [PATCH] [PyROOT] Add __hash_not_enabled to names from std namespace. - -With gcc-15, the lookups of std::hash lead to the following error: -input_line_50:1:16: error: explicit instantiation of 'std::__hash_not_enabled' - must occur in namespace 'std' -template class __hash_not_enabled; - -Adding this class to the list of names that require "std::" fixes the -error. - -Fix #17456. ---- - .../cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx -index 3aa6704a0b..08972d1460 100644 ---- a/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx -+++ b/bindings/pyroot/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx -@@ -275,7 +275,8 @@ public: - "slice_array", "slice", "stack", "string", "strstream", "strstreambuf", - "time_get_byname", "time_get", "time_put_byname", "time_put", "unary_function", - "unary_negate", "unique_ptr", "underflow_error", "unordered_map", "unordered_multimap", -- "unordered_multiset", "unordered_set", "valarray", "vector", "weak_ptr", "wstring"}; -+ "unordered_multiset", "unordered_set", "valarray", "vector", "weak_ptr", "wstring", -+ "__hash_not_enabled"}; - for (auto& name : stl_names) - gSTLNames.insert(name); - --- -2.48.1 - diff --git a/root-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch b/root-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch new file mode 100644 index 0000000..a45ae41 --- /dev/null +++ b/root-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch @@ -0,0 +1,60 @@ +From 4da50ef374cd231163dff77493f9367cd62583d9 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 30 Mar 2025 21:23:14 +0200 +Subject: [PATCH] Revert "[test] Fetch the geometries from EOS and not from the + website" + +This reverts commit a8a879ce252e45405452db38d9178c7883582a7d. +--- + test/stressGeometry.cxx | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx +index 7fb6bf97e7..f8d78f4f54 100644 +--- a/test/stressGeometry.cxx ++++ b/test/stressGeometry.cxx +@@ -1,6 +1,6 @@ + // Program to check a TGeo geometry + // The first time you run this program, the geometry files will be taken +-// from /eos/root-eos/testfiles/ (previously from http://root.cern/files) ++// from http://root.cern/files + // + // How the program works + // If the file _ref.root does not exist, it is generated. The file +@@ -274,13 +274,13 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg + delete gGeoManager; + gGeoManager = 0; + } +- TGeoManager::Import(Form("root://eospublic.cern.ch//eos/root-eos/testfiles/%s",fname.Data())); ++ TGeoManager::Import(Form("http://root.cern/files/%s",fname.Data())); + if (!gGeoManager) return; + if (vecgeom) TVirtualGeoConverter::Instance()->ConvertGeometry(); + + fname = TString::Format("files/%s_ref_%d.root", exps[i],versions[i]); + +- if (gen_ref || !TFile::Open(Form("root://eospublic.cern.ch//eos/root-eos/testfiles//%s_ref_%d.root",exps[i],versions[i]),"CACHEREAD")) { ++ if (gen_ref || !TFile::Open(Form("http://root.cern/files/%s_ref_%d.root",exps[i],versions[i]),"CACHEREAD")) { + if (!gen_ref) fprintf(stderr,"File: %s does not exist, generating it\n", fname.Data()); + else fprintf(stderr,"Generating reference file %s\n", fname.Data()); + WriteRef(i); +@@ -320,7 +320,7 @@ void ReadRef(Int_t kexp) { + TFile *f = 0; + //use ref_[version[i]] files + if (!gen_ref) +- fname = TString::Format("root://eospublic.cern.ch//eos/root-eos/testfiles//%s_ref_%d.root", exps[kexp],versions[kexp]); ++ fname = TString::Format("http://root.cern/files/%s_ref_%d.root", exps[kexp],versions[kexp]); + else + fname.Format("files/%s_ref_%d.root", exps[kexp],versions[kexp]); + +@@ -546,7 +546,7 @@ void InspectDiff(const char* exp="alice",Long64_t ientry=-1) { + Float_t rad = 0.; + TString fname(TString::Format("%s.root",exp)); + if (gSystem->AccessPathName(fname)) { +- TGeoManager::Import(Form("root://eospublic.cern.ch//eos/root-eos/testfiles//%s",fname.Data())); ++ TGeoManager::Import(Form("http://root.cern/files/%s",fname.Data())); + } else { + TGeoManager::Import(fname); + } +-- +2.49.0 + diff --git a/root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch b/root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch deleted file mode 100644 index 2c2147a..0000000 --- a/root-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 456d5421706525974d4804e0e1a7880afd7df4fb Mon Sep 17 00:00:00 2001 -From: Bertrand Bellenot -Date: Wed, 11 Dec 2024 14:49:52 +0100 -Subject: [PATCH] [gpad] Fix Debug Assertion Failure in libGpad - -Fix the following error in Debug mode with Runtime Check on Windows: -Debug Assertion Failed! -Epression: vector subscript out of range ---- - graf2d/gpad/src/TPad.cxx | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/graf2d/gpad/src/TPad.cxx b/graf2d/gpad/src/TPad.cxx -index 9c907335f3..dd5abeba91 100644 ---- a/graf2d/gpad/src/TPad.cxx -+++ b/graf2d/gpad/src/TPad.cxx -@@ -3435,8 +3435,8 @@ void TPad::FillCollideGridTH1(TObject *o) - else y2l = fUymin; - } - y2 = (Int_t)((y2l-fY1)/ys); -- for (j=y1; j<=y2; j++) { -- NotFree(x1, j); -+ for (j=y1; jGetBinLowEdge(i); --- -2.48.1 - diff --git a/root-testfiles.sh b/root-testfiles.sh index db4d721..c2451e9 100755 --- a/root-testfiles.sh +++ b/root-testfiles.sh @@ -72,14 +72,7 @@ wget -N ${SITE}/tesla.root wget -N ${SITE}/wa91_ref_3.root wget -N ${SITE}/wa91.root -wget -N ${SITE}/AtlasGraphs.root wget -N ${SITE}/europe.root -wget -N ${SITE}/Higgs_data.root -wget -N ${SITE}/linearIO.root -wget -N ${SITE}/stressHistogram.5.18.00.root -wget -N ${SITE}/tmva_class_example.root -wget -N ${SITE}/tmva_multiclass_example.root -wget -N ${SITE}/tmva_reg_example.root wget -N ${SITE}/usa.root for f in *.root ; do ln -s $f $f.ROOT.cachefile ; done diff --git a/root.spec b/root.spec index 1d622b4..b54fbd5 100644 --- a/root.spec +++ b/root.spec @@ -37,9 +37,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.34.04 +Version: 6.34.06 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -80,22 +80,13 @@ Patch4: %{name}-32bit-tests.patch # Adjust test/stressGraphics.ref # https://github.com/root-project/root/pull/17398 Patch5: %{name}-Adjust-test-stressGraphics.ref.patch -# Fix out of bounds error reported with gcc 15 -# https://github.com/root-project/root/pull/17249 -Patch6: %{name}-gpad-Fix-Debug-Assertion-Failure-in-libGpad.patch -# Fix out of bounds errors reported with gcc 15 -# https://github.com/root-project/root/pull/17551 -Patch7: %{name}-Fix-out-of-bounds-error-in-pyroot.patch -# Fix roofit/roostats test failures with gcc 15 -# https://github.com/root-project/root/pull/17702 -Patch8: %{name}-PyROOT-Add-__hash_not_enabled-to-names-from-std-name.patch +# Revert test change that breaks the test +Patch6: %{name}-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: make -# root on Linux requires cmake 3.16 -# but 3.19 is needed for flexiblas support -BuildRequires: cmake >= 3.19 +BuildRequires: cmake >= 3.20 BuildRequires: libX11-devel BuildRequires: libXpm-devel BuildRequires: libXft-devel @@ -165,12 +156,7 @@ BuildRequires: flexiblas-devel %if ! %{bundlejson} BuildRequires: json-devel >= 3.9 %endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -# Disable uring in EPEL 8 (liburing is available, -# but uring not supported by the RHEL 8 kernel) -# Supported by the RHEL kernel since RHEL 9.3 BuildRequires: liburing-devel -%endif %if %{tmvasofieparser} BuildRequires: protobuf-devel >= 3.0 %endif @@ -848,9 +834,7 @@ from marked up sources. %package io Summary: Input/output of ROOT objects Requires: %{name}-core%{?_isa} = %{version}-%{release} -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 Requires: liburing-devel -%endif %description io This package provides I/O routines for ROOT objects. @@ -1974,8 +1958,6 @@ This package contains utility functions for ntuples. %patch -P4 -p1 %patch -P5 -p1 %patch -P6 -p1 -%patch -P7 -p1 -%patch -P8 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2181,11 +2163,7 @@ done -Dtpython:BOOL=ON \ -Dunfold:BOOL=ON \ -Dunuran:BOOL=ON \ -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 9 -During:BOOL=ON \ -%else - -During:BOOL=OFF \ -%endif -Dvc:BOOL=OFF \ -Dvdt:BOOL=OFF \ -Dveccore:BOOL=OFF \ @@ -2408,20 +2386,8 @@ ln -s ../../files files popd pushd runtutorials 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 -popd -pushd tmva/tmva/test -ln -s ../../../../files files -popd -pushd tmva/tmva/test/DNN -ln -s ../../../../../files files -popd -pushd tmva/tmva/test/envelope -ln -s ../../../../../files files +ln -s ../../files/tutorials/df014_CsvDataSource_MuRun2010B.csv CsvDataSource_MuRun2010B.csv +ln -s ../../files/usa.root usa.root popd # Exclude some tests that can not be run @@ -3660,6 +3626,10 @@ fi %endif %changelog +* Fri Mar 28 2025 Mattias Ellert - 6.34.06-1 +- Update to 6.34.06 +- Drop patches accepted upstream or previously backported + * Wed Feb 19 2025 Mattias Ellert - 6.34.04-2 - Fix roofit/roostats test failures with gcc 15 diff --git a/sources b/sources index 4269611..47e0594 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.34.04.tar.xz) = fc13e3efc6254b817f48c0009e70943890f8e6b10efcee54c4113293ded1b0e202e3ef635e2150e5f359da6426c6a48b4456dfe7900740b7beaa73c23fa69fb7 -SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f +SHA512 (root-6.34.06.tar.xz) = 9a22f8a143a8e23f2bfcd19bf23450e55359e9a73972450d25a0e4932cc11bd32473b5bd76c31ad0d1841d7767ccc3ffaf8ca02ef507384bb5fe1c21540144f6 +SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 SHA512 (clad-1.7.tar.gz) = ff9856ed4901625b4c31bc4b5ac97f464667f58c567caaab8b2a2567de4e0908ff0fffbb566fe728fc6184d3d6bc156bbabacf24d83009e36b2956d535171066 From 920e7b25758bfd961c166ae8a12445c4ed047d6b Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 17 Apr 2025 23:39:33 +0200 Subject: [PATCH 62/89] Update to 6.34.08 --- root.spec | 5 ++++- sources | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/root.spec b/root.spec index b54fbd5..0608aa9 100644 --- a/root.spec +++ b/root.spec @@ -37,7 +37,7 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.34.06 +Version: 6.34.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -3626,6 +3626,9 @@ fi %endif %changelog +* Thu Apr 17 2025 Mattias Ellert - 6.34.08-1 +- Update to 6.34.08 + * Fri Mar 28 2025 Mattias Ellert - 6.34.06-1 - Update to 6.34.06 - Drop patches accepted upstream or previously backported diff --git a/sources b/sources index 47e0594..99610a2 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.34.06.tar.xz) = 9a22f8a143a8e23f2bfcd19bf23450e55359e9a73972450d25a0e4932cc11bd32473b5bd76c31ad0d1841d7767ccc3ffaf8ca02ef507384bb5fe1c21540144f6 +SHA512 (root-6.34.08.tar.xz) = 58699d441555a82f9c2d00fc33719786bc5e4925060122f5e7fb46df28feec1d4047987b4badb20b19c484b13229b173bd110d25b1f3d426d70039847d879299 SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 SHA512 (clad-1.7.tar.gz) = ff9856ed4901625b4c31bc4b5ac97f464667f58c567caaab8b2a2567de4e0908ff0fffbb566fe728fc6184d3d6bc156bbabacf24d83009e36b2956d535171066 From aaf51a11c7f70455c6280e665fee7fe7ea282a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20=C3=9Acar?= Date: Fri, 18 Apr 2025 13:19:10 +0200 Subject: [PATCH 63/89] R-maint-sig mass rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 0608aa9..1115c26 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3626,6 +3626,9 @@ fi %endif %changelog +* Fri Apr 18 2025 Iñaki Úcar - 6.34.08-2 +- R-maint-sig mass rebuild + * Thu Apr 17 2025 Mattias Ellert - 6.34.08-1 - Update to 6.34.08 From ab1aa62b4549a46783007935c11fa3c5fc4a5c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20=C3=9Acar?= Date: Fri, 18 Apr 2025 20:42:27 +0200 Subject: [PATCH 64/89] R-maint-sig mass rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 1115c26..6b8f195 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3626,6 +3626,9 @@ fi %endif %changelog +* Fri Apr 18 2025 Iñaki Úcar - 6.34.08-3 +- R-maint-sig mass rebuild + * Fri Apr 18 2025 Iñaki Úcar - 6.34.08-2 - R-maint-sig mass rebuild From 593e7462664d0472fdae7140139498e4e72e71a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20=C3=9Acar?= Date: Fri, 18 Apr 2025 22:02:09 +0200 Subject: [PATCH 65/89] R-maint-sig mass rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 6b8f195..db5b1df 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3626,6 +3626,9 @@ fi %endif %changelog +* Fri Apr 18 2025 Iñaki Úcar - 6.34.08-4 +- R-maint-sig mass rebuild + * Fri Apr 18 2025 Iñaki Úcar - 6.34.08-3 - R-maint-sig mass rebuild From 5a7661342949a9958f16f25e8d2788a32bd725ca Mon Sep 17 00:00:00 2001 From: Python Maint Date: Tue, 3 Jun 2025 15:33:23 +0200 Subject: [PATCH 66/89] Rebuilt for Python 3.14 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index db5b1df..7ee247a 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.34.08 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3626,6 +3626,9 @@ fi %endif %changelog +* Tue Jun 03 2025 Python Maint - 6.34.08-5 +- Rebuilt for Python 3.14 + * Fri Apr 18 2025 Iñaki Úcar - 6.34.08-4 - R-maint-sig mass rebuild From 6edd65804f16c17f662f76cc952fcf0e89bfb3ab Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 9 Jun 2025 14:00:51 +0200 Subject: [PATCH 67/89] Update to 6.36.00 Enable the R interface for EPEL 10.1 Removed subpackages: root-gui-qt5webdisplay, -hist-draw, -histv7 and -html New subpackage: root-roofit-codegen --- root-Adjust-test-stressGraphics.ref.patch | 42 +- root-Fix-test-for-32-bit-architectures.patch | 55 ++ root-Ignore-warnings-from-uring-IO.patch | 64 +++ ...t-link-to-LLVM-libraries-in-parallel.patch | 47 ++ root-Update-release-number.patch | 25 + root-Use-size_t-for-offset.patch | 60 +++ root.spec | 487 ++++++++---------- sources | 4 +- 8 files changed, 493 insertions(+), 291 deletions(-) create mode 100644 root-Fix-test-for-32-bit-architectures.patch create mode 100644 root-Ignore-warnings-from-uring-IO.patch create mode 100644 root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch create mode 100644 root-Update-release-number.patch create mode 100644 root-Use-size_t-for-offset.patch diff --git a/root-Adjust-test-stressGraphics.ref.patch b/root-Adjust-test-stressGraphics.ref.patch index 92db744..6f8e6e4 100644 --- a/root-Adjust-test-stressGraphics.ref.patch +++ b/root-Adjust-test-stressGraphics.ref.patch @@ -1,19 +1,13 @@ -From b0f07c642c8edb62788f8519dcdb322f99395661 Mon Sep 17 00:00:00 2001 +From 81286803e7791377ae75f40e9c65f8928ad8fe31 Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Thu, 9 Jan 2025 21:44:14 +0100 +Date: Fri, 30 May 2025 05:31:08 +0200 Subject: [PATCH] Adjust test/stressGraphics.ref -One of the tests fails with just a few bytes on latest Fedora -releases. Failures can be seen for both test-stressgraphics and -test-stressgraphics-interpreted. Failures are reported for sizes being -201, 202 or 203 bytes larger than the reference, with thw limit -currently set to 200 bytes. - -Test 19: TGaxis 3 (Time on axis)................................... OK - PDF output......................................... 19 FAILED - Result = 42723 - Reference = 42926 - Error = 203 (was 200) +Test 37: TScatter with TPolyMarker test............................ OK + PDF output......................................... 37 FAILED + Result = 22236 + Reference = 22560 + Error = 324 (was 300) JPG output................................................ OK PNG output................................................ OK C file result............................................. OK @@ -22,18 +16,18 @@ Test 19: TGaxis 3 (Time on axis)................................... OK 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref -index 28ac0b9b7b..e1382d2d45 100644 +index a894796951..a8746db4df 100644 --- a/test/stressGraphics.ref +++ b/test/stressGraphics.ref -@@ -17,7 +17,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN - 16 28072 400 23287 200 44462 11000 30062 5000 38007 400 - 17 20444 400 21520 150 27511 11000 16867 600 20721 400 - 18 15894 100 19305 200 27187 10300 15925 350 15925 100 -- 19 22521 300 42926 200 43868 17000 19232 11000 22729 300 -+ 19 22521 300 42926 250 43868 17000 19232 11000 22729 300 - 20 3664 600 14437 150 19824 6300 10396 900 4220 600 - 21 17608 600 13900 150 49440 6300 37586 9000 5938 600 - 22 4866 600 14162 100 30889 10050 21311 1800 4845 600 +@@ -35,7 +35,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 34 3304592 100 712308 3000 62688 19000 123056 7000 3396789 1000 + 35 3954 100 14654 300 17378 7800 9629 2000 3794 200 + 36 9073 100 22150 300 27691 7800 20712 2000 9157 200 +- 37 17800 200 22560 300 28599 7800 42618 2000 17600 200 ++ 37 17800 200 22560 400 28599 7800 42618 2000 17600 200 + 38 12926 200 24304 300 24021 6800 12637 2000 12584 200 + 39 29664 200 19354 300 23024 6500 12821 2000 31317 200 + 40 46000 400 23482 300 38792 8500 30458 4000 46000 400 -- -2.47.1 +2.49.0 diff --git a/root-Fix-test-for-32-bit-architectures.patch b/root-Fix-test-for-32-bit-architectures.patch new file mode 100644 index 0000000..5da0477 --- /dev/null +++ b/root-Fix-test-for-32-bit-architectures.patch @@ -0,0 +1,55 @@ +From 9efe32d0f0e89624d7cf5efeca9cf151d9d0b220 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 3 Jun 2025 19:57:31 +0200 +Subject: [PATCH] Fix test for 32 bit architectures + +[ RUN ] TypeReflectionTest.GetSizeOfType +/builddir/build/BUILD/root-6.36.00-build/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp:79: Failure +Expected equality of these values: + Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])) + Which is: 12 + 16 +[ FAILED ] TypeReflectionTest.GetSizeOfType (23 ms) + +[ RUN ] ScopeReflectionTest.SizeOf +/builddir/build/BUILD/root-6.36.00-build/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp:161: Failure +Expected equality of these values: + Cpp::SizeOf(Decls[7]) + Which is: 12 + (size_t)16 + Which is: 16 +[ FAILED ] ScopeReflectionTest.SizeOf (26 ms) +--- + .../CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp | 2 +- + .../CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp +index 0b39080859..14122c6498 100644 +--- a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp ++++ b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp +@@ -158,7 +158,7 @@ TEST(ScopeReflectionTest, SizeOf) { + EXPECT_EQ(Cpp::SizeOf(Decls[4]), (size_t)0); + EXPECT_EQ(Cpp::SizeOf(Decls[5]), (size_t)1); + EXPECT_EQ(Cpp::SizeOf(Decls[6]), (size_t)4); +- EXPECT_EQ(Cpp::SizeOf(Decls[7]), (size_t)16); ++ EXPECT_EQ(Cpp::SizeOf(Decls[7]), (size_t) (sizeof(size_t) == 4 ? 12 : 16)); + } + + +diff --git a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp +index a3e482596d..8f7bc01ebe 100644 +--- a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp ++++ b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp +@@ -77,7 +77,7 @@ TEST(TypeReflectionTest, GetSizeOfType) { + EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[1])), 1); + EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[2])), 4); + EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[3])), 8); +- EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), 16); ++ EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), sizeof(size_t) == 4 ? 12 : 16); + EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetTypeFromScope(Decls[5])), 0); + EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[6])), + sizeof(intptr_t)); +-- +2.49.0 + diff --git a/root-Ignore-warnings-from-uring-IO.patch b/root-Ignore-warnings-from-uring-IO.patch new file mode 100644 index 0000000..6183dff --- /dev/null +++ b/root-Ignore-warnings-from-uring-IO.patch @@ -0,0 +1,64 @@ +From 1c0b441b9e23ac6a0b7b239a9e06b5caa263cf60 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sat, 7 Jun 2025 16:57:52 +0200 +Subject: [PATCH] Ignore warnings from uring IO + +Tests randomly fail because the uring memory is exhausted. + +Here are some examples: + +[ RUN ] RNTuple.RandomAccess +.../root-6.36.00/core/testsupport/src/TestSupport.cxx:79: Failure +Failed +Received unexpected diagnostic of severity 2000 at 'RIoUring' reading 'io_uring is unexpectedly not available because: +Failed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user'. +Suppress those using ROOT/TestSupport.hxx +.../root-6.36.00/core/testsupport/src/TestSupport.cxx:79: Failure +Failed +Received unexpected diagnostic of severity 2000 at 'RRawFileUnix' reading 'io_uring setup failed, falling back to blocking I/O in ReadV'. +Suppress those using ROOT/TestSupport.hxx +[ FAILED ] RNTuple.RandomAccess (20472 ms) + +[ RUN ] RNTupleDSTest.ChainMT +.../root-6.34.08/core/testsupport/src/TestSupport.cxx:79: Failure +Failed +Received unexpected diagnostic of severity 2000 at 'RIoUring' reading 'io_uring is unexpectedly not available because: +Failed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user'. +Suppress those using ROOT/TestSupport.hxx +.../root-6.34.08/core/testsupport/src/TestSupport.cxx:79: Failure +Failed +Received unexpected diagnostic of severity 2000 at 'RRawFileUnix' reading 'io_uring setup failed, falling back to blocking I/O in ReadV'. +Suppress those using ROOT/TestSupport.hxx +[ FAILED ] RNTupleDSTest.ChainMT (1004 ms) +--- + core/testsupport/src/TestSupport.cxx | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx +index 9889a432f4..c7ee440746 100644 +--- a/core/testsupport/src/TestSupport.cxx ++++ b/core/testsupport/src/TestSupport.cxx +@@ -76,6 +76,20 @@ static struct ForbidDiagnostics { + return; + } + ++ if (level == kWarning ++ && strcmp(location, "RIoUring") == 0 ++ && strcmp(msg, "io_uring is unexpectedly not available because:\nFailed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user") == 0) { ++ std::cerr << "Warning in " << location << " " << msg << std::endl; ++ return; ++ } ++ ++ if (level == kWarning ++ && strcmp(location, "RRawFileUnix") == 0 ++ && strcmp(msg, "io_uring setup failed, falling back to blocking I/O in ReadV") == 0) { ++ std::cerr << "Warning in " << location << " " << msg << std::endl; ++ return; ++ } ++ + FAIL() << "Received unexpected diagnostic of severity " + << level + << " at '" << location << "' reading '" << msg << "'.\n" +-- +2.49.0 + diff --git a/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch b/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch new file mode 100644 index 0000000..875cf05 --- /dev/null +++ b/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch @@ -0,0 +1,47 @@ +From e59ece55e4eead85b2b6fd8c6ddc2dfa179f0d09 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Mon, 2 Jun 2025 21:22:39 +0200 +Subject: [PATCH] Save memory. Do not link to LLVM libraries in parallel + +--- + core/clingutils/test/CMakeLists.txt | 3 +++ + interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt | 6 ++++++ + 2 files changed, 9 insertions(+) + +diff --git a/core/clingutils/test/CMakeLists.txt b/core/clingutils/test/CMakeLists.txt +index 15cc3ff48a..f62735e972 100644 +--- a/core/clingutils/test/CMakeLists.txt ++++ b/core/clingutils/test/CMakeLists.txt +@@ -31,3 +31,6 @@ if(NOT builtin_clang) + endif() + + ROOT_ADD_UNITTEST_DIR(Core RIO ${CLING_LIBRARIES} $) ++ ++# Save memory. Do not link to LLVM libraries in parallel ++add_dependencies(coreclingutilstestUnit CppInterOpTests) +diff --git a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt +index 0ba35053fd..c6440cf301 100644 +--- a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt ++++ b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt +@@ -65,6 +65,9 @@ target_link_libraries(CppInterOpTests + clangCppInterOp + ) + ++# Save memory. Do not link to LLVM libraries in parallel ++add_dependencies(CppInterOpTests DynamicLibraryManagerTests) ++ + set_output_directory(CppInterOpTests + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES} + LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES} +@@ -116,5 +119,8 @@ set_output_directory(DynamicLibraryManagerTests + + add_dependencies(DynamicLibraryManagerTests TestSharedLib) + ++# Save memory. Do not link to LLVM libraries in parallel ++add_dependencies(DynamicLibraryManagerTests Cling) ++ + #export_executable_symbols_for_plugins(TestSharedLib) + add_subdirectory(TestSharedLib) +-- +2.49.0 + diff --git a/root-Update-release-number.patch b/root-Update-release-number.patch new file mode 100644 index 0000000..c9f05cd --- /dev/null +++ b/root-Update-release-number.patch @@ -0,0 +1,25 @@ +From 0ad965c6a2ed651e4a933434735fbe1c6bf32c1c Mon Sep 17 00:00:00 2001 +From: Danilo Piparo +Date: Mon, 26 May 2025 10:05:26 +0200 +Subject: [PATCH] Update release number + +--- + core/foundation/inc/ROOT/RVersion.hxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/foundation/inc/ROOT/RVersion.hxx b/core/foundation/inc/ROOT/RVersion.hxx +index 365a371b2a..d5a3623747 100644 +--- a/core/foundation/inc/ROOT/RVersion.hxx ++++ b/core/foundation/inc/ROOT/RVersion.hxx +@@ -4,7 +4,7 @@ + /* Update on release: */ + #define ROOT_VERSION_MAJOR 6 + #define ROOT_VERSION_MINOR 36 +-#define ROOT_VERSION_PATCH 00 ++#define ROOT_VERSION_PATCH 0 + #define ROOT_RELEASE_DATE "May 26 2025" + + /* Don't change the lines below. */ +-- +2.49.0 + diff --git a/root-Use-size_t-for-offset.patch b/root-Use-size_t-for-offset.patch new file mode 100644 index 0000000..49d3ab5 --- /dev/null +++ b/root-Use-size_t-for-offset.patch @@ -0,0 +1,60 @@ +From 7bfd27ac478356e7c718b18b5eb3a3b277b833d1 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 3 Jun 2025 06:49:27 +0200 +Subject: [PATCH] Use size_t for offset + +[ RUN ] VariableReflectionTest.StaticConstExprDatamember +/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:545: Failure +Expected equality of these values: + 3 + *(int*)offset + Which is: 0 +/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:561: Failure +Expected equality of these values: + 5 + *(int*)offset + Which is: 0 +/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:580: Failure +Expected equality of these values: + 2 + *(int*)offset + Which is: 0 +[ FAILED ] VariableReflectionTest.StaticConstExprDatamember (9 ms) +--- + .../unittests/CppInterOp/VariableReflectionTest.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp +index 26dad4f25c..571ae5cd5d 100644 +--- a/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp ++++ b/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp +@@ -552,7 +552,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) { + EXPECT_EQ(datamembers.size(), 1); + + intptr_t offset = Cpp::GetVariableOffset(datamembers[0]); +- EXPECT_EQ(3, *(int*)offset); ++ EXPECT_EQ(3, *(size_t*)offset); + + ASTContext& C = Interp->getCI()->getASTContext(); + std::vector template_args = { +@@ -568,7 +568,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) { + EXPECT_EQ(datamembers.size(), 1); + + offset = Cpp::GetVariableOffset(datamembers[0]); +- EXPECT_EQ(5, *(int*)offset); ++ EXPECT_EQ(5, *(size_t*)offset); + + std::vector ele_template_args = { + {C.IntTy.getAsOpaquePtr()}, {C.FloatTy.getAsOpaquePtr()}}; +@@ -587,7 +587,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) { + EXPECT_EQ(datamembers.size(), 1); + + offset = Cpp::GetVariableOffset(datamembers[0]); +- EXPECT_EQ(2, *(int*)offset); ++ EXPECT_EQ(2, *(size_t*)offset); + } + + TEST(VariableReflectionTest, GetEnumConstantDatamembers) { +-- +2.49.0 + diff --git a/root.spec b/root.spec index 7ee247a..c999668 100644 --- a/root.spec +++ b/root.spec @@ -20,8 +20,8 @@ %global pandas 0 %endif -%if %{?rhel}%{!?rhel:0} == 10 -# R not yet available in EPEL 10 +%if "%{?dist}" == ".el10_0" +# R not available in EPEL 10.0 %global rrr 0 %else %global rrr 1 @@ -37,9 +37,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.34.08 +Version: 6.36.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -64,7 +64,7 @@ Source7: JupyROOT-on-EPEL Source8: %{name}-get-src.sh # Clad is a source-transformation automatic differentiation (AD) # library for C++, implemented as a plugin for the Clang compiler -Source9: https://github.com/vgvassilev/clad/archive/v1.7/clad-1.7.tar.gz +Source9: https://github.com/vgvassilev/clad/archive/v1.9/clad-1.9.tar.gz # Use system fonts Patch0: %{name}-fontconfig.patch # Reduce memory usage during linking on ARM and x86 by generating @@ -78,10 +78,24 @@ Patch3: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled Patch4: %{name}-32bit-tests.patch # Adjust test/stressGraphics.ref -# https://github.com/root-project/root/pull/17398 +# https://github.com/root-project/root/pull/18989 Patch5: %{name}-Adjust-test-stressGraphics.ref.patch # Revert test change that breaks the test Patch6: %{name}-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch +# Ignore warnings from uring IO +# https://github.com/root-project/root/pull/18994 +Patch7: %{name}-Ignore-warnings-from-uring-IO.patch +# Preserve memory during parallel build +# https://github.com/root-project/root/pull/18991 +Patch8: %{name}-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch +# Fix Big Endian test failure +# https://github.com/root-project/root/pull/18992 +Patch9: %{name}-Use-size_t-for-offset.patch +# Fix 32 bit test failure +# https://github.com/root-project/root/pull/18993 +Patch10: %{name}-Fix-test-for-32-bit-architectures.patch +# Remove extra 0 in release number +Patch11: %{name}-Update-release-number.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -122,10 +136,6 @@ BuildRequires: libxcrypt-devel BuildRequires: python%{python3_pkgversion}-devel >= 3.7 BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-numpy -%ifarch %{qt5_qtwebengine_arches} -BuildRequires: qt5-qtbase-devel -BuildRequires: qt5-qtwebengine-devel -%endif %ifarch %{qt6_qtwebengine_arches} BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtwebengine-devel @@ -321,6 +331,10 @@ Obsoletes: %{name}-montecarlo-vmc < 6.26.00 Obsoletes: %{name}-doc < 6.26.00 Obsoletes: %{name}-io-gfal < 6.30.00 Obsoletes: %{name}-roofit-common < 6.30.00 +Obsoletes: %{name}-gui-qt5webdisplay < 6.36.00 +Obsoletes: %{name}-hist-draw < 6.36.00 +Obsoletes: %{name}-histv7 < 6.36.00 +Obsoletes: %{name}-html < 6.36.00 %description core This package contains the core libraries used by ROOT: libCore, libNew, @@ -821,16 +835,6 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} %description spectrum-painter This package contains a painter of spectra for ROOT. -%package html -Summary: HTML documentation generator for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: graphviz - -%description html -This package contains classes to automatically extract documentation -from marked up sources. - %package io Summary: Input/output of ROOT objects Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1278,7 +1282,6 @@ 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}-minuit%{?_isa} = %{version}-%{release} Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-batchcompute%{?_isa} = %{version}-%{release} %if %{roofitmp} @@ -1388,6 +1391,18 @@ suitable for adoption in different disciplines as well. This package contains the JSON interface to RooFit. +%package roofit-codegen +Summary: Code generation support for RooFit +License: BSD-2-Clause +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist-factory%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit%{?_isa} = %{version}-%{release} +Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} + +%description roofit-codegen +This package contains a library providing classes that implement +code generation support for RooFit. + %if %{roofitmp} %package roofit-multiprocess Summary: Multi-process support for RooFit @@ -1397,7 +1412,7 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-zmq%{?_isa} = %{version}-%{release} %description roofit-multiprocess -This package contains a library providing classes that implements +This package contains a library providing classes that implement mult-process support for RooFit. %package roofit-zmq @@ -1432,14 +1447,11 @@ RooFit. %package hist-factory Summary: RooFit PDFs from ROOT histograms Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-io-xmlparser%{?_isa} = %{version}-%{release} Requires: %{name}-roofit%{?_isa} = %{version}-%{release} Requires: %{name}-roofit-core%{?_isa} = %{version}-%{release} -Requires: %{name}-roofit-jsoninterface%{?_isa} = %{version}-%{release} Requires: %{name}-roostats%{?_isa} = %{version}-%{release} %description hist-factory @@ -1747,17 +1759,6 @@ Requires: %{name}-net-http%{?_isa} = %{version}-%{release} %description gui-webdisplay This package contains a web display extension for ROOT. -%ifarch %{qt5_qtwebengine_arches} -%package gui-qt5webdisplay -Summary: Qt5 Web display -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-gui-webdisplay%{?_isa} = %{version}-%{release} -Requires: %{name}-net-http%{?_isa} = %{version}-%{release} - -%description gui-qt5webdisplay -This package contains a Qt5 web display extension for ROOT. -%endif - %ifarch %{qt6_qtwebengine_arches} %package gui-qt6webdisplay Summary: Qt6 Web display @@ -1868,7 +1869,6 @@ Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-hist-draw%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} # Package split (gui-browsable-v7 from gui-browsable) @@ -1913,21 +1913,6 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} This package contains a library to show a pop-up dialog when fitting various kinds of data. -%package histv7 -Summary: Histogram library for ROOT (ROOT 7) -Requires: %{name}-core%{?_isa} = %{version}-%{release} - -%description histv7 -This package contains a library for histogramming in ROOT 7. - -%package hist-draw -Summary: Histogram drawing (ROOT 7) -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} - -%description hist-draw -This package contains an histogram drawing extension for ROOT 7. - %package tree-ntuple Summary: Ntuple (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1958,6 +1943,11 @@ This package contains utility functions for ntuples. %patch -P4 -p1 %patch -P5 -p1 %patch -P6 -p1 +%patch -P7 -p1 +%patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 +%patch -P11 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1994,11 +1984,14 @@ rm -rf js/[^f]* js/files/draw.htm js/files/online.htm rm etc/notebook/JsMVA/js/*.min.js rm etc/notebook/JsMVA/css/*.min.css +# Remove executable permissions from source file +chmod -x interpreter/CppInterOp/lib/Interpreter/CppInterOp.cpp + # Additional documentation install -p -m 644 %{SOURCE7} bindings/jupyroot %build -%if %{?fedora}%{!?fedora:0} == 40 || %{?rhel}%{!?rhel:0} == 10 +%if %{?rhel}%{!?rhel:0} == 10 # This package triggers a fault in LLVM when LTO is enabled. Until LLVM # is analyzed and fixed, disable LTO %define _lto_cflags %{nil} @@ -2032,10 +2025,12 @@ done -Dbuiltin_fftw3:BOOL=OFF \ -Dbuiltin_freetype:BOOL=OFF \ -Dbuiltin_ftgl:BOOL=OFF \ + -Dbuiltin_gif:BOOL=OFF \ -Dbuiltin_gl2ps:BOOL=OFF \ -Dbuiltin_glew:BOOL=OFF \ -Dbuiltin_gsl:BOOL=OFF \ -Dbuiltin_gtest:BOOL=OFF \ + -Dbuiltin_jpeg:BOOL=OFF \ -Dbuiltin_llvm:BOOL=ON \ -Dbuiltin_lz4:BOOL=OFF \ -Dbuiltin_lzma:BOOL=OFF \ @@ -2047,6 +2042,7 @@ done -Dbuiltin_openssl:BOOL=OFF \ -Dbuiltin_openui5:BOOL=ON \ -Dbuiltin_pcre:BOOL=OFF \ + -Dbuiltin_png:BOOL=OFF \ -Dbuiltin_tbb:BOOL=OFF \ -Dbuiltin_unuran:BOOL=OFF \ -Dbuiltin_vc:BOOL=OFF \ @@ -2063,11 +2059,12 @@ done -Darrow:BOOL=OFF \ %endif -Dasimage:BOOL=ON \ + -Dasimage_tiff:BOOL=ON \ -Dccache:BOOL=OFF \ -Ddistcc:BOOL=OFF \ -Dcefweb:BOOL=OFF \ -Dclad:BOOL=ON \ - -DCLAD_SOURCE_DIR:PATH=${PWD}/clad-1.7 \ + -DCLAD_SOURCE_DIR:PATH=${PWD}/clad-1.9 \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ -Ddaos:BOOL=OFF \ @@ -2088,7 +2085,6 @@ done -Dgeom:BOOL=ON \ -Dgeombuilder:BOOL=ON \ -Dgviz:BOOL=ON \ - -Dhtml:BOOL=ON \ -Dhttp:BOOL=ON \ -Dimt:BOOL=ON \ -Dlibcxx:BOOL=OFF \ @@ -2104,11 +2100,6 @@ done -Dproof:BOOL=ON \ -Dpyroot:BOOL=ON \ -Dpythia8:BOOL=ON \ -%ifarch %{qt5_qtwebengine_arches} - -Dqt5web:BOOL=ON \ -%else - -Dqt5web:BOOL=OFF \ -%endif %ifarch %{qt6_qtwebengine_arches} -Dqt6web:BOOL=ON \ %else @@ -2277,8 +2268,10 @@ jupyter notebook "\$@" EOF # Avoid /usr/bin/env shebangs (and adapt cli to cmdLineUtils location) -sed -e 's!/usr/bin/env bash!/bin/bash!' -i %{buildroot}%{_bindir}/root-config -sed -e 's!/usr/bin/env /usr/bin/python.*!%{__python3}!' \ +sed -e 's!/usr/bin/env bash!/bin/bash!' \ + -i %{buildroot}%{_bindir}/root-config \ + %{buildroot}%{_bindir}/rootssh +sed -e 's!/usr/bin/env python3!%{__python3}!' \ -e '/import sys/d' \ -e '/import cmdLineUtils/iimport sys' \ -e '/import cmdLineUtils/isys.path.insert(0, "%{_datadir}/%{name}/cli")' \ @@ -2291,17 +2284,10 @@ sed -e 's!/usr/bin/env /usr/bin/python.*!%{__python3}!' \ %{buildroot}%{_bindir}/rootprint \ %{buildroot}%{_bindir}/rootrm \ %{buildroot}%{_bindir}/rootslimtree -sed -e 's!/usr/bin/env /usr/bin/python.*!%{__python3}!' \ +sed -e 's!/usr/bin/env python3!%{__python3}!' \ -i %{buildroot}%{_bindir}/rootdrawtree sed -e 's!/usr/bin/env python!%{__python3}!' \ - -i %{buildroot}%{_datadir}/%{name}/dictpch/makepch.py \ - %{buildroot}%{_pkgdocdir}/tutorials/histfactory/makeQuickModel.py \ - %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ApplicationClassificationKeras.py \ - %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ApplicationRegressionKeras.py \ - %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/ClassificationKeras.py \ - %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/GenerateModel.py \ - %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/MulticlassKeras.py \ - %{buildroot}%{_pkgdocdir}/tutorials/tmva/keras/RegressionKeras.py + -i %{buildroot}%{_datadir}/%{name}/dictpch/makepch.py sed -e 's!/usr/bin/python!%{__python3}!' \ -i %{buildroot}%{_datadir}/%{name}/pdg_table_update.py @@ -2313,6 +2299,11 @@ rm %{buildroot}%{_bindir}/setxrd* rm %{buildroot}%{_bindir}/thisroot* rm %{buildroot}%{_pkgdocdir}/INSTALL rm %{buildroot}%{_pkgdocdir}/README.CXXMODULES.md +rm -rf %{buildroot}%{_includedir}/clang +rm -rf %{buildroot}%{_includedir}/clang-c +rm -rf %{buildroot}/usr/lib/cmake/CppInterOp +rm %{buildroot}/usr/lib/libclangCppInterOp.a +rm -rf %{buildroot}%{_datadir}/%{name}/html # Only used on Windows rm %{buildroot}%{_datadir}/%{name}/macros/fileopen.C @@ -2395,54 +2386,47 @@ popd # - test-stressIOPlugins-* # requires network access (by design since they test the remote file IO) # -# - tutorial-dataframe-df101_h1Analysis -# - tutorial-tree-run_h1analysis -# - tutorial-multicore-imt001_parBranchProcessing -# - tutorial-multicore-mp103_processSelector -# - tutorial-multicore-mp104_processH1 -# - tutorial-multicore-mp105_processEntryList +# - tutorial-analysis-dataframe-df101_h1Analysis +# - tutorial-analysis-tree-run_h1analysis +# - tutorial-legacy-multicore-mp104_processH1 # requires network access: http://root.cern.ch/files/h1/ # -# - tutorial-multicore-imt101_parTreeProcessing +# - tutorial-io-tree-imt_parTreeProcessing # requires input data: http://root.cern.ch/files/tp_process_imt.root (707 MB) # -# - tutorial-dataframe-df###_SQlite* +# - tutorial-analysis-dataframe-df###_SQlite* # reads sqlite data over network: # http://root.cern.ch/files/root_download_stats.sqlite # -# - tutorial-dataframe-df033_Describe-py -# - tutorial-dataframe-df102_NanoAODDimuonAnalysis(-py)? +# - tutorial-analysis-dataframe-df033_Describe-py +# - tutorial-analysis-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-treeprocessormt-remotefiles -# - tutorial-dataframe-df103_NanoAODHiggsAnalysis(-py)? +# - tutorial-analysis-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 -# - tutorial-rcanvas-df104-py -# - tutorial-rcanvas-df105-py +# - tutorial-analysis-dataframe-df104_HiggsToTwoPhotons-py +# - tutorial-analysis-dataframe-df105_WBosonAnalysis-py +# - tutorial-analysis-dataframe-df106_HiggsToFourLeptons(-py) +# - tutorial-analysis-dataframe-df107_SingleTopAnalysis-py +# - tutorial-experimental-rcanvas-df104-py +# - tutorial-experimental-rcanvas-df105-py # reads input data over network: # root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ # -# - tutorial-v7-ntuple-ntpl003_lhcbOpenData -# reads input data over network -# http://root.cern.ch/files/LHCb/lhcb_B2HHH_MagnetUp.root (425 MB) -# -# - tutorial-v7-ntuple-ntpl004_dimuon +# - tutorial-io-ntuple-ntpl004_dimuon # reads input data over network # http://root.cern.ch/files/NanoAOD_DoubleMuon_CMS2011OpenData.root (1.5 GB) # -# - tutorial-v7-ntuple-ntpl008_import +# - tutorial-io-ntuple-ntpl008_import # reads input data over network # http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root (20 MB) # -# - tutorial-v7-ntuple-ntpl011_global_temperatures +# - tutorial-io-ntuple-ntpl011_global_temperatures # reads input data over network # http://root.cern.ch/files/tutorials/GlobalLandTemperaturesByCity.csv # @@ -2455,67 +2439,41 @@ popd # root://eospublic.cern.ch/eos/root-eos/xrootd.test # # - gtest-net-netxng-TNetXNGFileTest +# - tutorial-analysis-parallel-mp_processSelector # reads input file over network # root://eospublic.cern.ch/eos/root-eos/h1/dstarmb.root # -# - gtest-tmva-tmva-rreader -# - gtest-tmva-tmva-rstandardscaler -# - tutorial-tmva-tmva003_RReader -# - tutorial-tmva-tmva004_RStandardScaler -# reads input data over network -# http://root.cern.ch/files/tmva_class_example.root -# # - tutorial-tmva-tmva103_Application # reads input data over network -# http://root.cern/files/tmva101.root -# -# - tutorial-tmva-RBatchGenerator_NumPy-py -# reads input data over network -# http://root.cern/files/Higgs_data.root -# -# - test-import-numba -# - tutorial-pyroot-pyroot004_NumbaDeclare-py -# - pyunittests-pyroot-numbadeclare -# these tests require the numba python module which is not available +# root://eospublic.cern.ch/eos/root-eos/cms_opendata_2012_nanoaod/SMHiggsToZZTo4L.root # # - test-webgui-ping # error: Cannot display window in native excluded="\ test-stressIOPlugins|\ -tutorial-dataframe-df101_h1Analysis|\ -tutorial-tree-run_h1analysis|\ -tutorial-multicore-imt001_parBranchProcessing|\ -tutorial-multicore-mp103_processSelector|\ -tutorial-multicore-mp104_processH1|\ -tutorial-multicore-mp105_processEntryList|\ -tutorial-multicore-imt101_parTreeProcessing|\ -tutorial-dataframe-df..._SQlite|\ -tutorial-dataframe-df033_Describe-py|\ -tutorial-dataframe-df102_NanoAODDimuonAnalysis|\ +tutorial-analysis-dataframe-df101_h1Analysis|\ +tutorial-analysis-tree-run_h1analysis|\ +tutorial-legacy-multicore-mp104_processH1|\ +tutorial-io-tree-imt_parTreeProcessing|\ +tutorial-analysis-dataframe-df..._SQlite|\ +tutorial-analysis-dataframe-df033_Describe-py|\ +tutorial-analysis-dataframe-df102_NanoAODDimuonAnalysis|\ gtest-tree-treeplayer-treeprocessormt-remotefiles|\ -tutorial-dataframe-df103_NanoAODHiggsAnalysis|\ -tutorial-dataframe-df104_HiggsToTwoPhotons-py|\ -tutorial-dataframe-df105_WBosonAnalysis-py|\ -tutorial-dataframe-df106_HiggsToFourLeptons|\ -tutorial-dataframe-df107_SingleTopAnalysis-py|\ -tutorial-rcanvas-df104-py|\ -tutorial-rcanvas-df105-py|\ -tutorial-v7-ntuple-ntpl003_lhcbOpenData|\ -tutorial-v7-ntuple-ntpl004_dimuon|\ -tutorial-v7-ntuple-ntpl008_import|\ -tutorial-v7-ntuple-ntpl011_global_temperatures|\ +tutorial-analysis-dataframe-df103_NanoAODHiggsAnalysis|\ +tutorial-analysis-dataframe-df104_HiggsToTwoPhotons-py|\ +tutorial-analysis-dataframe-df105_WBosonAnalysis-py|\ +tutorial-analysis-dataframe-df106_HiggsToFourLeptons|\ +tutorial-analysis-dataframe-df107_SingleTopAnalysis-py|\ +tutorial-experimental-rcanvas-df104-py|\ +tutorial-experimental-rcanvas-df105-py|\ +tutorial-io-ntuple-ntpl004_dimuon|\ +tutorial-io-ntuple-ntpl008_import|\ +tutorial-io-ntuple-ntpl011_global_temperatures|\ gtest-net-davix-RRawFileDavix|\ gtest-net-netxng-RRawFileNetXNG|\ gtest-net-netxng-TNetXNGFileTest|\ -gtest-tmva-tmva-rreader|\ -gtest-tmva-tmva-rstandardscaler|\ -tutorial-tmva-tmva003_RReader|\ -tutorial-tmva-tmva004_RStandardScaler|\ +tutorial-analysis-parallel-mp_processSelector|\ tutorial-tmva-tmva103_Application|\ -tutorial-tmva-RBatchGenerator_NumPy-py|\ -test-import-numba|\ -tutorial-pyroot-pyroot004_NumbaDeclare-py|\ -pyunittests-pyroot-numbadeclare|\ test-webgui-ping" # gtest-roofit-roofit-vectorisedPDFs-testLandau: @@ -2532,61 +2490,50 @@ test-webgui-ping" # test-stressgraphics-firefox-skip3d: # requires firefox... # -# tutorial-webcanv-fonts_ttf.cxx: +# tutorial-visualisation-webcanv-fonts_ttf.cxx: # Requires web graphics -# -# tutorial-roofit-rf617_simulation_based_inference_multidimensional-py: -# from sklearn.neural_network import MLPClassifier -# -# tutorial-roofit-rf618_mixture_models-py: -# import xgboost as xgb excluded="${excluded}|\ gtest-roofit-roofit-vectorisedPDFs-testLandau|\ gtest-tree-treeplayer-ttreeindex-clone|\ gtest-tree-treeplayer-treetreeplayertestUnit|\ test-stressgraphics-firefox-skip3d|\ -tutorial-webcanv-fonts_ttf.cxx|\ -tutorial-roofit-rf617_simulation_based_inference_multidimensional-py|\ -tutorial-roofit-rf618_mixture_models-py" - -# Test using tensorflow and torch -# Disabled for Python >= 3.12, but must be excluded for Python < 3.12 -excluded="${excluded}|\ -pyunittests-bindings-pyroot-pythonizations-batchgen|\ -test-import-tensorflow|\ -test-import-torch" - -%if ! %{pandas} -# - test-import-pandas -# - tutorial-dataframe-df026_AsNumpyArrays-py -# - tutorial-dataframe-df035_RDFFromPandas-py -# - tutorial-roofit-rf409_NumPyPandasToRooFit-py -# Requires the pandas python module not (yet) available in RHEL/EPEL 9 -excluded="${excluded}|\ -test-import-pandas|\ -tutorial-dataframe-df026_AsNumpyArrays-py|\ -tutorial-dataframe-df035_RDFFromPandas-py|\ -tutorial-roofit-rf409_NumPyPandasToRooFit-py" -%endif +tutorial-visualisation-webcanv-fonts_ttf.cxx" %ifarch %{ix86} # - gtest-tree-dataframe-dataframe-concurrency # "There's already an active task arena." +# +# - gtest-hist-hist-TFormulaGradientTests|\ +# out of memory +# +# - pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views +# ValueError: buffer is smaller than requested size excluded="${excluded}|\ -gtest-tree-dataframe-dataframe-concurrency" +gtest-tree-dataframe-dataframe-concurrency|\ +gtest-hist-hist-TFormulaGradientTests|\ +pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views" %endif %ifarch %{power64} -# - tutorial-roostats-IntervalExamples-py +# - tutorial-roofit-roostats-IntervalExamples-py # *** Break *** segmentation violation excluded="${excluded}|\ -tutorial-roostats-IntervalExamples-py" +tutorial-roofit-roostats-IntervalExamples-py" %if %{?fedora}%{!?fedora:0} >= 42 -# - gtest-tree-ntuple-v7-ntuple-evolution +# - gtest-tree-ntuple-ntuple-emulated +# - gtest-tree-ntuple-ntuple-evolution # waitpid() failed excluded="${excluded}|\ -gtest-tree-ntuple-v7-ntuple-evolution" +gtest-tree-ntuple-ntuple-emulated|\ +gtest-tree-ntuple-ntuple-evolution" +%endif + +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 +# tutorial-roofit-roostats-StandardBayesianMCMCDemo-py +# - ZeroDivisionError: float division by zero +excluded="${excluded}|\ +tutorial-roofit-roostats-StandardBayesianMCMCDemo-py" %endif %endif @@ -2602,49 +2549,47 @@ gtest-roofit-roofitcore-testLikelihoodGradientJob" # - gtest-tmva-sofie-TestCustomModelsFromONNX # - gtest-tree-dataframe-dataframe-unified-constructor # -# - gtest-tree-dataframe-datasource-ntuple -# - gtest-tree-ntuple-v7-ntuple-basics -# - gtest-tree-ntuple-v7-ntuple-bulk -# - gtest-tree-ntuple-v7-ntuple-cast -# - gtest-tree-ntuple-v7-ntuple-compat -# - gtest-tree-ntuple-v7-ntuple-extended -# - gtest-tree-ntuple-v7-ntuple-friends -# - gtest-tree-ntuple-v7-ntuple-index -# - gtest-tree-ntuple-v7-ntuple-merger -# - gtest-tree-ntuple-v7-ntuple-model -# - gtest-tree-ntuple-v7-ntuple-modelext -# - gtest-tree-ntuple-v7-ntuple-multi-column -# - gtest-tree-ntuple-v7-ntuple-packing -# - gtest-tree-ntuple-v7-ntuple-parallel-writer -# - gtest-tree-ntuple-v7-ntuple-processor -# - gtest-tree-ntuple-v7-ntuple-project -# - gtest-tree-ntuple-v7-ntuple-show -# - gtest-tree-ntuple-v7-ntuple-storage -# - gtest-tree-ntuple-v7-ntuple-storage-daos -# - gtest-tree-ntuple-v7-ntuple-types -# - gtest-tree-ntuple-v7-ntuple-view -# - gtest-tree-ntuple-v7-rfield-class -# - gtest-tree-ntuple-v7-rfield-streamer -# - gtest-tree-ntuple-v7-rfield-variant -# - gtest-tree-ntuple-v7-rfield-vector +# - gtest-tree-ntuple-ntuple-basics +# - gtest-tree-ntuple-ntuple-bulk +# - gtest-tree-ntuple-ntuple-cast +# - gtest-tree-ntuple-ntuple-compat +# - gtest-tree-ntuple-ntuple-extended +# - gtest-tree-ntuple-ntuple-join-table +# - gtest-tree-ntuple-ntuple-largefile2 +# - gtest-tree-ntuple-ntuple-merger +# - gtest-tree-ntuple-ntuple-model +# - gtest-tree-ntuple-ntuple-modelext +# - gtest-tree-ntuple-ntuple-multi-column +# - gtest-tree-ntuple-ntuple-packing +# - gtest-tree-ntuple-ntuple-parallel-writer +# - gtest-tree-ntuple-ntuple-processor +# - gtest-tree-ntuple-ntuple-processor-chain +# - gtest-tree-ntuple-ntuple-processor-join +# - gtest-tree-ntuple-ntuple-project +# - gtest-tree-ntuple-ntuple-show +# - gtest-tree-ntuple-ntuple-storage +# - gtest-tree-ntuple-ntuple-storage-daos +# - gtest-tree-ntuple-ntuple-types +# - gtest-tree-ntuple-ntuple-view +# - gtest-tree-ntuple-rfield-class +# - gtest-tree-ntuple-rfield-streamer +# - gtest-tree-ntuple-rfield-variant +# - gtest-tree-ntuple-rfield-vector # - gtest-tree-ntupleutil-v7-ntuple-importer # - gtest-tree-ntupleutil-v7-ntuple-inspector # https://github.com/root-project/root/issues/12426 # -# - pyunittests-bindings-experimental-distrdf-backend-distrdf-unit-backend-graph-caching +# - pyunittests-bindings-distrdf-backend-distrdf-unit-backend-graph-caching # - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor # - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector -# - tutorial-dataframe-df006_ranges-py -# - tutorial-fit-combinedFit-py -# - tutorial-fit-NumericalMinimization-py +# - tutorial-analysis-dataframe-df006_ranges-py +# - tutorial-experimental-rcanvas-rbox-py +# - tutorial-hist-hist007_TH1_liveupdate-py # - tutorial-math-exampleFunction-py -# - tutorial-pyroot-hsum-py -# - tutorial-rcanvas-rbox-py +# - tutorial-math-fit-combinedFit-py +# - tutorial-math-fit-NumericalMinimization-py # https://github.com/root-project/root/issues/12429 # -# - tutorial-tree-drawsparse -# https://github.com/root-project/root/issues/12431 -# # - test-stresshistofit # - test-stresshistofit-interpreted # - test-stresshistogram @@ -2652,60 +2597,84 @@ gtest-roofit-roofitcore-testLikelihoodGradientJob" excluded="${excluded}|\ gtest-core-dictgen-dictgen-base|\ gtest-tmva-sofie-TestCustomModelsFromONNX|\ +gtest-tree-dataframe-dataframe-snapshot-ntuple|\ gtest-tree-dataframe-dataframe-unified-constructor|\ gtest-tree-dataframe-datasource-ntuple|\ -gtest-tree-ntuple-v7-ntuple-basics|\ -gtest-tree-ntuple-v7-ntuple-bulk|\ -gtest-tree-ntuple-v7-ntuple-cast|\ -gtest-tree-ntuple-v7-ntuple-compat|\ -gtest-tree-ntuple-v7-ntuple-extended|\ -gtest-tree-ntuple-v7-ntuple-friends|\ -gtest-tree-ntuple-v7-ntuple-index|\ -gtest-tree-ntuple-v7-ntuple-merger|\ -gtest-tree-ntuple-v7-ntuple-model\$\$|\ -gtest-tree-ntuple-v7-ntuple-modelext|\ -gtest-tree-ntuple-v7-ntuple-multi-column|\ -gtest-tree-ntuple-v7-ntuple-packing|\ -gtest-tree-ntuple-v7-ntuple-parallel-writer|\ -gtest-tree-ntuple-v7-ntuple-processor|\ -gtest-tree-ntuple-v7-ntuple-project|\ -gtest-tree-ntuple-v7-ntuple-show|\ -gtest-tree-ntuple-v7-ntuple-storage\$\$|\ -gtest-tree-ntuple-v7-ntuple-storage-daos|\ -gtest-tree-ntuple-v7-ntuple-types|\ -gtest-tree-ntuple-v7-ntuple-view|\ -gtest-tree-ntuple-v7-rfield-class|\ -gtest-tree-ntuple-v7-rfield-streamer|\ -gtest-tree-ntuple-v7-rfield-variant|\ -gtest-tree-ntuple-v7-rfield-vector|\ +gtest-tree-ntuple-ntuple-basics|\ +gtest-tree-ntuple-ntuple-bulk|\ +gtest-tree-ntuple-ntuple-cast|\ +gtest-tree-ntuple-ntuple-compat|\ +gtest-tree-ntuple-ntuple-extended|\ +gtest-tree-ntuple-ntuple-join-table|\ +gtest-tree-ntuple-ntuple-largefile2|\ +gtest-tree-ntuple-ntuple-merger|\ +gtest-tree-ntuple-ntuple-model\$\$|\ +gtest-tree-ntuple-ntuple-modelext|\ +gtest-tree-ntuple-ntuple-multi-column|\ +gtest-tree-ntuple-ntuple-packing|\ +gtest-tree-ntuple-ntuple-parallel-writer|\ +gtest-tree-ntuple-ntuple-processor\$\$|\ +gtest-tree-ntuple-ntuple-processor-chain|\ +gtest-tree-ntuple-ntuple-processor-join|\ +gtest-tree-ntuple-ntuple-project|\ +gtest-tree-ntuple-ntuple-show|\ +gtest-tree-ntuple-ntuple-storage\$\$|\ +gtest-tree-ntuple-ntuple-storage-daos|\ +gtest-tree-ntuple-ntuple-types|\ +gtest-tree-ntuple-ntuple-view|\ +gtest-tree-ntuple-rfield-class|\ +gtest-tree-ntuple-rfield-streamer|\ +gtest-tree-ntuple-rfield-variant|\ +gtest-tree-ntuple-rfield-vector|\ gtest-tree-ntupleutil-v7-ntuple-importer|\ gtest-tree-ntupleutil-v7-ntuple-inspector|\ -pyunittests-bindings-experimental-distrdf-backend-distrdf-unit-backend-graph-caching|\ +pyunittests-bindings-distrdf-backend-distrdf-unit-backend-graph-caching|\ pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor|\ pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector|\ -tutorial-dataframe-df006_ranges-py|\ -tutorial-fit-combinedFit-py|\ -tutorial-fit-NumericalMinimization-py|\ +tutorial-analysis-dataframe-df006_ranges-py|\ +tutorial-experimental-rcanvas-rbox-py|\ +tutorial-hist-hist007_TH1_liveupdate-py|\ tutorial-math-exampleFunction-py|\ -tutorial-pyroot-hsum-py|\ -tutorial-rcanvas-rbox-py|\ -tutorial-tree-drawsparse|\ +tutorial-math-fit-combinedFit-py|\ +tutorial-math-fit-NumericalMinimization-py|\ test-stresshistofit\$\$|\ test-stresshistofit-interpreted|\ test-stresshistogram\$\$|\ test-stresshistogram-interpreted" %endif -%if %{?fedora}%{!?fedora:0} >= 40 || %{?rhel}%{!?rhel:0} >= 10 # Fails with gcc 14 on aarch64, ppc64le and s390x (on EPEL 10 also x86_64) # https://github.com/root-project/root/issues/14446 # - gtest-math-matrix-testMatrixTSparse +%if %{?fedora}%{!?fedora:0} >= 40 +%ifarch aarch64 %{power64} s390x +excluded="${excluded}|\ +gtest-math-matrix-testMatrixTSparse" +%endif +%endif +%if %{?rhel}%{!?rhel:0} >= 10 excluded="${excluded}|\ gtest-math-matrix-testMatrixTSparse" %endif +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 +# - https://github.com/root-project/root/issues/18995 +excluded="${excluded}|\ +gtest-tree-tree-testTTreeRegressions" +%endif + +%if %{?fedora}%{!?fedora:0} >= 43 +# Failures due to reference counting changes in Python 3.14 +# - https://github.com/root-project/root/issues/18988 +# - https://docs.python.org/3.14/whatsnew/3.14.html +excluded="${excluded}|\ +pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rdataframe-makenumpy|\ +pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rvec-asrvec" +%endif + # Filter out parts of tests that require remote network access # RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) +# InterpreterTest.Evaluate fails on s390x # TClingDataMemberInfo.Offset fails on s390x # https://github.com/root-project/root/issues/14512 GTEST_FILTER=-\ @@ -2713,6 +2682,7 @@ GTEST_FILTER=-\ RNTuple.StdAtomic:\ %endif %ifarch s390x +InterpreterTest.Evaluate:\ TClingDataMemberInfo.Offset:\ %endif RCsvDS.Remote:\ @@ -3103,11 +3073,6 @@ fi %{_libdir}/%{name}/libSpectrumPainter.* %{_libdir}/%{name}/libSpectrumPainter_rdict.pcm -%files html -f includelist-html -%{_libdir}/%{name}/libHtml.* -%{_libdir}/%{name}/libHtml_rdict.pcm -%{_datadir}/%{name}/html - %files io -f includelist-io-io %{_libdir}/%{name}/libRIO.* %{_datadir}/%{name}/plugins/TArchiveFile/P010_TZIPFile.C @@ -3195,8 +3160,6 @@ fi %{_libdir}/%{name}/libMinuit2_rdict.pcm %dir %{_includedir}/%{name}/Minuit2 %{_datadir}/%{name}/plugins/ROOT@@Math@@Minimizer/P010_Minuit2Minimizer.C -%{_datadir}/%{name}/plugins/TVirtualFitter/P030_TFitterMinuit.C -%{_datadir}/%{name}/plugins/TVirtualFitter/P040_TFitterFumili.C %files mlp -f includelist-math-mlp %{_libdir}/%{name}/libMLP.* @@ -3364,14 +3327,16 @@ fi %{_libdir}/%{name}/libRooFitHS3.* %{_libdir}/%{name}/libRooFitHS3_rdict.pcm %dir %{_includedir}/%{name}/RooFitHS3 -%{_datadir}/%{name}/RooFitHS3_wsexportkeys.json -%{_datadir}/%{name}/RooFitHS3_wsfactoryexpressions.json %files roofit-jsoninterface -f includelist-roofit-jsoninterface %{_libdir}/%{name}/libRooFitJSONInterface.* %{_libdir}/%{name}/libRooFitJSONInterface_rdict.pcm %dir %{_includedir}/%{name}/RooFit +%files roofit-codegen -f includelist-roofit-codegen +%{_libdir}/%{name}/libRooFitCodegen.* +%{_libdir}/%{name}/libRooFitCodegen_rdict.pcm + %if %{roofitmp} %files roofit-multiprocess -f includelist-roofit-multiprocess %{_libdir}/%{name}/libRooFitMultiProcess.* @@ -3538,11 +3503,6 @@ fi %{_datadir}/%{name}/runfirefox.sh %{_datadir}/%{name}/ui5 -%ifarch %{qt5_qtwebengine_arches} -%files gui-qt5webdisplay -%{_libdir}/%{name}/libROOTQt5WebDisplay.* -%endif - %ifarch %{qt6_qtwebengine_arches} %files gui-qt6webdisplay %{_libdir}/%{name}/libROOTQt6WebDisplay.* @@ -3590,7 +3550,6 @@ fi %{_libdir}/%{name}/libROOTEve_rdict.pcm %files gui-browsable-v7 -%{_libdir}/%{name}/libROOTHistDrawProvider.* %{_libdir}/%{name}/libROOTLeafDraw7Provider.* %{_libdir}/%{name}/libROOTNTupleBrowseProvider.* %{_libdir}/%{name}/libROOTNTupleDraw6Provider.* @@ -3607,14 +3566,6 @@ fi %{_libdir}/%{name}/libROOTFitPanelv7.* %{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm -%files histv7 -f includelist-hist-histv7 -%{_libdir}/%{name}/libROOTHist.* -%{_libdir}/%{name}/libROOTHist_rdict.pcm - -%files hist-draw -f includelist-hist-histdrawv7 -%{_libdir}/%{name}/libROOTHistDraw.* -%{_libdir}/%{name}/libROOTHistDraw_rdict.pcm - %files tree-ntuple -f includelist-tree-ntuple %{_libdir}/%{name}/libROOTNTuple.* %{_libdir}/%{name}/libROOTNTuple_rdict.pcm @@ -3626,6 +3577,12 @@ fi %endif %changelog +* Sat Jun 07 2025 Mattias Ellert - 6.36.00-1 +- Update to 6.36.00 +- Enable the R interface for EPEL 10.1 +- Removed subpackages: root-gui-qt5webdisplay, -hist-draw, -histv7 and -html +- New subpackage: root-roofit-codegen + * Tue Jun 03 2025 Python Maint - 6.34.08-5 - Rebuilt for Python 3.14 diff --git a/sources b/sources index 99610a2..a6bdda4 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.34.08.tar.xz) = 58699d441555a82f9c2d00fc33719786bc5e4925060122f5e7fb46df28feec1d4047987b4badb20b19c484b13229b173bd110d25b1f3d426d70039847d879299 +SHA512 (root-6.36.00.tar.xz) = 2030961b001494a177b96540711940bb8f11fbcf624edfe3282bd7c2c0ad1ef60ed6a5cac9799dfae0d40f21f33728e6ab906f3da95589412dee592aebfbf4f4 SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 -SHA512 (clad-1.7.tar.gz) = ff9856ed4901625b4c31bc4b5ac97f464667f58c567caaab8b2a2567de4e0908ff0fffbb566fe728fc6184d3d6bc156bbabacf24d83009e36b2956d535171066 +SHA512 (clad-1.9.tar.gz) = df0569f12e3381e9285639eee927d9effb2812765caad2d281c41f6673828ab28b7bf8143ae9686090649cf889e757cfead58baa47e907de468185125a4d772c From 0afdff9faefb7bec445e963dd6ce46b4fd90db27 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 21 Jun 2025 05:38:04 +0200 Subject: [PATCH 68/89] Add root-tree-ntuple and root-tree-ntuple-utils dependensies to root-core (listed in root-config --libs) Rename root-fonts package to root-font-files Add optional test dependency python3-pandas now available in EPEL 10 Add dependency jupyter-notebook to root-jupyroot for EPEL 10.1 and later Fix Python 3.14 refcount issues in tests --- root-Fix-test-for-32-bit-architectures.patch | 24 +++--- root-Ignore-warnings-from-uring-IO.patch | 30 ++++---- ...ference-refcount-values-for-Python-3.patch | 66 ++++++++++++++++ ...erence-refcount-values-for-Python-3x.patch | 44 +++++++++++ root.spec | 77 +++++++++++-------- 5 files changed, 181 insertions(+), 60 deletions(-) create mode 100644 root-Python-Update-reference-refcount-values-for-Python-3.patch create mode 100644 root-Python-Update-reference-refcount-values-for-Python-3x.patch diff --git a/root-Fix-test-for-32-bit-architectures.patch b/root-Fix-test-for-32-bit-architectures.patch index 5da0477..879e3df 100644 --- a/root-Fix-test-for-32-bit-architectures.patch +++ b/root-Fix-test-for-32-bit-architectures.patch @@ -1,6 +1,6 @@ -From 9efe32d0f0e89624d7cf5efeca9cf151d9d0b220 Mon Sep 17 00:00:00 2001 +From 8f08aac1c5d356352d2bd24b05dcdd092d3ca864 Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Tue, 3 Jun 2025 19:57:31 +0200 +Date: Thu, 19 Jun 2025 13:28:24 +0200 Subject: [PATCH] Fix test for 32 bit architectures [ RUN ] TypeReflectionTest.GetSizeOfType @@ -20,33 +20,35 @@ Expected equality of these values: Which is: 16 [ FAILED ] ScopeReflectionTest.SizeOf (26 ms) --- - .../CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp | 2 +- - .../CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + .../CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp | 3 ++- + .../CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp -index 0b39080859..14122c6498 100644 +index 0b39080859..d490d0833c 100644 --- a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp +++ b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp -@@ -158,7 +158,7 @@ TEST(ScopeReflectionTest, SizeOf) { +@@ -158,7 +158,8 @@ TEST(ScopeReflectionTest, SizeOf) { EXPECT_EQ(Cpp::SizeOf(Decls[4]), (size_t)0); EXPECT_EQ(Cpp::SizeOf(Decls[5]), (size_t)1); EXPECT_EQ(Cpp::SizeOf(Decls[6]), (size_t)4); - EXPECT_EQ(Cpp::SizeOf(Decls[7]), (size_t)16); -+ EXPECT_EQ(Cpp::SizeOf(Decls[7]), (size_t) (sizeof(size_t) == 4 ? 12 : 16)); ++ struct B {short a; double b;}; ++ EXPECT_EQ(Cpp::SizeOf(Decls[7]), sizeof(B)); } diff --git a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp -index a3e482596d..8f7bc01ebe 100644 +index a3e482596d..28cc32f166 100644 --- a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp +++ b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp -@@ -77,7 +77,7 @@ TEST(TypeReflectionTest, GetSizeOfType) { +@@ -77,7 +77,8 @@ TEST(TypeReflectionTest, GetSizeOfType) { EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[1])), 1); EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[2])), 4); EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[3])), 8); - EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), 16); -+ EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), sizeof(size_t) == 4 ? 12 : 16); ++ struct B {int a; double b;}; ++ EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), sizeof(B)); EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetTypeFromScope(Decls[5])), 0); EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[6])), sizeof(intptr_t)); diff --git a/root-Ignore-warnings-from-uring-IO.patch b/root-Ignore-warnings-from-uring-IO.patch index 6183dff..2208534 100644 --- a/root-Ignore-warnings-from-uring-IO.patch +++ b/root-Ignore-warnings-from-uring-IO.patch @@ -1,6 +1,6 @@ -From 1c0b441b9e23ac6a0b7b239a9e06b5caa263cf60 Mon Sep 17 00:00:00 2001 +From f4ac6bf20278c19c88cf98f6062ecfad86b87378 Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Sat, 7 Jun 2025 16:57:52 +0200 +Date: Thu, 19 Jun 2025 14:02:31 +0200 Subject: [PATCH] Ignore warnings from uring IO Tests randomly fail because the uring memory is exhausted. @@ -31,29 +31,27 @@ Received unexpected diagnostic of severity 2000 at 'RRawFileUnix' reading 'io_ur Suppress those using ROOT/TestSupport.hxx [ FAILED ] RNTupleDSTest.ChainMT (1004 ms) --- - core/testsupport/src/TestSupport.cxx | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + core/testsupport/src/TestSupport.cxx | 12 ++++++++++++ + 1 file changed, 12 insertions(+) diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx -index 9889a432f4..c7ee440746 100644 +index 9889a432f4..4c3395ef16 100644 --- a/core/testsupport/src/TestSupport.cxx +++ b/core/testsupport/src/TestSupport.cxx -@@ -76,6 +76,20 @@ static struct ForbidDiagnostics { +@@ -76,6 +76,18 @@ static struct ForbidDiagnostics { return; } -+ if (level == kWarning -+ && strcmp(location, "RIoUring") == 0 -+ && strcmp(msg, "io_uring is unexpectedly not available because:\nFailed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user") == 0) { -+ std::cerr << "Warning in " << location << " " << msg << std::endl; -+ return; ++ if (level == kWarning && strcmp(location, "RIoUring") == 0 && ++ strstr(msg, "io_uring is unexpectedly not available because:") != nullptr) { ++ std::cerr << "Warning in " << location << " " << msg << std::endl; ++ return; + } + -+ if (level == kWarning -+ && strcmp(location, "RRawFileUnix") == 0 -+ && strcmp(msg, "io_uring setup failed, falling back to blocking I/O in ReadV") == 0) { -+ std::cerr << "Warning in " << location << " " << msg << std::endl; -+ return; ++ if (level == kWarning && strcmp(location, "RRawFileUnix") == 0 && ++ strcmp(msg, "io_uring setup failed, falling back to blocking I/O in ReadV") == 0) { ++ std::cerr << "Warning in " << location << " " << msg << std::endl; ++ return; + } + FAIL() << "Received unexpected diagnostic of severity " diff --git a/root-Python-Update-reference-refcount-values-for-Python-3.patch b/root-Python-Update-reference-refcount-values-for-Python-3.patch new file mode 100644 index 0000000..fd341ee --- /dev/null +++ b/root-Python-Update-reference-refcount-values-for-Python-3.patch @@ -0,0 +1,66 @@ +From f26668d48bfc75e9c176f7981e51ddc3b5ed7895 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Wed, 11 Jun 2025 14:15:07 +0200 +Subject: [PATCH] [Python] Update reference refcount values for Python 3.14 + compatibility + +Closes: #18988. +--- + .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 9 ++++++++- + bindings/pyroot/pythonizations/test/rvec_asrvec.py | 10 +++++++--- + 2 files changed, 15 insertions(+), 4 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py +index 072148aeb6..c7da723523 100644 +--- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py ++++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py +@@ -75,10 +75,17 @@ class DataFrameFromNumpy(unittest.TestCase): + def test_refcount(self): + """ + Check refcounts of associated PyObjects ++ ++ In case of Python <=3.14, we expect a refcount of 2 for the data dict, ++ because the call to sys.getrefcount creates a second reference by ++ itself. Starting from Python 3.14, we expect a refcount of 1 because ++ there were changes to the interpreter to avoid some unnecessary ref ++ counts. See also: ++ https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-refcount + """ + data = {"x": np.array([1, 2, 3], dtype="float32")} + gc.collect() +- self.assertEqual(sys.getrefcount(data), 2) ++ self.assertEqual(sys.getrefcount(data), 1 + int(sys.version_info < (3, 14))) + self.assertEqual(sys.getrefcount(data["x"]), 2) + + df = ROOT.RDF.FromNumpy(data) +diff --git a/bindings/pyroot/pythonizations/test/rvec_asrvec.py b/bindings/pyroot/pythonizations/test/rvec_asrvec.py +index 5e6c820705..9d3a294bf1 100644 +--- a/bindings/pyroot/pythonizations/test/rvec_asrvec.py ++++ b/bindings/pyroot/pythonizations/test/rvec_asrvec.py +@@ -123,8 +123,12 @@ class AsRVec(unittest.TestCase): + """ + Test reference count of returned RVec + +- We expect a refcount of 2 for the RVec because the call to sys.getrefcount +- creates a second reference by itself. ++ In case of Python <=3.14, we expect a refcount of 2 for the RVec ++ because the call to sys.getrefcount creates a second reference by ++ itself. Starting from Python 3.14, we expect a refcount of 1 because ++ there were changes to the interpreter to avoid some unnecessary ref ++ counts. See also: ++ https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-refcount + We attach the adopted pyobject to the RVec and increase the refcount of the + numpy array. After deletion of the rvec, the refcount of the numpy array + is decreased. +@@ -132,7 +136,7 @@ class AsRVec(unittest.TestCase): + np_obj = np.array([1, 2]) + rvec = ROOT.VecOps.AsRVec(np_obj) + gc.collect() +- self.assertEqual(sys.getrefcount(rvec), 2) ++ self.assertEqual(sys.getrefcount(rvec), 1 + int(sys.version_info < (3, 14))) + self.assertEqual(sys.getrefcount(np_obj), 3) + del rvec + gc.collect() +-- +2.49.0 + diff --git a/root-Python-Update-reference-refcount-values-for-Python-3x.patch b/root-Python-Update-reference-refcount-values-for-Python-3x.patch new file mode 100644 index 0000000..ecb27dc --- /dev/null +++ b/root-Python-Update-reference-refcount-values-for-Python-3x.patch @@ -0,0 +1,44 @@ +From 530d925f9832fe5fd1469ebf145f85227cfce1d4 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 20 Jun 2025 07:21:05 +0200 +Subject: [PATCH] [Python] Update reference refcount values for Python 3.14 + compatibility + +--- + bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py | 2 +- + bindings/pyroot/pythonizations/test/rvec_asrvec.py | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py +index c7da723523..fc0f88155a 100644 +--- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py ++++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py +@@ -90,7 +90,7 @@ class DataFrameFromNumpy(unittest.TestCase): + + df = ROOT.RDF.FromNumpy(data) + gc.collect() +- self.assertEqual(sys.getrefcount(df), 2) ++ self.assertEqual(sys.getrefcount(df), 1 + int(sys.version_info < (3, 14))) + + self.assertEqual(sys.getrefcount(data["x"]), 3) + +diff --git a/bindings/pyroot/pythonizations/test/rvec_asrvec.py b/bindings/pyroot/pythonizations/test/rvec_asrvec.py +index 9d3a294bf1..f489da826e 100644 +--- a/bindings/pyroot/pythonizations/test/rvec_asrvec.py ++++ b/bindings/pyroot/pythonizations/test/rvec_asrvec.py +@@ -137,10 +137,10 @@ class AsRVec(unittest.TestCase): + rvec = ROOT.VecOps.AsRVec(np_obj) + gc.collect() + self.assertEqual(sys.getrefcount(rvec), 1 + int(sys.version_info < (3, 14))) +- self.assertEqual(sys.getrefcount(np_obj), 3) ++ self.assertEqual(sys.getrefcount(np_obj), 2 + int(sys.version_info < (3, 14))) + del rvec + gc.collect() +- self.assertEqual(sys.getrefcount(np_obj), 2) ++ self.assertEqual(sys.getrefcount(np_obj), 1 + int(sys.version_info < (3, 14))) + + + if __name__ == "__main__": +-- +2.49.0 + diff --git a/root.spec b/root.spec index c999668..5ef8c6a 100644 --- a/root.spec +++ b/root.spec @@ -10,7 +10,7 @@ %global bundlejson 0 -%if %{?fedora}%{!?fedora:0} +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 %ifarch %{ix86} %{arm} %global pandas 0 %else @@ -39,7 +39,7 @@ Name: root Version: 6.36.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -96,6 +96,11 @@ Patch9: %{name}-Use-size_t-for-offset.patch Patch10: %{name}-Fix-test-for-32-bit-architectures.patch # Remove extra 0 in release number Patch11: %{name}-Update-release-number.patch +# https://github.com/root-project/root/issues/18988 +# https://github.com/root-project/root/pull/19014 +# https://github.com/root-project/root/pull/19107 +Patch12: %{name}-Python-Update-reference-refcount-values-for-Python-3.patch +Patch13: %{name}-Python-Update-reference-refcount-values-for-Python-3x.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -248,14 +253,17 @@ Requires: %{name}-core = %{version}-%{release} %description icons This package contains icons used by the ROOT GUI. -%package fonts +%package font-files Summary: ROOT font collection BuildArch: noarch # STIX version 0.9 only License: OFL-1.1 Requires: %{name}-core = %{version}-%{release} +# Package renamed +Provides: %{name}-fonts = %{version}-%{release} +Obsoletes: %{name}-fonts < 6.36.00-2 -%description fonts +%description font-files 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. @@ -270,7 +278,7 @@ This package contains the tutorial scripts and test suite for ROOT. %package core Summary: ROOT core libraries License: LGPL-2.1-or-later AND LGPL-2.0-or-later AND ISC AND MIT AND NCSA -Requires: %{name}-fonts = %{version}-%{release} +Requires: %{name}-font-files = %{version}-%{release} Requires: %{name}-icons = %{version}-%{release} # Dynamic dependencies Requires: %{name}-cling%{?_isa} = %{version}-%{release} @@ -294,6 +302,10 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} %if %{dataframe} Requires: %{name}-tree-dataframe%{?_isa} = %{version}-%{release} %endif +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +%if %{root7} +Requires: %{name}-tree-ntuple-utils%{?_isa} = %{version}-%{release} +%endif Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: %{name}-vecops%{?_isa} = %{version}-%{release} # To resolve dependency in installed ROOTConfig.cmake @@ -417,8 +429,8 @@ Requires: %{name}-core = %{version}-%{release} # notebook package was merged with JupyROOT package Provides: %{name}-notebook = %{version}-%{release} Obsoletes: %{name}-notebook < 6.32.00 -Requires: js-jsroot >= 7.8 -%if %{?fedora}%{!?fedora:0} +Requires: js-jsroot >= 7.9 +%if %{?fedora}%{!?fedora:0} || ( %{?rhel}%{!?rhel:0} >= 10 && "%{?dist}" != ".el10_0" ) # jupyter-notebook not available in RHEL/EPEL # some functionality missing Requires: jupyter-notebook @@ -1143,7 +1155,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 >= 7.8 +Requires: js-jsroot >= 7.9 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -1672,9 +1684,7 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} -%if %{root7} 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) @@ -1826,6 +1836,14 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description geom-webviewer This package contains a library for viewing geometries in a web GUI. +%package tree-ntuple +Summary: The new ROOT n-tuple class +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} + +%description tree-ntuple +This package contains the new ROOT n-tuple class (RNTuple). + %if %{root7} %package graf-gpadv7 Summary: Canvas and pad library for ROOT (ROOT 7) @@ -1913,14 +1931,6 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} This package contains a library to show a pop-up dialog when fitting various kinds of data. -%package tree-ntuple -Summary: Ntuple (ROOT 7) -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} - -%description tree-ntuple -This package contains an ntuple extension for ROOT 7. - %package tree-ntuple-utils Summary: Ntuple utility library (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1948,6 +1958,8 @@ This package contains utility functions for ntuples. %patch -P9 -p1 %patch -P10 -p1 %patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2663,15 +2675,6 @@ excluded="${excluded}|\ gtest-tree-tree-testTTreeRegressions" %endif -%if %{?fedora}%{!?fedora:0} >= 43 -# Failures due to reference counting changes in Python 3.14 -# - https://github.com/root-project/root/issues/18988 -# - https://docs.python.org/3.14/whatsnew/3.14.html -excluded="${excluded}|\ -pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rdataframe-makenumpy|\ -pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rvec-asrvec" -%endif - # Filter out parts of tests that require remote network access # RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) # InterpreterTest.Evaluate fails on s390x @@ -2784,7 +2787,7 @@ fi %files icons %{_datadir}/%{name}/icons -%files fonts +%files font-files %{_datadir}/%{name}/fonts %files tutorial @@ -3536,6 +3539,11 @@ fi %{_libdir}/%{name}/libROOTGeomViewer_rdict.pcm %{_datadir}/%{name}/plugins/TVirtualGeoPainter/P020_RGeoPainter.C +%files tree-ntuple -f includelist-tree-ntuple +%{_libdir}/%{name}/libROOTNTuple.* +%{_libdir}/%{name}/libROOTNTuple_rdict.pcm +%dir %{_includedir}/%{name}/ROOT/libdaos_mock + %if %{root7} %files graf-gpadv7 -f includelist-graf2d-gpadv7 %{_libdir}/%{name}/libROOTGpadv7.* @@ -3566,17 +3574,20 @@ fi %{_libdir}/%{name}/libROOTFitPanelv7.* %{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm -%files tree-ntuple -f includelist-tree-ntuple -%{_libdir}/%{name}/libROOTNTuple.* -%{_libdir}/%{name}/libROOTNTuple_rdict.pcm -%dir %{_includedir}/%{name}/ROOT/libdaos_mock - %files tree-ntuple-utils -f includelist-tree-ntupleutil %{_libdir}/%{name}/libROOTNTupleUtil.* %{_libdir}/%{name}/libROOTNTupleUtil_rdict.pcm %endif %changelog +* Sat Jun 21 2025 Mattias Ellert - 6.36.00-2 +- Add root-tree-ntuple and root-tree-ntuple-utils dependensies to root-core + (listed in root-config --libs) +- Rename root-fonts package to root-font-files +- Add optional test dependency python3-pandas now available in EPEL 10 +- Add dependency jupyter-notebook to root-jupyroot for EPEL 10.1 and later +- Fix Python 3.14 refcount issues in tests + * Sat Jun 07 2025 Mattias Ellert - 6.36.00-1 - Update to 6.36.00 - Enable the R interface for EPEL 10.1 From 2726b64fa0cbe095e3ea39eb737c9617ee506a55 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Thu, 10 Jul 2025 19:21:27 -0400 Subject: [PATCH 69/89] Rebuilt for libarrow 20 Signed-off-by: Stephen Gallagher --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 5ef8c6a..5f5f785 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3580,6 +3580,9 @@ fi %endif %changelog +* Thu Jul 10 2025 Stephen Gallagher - 6.36.00-3 +- Rebuilt for libarrow 20 + * Sat Jun 21 2025 Mattias Ellert - 6.36.00-2 - Add root-tree-ntuple and root-tree-ntuple-utils dependensies to root-core (listed in root-config --libs) From 3a74b8b61031092540cb0b4280d4e1099de2d010 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 13 Jul 2025 07:11:20 +0200 Subject: [PATCH 70/89] Update to 6.36.02 --- root-Update-release-number.patch | 25 ----------- root.spec | 74 +++++++++++++++++--------------- sources | 2 +- 3 files changed, 40 insertions(+), 61 deletions(-) delete mode 100644 root-Update-release-number.patch diff --git a/root-Update-release-number.patch b/root-Update-release-number.patch deleted file mode 100644 index c9f05cd..0000000 --- a/root-Update-release-number.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 0ad965c6a2ed651e4a933434735fbe1c6bf32c1c Mon Sep 17 00:00:00 2001 -From: Danilo Piparo -Date: Mon, 26 May 2025 10:05:26 +0200 -Subject: [PATCH] Update release number - ---- - core/foundation/inc/ROOT/RVersion.hxx | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/core/foundation/inc/ROOT/RVersion.hxx b/core/foundation/inc/ROOT/RVersion.hxx -index 365a371b2a..d5a3623747 100644 ---- a/core/foundation/inc/ROOT/RVersion.hxx -+++ b/core/foundation/inc/ROOT/RVersion.hxx -@@ -4,7 +4,7 @@ - /* Update on release: */ - #define ROOT_VERSION_MAJOR 6 - #define ROOT_VERSION_MINOR 36 --#define ROOT_VERSION_PATCH 00 -+#define ROOT_VERSION_PATCH 0 - #define ROOT_RELEASE_DATE "May 26 2025" - - /* Don't change the lines below. */ --- -2.49.0 - diff --git a/root.spec b/root.spec index 5f5f785..0f6e4b9 100644 --- a/root.spec +++ b/root.spec @@ -37,9 +37,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.36.00 +Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -94,13 +94,11 @@ Patch9: %{name}-Use-size_t-for-offset.patch # Fix 32 bit test failure # https://github.com/root-project/root/pull/18993 Patch10: %{name}-Fix-test-for-32-bit-architectures.patch -# Remove extra 0 in release number -Patch11: %{name}-Update-release-number.patch # https://github.com/root-project/root/issues/18988 # https://github.com/root-project/root/pull/19014 # https://github.com/root-project/root/pull/19107 -Patch12: %{name}-Python-Update-reference-refcount-values-for-Python-3.patch -Patch13: %{name}-Python-Update-reference-refcount-values-for-Python-3x.patch +Patch11: %{name}-Python-Update-reference-refcount-values-for-Python-3.patch +Patch12: %{name}-Python-Update-reference-refcount-values-for-Python-3x.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1516,6 +1514,8 @@ provides a thin client (interface) to MySQL servers. Using this client, one can obtain information from a MySQL database into the ROOT environment. +This package is deprecated and will be removed in the next release of ROOT. + %package sql-odbc Summary: ODBC plugin for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1526,6 +1526,8 @@ This package contains the ODBC (Open DataBase Connectivity) plugin for ROOT, that allows transparent access to any kind of database that supports the ODBC protocol. +This package is deprecated and will be removed in the next release of ROOT. + %package sql-sqlite Summary: Sqlite client plugin for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1548,6 +1550,8 @@ provides a thin client (interface) to PostGreSQL servers. Using this client, one can obtain information from a PostGreSQL database into the ROOT environment. +This package is deprecated and will be removed in the next release of ROOT. + %package tmva Summary: Toolkit for multivariate data analysis License: BSD-3-Clause @@ -1959,7 +1963,6 @@ This package contains utility functions for ntuples. %patch -P10 -p1 %patch -P11 -p1 %patch -P12 -p1 -%patch -P13 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2461,6 +2464,12 @@ popd # # - test-webgui-ping # error: Cannot display window in native +# +# - test-stressgraphics-firefox-skip3d: +# requires firefox... +# +# - tutorial-visualisation-webcanv-fonts_ttf.cxx: +# Requires web graphics excluded="\ test-stressIOPlugins|\ tutorial-analysis-dataframe-df101_h1Analysis|\ @@ -2486,42 +2495,27 @@ gtest-net-netxng-RRawFileNetXNG|\ gtest-net-netxng-TNetXNGFileTest|\ tutorial-analysis-parallel-mp_processSelector|\ tutorial-tmva-tmva103_Application|\ -test-webgui-ping" - -# gtest-roofit-roofit-vectorisedPDFs-testLandau: -# Expected equality of these values: -# nFarOff -# Which is: 1 -# 0u -# Which is: 0 -# -# gtest-tree-treeplayer-ttreeindex-clone -# gtest-tree-treeplayer-treetreeplayertestUnit: -# Randomly fail - can't open file that was just created - race condition? -# -# test-stressgraphics-firefox-skip3d: -# requires firefox... -# -# tutorial-visualisation-webcanv-fonts_ttf.cxx: -# Requires web graphics -excluded="${excluded}|\ -gtest-roofit-roofit-vectorisedPDFs-testLandau|\ -gtest-tree-treeplayer-ttreeindex-clone|\ -gtest-tree-treeplayer-treetreeplayertestUnit|\ +test-webgui-ping|\ test-stressgraphics-firefox-skip3d|\ tutorial-visualisation-webcanv-fonts_ttf.cxx" +# Duplicated tests +# https://github.com/root-project/root/issues/19346 +# - gtest-tree-treeplayer-ttreeindex-clone +# - gtest-tree-treeplayer-ttreeindex-getlistoffriends +# - gtest-tree-treeplayer-ttreereader-friends +excluded="${excluded}|\ +gtest-tree-treeplayer-ttreeindex-clone|\ +gtest-tree-treeplayer-ttreeindex-getlistoffriends|\ +gtest-tree-treeplayer-ttreereader-friends" + %ifarch %{ix86} -# - gtest-tree-dataframe-dataframe-concurrency -# "There's already an active task arena." -# -# - gtest-hist-hist-TFormulaGradientTests|\ +# - gtest-hist-hist-TFormulaGradientTests # out of memory # # - pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views # ValueError: buffer is smaller than requested size excluded="${excluded}|\ -gtest-tree-dataframe-dataframe-concurrency|\ gtest-hist-hist-TFormulaGradientTests|\ pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views" %endif @@ -2532,7 +2526,7 @@ pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views" excluded="${excluded}|\ tutorial-roofit-roostats-IntervalExamples-py" -%if %{?fedora}%{!?fedora:0} >= 42 +%if %{?fedora}%{!?fedora:0} == 42 # - gtest-tree-ntuple-ntuple-emulated # - gtest-tree-ntuple-ntuple-evolution # waitpid() failed @@ -2547,6 +2541,12 @@ gtest-tree-ntuple-ntuple-evolution" excluded="${excluded}|\ tutorial-roofit-roostats-StandardBayesianMCMCDemo-py" %endif + +%if %{?rhel}%{!?rhel:0} >= 10 +excluded="${excluded}|\ +test-stressgraphics\$\$|\ +test-stressgraphics-interpreted" +%endif %endif %ifarch s390x @@ -2687,6 +2687,7 @@ RNTuple.StdAtomic:\ %ifarch s390x InterpreterTest.Evaluate:\ TClingDataMemberInfo.Offset:\ +TTreeReaderBasic.LorentzVector32:\ %endif RCsvDS.Remote:\ RNTuple.OpenHTTP:\ @@ -3580,6 +3581,9 @@ fi %endif %changelog +* Sun Jul 13 2025 Mattias Ellert - 6.36.02-1 +- Update to 6.36.02 + * Thu Jul 10 2025 Stephen Gallagher - 6.36.00-3 - Rebuilt for libarrow 20 diff --git a/sources b/sources index a6bdda4..1a7800f 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.36.00.tar.xz) = 2030961b001494a177b96540711940bb8f11fbcf624edfe3282bd7c2c0ad1ef60ed6a5cac9799dfae0d40f21f33728e6ab906f3da95589412dee592aebfbf4f4 +SHA512 (root-6.36.02.tar.xz) = 9c64aa5e7a6bd24a9584024c14700f0c56885b58880bda3e6a78a4db05fc5b980ae0823b5c7aaa3a83dfded36a2cfd0302c798d23a30012418833efa1efbebe8 SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 SHA512 (clad-1.9.tar.gz) = df0569f12e3381e9285639eee927d9effb2812765caad2d281c41f6673828ab28b7bf8143ae9686090649cf889e757cfead58baa47e907de468185125a4d772c From e076764de0887f00a97cf07ed0e61636861d1227 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 13 Jul 2025 18:59:06 +0200 Subject: [PATCH 71/89] Disable two failing test for rawhide ppc64le --- root.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 0f6e4b9..9b5c023 100644 --- a/root.spec +++ b/root.spec @@ -2526,7 +2526,7 @@ pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views" excluded="${excluded}|\ tutorial-roofit-roostats-IntervalExamples-py" -%if %{?fedora}%{!?fedora:0} == 42 +%if %{?fedora}%{!?fedora:0} >= 42 # - gtest-tree-ntuple-ntuple-emulated # - gtest-tree-ntuple-ntuple-evolution # waitpid() failed From f25bdb09311e1b26761b2740d90c28c6b65ab946 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 12:04:15 +0000 Subject: [PATCH 72/89] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 9b5c023..9914e68 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3581,6 +3581,9 @@ fi %endif %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 6.36.02-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Sun Jul 13 2025 Mattias Ellert - 6.36.02-1 - Update to 6.36.02 From e4856607de1547b83046e27e3fdbcd9262150239 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Wed, 13 Aug 2025 11:00:08 -0600 Subject: [PATCH 73/89] Rebuild for libarrow 21 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 9914e68..d50e9a8 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3581,6 +3581,9 @@ fi %endif %changelog +* Wed Aug 13 2025 Orion Poplawski - 6.36.02-3 +- Rebuild for libarrow 21 + * Fri Jul 25 2025 Fedora Release Engineering - 6.36.02-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 146af4880192f2dee65a877f50a171759ce61287 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 15 Aug 2025 15:16:09 +0200 Subject: [PATCH 74/89] Rebuilt for Python 3.14.0rc2 bytecode --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index d50e9a8..17f683a 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3581,6 +3581,9 @@ fi %endif %changelog +* Fri Aug 15 2025 Python Maint - 6.36.02-4 +- Rebuilt for Python 3.14.0rc2 bytecode + * Wed Aug 13 2025 Orion Poplawski - 6.36.02-3 - Rebuild for libarrow 21 From 3d242ce0250358f8bb9df917116dc03dee58649c Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Mon, 18 Aug 2025 07:36:23 -0600 Subject: [PATCH 75/89] Rebuild for libarrow 21 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 17f683a..8b5495a 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3581,6 +3581,9 @@ fi %endif %changelog +* Mon Aug 18 2025 Orion Poplawski - 6.36.02-5 +- Rebuild for libarrow 21 + * Fri Aug 15 2025 Python Maint - 6.36.02-4 - Rebuilt for Python 3.14.0rc2 bytecode From cb90d9590dd34bd01e30893406b66054b4a42067 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 20 Aug 2025 06:32:28 +0200 Subject: [PATCH 76/89] Support libarrow 21 --- root-df-Support-libarrow-21.patch | 44 +++++++++++++++++++++++++++++++ root.spec | 22 ++++++++-------- 2 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 root-df-Support-libarrow-21.patch diff --git a/root-df-Support-libarrow-21.patch b/root-df-Support-libarrow-21.patch new file mode 100644 index 0000000..445b33b --- /dev/null +++ b/root-df-Support-libarrow-21.patch @@ -0,0 +1,44 @@ +From 076bdd3f47431d5e3d90837512a4678fadc07ce8 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 20 Aug 2025 00:28:07 +0200 +Subject: [PATCH] [df] Support libarrow 21 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +arrow::internal::GenericToStatus → arrow::ToStatus +--- + tree/dataframe/test/datasource_arrow.cxx | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx +index 05493baa3d4..8bbcd5ff70d 100644 +--- a/tree/dataframe/test/datasource_arrow.cxx ++++ b/tree/dataframe/test/datasource_arrow.cxx +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #if defined(__GNUC__) + #pragma GCC diagnostic pop + #endif +@@ -21,9 +22,15 @@ + #include + using namespace arrow; + ++#if ARRAY_VERSION_MAJOR >= 21 ++#define ASSERT_OK(expr) \ ++ for (::arrow::Status _st = ::arrow::ToStatus((expr)); !_st.ok();) \ ++ FAIL() << "'" ARROW_STRINGIFY(expr) "' failed with " << _st.ToString() ++#else + #define ASSERT_OK(expr) \ + for (::arrow::Status _st = ::arrow::internal::GenericToStatus((expr)); !_st.ok();) \ + FAIL() << "'" ARROW_STRINGIFY(expr) "' failed with " << _st.ToString() ++#endif + + // Copied from arrow/testing/builder.h + template +-- +2.50.1 + diff --git a/root.spec b/root.spec index 8b5495a..aba7438 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 6%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -99,6 +99,8 @@ Patch10: %{name}-Fix-test-for-32-bit-architectures.patch # https://github.com/root-project/root/pull/19107 Patch11: %{name}-Python-Update-reference-refcount-values-for-Python-3.patch Patch12: %{name}-Python-Update-reference-refcount-values-for-Python-3x.patch +# https://github.com/root-project/root/pull/19689 +Patch13: %{name}-df-Support-libarrow-21.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1963,6 +1965,7 @@ This package contains utility functions for ntuples. %patch -P10 -p1 %patch -P11 -p1 %patch -P12 -p1 +%patch -P13 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2395,6 +2398,7 @@ ln -s ../../files files ln -s ../../files/tutorials/df014_CsvDataSource_MuRun2010B.csv CsvDataSource_MuRun2010B.csv ln -s ../../files/usa.root usa.root popd +popd # Exclude some tests that can not be run # @@ -2680,7 +2684,7 @@ gtest-tree-tree-testTTreeRegressions" # InterpreterTest.Evaluate fails on s390x # TClingDataMemberInfo.Offset fails on s390x # https://github.com/root-project/root/issues/14512 -GTEST_FILTER=-\ +export GTEST_FILTER=-\ %ifarch %{ix86} RNTuple.StdAtomic:\ %endif @@ -2696,15 +2700,8 @@ RSqliteDS.Davix:\ TChainParsing.DoubleSlash:\ TChainParsing.RemoteGlob:\ TFile.ReadWithoutGlobalRegistrationNet:\ -TFile.ReadWithoutGlobalRegistrationWeb \ -%if ! %{pandas} -ROOTTEST_IGNORE_PANDAS_PY3=1 \ -%endif -ROOTTEST_IGNORE_NUMBA_PY3=1 \ -ROOTTEST_IGNORE_JUPYTER_PY3=1 \ -make test ARGS="%{?_smp_mflags} --output-on-failure -E \"${excluded}\"" - -popd +TFile.ReadWithoutGlobalRegistrationWeb +%ctest -- -E "${excluded}" %pretrans net-http -p path = "%{_datadir}/%{name}/js" @@ -3581,6 +3578,9 @@ fi %endif %changelog +* Tue Aug 19 2025 Mattias Ellert - 6.36.02-6 +- Support libarrow 21 + * Mon Aug 18 2025 Orion Poplawski - 6.36.02-5 - Rebuild for libarrow 21 From c3014d3347e99c16b504984b9a27a3a66695878b Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Wed, 20 Aug 2025 08:19:57 +0200 Subject: [PATCH 77/89] Fix typo in patch --- root-df-Support-libarrow-21.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/root-df-Support-libarrow-21.patch b/root-df-Support-libarrow-21.patch index 445b33b..a82683d 100644 --- a/root-df-Support-libarrow-21.patch +++ b/root-df-Support-libarrow-21.patch @@ -1,6 +1,6 @@ -From 076bdd3f47431d5e3d90837512a4678fadc07ce8 Mon Sep 17 00:00:00 2001 +From 4bfc8d1ff53b398c8e5bd879ca32ead4321b844a Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Wed, 20 Aug 2025 00:28:07 +0200 +Date: Wed, 20 Aug 2025 08:17:16 +0200 Subject: [PATCH] [df] Support libarrow 21 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -12,7 +12,7 @@ arrow::internal::GenericToStatus → arrow::ToStatus 1 file changed, 7 insertions(+) diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx -index 05493baa3d4..8bbcd5ff70d 100644 +index 05493baa3d4..73749b59afc 100644 --- a/tree/dataframe/test/datasource_arrow.cxx +++ b/tree/dataframe/test/datasource_arrow.cxx @@ -12,6 +12,7 @@ @@ -27,7 +27,7 @@ index 05493baa3d4..8bbcd5ff70d 100644 #include using namespace arrow; -+#if ARRAY_VERSION_MAJOR >= 21 ++#if ARROW_VERSION_MAJOR >= 21 +#define ASSERT_OK(expr) \ + for (::arrow::Status _st = ::arrow::ToStatus((expr)); !_st.ok();) \ + FAIL() << "'" ARROW_STRINGIFY(expr) "' failed with " << _st.ToString() From 895043f78c6763f979e6fdfe9c5d8971063023a4 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Wed, 20 Aug 2025 15:39:40 -0600 Subject: [PATCH 78/89] Rebuild for tbb 2022.2.0 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index aba7438..1bf54c5 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 6%{?dist} +Release: 7%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3578,6 +3578,9 @@ fi %endif %changelog +* Wed Aug 20 2025 Jerry James - 6.36.02-7 +- Rebuild for tbb 2022.2.0 + * Tue Aug 19 2025 Mattias Ellert - 6.36.02-6 - Support libarrow 21 From 18473dc6e6b17b1e09a8d6896bf1a8c2e23aafea Mon Sep 17 00:00:00 2001 From: Jerry James Date: Wed, 20 Aug 2025 15:39:40 -0600 Subject: [PATCH 79/89] Rebuild for tbb 2022.2.0 --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 17f683a..28c79b7 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.02 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3581,6 +3581,9 @@ fi %endif %changelog +* Wed Aug 20 2025 Jerry James - 6.36.02-5 +- Rebuild for tbb 2022.2.0 + * Fri Aug 15 2025 Python Maint - 6.36.02-4 - Rebuilt for Python 3.14.0rc2 bytecode From da1ca8ff8fa0341599f6a3c29ae59a04e84ff0ad Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 28 Aug 2025 06:37:03 +0200 Subject: [PATCH 80/89] Update sources --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index 1a7800f..17b366b 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.36.02.tar.xz) = 9c64aa5e7a6bd24a9584024c14700f0c56885b58880bda3e6a78a4db05fc5b980ae0823b5c7aaa3a83dfded36a2cfd0302c798d23a30012418833efa1efbebe8 +SHA512 (root-6.36.04.tar.xz) = d8798d777f308e59ebb3429323895757ca9538499dbb1989d70b3a01c2122b2a01911b0e7da673d7a9fc40acd49fdbf6a5b4341266c1b68a8a88d9f904e7919b SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 SHA512 (clad-1.9.tar.gz) = df0569f12e3381e9285639eee927d9effb2812765caad2d281c41f6673828ab28b7bf8143ae9686090649cf889e757cfead58baa47e907de468185125a4d772c From 84f092c91de687e69580f2a411133949ec8a000e Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 19 Sep 2025 14:53:54 +0200 Subject: [PATCH 81/89] Rebuilt for Python 3.14.0rc3 bytecode --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 84efcc3..bd7f0a7 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3575,6 +3575,9 @@ fi %endif %changelog +* Fri Sep 19 2025 Python Maint - 6.36.04-2 +- Rebuilt for Python 3.14.0rc3 bytecode + * Mon Aug 25 2025 Mattias Ellert - 6.36.04-1 - Update to 6.36.04 From f287293ea9bc3f93bf7691440897f1b097c380d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Thu, 9 Oct 2025 17:11:17 +0200 Subject: [PATCH 82/89] - Rebuilt for new graphviz --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index bd7f0a7..8484955 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3575,6 +3575,9 @@ fi %endif %changelog +* Thu Oct 09 2025 Jaroslav Škarvada - 6.36.04-3 +- Rebuilt for new graphviz + * Fri Sep 19 2025 Python Maint - 6.36.04-2 - Rebuilt for Python 3.14.0rc3 bytecode From 32ec236e955265c886eee8014b026ce27f9ef8b1 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Wed, 29 Oct 2025 09:28:19 -0400 Subject: [PATCH 83/89] Rebuild for libarrow 22 Signed-off-by: Stephen Gallagher --- root.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 8484955..030c783 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.36.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -3575,6 +3575,9 @@ fi %endif %changelog +* Wed Oct 29 2025 Stephen Gallagher - 6.36.04-4 +- Rebuild for libarrow 22 + * Thu Oct 09 2025 Jaroslav Škarvada - 6.36.04-3 - Rebuilt for new graphviz From bbcab50659a25731ca475a38e406352af7ed9108 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 9 Dec 2025 20:53:49 +0100 Subject: [PATCH 84/89] Update to 6.38.00 Removed subpackages: root-proof, root-proof-bench, root-proof-player, root-proof-sessionviewer, root-sql-mysql, root-sql-odbc, root-sql-pgsql New subpackages: root-geom-checker, root-gui-treemap, root-tree-ntuple-browse, root-histv7 JsMVA python (sub)module dropped from python3-root package Compile minuit2 with Open MP support Dropped patches: 7 New patches: 4 --- root-Adjust-test-stressGraphics.ref.patch | 62 ++- ...OverflowError-from-RDF-pythonization.patch | 41 -- root-Fix-a-numpy-test-for-32-bit-archs.patch | 32 ++ root-Fix-test-for-32-bit-architectures.patch | 57 -- ...Geom-Add-missing-includes-of-TMath.h.patch | 63 +++ root-Ignore-warnings-from-uring-IO.patch | 62 --- ...ference-refcount-values-for-Python-3.patch | 66 --- ...erence-refcount-values-for-Python-3x.patch | 44 -- ...t-link-to-LLVM-libraries-in-parallel.patch | 16 +- root-Use-size_t-for-offset.patch | 60 --- ...tdated-IsSmall-helper-function-in-te.patch | 34 ++ root-df-Support-libarrow-21.patch | 44 -- root-fontconfig.patch | 93 ++-- root-no-export-python-modules.patch | 44 +- ...size-of-long-RVec-instances-in-RVec-.patch | 135 +++++ root.spec | 503 +++++++----------- sources | 4 +- 17 files changed, 564 insertions(+), 796 deletions(-) delete mode 100644 root-Avoid-OverflowError-from-RDF-pythonization.patch create mode 100644 root-Fix-a-numpy-test-for-32-bit-archs.patch delete mode 100644 root-Fix-test-for-32-bit-architectures.patch create mode 100644 root-Geom-Add-missing-includes-of-TMath.h.patch delete mode 100644 root-Ignore-warnings-from-uring-IO.patch delete mode 100644 root-Python-Update-reference-refcount-values-for-Python-3.patch delete mode 100644 root-Python-Update-reference-refcount-values-for-Python-3x.patch delete mode 100644 root-Use-size_t-for-offset.patch create mode 100644 root-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch delete mode 100644 root-df-Support-libarrow-21.patch create mode 100644 root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch diff --git a/root-Adjust-test-stressGraphics.ref.patch b/root-Adjust-test-stressGraphics.ref.patch index 6f8e6e4..b4c5871 100644 --- a/root-Adjust-test-stressGraphics.ref.patch +++ b/root-Adjust-test-stressGraphics.ref.patch @@ -1,33 +1,49 @@ -From 81286803e7791377ae75f40e9c65f8928ad8fe31 Mon Sep 17 00:00:00 2001 +From f7bfa429deb9dbae9058998888bbcaa84af0ca08 Mon Sep 17 00:00:00 2001 From: Mattias Ellert -Date: Fri, 30 May 2025 05:31:08 +0200 +Date: Tue, 2 Dec 2025 05:33:31 +0100 Subject: [PATCH] Adjust test/stressGraphics.ref -Test 37: TScatter with TPolyMarker test............................ OK - PDF output......................................... 37 FAILED - Result = 22236 - Reference = 22560 - Error = 324 (was 300) - JPG output................................................ OK - PNG output................................................ OK - C file result............................................. OK --- - test/stressGraphics.ref | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/stressGraphics.ref | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref -index a894796951..a8746db4df 100644 +index 2498ec6d755..4520a5ab113 100644 --- a/test/stressGraphics.ref +++ b/test/stressGraphics.ref -@@ -35,7 +35,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN - 34 3304592 100 712308 3000 62688 19000 123056 7000 3396789 1000 - 35 3954 100 14654 300 17378 7800 9629 2000 3794 200 - 36 9073 100 22150 300 27691 7800 20712 2000 9157 200 -- 37 17800 200 22560 300 28599 7800 42618 2000 17600 200 -+ 37 17800 200 22560 400 28599 7800 42618 2000 17600 200 - 38 12926 200 24304 300 24021 6800 12637 2000 12584 200 - 39 29664 200 19354 300 23024 6500 12821 2000 31317 200 - 40 46000 400 23482 300 38792 8500 30458 4000 46000 400 +@@ -10,11 +10,11 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 9 9253 100 14377 150 19851 2400 12199 900 9283 100 + 10 8863 70 13645 100 24343 1100 23278 1700 8894 70 + 11 12971 100 14750 50 34063 2000 32033 1200 13070 150 +- 12 7674 100 13533 50 83557 3000 38505 4000 7720 150 +- 13 5600 400 13242 300 16881 400 15063 800 5638 400 ++ 12 7674 100 13533 100 83557 3000 38505 4000 7720 150 ++ 13 5600 400 13242 400 16881 400 15063 800 5638 400 + 14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000 + 15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000 +- 16 28072 400 23520 200 44462 11000 30062 5000 38007 400 ++ 16 28072 400 23520 250 44462 11000 30062 5000 38007 400 + 17 20444 400 21520 150 27511 11000 16867 600 20721 400 + 18 15894 100 19305 200 27187 10300 15925 350 15925 100 + 19 22521 300 42926 250 43868 17000 19232 11000 22729 300 +@@ -44,7 +44,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 43 207729 750 87126 750 76094 38000 54717 11000 210497 800 + 44 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500 + 45 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000 +- 46 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000 ++ 46 3738751 35000 1292739 13000 60580 9900 133547 3500 3783013 35000 + 47 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500 + 48 38312 200 56877 750 36524 11800 119641 8000 38121 200 + 49 19556 1000 31967 1000 36859 10000 37602 8000 19900 3000 +@@ -53,7 +53,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN + 52 270825 10000 115500 1000 45496 11000 34685 5000 272950 10000 + 53 15025 3000 29289 500 42525 11300 33336 3900 14787 4000 + 54 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000 +- 55 4846 150 14075 150 33239 600 25303 500 4877 150 ++ 55 4846 150 14075 200 33239 600 25303 500 4877 150 + 56 1435879 150000 12837 100 25830 100 365000 15000 1085792 250000 + 57 5884 500 16577 200 40706 14000 30026 4000 5884 500 + 58 5723 700 15720 200 32236 11000 16916 3200 5670 800 -- -2.49.0 +2.52.0 diff --git a/root-Avoid-OverflowError-from-RDF-pythonization.patch b/root-Avoid-OverflowError-from-RDF-pythonization.patch deleted file mode 100644 index 7ac90a6..0000000 --- a/root-Avoid-OverflowError-from-RDF-pythonization.patch +++ /dev/null @@ -1,41 +0,0 @@ -From c3a9293a08fecb288cdd09b399c9c2808923e617 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 27 Aug 2025 17:09:12 +0200 -Subject: [PATCH] Avoid OverflowError from RDF pythonization - -Fixes test failures on 32 bit intel ix86. - -The following tests FAILED: - 62 - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rdataframe-makenumpy (Failed) python python_runtime_deps - 1257 - tutorial-analysis-dataframe-df032_RDFFromNumpy-py (Failed) python_runtime_deps tutorial - -1259/1470 Test #1257: tutorial-analysis-dataframe-df032_RDFFromNumpy-py .............................................***Failed 1.14 sec -Traceback (most recent call last): - File ".../tutorials/analysis/dataframe/df032_RDFFromNumpy.py", line 23, in - df = ROOT.RDF.FromNumpy({'x': x, 'y': y}) - File ".../redhat-linux-build/lib/ROOT/_facade.py", line 349, in MakeNumpyDataFrameCopy - return _MakeNumpyDataFrame(np_dict) - File ".../redhat-linux-build/lib/ROOT/_pythonization/_rdataframe.py", line 601, in _MakeNumpyDataFrame - return ROOT.Internal.RDF.MakeRVecDataFrame(ROOT.__ROOT_Internal.MakePyDeleter(key), *args) - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^ -OverflowError: Python int too large to convert to C long ---- - .../pythonizations/python/ROOT/_pythonization/_rdataframe.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -index d5cade59805..f9bb2771a73 100644 ---- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py -@@ -584,7 +584,7 @@ def _MakeNumpyDataFrame(np_dict): - - namespace __ROOT_Internal { - -- inline std::function MakePyDeleter(std::intptr_t ptr) { -+ inline std::function MakePyDeleter(std::uintptr_t ptr) { - PyObject *obj = reinterpret_cast(ptr); - Py_INCREF(obj); - return [obj](){ Py_DECREF(obj); }; --- -2.51.0 - diff --git a/root-Fix-a-numpy-test-for-32-bit-archs.patch b/root-Fix-a-numpy-test-for-32-bit-archs.patch new file mode 100644 index 0000000..5e095f3 --- /dev/null +++ b/root-Fix-a-numpy-test-for-32-bit-archs.patch @@ -0,0 +1,32 @@ +From 40f8cd0adeb7257778c789e1ae639f260780402b Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Sun, 7 Dec 2025 19:30:55 +0100 +Subject: [PATCH] Fix a numpy test for 32 bit archs + +The default dtype used in numpy array is "int". This type has +different sizes on 32 and 64 bit architectures. The test tries to use +the numpy array as a Long64_t dataframe. On 32 bit architectures this +results in an error. + +This commit explicitly changes the numpy array's dtype to "int64" to +match the Long64_t dataframe type on all architectyres. +--- + bindings/pyroot/pythonizations/test/rdataframe_misc.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/pyroot/pythonizations/test/rdataframe_misc.py b/bindings/pyroot/pythonizations/test/rdataframe_misc.py +index 1a1efd21b3e..150828613b3 100644 +--- a/bindings/pyroot/pythonizations/test/rdataframe_misc.py ++++ b/bindings/pyroot/pythonizations/test/rdataframe_misc.py +@@ -132,7 +132,7 @@ class RDataFrameMisc(unittest.TestCase): + return + out_path = "dataframe_misc_regression_gh20291.root" + try: +- x, y = numpy.array([1, 2, 3]), numpy.array([4, 5, 6]) ++ x, y = numpy.array([1, 2, 3], dtype='int64'), numpy.array([4, 5, 6], dtype='int64') + df = ROOT.RDF.FromNumpy({"x": x, "y": y}) + + df.Snapshot("tree", out_path) +-- +2.52.0 + diff --git a/root-Fix-test-for-32-bit-architectures.patch b/root-Fix-test-for-32-bit-architectures.patch deleted file mode 100644 index 879e3df..0000000 --- a/root-Fix-test-for-32-bit-architectures.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 8f08aac1c5d356352d2bd24b05dcdd092d3ca864 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 19 Jun 2025 13:28:24 +0200 -Subject: [PATCH] Fix test for 32 bit architectures - -[ RUN ] TypeReflectionTest.GetSizeOfType -/builddir/build/BUILD/root-6.36.00-build/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp:79: Failure -Expected equality of these values: - Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])) - Which is: 12 - 16 -[ FAILED ] TypeReflectionTest.GetSizeOfType (23 ms) - -[ RUN ] ScopeReflectionTest.SizeOf -/builddir/build/BUILD/root-6.36.00-build/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp:161: Failure -Expected equality of these values: - Cpp::SizeOf(Decls[7]) - Which is: 12 - (size_t)16 - Which is: 16 -[ FAILED ] ScopeReflectionTest.SizeOf (26 ms) ---- - .../CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp | 3 ++- - .../CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp -index 0b39080859..d490d0833c 100644 ---- a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp -+++ b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp -@@ -158,7 +158,8 @@ TEST(ScopeReflectionTest, SizeOf) { - EXPECT_EQ(Cpp::SizeOf(Decls[4]), (size_t)0); - EXPECT_EQ(Cpp::SizeOf(Decls[5]), (size_t)1); - EXPECT_EQ(Cpp::SizeOf(Decls[6]), (size_t)4); -- EXPECT_EQ(Cpp::SizeOf(Decls[7]), (size_t)16); -+ struct B {short a; double b;}; -+ EXPECT_EQ(Cpp::SizeOf(Decls[7]), sizeof(B)); - } - - -diff --git a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp -index a3e482596d..28cc32f166 100644 ---- a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp -+++ b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp -@@ -77,7 +77,8 @@ TEST(TypeReflectionTest, GetSizeOfType) { - EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[1])), 1); - EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[2])), 4); - EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[3])), 8); -- EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), 16); -+ struct B {int a; double b;}; -+ EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), sizeof(B)); - EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetTypeFromScope(Decls[5])), 0); - EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[6])), - sizeof(intptr_t)); --- -2.49.0 - diff --git a/root-Geom-Add-missing-includes-of-TMath.h.patch b/root-Geom-Add-missing-includes-of-TMath.h.patch new file mode 100644 index 0000000..966d8da --- /dev/null +++ b/root-Geom-Add-missing-includes-of-TMath.h.patch @@ -0,0 +1,63 @@ +From 0e1e1f0ba1908ae1020337ed7ec0565bf979b92c Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Tue, 2 Dec 2025 04:57:30 +0100 +Subject: [PATCH] [Geom] Add missing includes of TMath.h + +--- + geom/geombuilder/src/TGeoParaEditor.cxx | 1 + + geom/geombuilder/src/TGeoPconEditor.cxx | 1 + + geom/geombuilder/src/TGeoPgonEditor.cxx | 1 + + geom/geombuilder/src/TGeoTrapEditor.cxx | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/geom/geombuilder/src/TGeoParaEditor.cxx b/geom/geombuilder/src/TGeoParaEditor.cxx +index fdc344ba4d2..bd173607d2c 100644 +--- a/geom/geombuilder/src/TGeoParaEditor.cxx ++++ b/geom/geombuilder/src/TGeoParaEditor.cxx +@@ -27,6 +27,7 @@ Editor for a TGeoPara. + #include "TVirtualGeoPainter.h" + #include "TVirtualPad.h" + #include "TView.h" ++#include "TMath.h" + #include "TGButton.h" + #include "TGTextEntry.h" + #include "TGNumberEntry.h" +diff --git a/geom/geombuilder/src/TGeoPconEditor.cxx b/geom/geombuilder/src/TGeoPconEditor.cxx +index a66359853be..50598d2cb90 100644 +--- a/geom/geombuilder/src/TGeoPconEditor.cxx ++++ b/geom/geombuilder/src/TGeoPconEditor.cxx +@@ -27,6 +27,7 @@ Editor for a TGeoPcon. + #include "TVirtualGeoPainter.h" + #include "TVirtualPad.h" + #include "TView.h" ++#include "TMath.h" + #include "TGCanvas.h" + #include "TGButton.h" + #include "TGTextEntry.h" +diff --git a/geom/geombuilder/src/TGeoPgonEditor.cxx b/geom/geombuilder/src/TGeoPgonEditor.cxx +index 949d0045a66..33638d66b2b 100644 +--- a/geom/geombuilder/src/TGeoPgonEditor.cxx ++++ b/geom/geombuilder/src/TGeoPgonEditor.cxx +@@ -27,6 +27,7 @@ Editor for a TGeoPgon. + #include "TVirtualGeoPainter.h" + #include "TVirtualPad.h" + #include "TView.h" ++#include "TMath.h" + #include "TGTextEntry.h" + #include "TGNumberEntry.h" + #include "TGLabel.h" +diff --git a/geom/geombuilder/src/TGeoTrapEditor.cxx b/geom/geombuilder/src/TGeoTrapEditor.cxx +index d9c2916d075..459e0191117 100644 +--- a/geom/geombuilder/src/TGeoTrapEditor.cxx ++++ b/geom/geombuilder/src/TGeoTrapEditor.cxx +@@ -27,6 +27,7 @@ Editor for a TGeoTrap. + #include "TVirtualGeoPainter.h" + #include "TVirtualPad.h" + #include "TView.h" ++#include "TMath.h" + #include "TGButton.h" + #include "TGTextEntry.h" + #include "TGNumberEntry.h" +-- +2.52.0 + diff --git a/root-Ignore-warnings-from-uring-IO.patch b/root-Ignore-warnings-from-uring-IO.patch deleted file mode 100644 index 2208534..0000000 --- a/root-Ignore-warnings-from-uring-IO.patch +++ /dev/null @@ -1,62 +0,0 @@ -From f4ac6bf20278c19c88cf98f6062ecfad86b87378 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Thu, 19 Jun 2025 14:02:31 +0200 -Subject: [PATCH] Ignore warnings from uring IO - -Tests randomly fail because the uring memory is exhausted. - -Here are some examples: - -[ RUN ] RNTuple.RandomAccess -.../root-6.36.00/core/testsupport/src/TestSupport.cxx:79: Failure -Failed -Received unexpected diagnostic of severity 2000 at 'RIoUring' reading 'io_uring is unexpectedly not available because: -Failed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user'. -Suppress those using ROOT/TestSupport.hxx -.../root-6.36.00/core/testsupport/src/TestSupport.cxx:79: Failure -Failed -Received unexpected diagnostic of severity 2000 at 'RRawFileUnix' reading 'io_uring setup failed, falling back to blocking I/O in ReadV'. -Suppress those using ROOT/TestSupport.hxx -[ FAILED ] RNTuple.RandomAccess (20472 ms) - -[ RUN ] RNTupleDSTest.ChainMT -.../root-6.34.08/core/testsupport/src/TestSupport.cxx:79: Failure -Failed -Received unexpected diagnostic of severity 2000 at 'RIoUring' reading 'io_uring is unexpectedly not available because: -Failed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user'. -Suppress those using ROOT/TestSupport.hxx -.../root-6.34.08/core/testsupport/src/TestSupport.cxx:79: Failure -Failed -Received unexpected diagnostic of severity 2000 at 'RRawFileUnix' reading 'io_uring setup failed, falling back to blocking I/O in ReadV'. -Suppress those using ROOT/TestSupport.hxx -[ FAILED ] RNTupleDSTest.ChainMT (1004 ms) ---- - core/testsupport/src/TestSupport.cxx | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx -index 9889a432f4..4c3395ef16 100644 ---- a/core/testsupport/src/TestSupport.cxx -+++ b/core/testsupport/src/TestSupport.cxx -@@ -76,6 +76,18 @@ static struct ForbidDiagnostics { - return; - } - -+ if (level == kWarning && strcmp(location, "RIoUring") == 0 && -+ strstr(msg, "io_uring is unexpectedly not available because:") != nullptr) { -+ std::cerr << "Warning in " << location << " " << msg << std::endl; -+ return; -+ } -+ -+ if (level == kWarning && strcmp(location, "RRawFileUnix") == 0 && -+ strcmp(msg, "io_uring setup failed, falling back to blocking I/O in ReadV") == 0) { -+ std::cerr << "Warning in " << location << " " << msg << std::endl; -+ return; -+ } -+ - FAIL() << "Received unexpected diagnostic of severity " - << level - << " at '" << location << "' reading '" << msg << "'.\n" --- -2.49.0 - diff --git a/root-Python-Update-reference-refcount-values-for-Python-3.patch b/root-Python-Update-reference-refcount-values-for-Python-3.patch deleted file mode 100644 index fd341ee..0000000 --- a/root-Python-Update-reference-refcount-values-for-Python-3.patch +++ /dev/null @@ -1,66 +0,0 @@ -From f26668d48bfc75e9c176f7981e51ddc3b5ed7895 Mon Sep 17 00:00:00 2001 -From: Jonas Rembser -Date: Wed, 11 Jun 2025 14:15:07 +0200 -Subject: [PATCH] [Python] Update reference refcount values for Python 3.14 - compatibility - -Closes: #18988. ---- - .../pyroot/pythonizations/test/rdataframe_makenumpy.py | 9 ++++++++- - bindings/pyroot/pythonizations/test/rvec_asrvec.py | 10 +++++++--- - 2 files changed, 15 insertions(+), 4 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -index 072148aeb6..c7da723523 100644 ---- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -@@ -75,10 +75,17 @@ class DataFrameFromNumpy(unittest.TestCase): - def test_refcount(self): - """ - Check refcounts of associated PyObjects -+ -+ In case of Python <=3.14, we expect a refcount of 2 for the data dict, -+ because the call to sys.getrefcount creates a second reference by -+ itself. Starting from Python 3.14, we expect a refcount of 1 because -+ there were changes to the interpreter to avoid some unnecessary ref -+ counts. See also: -+ https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-refcount - """ - data = {"x": np.array([1, 2, 3], dtype="float32")} - gc.collect() -- self.assertEqual(sys.getrefcount(data), 2) -+ self.assertEqual(sys.getrefcount(data), 1 + int(sys.version_info < (3, 14))) - self.assertEqual(sys.getrefcount(data["x"]), 2) - - df = ROOT.RDF.FromNumpy(data) -diff --git a/bindings/pyroot/pythonizations/test/rvec_asrvec.py b/bindings/pyroot/pythonizations/test/rvec_asrvec.py -index 5e6c820705..9d3a294bf1 100644 ---- a/bindings/pyroot/pythonizations/test/rvec_asrvec.py -+++ b/bindings/pyroot/pythonizations/test/rvec_asrvec.py -@@ -123,8 +123,12 @@ class AsRVec(unittest.TestCase): - """ - Test reference count of returned RVec - -- We expect a refcount of 2 for the RVec because the call to sys.getrefcount -- creates a second reference by itself. -+ In case of Python <=3.14, we expect a refcount of 2 for the RVec -+ because the call to sys.getrefcount creates a second reference by -+ itself. Starting from Python 3.14, we expect a refcount of 1 because -+ there were changes to the interpreter to avoid some unnecessary ref -+ counts. See also: -+ https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-refcount - We attach the adopted pyobject to the RVec and increase the refcount of the - numpy array. After deletion of the rvec, the refcount of the numpy array - is decreased. -@@ -132,7 +136,7 @@ class AsRVec(unittest.TestCase): - np_obj = np.array([1, 2]) - rvec = ROOT.VecOps.AsRVec(np_obj) - gc.collect() -- self.assertEqual(sys.getrefcount(rvec), 2) -+ self.assertEqual(sys.getrefcount(rvec), 1 + int(sys.version_info < (3, 14))) - self.assertEqual(sys.getrefcount(np_obj), 3) - del rvec - gc.collect() --- -2.49.0 - diff --git a/root-Python-Update-reference-refcount-values-for-Python-3x.patch b/root-Python-Update-reference-refcount-values-for-Python-3x.patch deleted file mode 100644 index ecb27dc..0000000 --- a/root-Python-Update-reference-refcount-values-for-Python-3x.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 530d925f9832fe5fd1469ebf145f85227cfce1d4 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 20 Jun 2025 07:21:05 +0200 -Subject: [PATCH] [Python] Update reference refcount values for Python 3.14 - compatibility - ---- - bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py | 2 +- - bindings/pyroot/pythonizations/test/rvec_asrvec.py | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -index c7da723523..fc0f88155a 100644 ---- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py -@@ -90,7 +90,7 @@ class DataFrameFromNumpy(unittest.TestCase): - - df = ROOT.RDF.FromNumpy(data) - gc.collect() -- self.assertEqual(sys.getrefcount(df), 2) -+ self.assertEqual(sys.getrefcount(df), 1 + int(sys.version_info < (3, 14))) - - self.assertEqual(sys.getrefcount(data["x"]), 3) - -diff --git a/bindings/pyroot/pythonizations/test/rvec_asrvec.py b/bindings/pyroot/pythonizations/test/rvec_asrvec.py -index 9d3a294bf1..f489da826e 100644 ---- a/bindings/pyroot/pythonizations/test/rvec_asrvec.py -+++ b/bindings/pyroot/pythonizations/test/rvec_asrvec.py -@@ -137,10 +137,10 @@ class AsRVec(unittest.TestCase): - rvec = ROOT.VecOps.AsRVec(np_obj) - gc.collect() - self.assertEqual(sys.getrefcount(rvec), 1 + int(sys.version_info < (3, 14))) -- self.assertEqual(sys.getrefcount(np_obj), 3) -+ self.assertEqual(sys.getrefcount(np_obj), 2 + int(sys.version_info < (3, 14))) - del rvec - gc.collect() -- self.assertEqual(sys.getrefcount(np_obj), 2) -+ self.assertEqual(sys.getrefcount(np_obj), 1 + int(sys.version_info < (3, 14))) - - - if __name__ == "__main__": --- -2.49.0 - diff --git a/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch b/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch index 875cf05..4d5587f 100644 --- a/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch +++ b/root-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch @@ -1,4 +1,4 @@ -From e59ece55e4eead85b2b6fd8c6ddc2dfa179f0d09 Mon Sep 17 00:00:00 2001 +From 98a5042a02dd7c1aaa9fbd5e54c8620c6b72484f Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 2 Jun 2025 21:22:39 +0200 Subject: [PATCH] Save memory. Do not link to LLVM libraries in parallel @@ -9,21 +9,21 @@ Subject: [PATCH] Save memory. Do not link to LLVM libraries in parallel 2 files changed, 9 insertions(+) diff --git a/core/clingutils/test/CMakeLists.txt b/core/clingutils/test/CMakeLists.txt -index 15cc3ff48a..f62735e972 100644 +index a6c7aedac99..90ac0139c24 100644 --- a/core/clingutils/test/CMakeLists.txt +++ b/core/clingutils/test/CMakeLists.txt -@@ -31,3 +31,6 @@ if(NOT builtin_clang) +@@ -36,3 +36,6 @@ if(NOT builtin_clang) endif() - ROOT_ADD_UNITTEST_DIR(Core RIO ${CLING_LIBRARIES} $) + ROOT_ADD_UNITTEST_DIR(Core ${CLING_LIBRARIES} $) + +# Save memory. Do not link to LLVM libraries in parallel +add_dependencies(coreclingutilstestUnit CppInterOpTests) diff --git a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt -index 0ba35053fd..c6440cf301 100644 +index 4b4b43bdd29..a028802fedc 100644 --- a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt +++ b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt -@@ -65,6 +65,9 @@ target_link_libraries(CppInterOpTests +@@ -66,6 +66,9 @@ target_link_libraries(CppInterOpTests clangCppInterOp ) @@ -33,7 +33,7 @@ index 0ba35053fd..c6440cf301 100644 set_output_directory(CppInterOpTests BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES} LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES} -@@ -116,5 +119,8 @@ set_output_directory(DynamicLibraryManagerTests +@@ -129,5 +132,8 @@ set_output_directory(DynamicLibraryManagerTests add_dependencies(DynamicLibraryManagerTests TestSharedLib) @@ -43,5 +43,5 @@ index 0ba35053fd..c6440cf301 100644 #export_executable_symbols_for_plugins(TestSharedLib) add_subdirectory(TestSharedLib) -- -2.49.0 +2.52.0 diff --git a/root-Use-size_t-for-offset.patch b/root-Use-size_t-for-offset.patch deleted file mode 100644 index 49d3ab5..0000000 --- a/root-Use-size_t-for-offset.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 7bfd27ac478356e7c718b18b5eb3a3b277b833d1 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 3 Jun 2025 06:49:27 +0200 -Subject: [PATCH] Use size_t for offset - -[ RUN ] VariableReflectionTest.StaticConstExprDatamember -/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:545: Failure -Expected equality of these values: - 3 - *(int*)offset - Which is: 0 -/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:561: Failure -Expected equality of these values: - 5 - *(int*)offset - Which is: 0 -/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:580: Failure -Expected equality of these values: - 2 - *(int*)offset - Which is: 0 -[ FAILED ] VariableReflectionTest.StaticConstExprDatamember (9 ms) ---- - .../unittests/CppInterOp/VariableReflectionTest.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp -index 26dad4f25c..571ae5cd5d 100644 ---- a/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp -+++ b/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp -@@ -552,7 +552,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) { - EXPECT_EQ(datamembers.size(), 1); - - intptr_t offset = Cpp::GetVariableOffset(datamembers[0]); -- EXPECT_EQ(3, *(int*)offset); -+ EXPECT_EQ(3, *(size_t*)offset); - - ASTContext& C = Interp->getCI()->getASTContext(); - std::vector template_args = { -@@ -568,7 +568,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) { - EXPECT_EQ(datamembers.size(), 1); - - offset = Cpp::GetVariableOffset(datamembers[0]); -- EXPECT_EQ(5, *(int*)offset); -+ EXPECT_EQ(5, *(size_t*)offset); - - std::vector ele_template_args = { - {C.IntTy.getAsOpaquePtr()}, {C.FloatTy.getAsOpaquePtr()}}; -@@ -587,7 +587,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) { - EXPECT_EQ(datamembers.size(), 1); - - offset = Cpp::GetVariableOffset(datamembers[0]); -- EXPECT_EQ(2, *(int*)offset); -+ EXPECT_EQ(2, *(size_t*)offset); - } - - TEST(VariableReflectionTest, GetEnumConstantDatamembers) { --- -2.49.0 - diff --git a/root-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch b/root-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch new file mode 100644 index 0000000..58ba414 --- /dev/null +++ b/root-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch @@ -0,0 +1,34 @@ +From fd18e83ae79760f7e8cca6f28b6d0f89d912b152 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Wed, 26 Nov 2025 12:40:03 +0100 +Subject: [PATCH] [VecOps] Remove outdated `IsSmall` helper function in tests + +The commit 2605710bea7b1 changed from using the `ROOT::Detail::VecOps::` +namespace explicitly for `IsSmall` to a `using` statement. However, +there was also a remnant `IsSmall` function with an outdated +implementation in the test file itself, which we can now remove. +--- + math/vecops/test/vecops_rvec.cxx | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx +index 034f06ca211..432c673a553 100644 +--- a/math/vecops/test/vecops_rvec.cxx ++++ b/math/vecops/test/vecops_rvec.cxx +@@ -1493,13 +1493,6 @@ TEST(VecOps, Construct) + EXPECT_TRUE(fourVects[2] == ref2); + } + +-bool IsSmall(const RVec &v) +-{ +- // the first array element is right after the 3 data members of SmallVectorBase +- return reinterpret_cast(v.begin()) - reinterpret_cast(&v) == +- sizeof(void *) + 2 * sizeof(int); +-} +- + // this is a regression test for https://github.com/root-project/root/issues/6796 + TEST(VecOps, MemoryAdoptionAndClear) + { +-- +2.52.0 + diff --git a/root-df-Support-libarrow-21.patch b/root-df-Support-libarrow-21.patch deleted file mode 100644 index a82683d..0000000 --- a/root-df-Support-libarrow-21.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 4bfc8d1ff53b398c8e5bd879ca32ead4321b844a Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Wed, 20 Aug 2025 08:17:16 +0200 -Subject: [PATCH] [df] Support libarrow 21 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -arrow::internal::GenericToStatus → arrow::ToStatus ---- - tree/dataframe/test/datasource_arrow.cxx | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx -index 05493baa3d4..73749b59afc 100644 ---- a/tree/dataframe/test/datasource_arrow.cxx -+++ b/tree/dataframe/test/datasource_arrow.cxx -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include - #if defined(__GNUC__) - #pragma GCC diagnostic pop - #endif -@@ -21,9 +22,15 @@ - #include - using namespace arrow; - -+#if ARROW_VERSION_MAJOR >= 21 -+#define ASSERT_OK(expr) \ -+ for (::arrow::Status _st = ::arrow::ToStatus((expr)); !_st.ok();) \ -+ FAIL() << "'" ARROW_STRINGIFY(expr) "' failed with " << _st.ToString() -+#else - #define ASSERT_OK(expr) \ - for (::arrow::Status _st = ::arrow::internal::GenericToStatus((expr)); !_st.ok();) \ - FAIL() << "'" ARROW_STRINGIFY(expr) "' failed with " << _st.ToString() -+#endif - - // Copied from arrow/testing/builder.h - template --- -2.50.1 - diff --git a/root-fontconfig.patch b/root-fontconfig.patch index 185b1c4..b2c4e99 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,4 +1,4 @@ -From c5f13cb25c3b803346d1a6cac483badbcf2ced62 Mon Sep 17 00:00:00 2001 +From b5735870eb7e65a8c840643540a0676ab40697e0 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 11 May 2024 20:09:47 +0200 Subject: [PATCH] Use system fonts via fontconfig @@ -15,14 +15,13 @@ Subject: [PATCH] Use system fonts via fontconfig graf3d/gl/CMakeLists.txt | 1 + graf3d/gl/src/TGLFontManager.cxx | 123 ++++++++++- graf3d/gl/src/TGLText.cxx | 56 +++-- - gui/gui/src/TGApplication.cxx | 10 +- - 12 files changed, 494 insertions(+), 201 deletions(-) + 11 files changed, 493 insertions(+), 192 deletions(-) diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx -index 992713264a..32bfc0bbb9 100644 +index f0d2124a8f6..41ad4c73020 100644 --- a/core/base/src/TApplication.cxx +++ b/core/base/src/TApplication.cxx -@@ -251,18 +251,12 @@ void TApplication::InitializeGraphics(Bool_t only_web) +@@ -253,18 +253,12 @@ void TApplication::InitializeGraphics(Bool_t only_web) LoadGraphicsLibs(); // Try to load TrueType font renderer. Only try to load if not in batch @@ -43,7 +42,7 @@ index 992713264a..32bfc0bbb9 100644 if (gClassTable->GetDict("TGX11TTF")) { // in principle we should not have linked anything against libGX11TTF // but with ACLiC this can happen, initialize TGX11TTF by hand -@@ -276,7 +270,6 @@ void TApplication::InitializeGraphics(Bool_t only_web) +@@ -278,7 +272,6 @@ void TApplication::InitializeGraphics(Bool_t only_web) } } #endif @@ -52,10 +51,10 @@ index 992713264a..32bfc0bbb9 100644 if (!only_web || !fAppImp) { diff --git a/graf2d/asimage/CMakeLists.txt b/graf2d/asimage/CMakeLists.txt -index 31114ad45d..be95419491 100644 +index b5ccf983473..8ee57c1fac0 100644 --- a/graf2d/asimage/CMakeLists.txt +++ b/graf2d/asimage/CMakeLists.txt -@@ -30,6 +30,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage +@@ -28,6 +28,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage ${FREETYPE_LIBRARIES} ${X11_LIBRARIES} ZLIB::ZLIB @@ -64,7 +63,7 @@ index 31114ad45d..be95419491 100644 Core Graf diff --git a/graf2d/asimage/src/TASImage.cxx b/graf2d/asimage/src/TASImage.cxx -index 7e046f4724..137265bd4a 100644 +index 6ea60a78801..e85d804b7ec 100644 --- a/graf2d/asimage/src/TASImage.cxx +++ b/graf2d/asimage/src/TASImage.cxx @@ -117,6 +117,8 @@ extern "C" { @@ -76,7 +75,7 @@ index 7e046f4724..137265bd4a 100644 // auxiliary functions for general polygon filling #include "TASPolyUtils.c" -@@ -2595,11 +2597,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, +@@ -2620,11 +2622,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, // This is for backward compatibility... if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1); @@ -170,7 +169,7 @@ index 7e046f4724..137265bd4a 100644 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; -@@ -2623,7 +2702,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, +@@ -2648,7 +2727,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size, return; } @@ -180,7 +179,7 @@ index 7e046f4724..137265bd4a 100644 if (!font) { font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho); diff --git a/graf2d/graf/CMakeLists.txt b/graf2d/graf/CMakeLists.txt -index d7d1b77c21..c4ebb994a4 100644 +index d7d1b77c21a..c4ebb994a4a 100644 --- a/graf2d/graf/CMakeLists.txt +++ b/graf2d/graf/CMakeLists.txt @@ -91,6 +91,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Graf @@ -192,7 +191,7 @@ index d7d1b77c21..c4ebb994a4 100644 Hist Matrix diff --git a/graf2d/graf/inc/TTF.h b/graf2d/graf/inc/TTF.h -index 0bef9dcb95..ea96fe47ce 100644 +index 864ce06b4f0..050796d1ded 100644 --- a/graf2d/graf/inc/TTF.h +++ b/graf2d/graf/inc/TTF.h @@ -76,9 +76,10 @@ protected: @@ -208,7 +207,7 @@ index 0bef9dcb95..ea96fe47ce 100644 static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs static Bool_t fgHinting; ///< use hinting (true by default) diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx -index ca38ed1f9c..8f1d62686b 100644 +index 758bb98c192..7b1b06cd0ed 100644 --- a/graf2d/graf/src/TTF.cxx +++ b/graf2d/graf/src/TTF.cxx @@ -25,6 +25,8 @@ Interface to the freetype 2 library. @@ -233,7 +232,7 @@ index ca38ed1f9c..8f1d62686b 100644 FT_Matrix *TTF::fgRotMatrix = nullptr; FT_Library TTF::fgLibrary; FT_BBox TTF::fgCBox; -@@ -72,6 +75,11 @@ void TTF::Init() +@@ -71,6 +74,11 @@ void TTF::Init() return; } @@ -245,7 +244,7 @@ index ca38ed1f9c..8f1d62686b 100644 // load default font (arialbd) SetTextFont(62); } -@@ -109,12 +117,15 @@ Short_t TTF::CharToUnicode(UInt_t code) +@@ -108,12 +116,15 @@ Short_t TTF::CharToUnicode(UInt_t code) charmap = fgFace[fgCurFontIdx]->charmaps[i]; platform = charmap->platform_id; encoding = charmap->encoding_id; @@ -265,7 +264,7 @@ index ca38ed1f9c..8f1d62686b 100644 { fgCharMap[fgCurFontIdx] = charmap; if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx])) -@@ -387,21 +398,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) +@@ -392,21 +403,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) } const char *basename = gSystem->BaseName(fontname); @@ -423,7 +422,7 @@ index ca38ed1f9c..8f1d62686b 100644 } } -@@ -411,28 +546,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) +@@ -416,28 +551,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) kTTMaxFonts); Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); fgCurFontIdx = 0; // use font 0 (default font, set in ctor) @@ -437,7 +436,7 @@ index ca38ed1f9c..8f1d62686b 100644 - char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission); - - if (!ttfont) { -- Error("TTF::SetTextFont", "font file %s not found in path", fontname); +- Error("TTF::SetTextFont", "font file %s not found in path %s", fontname, ttpath); - if (fgFontCount) { - Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]); - fgCurFontIdx = 0; // use font 0 (default font, set in ctor) @@ -454,7 +453,7 @@ index ca38ed1f9c..8f1d62686b 100644 Error("TTF::SetTextFont", "error loading font %s", ttfont); delete [] ttfont; if (tface) FT_Done_Face(tface); -@@ -448,19 +568,20 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) +@@ -453,19 +573,20 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) delete [] ttfont; fgFontName[fgFontCount] = StrDup(basename); @@ -478,7 +477,7 @@ index ca38ed1f9c..8f1d62686b 100644 } return 0; -@@ -489,70 +610,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) +@@ -494,70 +615,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) void TTF::SetTextFont(Font_t fontnumber) { @@ -588,7 +587,7 @@ index ca38ed1f9c..8f1d62686b 100644 //////////////////////////////////////////////////////////////////////////////// diff --git a/graf2d/postscript/CMakeLists.txt b/graf2d/postscript/CMakeLists.txt -index eb091bbb39..a05023a3f4 100644 +index eb091bbb396..a05023a3f41 100644 --- a/graf2d/postscript/CMakeLists.txt +++ b/graf2d/postscript/CMakeLists.txt @@ -27,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Postscript @@ -600,7 +599,7 @@ index eb091bbb39..a05023a3f4 100644 Graf ) diff --git a/graf2d/postscript/src/TPostScript.cxx b/graf2d/postscript/src/TPostScript.cxx -index 09ea7ffa9c..180fd5e3c1 100644 +index df9e3ae16ea..1e353e1ca53 100644 --- a/graf2d/postscript/src/TPostScript.cxx +++ b/graf2d/postscript/src/TPostScript.cxx @@ -234,6 +234,7 @@ To change the color model use `gStyle->SetColorModelPS(c)`. @@ -611,7 +610,7 @@ index 09ea7ffa9c..180fd5e3c1 100644 #include "strlcpy.h" #include "snprintf.h" -@@ -1585,56 +1586,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename) +@@ -1584,56 +1585,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename) void TPostScript::FontEmbed(void) { @@ -715,7 +714,7 @@ index 09ea7ffa9c..180fd5e3c1 100644 } else { if (FontEmbedType2(ttfont)) { // nothing -@@ -1643,12 +1648,13 @@ void TPostScript::FontEmbed(void) +@@ -1642,12 +1647,13 @@ void TPostScript::FontEmbed(void) } else if(FontEmbedType42(ttfont)) { // nothing } else { @@ -733,7 +732,7 @@ index 09ea7ffa9c..180fd5e3c1 100644 } } PrintStr("%%IncludeResource: font Times-Roman@"); -@@ -2837,10 +2843,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars) +@@ -2836,10 +2842,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars) { "Root.PSFont.9", "/FreeMonoOblique" }, { "Root.PSFont.10", "/FreeMonoBold" }, { "Root.PSFont.11", "/FreeMonoBoldOblique" }, @@ -748,10 +747,10 @@ index 09ea7ffa9c..180fd5e3c1 100644 { "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" }, { "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" }, diff --git a/graf3d/gl/CMakeLists.txt b/graf3d/gl/CMakeLists.txt -index a874da9e1d..5454469606 100644 +index e759473ca0f..c453397fc52 100644 --- a/graf3d/gl/CMakeLists.txt +++ b/graf3d/gl/CMakeLists.txt -@@ -208,6 +208,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL +@@ -211,6 +211,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL ${GL2PS_LIBRARIES} ${X11_LIBRARIES} RGlew @@ -760,7 +759,7 @@ index a874da9e1d..5454469606 100644 Hist Gui diff --git a/graf3d/gl/src/TGLFontManager.cxx b/graf3d/gl/src/TGLFontManager.cxx -index 776e9d286f..c4134c5980 100644 +index 58ea1188d59..647642de615 100644 --- a/graf3d/gl/src/TGLFontManager.cxx +++ b/graf3d/gl/src/TGLFontManager.cxx @@ -36,6 +36,7 @@ @@ -771,7 +770,7 @@ index 776e9d286f..c4134c5980 100644 /** \class TGLFont \ingroup opengl -@@ -450,16 +451,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod +@@ -448,16 +449,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode)); if (it == fFontMap.end()) { @@ -902,7 +901,7 @@ index 776e9d286f..c4134c5980 100644 FTFont* ftfont = 0; switch (mode) diff --git a/graf3d/gl/src/TGLText.cxx b/graf3d/gl/src/TGLText.cxx -index f84f5193d2..8a672c787c 100644 +index 2ed3ee0917a..03feb0ee0a4 100644 --- a/graf3d/gl/src/TGLText.cxx +++ b/graf3d/gl/src/TGLText.cxx @@ -32,6 +32,8 @@ @@ -914,7 +913,7 @@ index f84f5193d2..8a672c787c 100644 #define FTGL_BITMAP 0 #define FTGL_PIXMAP 1 #define FTGL_OUTLINE 2 -@@ -176,27 +178,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber) +@@ -175,27 +177,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber) { int fontid = fontnumber / 10; @@ -971,7 +970,7 @@ index f84f5193d2..8a672c787c 100644 if (fGLTextFont) delete fGLTextFont; -@@ -204,7 +214,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber) +@@ -203,7 +213,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber) fGLTextFont = new FTGLPolygonFont(ttfont); @@ -982,32 +981,6 @@ index f84f5193d2..8a672c787c 100644 Error("SetGLTextFont","Cannot set FTGL::FaceSize"); - delete [] ttfont; } -diff --git a/gui/gui/src/TGApplication.cxx b/gui/gui/src/TGApplication.cxx -index 72d7dbbf95..73a44fdd7f 100644 ---- a/gui/gui/src/TGApplication.cxx -+++ b/gui/gui/src/TGApplication.cxx -@@ -81,20 +81,12 @@ TGApplication::TGApplication(const char *appClassName, - gROOT->SetBatch(kFALSE); - - if (strcmp(appClassName, "proofserv")) { -- const char *ttpath = gEnv->GetValue("Root.TTFontPath", -- TROOT::GetTTFFontDir()); -- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission); -- // Added by cholm for use of DFSG - fonts - based on fix by Kevin -- if (!ttfont) -- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission); -- if (ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) { -+ if (gEnv->GetValue("Root.UseTTFonts", 1)) { - TPluginHandler *h; - if ((h = gROOT->GetPluginManager()->FindHandler("TVirtualX", "x11ttf"))) - if (h->LoadPlugin() == -1) - Info("TGApplication", "no TTF support"); - } -- -- delete [] ttfont; - } - - // Create the canvas colors early so they are allocated before -- -2.45.0 +2.52.0 diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch index be22620..cb56d35 100644 --- a/root-no-export-python-modules.patch +++ b/root-no-export-python-modules.patch @@ -1,16 +1,38 @@ ---- root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-28 06:06:46.000000000 +0200 -+++ root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-29 09:47:08.960324940 +0200 -@@ -189,11 +189,10 @@ - # Create meta-target PyROOT3 (INTERFACE library) - # Export of targets are not supported for custom targets(add_custom_targets()) - add_library(PyROOT INTERFACE) +From e0dec6edd0678c2c52aaeb2f3645378ffeaa2d73 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 4 Dec 2025 23:13:28 +0100 +Subject: [PATCH] Dont export Python modules + +--- + bindings/pyroot/pythonizations/CMakeLists.txt | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt +index 1230f18ca47..2df4b733320 100644 +--- a/bindings/pyroot/pythonizations/CMakeLists.txt ++++ b/bindings/pyroot/pythonizations/CMakeLists.txt +@@ -202,11 +202,6 @@ foreach(py_source ${py_sources}) + COMMENT "Compiling PyROOT source ${py_source} for Python ${Python3_VERSION}") + endforeach() + +-# Create meta-target PyROOT3 (INTERFACE library) +-# Export of targets are not supported for custom targets(add_custom_targets()) +-add_library(PyROOT INTERFACE) -target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations) -+target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy) +- + # Define library output directories for build and install trees + set(pymoduledir_build "${localruntimedir}/ROOT") + set(pymoduledir_install "${CMAKE_INSTALL_PYTHONDIR}/ROOT") +@@ -231,8 +226,7 @@ if(NOT MSVC) + endif() # Install library -install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports -- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries -+install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries) +- RUNTIME DESTINATION ${pymoduledir_install} COMPONENT libraries ++install(TARGETS ${libname} RUNTIME DESTINATION ${pymoduledir_install} COMPONENT libraries + LIBRARY DESTINATION ${pymoduledir_install} COMPONENT libraries + ARCHIVE DESTINATION ${pymoduledir_install} COMPONENT libraries) +-- +2.52.0 + diff --git a/root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch b/root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch new file mode 100644 index 0000000..369ce3e --- /dev/null +++ b/root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch @@ -0,0 +1,135 @@ +From 44c501ac9fdb9049783d9738a9603eec572f52f0 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Wed, 26 Nov 2025 18:11:25 +0100 +Subject: [PATCH] [vecops] Adaptive size of long RVec instances in RVec test + +For the tests to make sense, some vectors need to be longer than the +maximum small vector size. This maximum size is compiler and +architecture dependent. For `RVec` on ARM64 with gcc 14, the +small vector capacity turns out to be 60, which is larger than the +current test vector size of 18. + +Therefore, the test is refactored to adapt the large vector size +automatically, according to the maximum small vector size. +--- + math/vecops/test/vecops_rvec.cxx | 81 +++++++++++++++++++++++++------- + 1 file changed, 63 insertions(+), 18 deletions(-) + +diff --git a/math/vecops/test/vecops_rvec.cxx b/math/vecops/test/vecops_rvec.cxx +index 432c673a553..8cbe36ee6d8 100644 +--- a/math/vecops/test/vecops_rvec.cxx ++++ b/math/vecops/test/vecops_rvec.cxx +@@ -1672,15 +1672,35 @@ TEST_P(VecOpsSwap, BothSmallVectors) + + TEST_P(VecOpsSwap, BothRegularVectors) + { +- RVec fixed_vreg1{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}; +- RVec fixed_vreg2{4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; +- RVec fixed_vreg3{7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7}; ++ constexpr std::size_t smallVecSize = ROOT::Internal::VecOps::RVecInlineStorageSize::value; ++ ++ // The number of elemens in the large RVecs will be the smallest multiple of ++ // three that larger than smallVecSize. ++ constexpr int nCycle = 3; ++ constexpr std::size_t nElems = ((smallVecSize / nCycle) + 1) * nCycle; ++ ++ RVec fixed_vreg1(nElems); ++ RVec fixed_vreg2(nElems); ++ RVec fixed_vreg3(nElems + 1); + RVec fixed_vmocksmall{0, 7}; + +- RVec vreg1{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}; +- RVec vreg2{4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; +- RVec vreg3{7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7}; +- RVec vmocksmall{0, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 7, 8, 9, 7, 8, 9}; ++ RVec vreg1(nElems); ++ RVec vreg2(nElems); ++ RVec vreg3(nElems + 1); ++ RVec vmocksmall(nElems + 1); ++ ++ for (std::size_t i = 0; i < nElems; ++i) { ++ vreg1[i] = (i % nCycle) + 1; ++ vreg2[i] = vreg1[i] + nCycle; ++ vreg3[i] = vreg2[i] + nCycle; ++ fixed_vreg1[i] = vreg1[i]; ++ fixed_vreg2[i] = vreg2[i]; ++ fixed_vreg3[i] = vreg3[i]; ++ vmocksmall[i + 1] = vreg3[i]; ++ } ++ fixed_vreg3[nElems] = fixed_vreg3[0]; ++ vreg3[nElems] = vreg3[0]; ++ + vmocksmall.erase(vmocksmall.begin() + 2, vmocksmall.end()); + // vmocksmall is a regular vector of size 2 + +@@ -1798,11 +1818,22 @@ TEST_P(VecOpsSwap, BothAdoptingVectors) + // in cases where ROOT::VecOps::swap produces 1 regular and 1 adopting vector + TEST_P(VecOpsSwap, SmallRegularVectors) + { ++ constexpr std::size_t smallVecSize = ROOT::Internal::VecOps::RVecInlineStorageSize::value; ++ ++ // The number of elemens in the large RVecs will be the smallest multiple of ++ // three that larger than smallVecSize. ++ constexpr int nCycle = 3; ++ constexpr std::size_t nElems1 = ((smallVecSize / nCycle) + 1) * nCycle; ++ constexpr std::size_t nElems2 = nElems1 + nCycle; // some vectors should be larger than others ++ + RVec fixed_vsmall{1, 2, 3}; + RVec fixed_vreg1{4, 5, 6}; + RVec fixed_vreg2{7, 8}; + RVec fixed_vreg3{9, 10, 11, 12, 13, 14}; +- RVec fixed_vreg4{15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30}; ++ RVec fixed_vreg4(nElems1); ++ for (std::size_t i = 0; i < nElems1; ++i) { ++ fixed_vreg4[i] = i + 15; ++ } + + // need multiple hard copies since after swap of a small and a regular, + // there is no fixed policy whether 2 regular vectors are produced or 1 small and 1 regular +@@ -1815,19 +1846,33 @@ TEST_P(VecOpsSwap, SmallRegularVectors) + RVec vsmall7{1, 2, 3}; + RVec vsmall8{1, 2, 3}; + +- RVec vreg1{4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; +- vreg1.erase(vreg1.begin() + 3, vreg1.end()); // regular vector of size 3 +- RVec vreg10{4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; ++ RVec vreg1; ++ RVec vreg10; ++ RVec vreg2{7, 8}; ++ RVec vreg20{7, 8}; ++ RVec vreg3{9, 10, 11, 12, 13, 14}; ++ RVec vreg30{9, 10, 11, 12, 13, 14}; ++ RVec vreg4(nElems1); ++ ++ for (std::size_t i = 0; i < nElems2; ++i) { ++ double val = (i % nCycle) + 4; ++ vreg1.push_back(val); ++ vreg10.push_back(vreg1.back()); ++ vreg2.push_back(val); ++ vreg20.push_back(vreg2.back()); ++ vreg3.push_back(val); ++ vreg30.push_back(vreg3.back()); ++ } ++ for (std::size_t i = 0; i < nElems1; ++i) { ++ vreg4[i] = i + 15; ++ } ++ ++ vreg1.erase(vreg1.begin() + 3, vreg1.end()); // regular vector of size 3 + vreg10.erase(vreg10.begin() + 3, vreg10.end()); // regular vector of size 3 +- RVec vreg2{7, 8, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; +- vreg2.erase(vreg2.begin() + 2, vreg2.end()); // regular vector of size 2 +- RVec vreg20{7, 8, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; ++ vreg2.erase(vreg2.begin() + 2, vreg2.end()); // regular vector of size 2 + vreg20.erase(vreg20.begin() + 2, vreg20.end()); // regular vector of size 2 +- RVec vreg3{9, 10, 11, 12, 13, 14, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; +- vreg3.erase(vreg3.begin() + 6, vreg3.end()); // regular vector of size 6 +- RVec vreg30{9, 10, 11, 12, 13, 14, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6}; ++ vreg3.erase(vreg3.begin() + 6, vreg3.end()); // regular vector of size 6 + vreg30.erase(vreg30.begin() + 6, vreg30.end()); // regular vector of size 6 +- RVec vreg4{15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30}; + // vreg4 is a regular vector that cannot "fit" to small vector + + // verify that initially vectors are not small +-- +2.52.0 + diff --git a/root.spec b/root.spec index 030c783..87599a4 100644 --- a/root.spec +++ b/root.spec @@ -37,9 +37,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ Name: root -Version: 6.36.04 +Version: 6.38.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -64,7 +64,7 @@ Source7: JupyROOT-on-EPEL Source8: %{name}-get-src.sh # Clad is a source-transformation automatic differentiation (AD) # library for C++, implemented as a plugin for the Clang compiler -Source9: https://github.com/vgvassilev/clad/archive/v1.9/clad-1.9.tar.gz +Source9: https://github.com/vgvassilev/clad/archive/v2.2/clad-2.2.tar.gz # Use system fonts Patch0: %{name}-fontconfig.patch # Reduce memory usage during linking on ARM and x86 by generating @@ -78,31 +78,22 @@ Patch3: %{name}-no-export-python-modules.patch # Run some test on 32 bit that upstream has disabled Patch4: %{name}-32bit-tests.patch # Adjust test/stressGraphics.ref -# https://github.com/root-project/root/pull/18989 +# https://github.com/root-project/root/pull/30667 Patch5: %{name}-Adjust-test-stressGraphics.ref.patch # Revert test change that breaks the test Patch6: %{name}-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch -# Ignore warnings from uring IO -# https://github.com/root-project/root/pull/18994 -Patch7: %{name}-Ignore-warnings-from-uring-IO.patch # Preserve memory during parallel build # https://github.com/root-project/root/pull/18991 -Patch8: %{name}-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch -# Fix Big Endian test failure -# https://github.com/root-project/root/pull/18992 -Patch9: %{name}-Use-size_t-for-offset.patch -# Fix 32 bit test failure -# https://github.com/root-project/root/pull/18993 -Patch10: %{name}-Fix-test-for-32-bit-architectures.patch -# https://github.com/root-project/root/issues/18988 -# https://github.com/root-project/root/pull/19014 -# https://github.com/root-project/root/pull/19107 -Patch11: %{name}-Python-Update-reference-refcount-values-for-Python-3.patch -Patch12: %{name}-Python-Update-reference-refcount-values-for-Python-3x.patch -# https://github.com/root-project/root/pull/19689 -Patch13: %{name}-df-Support-libarrow-21.patch -# https://github.com/root-project/root/pull/19764 -Patch14: %{name}-Avoid-OverflowError-from-RDF-pythonization.patch +Patch7: %{name}-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch +# Add missing includes of TMath.h +# https://github.com/root-project/root/pull/20601 +Patch8: %{name}-Geom-Add-missing-includes-of-TMath.h.patch +# Fix numpy vs dataframe type mismatch om ix86 +# https://github.com/root-project/root/pull/20668 +Patch9: %{name}-Fix-a-numpy-test-for-32-bit-archs.patch +# Backport a test fix from upstream +Patch10: %{name}-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch +Patch11: %{name}-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -133,12 +124,9 @@ BuildRequires: libxml2-devel BuildRequires: fftw-devel BuildRequires: gsl-devel BuildRequires: unuran-devel -BuildRequires: mariadb-connector-c-devel BuildRequires: sqlite-devel -BuildRequires: unixODBC-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel -BuildRequires: libpq-devel BuildRequires: libxcrypt-devel BuildRequires: python%{python3_pkgversion}-devel >= 3.7 BuildRequires: python%{python3_pkgversion}-setuptools @@ -148,10 +136,6 @@ BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtwebengine-devel %endif BuildRequires: openssl-devel -%if %{?fedora}%{!?fedora:0} >= 41 -# Needed by civetweb.c in root-net-http -BuildRequires: openssl-devel-engine -%endif BuildRequires: libtool-ltdl-devel BuildRequires: desktop-file-utils BuildRequires: dcap-devel @@ -191,8 +175,6 @@ BuildRequires: cppzmq-devel %if %{pandas} BuildRequires: python%{python3_pkgversion}-pandas %endif -BuildRequires: python%{python3_pkgversion}-rcssmin -BuildRequires: uglify-js3 BuildRequires: perl-generators BuildRequires: gtest-devel BuildRequires: gmock-devel @@ -214,6 +196,7 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-multiproc%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: hicolor-icon-theme Obsoletes: emacs-%{name} < 5.34.28 @@ -229,9 +212,7 @@ the bulk of the data. Included are histogramming methods in an arbitrary number of dimensions, curve fitting, function evaluation, minimization, graphics and visualization classes to allow the easy setup of an analysis system that can query and process the data -interactively or in batch mode, as well as a general parallel -processing framework, PROOF, that can considerably speed up an -analysis. +interactively or in batch mode. Thanks to the built-in C++ interpreter cling, the command, the scripting and the programming language are all C++. The interpreter @@ -305,9 +286,7 @@ Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-dataframe%{?_isa} = %{version}-%{release} %endif Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} -%if %{root7} Requires: %{name}-tree-ntuple-utils%{?_isa} = %{version}-%{release} -%endif Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} Requires: %{name}-vecops%{?_isa} = %{version}-%{release} # To resolve dependency in installed ROOTConfig.cmake @@ -328,6 +307,7 @@ Requires: font(droidsansfallback) Obsoletes: %{name}-ruby < 6.00.00 Obsoletes: %{name}-vdt < 6.10.00 Obsoletes: %{name}-proof-pq2 < 6.16.00 +Obsoletes: %{name}-proofd < 6.16.00 Obsoletes: %{name}-rootd < 6.16.00 Obsoletes: %{name}-geocad < 6.18.00 Obsoletes: %{name}-graf-qt < 6.18.00 @@ -340,6 +320,7 @@ Obsoletes: %{name}-net-globus < 6.18.00 Obsoletes: %{name}-net-ldap < 6.18.00 Obsoletes: %{name}-net-krb5 < 6.18.00 Obsoletes: %{name}-table < 6.18.00 +Obsoletes: %{name}-xproof < 6.22.08-2 Obsoletes: %{name}-memstat < 6.26.00 Obsoletes: %{name}-montecarlo-vmc < 6.26.00 Obsoletes: %{name}-doc < 6.26.00 @@ -347,8 +328,14 @@ Obsoletes: %{name}-io-gfal < 6.30.00 Obsoletes: %{name}-roofit-common < 6.30.00 Obsoletes: %{name}-gui-qt5webdisplay < 6.36.00 Obsoletes: %{name}-hist-draw < 6.36.00 -Obsoletes: %{name}-histv7 < 6.36.00 Obsoletes: %{name}-html < 6.36.00 +Obsoletes: %{name}-proof < 6.38.00 +Obsoletes: %{name}-proof-bench < 6.38.00 +Obsoletes: %{name}-proof-player < 6.38.00 +Obsoletes: %{name}-proof-sessionviewer < 6.38.00 +Obsoletes: %{name}-sql-mysql < 6.38.00 +Obsoletes: %{name}-sql-odbc < 6.38.00 +Obsoletes: %{name}-sql-pgsql < 6.38.00 %description core This package contains the core libraries used by ROOT: libCore, libNew, @@ -414,8 +401,6 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} # Package split (tpython from Python bindings) Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00 -# JsMVA python module is now a submodule of ROOT python module -Provides: python%{python3_pkgversion}-jsmva = %{version}-%{release} Obsoletes: python%{python3_pkgversion}-jsmva < 6.32.00 %description -n python%{python3_pkgversion}-%{name} @@ -431,7 +416,7 @@ Requires: %{name}-core = %{version}-%{release} # notebook package was merged with JupyROOT package Provides: %{name}-notebook = %{version}-%{release} Obsoletes: %{name}-notebook < 6.32.00 -Requires: js-jsroot >= 7.9 +Requires: js-jsroot >= 7.10 %if %{?fedora}%{!?fedora:0} || ( %{?rhel}%{!?rhel:0} >= 10 && "%{?dist}" != ".el10_0" ) # jupyter-notebook not available in RHEL/EPEL # some functionality missing @@ -521,8 +506,8 @@ Obsoletes: %{name}-geom < 6.28.00 %description geom-builder This package contains a library for building geometries in ROOT. -%package geom-painter -Summary: Geometry painter library for ROOT +%package geom-checker +Summary: Geometry checker library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} @@ -531,6 +516,17 @@ Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} + +%description geom-checker +This package contains a library for checking geometries in ROOT. + +%package geom-painter +Summary: Geometry painter library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} # Package split (geom-builder and geom-painter from geom) Obsoletes: %{name}-geom < 6.28.00 @@ -716,6 +712,8 @@ Requires: %{name}-graf%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-browse%{?_isa} = %{version}-%{release} # Dynamic dependencies Requires: %{name}-graf-x11%{?_isa} = %{version}-%{release} Requires: %{name}-gui-ged%{?_isa} = %{version}-%{release} @@ -797,6 +795,14 @@ Recorded events are: All the recorded events from one session are stored in one TFile and can be replayed again anytime. +%package gui-treemap +Summary: GUI element for tree maps in ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} + +%description gui-treemap +This package contains a library to show tree maps in the ROOT GUI. + %package hbook Summary: Hbook library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -940,7 +946,6 @@ Summary: Core mathematics library for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} # Dynamic dependencies Requires: %{name}-mathmore%{?_isa} = %{version}-%{release} -Requires: %{name}-minuit%{?_isa} = %{version}-%{release} Requires: %{name}-minuit2%{?_isa} = %{version}-%{release} %description mathcore @@ -1127,17 +1132,16 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} This package contains the ROOT networking library. %package net-rpdutils -Summary: Authentication utilities used by xproofd +Summary: Authentication utilities used by rootd Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} %description net-rpdutils -This package contains authentication utilities used by xproofd. +This package contains authentication utilities used by rootd. %package net-auth Summary: Authentication extension for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-net%{?_isa} = %{version}-%{release} %description net-auth @@ -1155,9 +1159,11 @@ access to http based storage such as webdav and S3. %package net-http Summary: HTTP server extension for ROOT +# The system civetweb is not compiled with websocket support +Provides: bundled(civetweb) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: js-jsroot >= 7.9 +Requires: js-jsroot >= 7.10 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00 @@ -1191,71 +1197,6 @@ Requires: %{name}-net%{?_isa} = %{version}-%{release} This package contains the NetX extension for ROOT, i.e. a client for the xrootd server. Only the new (NetXNG) version is provided. -%package proof -Summary: PROOF extension for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-clarens < 5.34.01 -Obsoletes: %{name}-peac < 5.34.01 -# Package split (proof-player from proof) -Obsoletes: %{name}-proof < 6.14.00 -Obsoletes: %{name}-proofd < 6.16.00 -Obsoletes: %{name}-xproof < 6.22.08-2 - -%description proof -This package contains the proof extension for ROOT. This provides a -client to use in a PROOF environment. - -%package proof-bench -Summary: PROOF benchmarking -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-proof%{?_isa} = %{version}-%{release} -Requires: %{name}-proof-player%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} - -%description proof-bench -This package contains the steering class for PROOF benchmarks. - -%package proof-player -Summary: PROOF player extension for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} -Requires: %{name}-graf3d%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-proof%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} -Requires: %{name}-tree-player%{?_isa} = %{version}-%{release} -# Package split (proof-player from proof) -Obsoletes: %{name}-proof < 6.14.00 - -%description proof-player -This package contains the proof player extension for ROOT. - -%package proof-sessionviewer -Summary: GUI to browse an interactive PROOF session -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}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} -Requires: %{name}-proof%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} - -%description proof-sessionviewer -This package contains a library for browsing an interactive PROOF -session in ROOT. - %if %{roofit} %package roofit Summary: ROOT extension for modeling expected distributions - toolkit @@ -1507,31 +1448,6 @@ suitable for adoption in different disciplines as well. This package contains extra tools for RooFit projects. %endif -%package sql-mysql -Summary: MySQL client plugin for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} - -%description sql-mysql -This package contains the MySQL plugin for ROOT. This plugin -provides a thin client (interface) to MySQL servers. Using this -client, one can obtain information from a MySQL database into the -ROOT environment. - -This package is deprecated and will be removed in the next release of ROOT. - -%package sql-odbc -Summary: ODBC plugin for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} - -%description sql-odbc -This package contains the ODBC (Open DataBase Connectivity) plugin -for ROOT, that allows transparent access to any kind of database that -supports the ODBC protocol. - -This package is deprecated and will be removed in the next release of ROOT. - %package sql-sqlite Summary: Sqlite client plugin for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} @@ -1543,19 +1459,6 @@ provides a thin client (interface) to sqlite servers. Using this client, one can obtain information from a sqlite database into the ROOT environment. -%package sql-pgsql -Summary: PostgreSQL client plugin for ROOT -Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-net%{?_isa} = %{version}-%{release} - -%description sql-pgsql -This package contains the PostGreSQL plugin for ROOT. This plugin -provides a thin client (interface) to PostGreSQL servers. Using this -client, one can obtain information from a PostGreSQL database into the -ROOT environment. - -This package is deprecated and will be removed in the next release of ROOT. - %package tmva Summary: Toolkit for multivariate data analysis License: BSD-3-Clause @@ -1615,6 +1518,7 @@ License: BSD-3-Clause Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-tmva%{?_isa} = %{version}-%{release} Requires: %{name}-tmva-sofie%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: python%{python3_pkgversion}-numpy %description tmva-python @@ -1805,9 +1709,12 @@ This package provides a Web based GUI for ROOT. Summary: ROOT GUI browsable providers Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-geom%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-treemap%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-browse%{?_isa} = %{version}-%{release} # Package split (gui-browsable-v7 from gui-browsable) Obsoletes: %{name}-gui-browsable < 6.32.06 @@ -1852,6 +1759,31 @@ Requires: %{name}-io%{?_isa} = %{version}-%{release} %description tree-ntuple This package contains the new ROOT n-tuple class (RNTuple). +%package tree-ntuple-browse +Summary: N-Tuple browsing library for ROOT +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-graf%{?_isa} = %{version}-%{release} +Requires: %{name}-graf-gpad%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-treemap%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-utils%{?_isa} = %{version}-%{release} + +%description tree-ntuple-browse +This package contains a library for browsing n-tuples. + +%package tree-ntuple-utils +Summary: Ntuple utility library +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-hist%{?_isa} = %{version}-%{release} +Requires: %{name}-io%{?_isa} = %{version}-%{release} +Requires: %{name}-tree%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} + +%description tree-ntuple-utils +This package contains utility functions for ntuples. + %if %{root7} %package graf-gpadv7 Summary: Canvas and pad library for ROOT (ROOT 7) @@ -1894,9 +1826,11 @@ Summary: Additional ROOT GUI browsable providers (ROOT 7) Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-graf-gpadv7%{?_isa} = %{version}-%{release} Requires: %{name}-gui-browsable%{?_isa} = %{version}-%{release} +Requires: %{name}-gui-treemap%{?_isa} = %{version}-%{release} Requires: %{name}-hist%{?_isa} = %{version}-%{release} Requires: %{name}-tree%{?_isa} = %{version}-%{release} Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} +Requires: %{name}-tree-ntuple-browse%{?_isa} = %{version}-%{release} # Package split (gui-browsable-v7 from gui-browsable) Obsoletes: %{name}-gui-browsable < 6.32.06 @@ -1939,16 +1873,12 @@ Requires: %{name}-mathcore%{?_isa} = %{version}-%{release} This package contains a library to show a pop-up dialog when fitting various kinds of data. -%package tree-ntuple-utils -Summary: Ntuple utility library (ROOT 7) +%package histv7 +Summary: Histogram library for ROOT 7 Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: %{name}-hist%{?_isa} = %{version}-%{release} -Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: %{name}-tree%{?_isa} = %{version}-%{release} -Requires: %{name}-tree-ntuple%{?_isa} = %{version}-%{release} -%description tree-ntuple-utils -This package contains utility functions for ntuples. +%description histv7 +This package contains a library for histogramming in ROOT 7. %endif %prep @@ -1966,9 +1896,6 @@ This package contains utility functions for ntuples. %patch -P9 -p1 %patch -P10 -p1 %patch -P11 -p1 -%patch -P12 -p1 -%patch -P13 -p1 -%patch -P14 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1994,20 +1921,11 @@ rm core/lzma/src/*.tar.gz rm graf3d/gl/src/gl2ps.cxx graf3d/gl/src/gl2ps/gl2ps.h # * unuran rm math/unuran/src/*.tar.gz -# * xrootd-private-devel headers -rm -rf proof/xrdinc/* # * x11 extension headers rm -rf graf2d/x11/inc/X11 # * jsroot rm -rf js/[^f]* js/files/draw.htm js/files/online.htm -# Remove pre-minified script and style files -rm etc/notebook/JsMVA/js/*.min.js -rm etc/notebook/JsMVA/css/*.min.css - -# Remove executable permissions from source file -chmod -x interpreter/CppInterOp/lib/Interpreter/CppInterOp.cpp - # Additional documentation install -p -m 644 %{SOURCE7} bindings/jupyroot @@ -2022,14 +1940,6 @@ unset QTDIR unset QTLIB unset QTINC -# Minify script and style files -for s in etc/notebook/JsMVA/js/*.js ; do - uglifyjs-3 ${s} -c -m -o ${s%.js}.min.js -done -for s in etc/notebook/JsMVA/css/*.css ; do - python3 -m rcssmin < ${s} > ${s%.css}.min.css -done - %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir}/%{name} \ @@ -2039,6 +1949,7 @@ done -DPython3_EXECUTABLE:PATH=%{__python3} \ -Dgnuinstall:BOOL=ON \ -Dbuiltin_cfitsio:BOOL=OFF \ + -Dbuiltin_civetweb:BOOL=ON \ -Dbuiltin_clang:BOOL=ON \ -Dbuiltin_cling:BOOL=ON \ -Dbuiltin_cppzmq:BOOL=OFF \ @@ -2084,8 +1995,9 @@ done -Dccache:BOOL=OFF \ -Ddistcc:BOOL=OFF \ -Dcefweb:BOOL=OFF \ + -Dcheck_connection:BOOL=OFF \ -Dclad:BOOL=ON \ - -DCLAD_SOURCE_DIR:PATH=${PWD}/clad-1.9 \ + -DCLAD_SOURCE_DIR:PATH=${PWD}/clad-2.2 \ -Dcocoa:BOOL=OFF \ -Dcuda:BOOL=OFF \ -Ddaos:BOOL=OFF \ @@ -2097,6 +2009,8 @@ done -Ddavix:BOOL=ON \ -Ddcache:BOOL=ON \ -Ddev:BOOL=OFF \ + -Dexperimental_adaptivecpp=OFF \ + -Dexperimental_genvectorx=OFF \ -Dfcgi:BOOL=ON \ -Dfftw3:BOOL=ON \ -DFIREFOX_EXECUTABLE:PATH=/usr/bin/firefox \ @@ -2112,13 +2026,9 @@ done -Dmathmore:BOOL=ON \ -Dmemory_termination:BOOL=OFF \ -Dminuit2_mpi:BOOL=OFF \ - -Dminuit2_omp:BOOL=OFF \ + -Dminuit2_omp:BOOL=ON \ -Dmpi:BOOL=OFF \ - -Dmysql:BOOL=ON \ - -Dodbc:BOOL=ON \ -Dopengl:BOOL=ON \ - -Dpgsql:BOOL=ON \ - -Dproof:BOOL=ON \ -Dpyroot:BOOL=ON \ -Dpythia8:BOOL=ON \ %ifarch %{qt6_qtwebengine_arches} @@ -2148,7 +2058,6 @@ done %else -Droot7:BOOL=OFF \ %endif - -Drpath:BOOL=OFF \ -Druby:BOOL=OFF \ -Druntime_cxxmodules:BOOL=OFF \ -Dshadowpw:BOOL=ON \ @@ -2157,6 +2066,7 @@ done -Dspectrum:BOOL=ON \ -Dsqlite:BOOL=ON \ -Dssl:BOOL=ON \ + -Dthisroot_scripts:BOOL=OFF \ -Dtmva:BOOL=ON \ -Dtmva-cpu:BOOL=ON \ -Dtmva-cudnn:BOOL=OFF \ @@ -2227,8 +2137,8 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ %{buildroot}%{_datadir}/gdb/auto-load%{_libdir}/%{name} # Fix python extension suffix -mv %{buildroot}%{python3_sitearch}/libROOTPythonizations.so \ - %{buildroot}%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix} +mv %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations.so \ + %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations%{python3_ext_suffix} # Move noarch python modules to sitelib if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then @@ -2273,6 +2183,7 @@ rm -rf %{buildroot}%{_datadir}/%{name}/notebook/custom rm -rf %{buildroot}%{_datadir}/%{name}/notebook/html rm -rf %{buildroot}%{_datadir}/%{name}/notebook/kernels rm %{buildroot}%{_datadir}/%{name}/notebook/jupyter_notebook_config.py +rmdir %{buildroot}%{_datadir}/%{name}/notebook # Replace the rootnb.exe wrapper with a simpler one cat > %{buildroot}%{_bindir}/rootnb.exe << EOF @@ -2313,17 +2224,9 @@ sed -e 's!/usr/bin/python!%{__python3}!' \ -i %{buildroot}%{_datadir}/%{name}/pdg_table_update.py # Remove some junk -rm %{buildroot}%{_datadir}/%{name}/proof/*.sample -rm -rf %{buildroot}%{_datadir}/%{name}/proof/utils rm %{buildroot}%{_datadir}/%{name}/root.desktop -rm %{buildroot}%{_bindir}/setxrd* -rm %{buildroot}%{_bindir}/thisroot* rm %{buildroot}%{_pkgdocdir}/INSTALL rm %{buildroot}%{_pkgdocdir}/README.CXXMODULES.md -rm -rf %{buildroot}%{_includedir}/clang -rm -rf %{buildroot}%{_includedir}/clang-c -rm -rf %{buildroot}/usr/lib/cmake/CppInterOp -rm %{buildroot}/usr/lib/libclangCppInterOp.a rm -rf %{buildroot}%{_datadir}/%{name}/html # Only used on Windows @@ -2336,17 +2239,10 @@ rm ROOT@@Math@@Minimizer/P090_RMinimizer.C %endif rm TGLManager/P020_TGWin32GLManager.C rm TGLManager/P030_TGOSXGLManager.C -rm TProofMgr/P010_TXProofMgr.C -rm TProofServ/P010_TXProofServ.C -rm TSlave/P010_TXSlave.C -rm TSQLServer/P040_TOracleServer.C rm TVirtualGeoConverter/P010_TGeoVGConverter.C rm TVirtualGLImp/P020_TGWin32GL.C rm TVirtualX/P030_TGWin32.C rm TVirtualX/P050_TGQuartz.C -rmdir TProofMgr -rmdir TProofServ -rmdir TSlave rmdir TVirtualGeoConverter popd @@ -2435,8 +2331,8 @@ popd # - tutorial-analysis-dataframe-df105_WBosonAnalysis-py # - tutorial-analysis-dataframe-df106_HiggsToFourLeptons(-py) # - tutorial-analysis-dataframe-df107_SingleTopAnalysis-py -# - tutorial-experimental-rcanvas-df104-py -# - tutorial-experimental-rcanvas-df105-py +# - tutorial-visualisation-rcanvas-df104-py +# - tutorial-visualisation-rcanvas-df105-py # reads input data over network: # root://eospublic.cern.ch//eos/opendata/atlas/OutreachDatasets/2020-01-22/ # @@ -2465,7 +2361,7 @@ popd # reads input file over network # root://eospublic.cern.ch/eos/root-eos/h1/dstarmb.root # -# - tutorial-tmva-tmva103_Application +# - tutorial-machine_learning-tmva100_DataPreparation-py # reads input data over network # root://eospublic.cern.ch/eos/root-eos/cms_opendata_2012_nanoaod/SMHiggsToZZTo4L.root # @@ -2475,6 +2371,9 @@ popd # - test-stressgraphics-firefox-skip3d: # requires firefox... # +# - test-stressgraphics-svg +# Font metric differences +# # - tutorial-visualisation-webcanv-fonts_ttf.cxx: # Requires web graphics excluded="\ @@ -2492,8 +2391,8 @@ tutorial-analysis-dataframe-df104_HiggsToTwoPhotons-py|\ tutorial-analysis-dataframe-df105_WBosonAnalysis-py|\ tutorial-analysis-dataframe-df106_HiggsToFourLeptons|\ tutorial-analysis-dataframe-df107_SingleTopAnalysis-py|\ -tutorial-experimental-rcanvas-df104-py|\ -tutorial-experimental-rcanvas-df105-py|\ +tutorial-visualisation-rcanvas-df104-py|\ +tutorial-visualisation-rcanvas-df105-py|\ tutorial-io-ntuple-ntpl004_dimuon|\ tutorial-io-ntuple-ntpl008_import|\ tutorial-io-ntuple-ntpl011_global_temperatures|\ @@ -2501,52 +2400,39 @@ gtest-net-davix-RRawFileDavix|\ gtest-net-netxng-RRawFileNetXNG|\ gtest-net-netxng-TNetXNGFileTest|\ tutorial-analysis-parallel-mp_processSelector|\ -tutorial-tmva-tmva103_Application|\ +tutorial-machine_learning-tmva100_DataPreparation-py|\ test-webgui-ping|\ test-stressgraphics-firefox-skip3d|\ +test-stressgraphics-svg|\ tutorial-visualisation-webcanv-fonts_ttf.cxx" -# Duplicated tests -# https://github.com/root-project/root/issues/19346 -# - gtest-tree-treeplayer-ttreeindex-clone -# - gtest-tree-treeplayer-ttreeindex-getlistoffriends -# - gtest-tree-treeplayer-ttreereader-friends -excluded="${excluded}|\ -gtest-tree-treeplayer-ttreeindex-clone|\ -gtest-tree-treeplayer-ttreeindex-getlistoffriends|\ -gtest-tree-treeplayer-ttreereader-friends" - %ifarch %{ix86} # - gtest-hist-hist-TFormulaGradientTests # out of memory # # - pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views # ValueError: buffer is smaller than requested size +# +# - tmva-sofie-test-TestCustomModelsFromONNX +# Expected equality of these values: +# output.size() +# Which is: 1000 +# sizeof(Slice_Neg::output) / sizeof(float) +# Which is: 900 excluded="${excluded}|\ gtest-hist-hist-TFormulaGradientTests|\ -pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views" +pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views|\ +tmva-sofie-test-TestCustomModelsFromONNX\$\$" %endif %ifarch %{power64} -# - tutorial-roofit-roostats-IntervalExamples-py -# *** Break *** segmentation violation -excluded="${excluded}|\ -tutorial-roofit-roostats-IntervalExamples-py" - %if %{?fedora}%{!?fedora:0} >= 42 # - gtest-tree-ntuple-ntuple-emulated -# - gtest-tree-ntuple-ntuple-evolution +# - gtest-tree-ntuple-ntuple-evolution-shape # waitpid() failed excluded="${excluded}|\ gtest-tree-ntuple-ntuple-emulated|\ -gtest-tree-ntuple-ntuple-evolution" -%endif - -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 -# tutorial-roofit-roostats-StandardBayesianMCMCDemo-py -# - ZeroDivisionError: float division by zero -excluded="${excluded}|\ -tutorial-roofit-roostats-StandardBayesianMCMCDemo-py" +gtest-tree-ntuple-ntuple-evolution-shape" %endif %endif @@ -2559,13 +2445,16 @@ gtest-roofit-roofitcore-testNaNPacker|\ gtest-roofit-roofitcore-testLikelihoodGradientJob" # - gtest-core-dictgen-dictgen-base -# - gtest-tmva-sofie-TestCustomModelsFromONNX +# - gtest-tree-dataframe-dataframe-concurrency +# - gtest-tree-dataframe-dataframe-snapshot-ntuple # - gtest-tree-dataframe-dataframe-unified-constructor -# +# - gtest-tree-dataframe-dataframe-vary +# - gtest-tree-dataframe-datasource-ntuple # - gtest-tree-ntuple-ntuple-basics # - gtest-tree-ntuple-ntuple-bulk # - gtest-tree-ntuple-ntuple-cast # - gtest-tree-ntuple-ntuple-compat +# - gtest-tree-ntuple-ntuple-evolution-type # - gtest-tree-ntuple-ntuple-extended # - gtest-tree-ntuple-ntuple-join-table # - gtest-tree-ntuple-ntuple-largefile2 @@ -2588,19 +2477,22 @@ gtest-roofit-roofitcore-testLikelihoodGradientJob" # - gtest-tree-ntuple-rfield-streamer # - gtest-tree-ntuple-rfield-variant # - gtest-tree-ntuple-rfield-vector -# - gtest-tree-ntupleutil-v7-ntuple-importer -# - gtest-tree-ntupleutil-v7-ntuple-inspector +# - gtest-tree-ntupleutil-ntuple-importer +# - gtest-tree-ntupleutil-ntuple-inspector +# - gtest-tree-tree-testTTreeRegressions # https://github.com/root-project/root/issues/12426 # # - pyunittests-bindings-distrdf-backend-distrdf-unit-backend-graph-caching # - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor # - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector +# - pyunittests-io-io-rfile-py +# - tmva-sofie-test-TestCustomModelsFromONNX # - tutorial-analysis-dataframe-df006_ranges-py -# - tutorial-experimental-rcanvas-rbox-py # - tutorial-hist-hist007_TH1_liveupdate-py # - tutorial-math-exampleFunction-py # - tutorial-math-fit-combinedFit-py # - tutorial-math-fit-NumericalMinimization-py +# - tutorial-visualisation-rcanvas-rbox-py # https://github.com/root-project/root/issues/12429 # # - test-stresshistofit @@ -2609,14 +2501,16 @@ gtest-roofit-roofitcore-testLikelihoodGradientJob" # - test-stresshistogram-interpreted excluded="${excluded}|\ gtest-core-dictgen-dictgen-base|\ -gtest-tmva-sofie-TestCustomModelsFromONNX|\ +gtest-tree-dataframe-dataframe-concurrency|\ gtest-tree-dataframe-dataframe-snapshot-ntuple|\ gtest-tree-dataframe-dataframe-unified-constructor|\ +gtest-tree-dataframe-dataframe-vary|\ gtest-tree-dataframe-datasource-ntuple|\ gtest-tree-ntuple-ntuple-basics|\ gtest-tree-ntuple-ntuple-bulk|\ gtest-tree-ntuple-ntuple-cast|\ gtest-tree-ntuple-ntuple-compat|\ +gtest-tree-ntuple-ntuple-evolution-type|\ gtest-tree-ntuple-ntuple-extended|\ gtest-tree-ntuple-ntuple-join-table|\ gtest-tree-ntuple-ntuple-largefile2|\ @@ -2639,17 +2533,20 @@ gtest-tree-ntuple-rfield-class|\ gtest-tree-ntuple-rfield-streamer|\ gtest-tree-ntuple-rfield-variant|\ gtest-tree-ntuple-rfield-vector|\ -gtest-tree-ntupleutil-v7-ntuple-importer|\ -gtest-tree-ntupleutil-v7-ntuple-inspector|\ +gtest-tree-ntupleutil-ntuple-importer|\ +gtest-tree-ntupleutil-ntuple-inspector|\ +gtest-tree-tree-testTTreeRegressions|\ pyunittests-bindings-distrdf-backend-distrdf-unit-backend-graph-caching|\ pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rtensor|\ pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-stl-vector|\ +pyunittests-io-io-rfile-py|\ +tmva-sofie-test-TestCustomModelsFromONNX|\ tutorial-analysis-dataframe-df006_ranges-py|\ -tutorial-experimental-rcanvas-rbox-py|\ tutorial-hist-hist007_TH1_liveupdate-py|\ tutorial-math-exampleFunction-py|\ tutorial-math-fit-combinedFit-py|\ tutorial-math-fit-NumericalMinimization-py|\ +tutorial-visualisation-rcanvas-rbox-py|\ test-stresshistofit\$\$|\ test-stresshistofit-interpreted|\ test-stresshistogram\$\$|\ @@ -2670,17 +2567,14 @@ excluded="${excluded}|\ gtest-math-matrix-testMatrixTSparse" %endif -%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 -# - https://github.com/root-project/root/issues/18995 -excluded="${excluded}|\ -gtest-tree-tree-testTTreeRegressions" -%endif - # Filter out parts of tests that require remote network access # RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) # InterpreterTest.Evaluate fails on s390x # TClingDataMemberInfo.Offset fails on s390x # https://github.com/root-project/root/issues/14512 +# TTreeRegressions.PrintClustersRounding +# relies on specific versions of compression libraries +# https://github.com/root-project/root/issues/18995 export GTEST_FILTER=-\ %ifarch %{ix86} RNTuple.StdAtomic:\ @@ -2691,13 +2585,15 @@ TClingDataMemberInfo.Offset:\ TTreeReaderBasic.LorentzVector32:\ %endif RCsvDS.Remote:\ +RFile.RemoteRead:\ RNTuple.OpenHTTP:\ RRawFile.Remote:\ RSqliteDS.Davix:\ TChainParsing.DoubleSlash:\ TChainParsing.RemoteGlob:\ TFile.ReadWithoutGlobalRegistrationNet:\ -TFile.ReadWithoutGlobalRegistrationWeb +TFile.ReadWithoutGlobalRegistrationWeb:\ +TTreeRegressions.PrintClustersRounding %ctest -- -E "${excluded}" %pretrans net-http -p @@ -2764,6 +2660,8 @@ fi %{_bindir}/hadd %{_bindir}/root %{_bindir}/root.exe +%{_bindir}/rootbrowse +%{_bindir}/rootls %{_bindir}/rootn.exe %{_bindir}/rootreadspeed %{_bindir}/roots @@ -2846,6 +2744,7 @@ fi %{_pkgdocdir}/LICENSE %doc %{_pkgdocdir}/DEVELOPMENT.md %doc %{_pkgdocdir}/ReleaseNotes +%doc %{_pkgdocdir}/root_citation.bib %license LICENSE LGPL2_1.txt %files multiproc -f includelist-core-multiproc @@ -2874,14 +2773,9 @@ fi %files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot %{python3_sitearch}/cppyy -%{python3_sitearch}/cppyy_backend %{python3_sitearch}/ROOT %{python3_sitearch}/ROOT-*.dist-info -%{python3_sitearch}/libcppyy.so -%{python3_sitearch}/libcppyy_backend.so -%{python3_sitearch}/libROOTPythonizations%{python3_ext_suffix} -%{_libdir}/%{name}/libcppyy.* -%{_libdir}/%{name}/libcppyy_backend.* +%{_libdir}/%{name}/libCPyCppyy.* %dir %{_includedir}/%{name}/CPyCppyy %files -n python%{python3_pkgversion}-jupyroot @@ -2889,7 +2783,6 @@ fi %{python3_sitelib}/JupyROOT-*.dist-info %{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot %{_bindir}/rootnb.exe -%{_datadir}/%{name}/notebook %doc bindings/jupyroot/README.md %doc bindings/jupyroot/JupyROOT-on-EPEL @@ -3044,6 +2937,10 @@ fi %{_libdir}/%{name}/libRecorder.* %{_libdir}/%{name}/libRecorder_rdict.pcm +%files gui-treemap -f includelist-gui-treemap +%{_libdir}/%{name}/libROOTTreeMap.* +%{_libdir}/%{name}/libROOTTreeMap_rdict.pcm + %files hbook -f includelist-hist-hbook %{_bindir}/g2root %{_bindir}/h2root @@ -3085,7 +2982,6 @@ fi %files io-sql -f includelist-io-sql %{_libdir}/%{name}/libSQLIO.* %{_libdir}/%{name}/libSQLIO_rdict.pcm -%{_datadir}/%{name}/plugins/TFile/P090_TSQLFile.C %files io-xml -f includelist-io-xml %{_libdir}/%{name}/libXMLIO.* @@ -3260,44 +3156,6 @@ fi %{_datadir}/%{name}/plugins/TSystem/P040_TXNetSystem.C %{_datadir}/%{name}/plugins/ROOT@@Internal@@RRawFile/P020_RRawFileNetXNG.C -%files proof -f includelist-proof-proof -%{_bindir}/proofserv -%{_bindir}/proofserv.exe -%{_mandir}/man1/proofserv.1* -%{_libdir}/%{name}/libProof.* -%{_libdir}/%{name}/libProof_rdict.pcm -%{_datadir}/%{name}/plugins/TChain/P010_TProofChain.C -%{_datadir}/%{name}/plugins/TDataSetManager/P010_TDataSetManagerFile.C -%{_datadir}/%{name}/plugins/TProof/P010_TProofCondor.C -%{_datadir}/%{name}/plugins/TProof/P020_TProofSuperMaster.C -%{_datadir}/%{name}/plugins/TProof/P030_TProofLite.C -%{_datadir}/%{name}/plugins/TProof/P040_TProof.C - -%files proof-bench -f includelist-proof-proofbench -%{_libdir}/%{name}/libProofBench.* -%{_libdir}/%{name}/libProofBench_rdict.pcm -%{_datadir}/%{name}/proof - -%files proof-player -f includelist-proof-proofplayer -%{_libdir}/%{name}/libProofDraw.* -%{_libdir}/%{name}/libProofDraw_rdict.pcm -%{_libdir}/%{name}/libProofPlayer.* -%{_libdir}/%{name}/libProofPlayer_rdict.pcm -%{_datadir}/%{name}/plugins/TProofMonSender/P020_TProofMonSenderSQL.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P010_TProofPlayer.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P020_TProofPlayerRemote.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P030_TProofPlayerLocal.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P040_TProofPlayerSlave.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P050_TProofPlayerSuperMaster.C -%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P060_TProofPlayerLite.C - -%files proof-sessionviewer -f includelist-gui-sessionviewer -%{_libdir}/%{name}/libSessionViewer.* -%{_libdir}/%{name}/libSessionViewer_rdict.pcm -%{_datadir}/%{name}/plugins/TProofProgressDialog/P010_TProofProgressDialog.C -%{_datadir}/%{name}/plugins/TProofProgressLog/P010_TProofProgressLog.C -%{_datadir}/%{name}/plugins/TSessionViewer/P010_TSessionViewer.C - %if %{roofit} %files roofit -f includelist-roofit-roofit %{_libdir}/%{name}/libRooFit.* @@ -3368,26 +3226,11 @@ fi %dir %{_includedir}/%{name}/RooFit/xRooFit %endif -%files sql-mysql -f includelist-sql-mysql -%{_libdir}/%{name}/libRMySQL.* -%{_libdir}/%{name}/libRMySQL_rdict.pcm -%{_datadir}/%{name}/plugins/TSQLServer/P010_TMySQLServer.C - -%files sql-odbc -f includelist-sql-odbc -%{_libdir}/%{name}/libRODBC.* -%{_libdir}/%{name}/libRODBC_rdict.pcm -%{_datadir}/%{name}/plugins/TSQLServer/P050_TODBCServer.C - %files sql-sqlite -f includelist-sql-sqlite %{_libdir}/%{name}/libRSQLite.* %{_libdir}/%{name}/libRSQLite_rdict.pcm %{_datadir}/%{name}/plugins/TSQLServer/P060_TSQLiteServer.C -%files sql-pgsql -f includelist-sql-pgsql -%{_libdir}/%{name}/libPgSQL.* -%{_libdir}/%{name}/libPgSQL_rdict.pcm -%{_datadir}/%{name}/plugins/TSQLServer/P020_TPgSQLServer.C - %files tmva -f includelist-tmva-tmva %{_libdir}/%{name}/libTMVA.* %{_libdir}/%{name}/libTMVA_rdict.pcm @@ -3407,6 +3250,7 @@ fi %exclude %{_includedir}/%{name}/TMVA/RTensorUtils.hxx %exclude %{_includedir}/%{name}/TMVA/BatchGenerator/RBatchGenerator.hxx %exclude %{_includedir}/%{name}/TMVA/BatchGenerator/RBatchLoader.hxx +%exclude %{_includedir}/%{name}/TMVA/BatchGenerator/RChunkConstructor.hxx %exclude %{_includedir}/%{name}/TMVA/BatchGenerator/RChunkLoader.hxx %if %{dataframe} @@ -3423,6 +3267,7 @@ fi %dir %{_includedir}/%{name}/TMVA/BatchGenerator %{_includedir}/%{name}/TMVA/BatchGenerator/RBatchGenerator.hxx %{_includedir}/%{name}/TMVA/BatchGenerator/RBatchLoader.hxx +%{_includedir}/%{name}/TMVA/BatchGenerator/RChunkConstructor.hxx %{_includedir}/%{name}/TMVA/BatchGenerator/RChunkLoader.hxx %endif @@ -3483,11 +3328,9 @@ fi %{_libdir}/%{name}/libUnfold_rdict.pcm %files cli -%{_bindir}/rootbrowse %{_bindir}/rootcp %{_bindir}/rootdrawtree %{_bindir}/rooteventselector -%{_bindir}/rootls %{_bindir}/rootmkdir %{_bindir}/rootmv %{_bindir}/rootprint @@ -3518,6 +3361,8 @@ fi %{_libdir}/%{name}/libROOTBranchBrowseProvider.* %{_libdir}/%{name}/libROOTGeoBrowseProvider.* %{_libdir}/%{name}/libROOTLeafDraw6Provider.* +%{_libdir}/%{name}/libROOTNTupleBrowseProvider.* +%{_libdir}/%{name}/libROOTNTupleDraw6Provider.* %{_libdir}/%{name}/libROOTObjectDraw6Provider.* %files gui-browserv7 -f includelist-gui-browserv7 @@ -3529,6 +3374,11 @@ fi %{_libdir}/%{name}/libROOTBrowserWidgets.* %{_datadir}/%{name}/plugins/TBrowserImp/P030_RWebBrowserImp.C +%files geom-checker -f includelist-geom-geomchecker +%{_libdir}/%{name}/libGeomChecker.* +%{_libdir}/%{name}/libGeomChecker_rdict.pcm +%{_datadir}/%{name}/plugins/TVirtualGeoChecker/P010_TGeoChecker.C + %files geom-webviewer -f includelist-geom-webviewer %{_libdir}/%{name}/libROOTGeomViewer.* %{_libdir}/%{name}/libROOTGeomViewer_rdict.pcm @@ -3539,6 +3389,14 @@ fi %{_libdir}/%{name}/libROOTNTuple_rdict.pcm %dir %{_includedir}/%{name}/ROOT/libdaos_mock +%files tree-ntuple-browse -f includelist-tree-ntuplebrowse +%{_libdir}/%{name}/libROOTNTupleBrowse.* +%{_libdir}/%{name}/libROOTNTupleBrowse_rdict.pcm + +%files tree-ntuple-utils -f includelist-tree-ntupleutil +%{_libdir}/%{name}/libROOTNTupleUtil.* +%{_libdir}/%{name}/libROOTNTupleUtil_rdict.pcm + %if %{root7} %files graf-gpadv7 -f includelist-graf2d-gpadv7 %{_libdir}/%{name}/libROOTGpadv7.* @@ -3554,8 +3412,6 @@ fi %files gui-browsable-v7 %{_libdir}/%{name}/libROOTLeafDraw7Provider.* -%{_libdir}/%{name}/libROOTNTupleBrowseProvider.* -%{_libdir}/%{name}/libROOTNTupleDraw6Provider.* %{_libdir}/%{name}/libROOTNTupleDraw7Provider.* %{_libdir}/%{name}/libROOTObjectDraw7Provider.* @@ -3569,12 +3425,23 @@ fi %{_libdir}/%{name}/libROOTFitPanelv7.* %{_libdir}/%{name}/libROOTFitPanelv7_rdict.pcm -%files tree-ntuple-utils -f includelist-tree-ntupleutil -%{_libdir}/%{name}/libROOTNTupleUtil.* -%{_libdir}/%{name}/libROOTNTupleUtil_rdict.pcm +%files histv7 -f includelist-hist-histv7 +%{_libdir}/%{name}/libROOTHist.* +%{_libdir}/%{name}/libROOTHist_rdict.pcm %endif %changelog +* Tue Dec 09 2025 Mattias Ellert - 6.38.00-1 +- Update to 6.38.00 +- Removed subpackages: root-proof, root-proof-bench, root-proof-player, + root-proof-sessionviewer, root-sql-mysql, root-sql-odbc, root-sql-pgsql +- New subpackages: root-geom-checker, root-gui-treemap, + root-tree-ntuple-browse, root-histv7 +- JsMVA python (sub)module dropped from python3-root package +- Compile minuit2 with Open MP support +- Dropped patches: 7 +- New patches: 4 + * Wed Oct 29 2025 Stephen Gallagher - 6.36.04-4 - Rebuild for libarrow 22 diff --git a/sources b/sources index 17b366b..98e90e5 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.36.04.tar.xz) = d8798d777f308e59ebb3429323895757ca9538499dbb1989d70b3a01c2122b2a01911b0e7da673d7a9fc40acd49fdbf6a5b4341266c1b68a8a88d9f904e7919b +SHA512 (root-6.38.00.tar.xz) = 7c452b509e8171a0cbb7c102a3d4c07333fc8535f1b2c2ab0b9f7434604f098989a78bb71c41039dd41dbbd3438ea8703939826092f075d9d730b6b53c84ac55 SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 -SHA512 (clad-1.9.tar.gz) = df0569f12e3381e9285639eee927d9effb2812765caad2d281c41f6673828ab28b7bf8143ae9686090649cf889e757cfead58baa47e907de468185125a4d772c +SHA512 (clad-2.2.tar.gz) = 6f76d706a829901fc0fcdb38b5ddad6ea8ad9186ea48a4b6b585fc62974a2cda11b96a448c25daaba0586962d6428773e7ab751236c6afa72a91d12f30f2d05e From bdcedb0537a0d54cdf6dbd091ed2d84e385f361f Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 13 Dec 2025 12:55:11 +0100 Subject: [PATCH 85/89] Skip RPATH using -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON (replaces previously used root specific -Drpath:BOOL=OFF no longer available) Backport fixes to python module Rebuild for pythia8 8.3.16 --- ...e-related-to-finding-CPyCppyy-API-he.patch | 109 ++++++++++++++++++ ...now-irrelevant-load_cpp_backend-call.patch | 46 ++++++++ root.spec | 14 ++- 3 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch create mode 100644 root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch diff --git a/root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch b/root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch new file mode 100644 index 0000000..882247f --- /dev/null +++ b/root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch @@ -0,0 +1,109 @@ +From 251de0f8b237ce041df4960f831fe4a1fade6d92 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Sat, 6 Dec 2025 17:39:40 +0100 +Subject: [PATCH] [cppyy] Remove code related to finding CPyCppyy API header + path + +This is not needed for ROOT, because the CPyCppyy API headers are +installed with the other ROOT headers anyway, and ROOT knows where to +find them already. +--- + .../cppyy/cppyy/python/cppyy/__init__.py | 82 ------------------- + 1 file changed, 82 deletions(-) + +diff --git a/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py b/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py +index 68e3c49e5fe..c8dd458bfdd 100644 +--- a/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py ++++ b/bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py +@@ -297,88 +297,6 @@ elif ispypy: + if os.path.exists(apipath) and os.path.exists(os.path.join(apipath, 'Python.h')): + add_include_path(apipath) + +-# add access to extra headers for dispatcher (CPyCppyy only (?)) +-if not ispypy: +- try: +- apipath_extra = os.environ['CPPYY_API_PATH'] +- if os.path.basename(apipath_extra) == 'CPyCppyy': +- apipath_extra = os.path.dirname(apipath_extra) +- except KeyError: +- apipath_extra = None +- +- if apipath_extra is None: +- try: +- if 0x30a0000 <= sys.hexversion: +- import importlib.metadata as m +- +- for p in m.files('CPyCppyy'): +- if p.match('API.h'): +- ape = p.locate() +- break +- del p, m +- else: +- import pkg_resources as pr +- +- d = pr.get_distribution('CPyCppyy') +- for line in d.get_metadata_lines('RECORD'): +- if 'API.h' in line: +- ape = os.path.join(d.location, line[0:line.find(',')]) +- break +- del line, d, pr +- +- if os.path.exists(ape): +- apipath_extra = os.path.dirname(os.path.dirname(ape)) +- del ape +- except Exception: +- pass +- +- if apipath_extra is None: +- ldversion = sysconfig.get_config_var('LDVERSION') +- if not ldversion: +- ldversion = sys.version[:3] +- +- apipath_extra = os.path.join(os.path.dirname(apipath), 'site', 'python'+ldversion) +- if not os.path.exists(os.path.join(apipath_extra, 'CPyCppyy')): +- import glob +- import platform +- +- if platform.system() == "Windows": +- # Install locations are handled differently on Windows +- import libcppyy +- +- ape = os.path.dirname(libcppyy.__file__) +- else: +- import cppyy.libcppyy as libcppyy +- +- ape = os.path.dirname(libcppyy.__file__) +- # a "normal" structure finds the include directory up to 3 levels up, +- # ie. dropping lib/pythonx.y[md]/site-packages +- for i in range(3): +- if os.path.exists(os.path.join(ape, 'include')): +- break +- ape = os.path.dirname(ape) +- +- ape = os.path.join(ape, 'include') +- if os.path.exists(os.path.join(ape, 'CPyCppyy')): +- apipath_extra = ape +- else: +- # add back pythonx.y or site/pythonx.y if present +- for p in glob.glob(os.path.join(ape, 'python'+sys.version[:3]+'*'))+\ +- glob.glob(os.path.join(ape, '*', 'python'+sys.version[:3]+'*')): +- if os.path.exists(os.path.join(p, 'CPyCppyy')): +- apipath_extra = p +- break +- +- if apipath_extra.lower() != 'none': +- if not os.path.exists(os.path.join(apipath_extra, 'CPyCppyy')): +- warnings.warn("CPyCppyy API not found (tried: %s); " +- "set CPPYY_API_PATH envar to the 'CPyCppyy' API directory to fix" +- % apipath_extra) +- else: +- add_include_path(apipath_extra) +- +- del apipath_extra +- + if os.getenv('CONDA_PREFIX'): + # MacOS, Linux + include_path = os.path.join(os.getenv('CONDA_PREFIX'), 'include') +-- +2.52.0 + diff --git a/root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch b/root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch new file mode 100644 index 0000000..a79c861 --- /dev/null +++ b/root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch @@ -0,0 +1,46 @@ +From f4577e76a5dc23842d6be0a82df804f71fc820ef Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Mon, 1 Dec 2025 16:51:36 +0100 +Subject: [PATCH] [cppyy] Remove now irrelevant `load_cpp_backend()` call + +As we don't have a separate `cppyy_backend` anymore (neither as a Python +package, nor as a shared library), trying to load the backend library +will always give an exception that will be caught as an `ImportError`. + +It would be cleaner if this code branch is not even taken. +--- + .../cppyy/cppyy/python/cppyy/_cpython_cppyy.py | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/bindings/pyroot/cppyy/cppyy/python/cppyy/_cpython_cppyy.py b/bindings/pyroot/cppyy/cppyy/python/cppyy/_cpython_cppyy.py +index bac078ea7c9..f98a34a697c 100644 +--- a/bindings/pyroot/cppyy/cppyy/python/cppyy/_cpython_cppyy.py ++++ b/bindings/pyroot/cppyy/cppyy/python/cppyy/_cpython_cppyy.py +@@ -19,24 +19,12 @@ __all__ = [ + '_end_capture_stderr' + ] + +-# First load the dependency libraries of the backend, then pull in the libcppyy +-# extension module. If the backed can't be loaded, it was probably linked +-# statically into the extension module, so we don't error out at this point. +-try: +- from cppyy_backend import loader +- c = loader.load_cpp_backend() +-except ImportError: +- c = None +- + if platform.system() == "Windows": + # On Windows, the library has to be searched without prefix + import libcppyy as _backend + else: + import cppyy.libcppyy as _backend + +-if c is not None: +- _backend._cpp_backend = c +- + # explicitly expose APIs from libcppyy + _w = ctypes.CDLL(_backend.__file__, ctypes.RTLD_GLOBAL) + +-- +2.52.0 + diff --git a/root.spec b/root.spec index 87599a4..53ba016 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.38.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -94,6 +94,9 @@ Patch9: %{name}-Fix-a-numpy-test-for-32-bit-archs.patch # Backport a test fix from upstream Patch10: %{name}-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch Patch11: %{name}-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch +# Backport fixes to python module +Patch12: root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch +Patch13: root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1896,6 +1899,8 @@ This package contains a library for histogramming in ROOT 7. %patch -P9 -p1 %patch -P10 -p1 %patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -1946,6 +1951,7 @@ unset QTINC -DCMAKE_INSTALL_PYTHONDIR:PATH=%{python3_sitearch} \ -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \ -DPython3_EXECUTABLE:PATH=%{__python3} \ -Dgnuinstall:BOOL=ON \ -Dbuiltin_cfitsio:BOOL=OFF \ @@ -3431,6 +3437,12 @@ fi %endif %changelog +* Thu Dec 11 2025 Mattias Ellert - 6.38.00-2 +- Skip RPATH using -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON (replaces + previously used root specific -Drpath:BOOL=OFF no longer available) +- Backport fixes to python module +- Rebuild for pythia8 8.3.16 + * Tue Dec 09 2025 Mattias Ellert - 6.38.00-1 - Update to 6.38.00 - Removed subpackages: root-proof, root-proof-bench, root-proof-player, From 64acc88ed18cb79b3caa678ea22c6a9b2ba36f61 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 18 Dec 2025 13:08:34 +0100 Subject: [PATCH 86/89] Don't install the python modules twice Fix Requires and Provides in the python3-root rpm --- ...n-t-install-the-python-modules-twice.patch | 70 +++++++++++++++++++ root-no-export-python-modules.patch | 19 ++++- root.spec | 18 +++-- 3 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 root-PyROOT-Don-t-install-the-python-modules-twice.patch diff --git a/root-PyROOT-Don-t-install-the-python-modules-twice.patch b/root-PyROOT-Don-t-install-the-python-modules-twice.patch new file mode 100644 index 0000000..608765d --- /dev/null +++ b/root-PyROOT-Don-t-install-the-python-modules-twice.patch @@ -0,0 +1,70 @@ +From f09b4ce027b31dcd19ea8a398c35c5dfbcc0507f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Thu, 18 Dec 2025 11:49:12 +0100 +Subject: [PATCH] [PyROOT] Don't install the python modules twice + +The binary python modules were moved one directory level down into the +ROOT and cppyy directories, so that they reside alongside the python +files in the same directories. The install rule for the python files +must therefore be extended to exclude the binary modules (PATTERN *.so +EXCLUDE) so that these are not installed a second time overwriting the +files installed by the install rule for the binary modules with another +copy with the wrong file permissions. + +Also use the no-version option for the cppyy binary module as is +already done for the pythonization binary module, since it is now +installed in the python directory. Before it was installed in the +library directory with an unversioned symlink in the python directory. +--- + bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt | 2 +- + bindings/pyroot/cppyy/cppyy/CMakeLists.txt | 5 +++-- + bindings/pyroot/pythonizations/CMakeLists.txt | 3 ++- + 3 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt +index bb48c032974..065a89348ff 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt ++++ b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt +@@ -73,7 +73,7 @@ endif() + add_library(cppyy SHARED src/CPyCppyyPyModule.cxx) + + # Set the suffix to '.so' and the prefix to 'lib' +-set_target_properties(cppyy PROPERTIES ${ROOT_LIBRARY_PROPERTIES} ++set_target_properties(cppyy PROPERTIES ${ROOT_LIBRARY_PROPERTIES_NO_VERSION} + LIBRARY_OUTPUT_DIRECTORY ${localruntimedir}/cppyy) + if(MSVC) + target_link_libraries(cppyy PRIVATE CPyCppyy) +diff --git a/bindings/pyroot/cppyy/cppyy/CMakeLists.txt b/bindings/pyroot/cppyy/cppyy/CMakeLists.txt +index 3a29b4525f7..842ad12df97 100644 +--- a/bindings/pyroot/cppyy/cppyy/CMakeLists.txt ++++ b/bindings/pyroot/cppyy/cppyy/CMakeLists.txt +@@ -31,8 +31,9 @@ endforeach() + # Install Python sources and bytecode + install(DIRECTORY ${localruntimedir}/cppyy + DESTINATION ${CMAKE_INSTALL_PYTHONDIR} +- COMPONENT libraries) ++ COMPONENT libraries ++ PATTERN *.so EXCLUDE) + + if(NOT MSVC) + ROOT_ADD_TEST_SUBDIRECTORY(test) +-endif() +\ No newline at end of file ++endif() +diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt +index 1230f18ca47..b415ba13697 100644 +--- a/bindings/pyroot/pythonizations/CMakeLists.txt ++++ b/bindings/pyroot/pythonizations/CMakeLists.txt +@@ -239,7 +239,8 @@ install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports + # Install Python sources and bytecode + install(DIRECTORY ${localruntimedir}/ROOT + DESTINATION ${CMAKE_INSTALL_PYTHONDIR} +- COMPONENT libraries) ++ COMPONENT libraries ++ PATTERN *.so EXCLUDE) + + # Install headers required by pythonizations + install(FILES ${PYROOT_EXTRA_HEADERS} +-- +2.52.0 + diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch index cb56d35..d3fa4bc 100644 --- a/root-no-export-python-modules.patch +++ b/root-no-export-python-modules.patch @@ -1,12 +1,27 @@ -From e0dec6edd0678c2c52aaeb2f3645378ffeaa2d73 Mon Sep 17 00:00:00 2001 +From b4e57c8ccd59d69fe61fa5f6470b3a99ba52aeeb Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 4 Dec 2025 23:13:28 +0100 Subject: [PATCH] Dont export Python modules --- + bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt | 3 +-- bindings/pyroot/pythonizations/CMakeLists.txt | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) + 2 files changed, 2 insertions(+), 9 deletions(-) +diff --git a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt +index bb48c032974..c34069855b2 100644 +--- a/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt ++++ b/bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt +@@ -119,8 +119,7 @@ install(TARGETS CPyCppyy EXPORT ${CMAKE_PROJECT_NAME}Exports + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) + +-install(TARGETS cppyy EXPORT ${CMAKE_PROJECT_NAME}Exports +- RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries # Windows ++install(TARGETS cppyy RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries # Windows + LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries) + diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt index 1230f18ca47..2df4b733320 100644 --- a/bindings/pyroot/pythonizations/CMakeLists.txt diff --git a/root.spec b/root.spec index 53ba016..14bfa6e 100644 --- a/root.spec +++ b/root.spec @@ -34,12 +34,12 @@ %endif # Do not generate autoprovides for Python modules -%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ +%global __provides_exclude_from ^%{python3_sitearch}/.*/lib.*\\.so$ Name: root Version: 6.38.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -95,8 +95,11 @@ Patch9: %{name}-Fix-a-numpy-test-for-32-bit-archs.patch Patch10: %{name}-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch Patch11: %{name}-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch # Backport fixes to python module -Patch12: root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch -Patch13: root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch +Patch12: %{name}-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch +Patch13: %{name}-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch +# Don't install the python modules twice +# https://github.com/root-project/root/pull/20753 +Patch14: %{name}-PyROOT-Don-t-install-the-python-modules-twice.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1901,6 +1904,7 @@ This package contains a library for histogramming in ROOT 7. %patch -P11 -p1 %patch -P12 -p1 %patch -P13 -p1 +%patch -P14 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2145,6 +2149,8 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ # Fix python extension suffix mv %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations.so \ %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations%{python3_ext_suffix} +mv %{buildroot}%{python3_sitearch}/cppyy/libcppyy.so \ + %{buildroot}%{python3_sitearch}/cppyy/libcppyy%{python3_ext_suffix} # Move noarch python modules to sitelib if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then @@ -3437,6 +3443,10 @@ fi %endif %changelog +* Thu Dec 18 2025 Mattias Ellert - 6.38.00-3 +- Don't install the python modules twice +- Fix Requires and Provides in the python3-root rpm + * Thu Dec 11 2025 Mattias Ellert - 6.38.00-2 - Skip RPATH using -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON (replaces previously used root specific -Drpath:BOOL=OFF no longer available) From 732511f3a61f117f94d369c4893f661834c30619 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 20 Dec 2025 12:41:20 +0100 Subject: [PATCH 87/89] Exclude tests for Fedora 43+ on s390x that fail due to hardware acceleration in the zlib-ng library. --- root.spec | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/root.spec b/root.spec index 14bfa6e..5271fad 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.38.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -2563,6 +2563,19 @@ test-stresshistofit\$\$|\ test-stresshistofit-interpreted|\ test-stresshistogram\$\$|\ test-stresshistogram-interpreted" + +# The zlib-ng library is compiled with hardware acceleration support on s390x +# in Fedora 43 and later. +# This means that some tests that compare the size of compressed data fail. +# - test-stress +# - gtest-tree-readspeed-readspeed-general +# - gtest-tree-tree-testTBranch +%if %{?fedora}%{!?fedora:0} >= 43 +excluded="${excluded}|\ +test-stress\$\$|\ +gtest-tree-readspeed-readspeed-general|\ +gtest-tree-tree-testTBranch" +%endif %endif # Fails with gcc 14 on aarch64, ppc64le and s390x (on EPEL 10 also x86_64) @@ -3443,6 +3456,10 @@ fi %endif %changelog +* Fri Dec 19 2025 Mattias Ellert - 6.38.00-4 +- Exclude tests for Fedora 43+ on s390x that fail due to hardware + acceleration in the zlib-ng library. + * Thu Dec 18 2025 Mattias Ellert - 6.38.00-3 - Don't install the python modules twice - Fix Requires and Provides in the python3-root rpm From 27b349be2a41e7e56de88f7b894c2bddca19589f Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 25 Dec 2025 17:38:55 +0100 Subject: [PATCH 88/89] Fix test for stricter syntax in numpy 2.4.0 (backport) --- ...1-Pythonization-test-for-NumPy-2.4.0.patch | 82 +++++++++++++++++++ root.spec | 9 +- 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch diff --git a/root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch b/root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch new file mode 100644 index 0000000..2bc2576 --- /dev/null +++ b/root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch @@ -0,0 +1,82 @@ +From d5135f7869406396b3ba8e944c71dbdd67d3ea01 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Tue, 23 Dec 2025 19:04:45 +0100 +Subject: [PATCH] [Python] Fix TF1 Pythonization test for NumPy 2.4.0 + +The new NumPy 2.4.0 is more strict when implicitly converting 1-element +arrays to scalars. It doesn't do that anymore, causing the TF1 +Pythonization tests to fail (see log below). + +This actually pointed to a real mistake in setting up the test, where a +2D array was used to define the TFormula parameters while it should be a +1D array. + +```txt + 962/3718 Test #93: pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-tf-pycallables ..............................***Failed 3.05 sec +test_callable (tf_pycallables.TF1.test_callable) +Test function provided as callable ... ok +test_evalpar (tf_pycallables.TF1.test_evalpar) +Test the 2D Numpy array pythonizations for TF1::EvalPar ... ERROR +test_evalpar_dynamic (tf_pycallables.TF1.test_evalpar_dynamic) +Test the 2D NumPy pythonizations with dynamic TF1 data dimensions ... ok +test_fitgauss (tf_pycallables.TF1.test_fitgauss) +Test fitting a histogram to a Python function ... ok +test_identity (tf_pycallables.TF1.test_identity) +Test simple function without parameters ... ok +test_params (tf_pycallables.TF1.test_params) +Test function with parameters ... ok +test_params (tf_pycallables.TF2.test_params) +Test function with parameters ... ok +test_params (tf_pycallables.TF3.test_params) +Test function with parameters ... ok + +====================================================================== +ERROR: test_evalpar (tf_pycallables.TF1.test_evalpar) +Test the 2D Numpy array pythonizations for TF1::EvalPar +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/github/home/ROOT-CI/src/bindings/pyroot/pythonizations/test/tf_pycallables.py", line 129, in test_evalpar + expected_value = pyf_tf1_coulomb(x[i, ::2], params) + File "/github/home/ROOT-CI/src/bindings/pyroot/pythonizations/test/tf_pycallables.py", line 33, in pyf_tf1_coulomb + return p[1] * x[0] * x[1] / (p[0]**2) * math.exp(-p[2] / p[0]) + ~~~~~~~~^^^^^^^^^^^^^^ +TypeError: only 0-dimensional arrays can be converted to Python scalars + +---------------------------------------------------------------------- +Ran 8 tests in 1.469s + +FAILED (errors=1) +CMake Error at /github/home/ROOT-CI/src/cmake/modules/RootTestDriver.cmake:232 (message): + error code: 1 + +``` +--- + .../pyroot/pythonizations/test/tf_pycallables.py | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/test/tf_pycallables.py b/bindings/pyroot/pythonizations/test/tf_pycallables.py +index 2a7d6b72462..5a223030ec9 100644 +--- a/bindings/pyroot/pythonizations/test/tf_pycallables.py ++++ b/bindings/pyroot/pythonizations/test/tf_pycallables.py +@@ -116,11 +116,13 @@ class TF1(unittest.TestCase): + [3.0, 10, 4.0] + ]) + +- params = np.array([ +- [1.0], # Distance between charges r +- [8.99e9], # Coulomb constant k (in N·m²/C²) +- [0.1] # Additional factor for modulation +- ]) ++ params = np.array( ++ [ ++ 1.0, # Distance between charges r ++ 8.99e9, # Coulomb constant k (in N·m²/C²) ++ 0.1, # Additional factor for modulation ++ ] ++ ) + + # Slice to avoid the dummy column of 10's + res = rtf1_coulomb.EvalPar(x[:, ::2], params) +-- +2.52.0 + diff --git a/root.spec b/root.spec index 5271fad..def5fea 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.38.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -100,6 +100,9 @@ Patch13: %{name}-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch # Don't install the python modules twice # https://github.com/root-project/root/pull/20753 Patch14: %{name}-PyROOT-Don-t-install-the-python-modules-twice.patch +# Fix test for stricter syntax in numpy 2.4.0 (backport) +# https://github.com/root-project/root/pull/20775 +Patch15: %{name}-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1905,6 +1908,7 @@ This package contains a library for histogramming in ROOT 7. %patch -P12 -p1 %patch -P13 -p1 %patch -P14 -p1 +%patch -P15 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -3456,6 +3460,9 @@ fi %endif %changelog +* Thu Dec 25 2025 Mattias Ellert - 6.38.00-5 +- Fix test for stricter syntax in numpy 2.4.0 (backport) + * Fri Dec 19 2025 Mattias Ellert - 6.38.00-4 - Exclude tests for Fedora 43+ on s390x that fail due to hardware acceleration in the zlib-ng library. From e8626580cf8e9350b3987c302cf19a1ab740f5e0 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 12 Jan 2026 00:03:45 +0100 Subject: [PATCH 89/89] Fixes for gcc 16 --- ...-Use-TRandom3-in-test-RooFuncWrapper.patch | 50 +++++++++++++++++++ root-fontconfig.patch | 21 +++++--- root-gcc-16-libstdc-links-to-libatomic.patch | 32 ++++++++++++ root.spec | 21 +++++++- 4 files changed, 116 insertions(+), 8 deletions(-) create mode 100644 root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch create mode 100644 root-gcc-16-libstdc-links-to-libatomic.patch diff --git a/root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch b/root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch new file mode 100644 index 0000000..34bdebc --- /dev/null +++ b/root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch @@ -0,0 +1,50 @@ +From e1f42658629ad67ce7cb224a1379d133f61f2e35 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser +Date: Sun, 11 Jan 2026 10:25:51 +0100 +Subject: [PATCH] [RF] Use TRandom3 in test RooFuncWrapper + +Use TRandom3 instead of the `` to get compiler-independent, +reproducible behavior. +--- + roofit/roofitcore/test/testRooFuncWrapper.cxx | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/roofit/roofitcore/test/testRooFuncWrapper.cxx b/roofit/roofitcore/test/testRooFuncWrapper.cxx +index 2ebdf95333f..189e8f2e266 100644 +--- a/roofit/roofitcore/test/testRooFuncWrapper.cxx ++++ b/roofit/roofitcore/test/testRooFuncWrapper.cxx +@@ -34,12 +34,12 @@ + #include + + #include ++#include + #include ++#include + #include +-#include + + #include +-#include + + #include "gtest_wrapper.h" + +@@ -66,13 +66,13 @@ double getNumDerivative(const RooAbsReal &pdf, RooRealVar &var, const RooArgSet + + void randomizeParameters(const RooArgSet ¶meters) + { ++ TRandom3 rng(1337); ++ + double lowerBound = -0.1; + double upperBound = 0.1; +- std::uniform_real_distribution unif(lowerBound, upperBound); +- std::default_random_engine re; + + for (auto *param : parameters) { +- double mul = unif(re); ++ double mul = rng.Uniform(lowerBound, upperBound); + + auto par = dynamic_cast(param); + if (!par) +-- +2.52.0 + diff --git a/root-fontconfig.patch b/root-fontconfig.patch index b2c4e99..4e5e607 100644 --- a/root-fontconfig.patch +++ b/root-fontconfig.patch @@ -1,4 +1,4 @@ -From b5735870eb7e65a8c840643540a0676ab40697e0 Mon Sep 17 00:00:00 2001 +From 4d450f306a8ab8220f43675c70f399d89e5a4a03 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sat, 11 May 2024 20:09:47 +0200 Subject: [PATCH] Use system fonts via fontconfig @@ -9,13 +9,13 @@ Subject: [PATCH] Use system fonts via fontconfig graf2d/asimage/src/TASImage.cxx | 91 +++++++- graf2d/graf/CMakeLists.txt | 1 + graf2d/graf/inc/TTF.h | 3 +- - graf2d/graf/src/TTF.cxx | 291 +++++++++++++++++--------- + graf2d/graf/src/TTF.cxx | 295 +++++++++++++++++--------- graf2d/postscript/CMakeLists.txt | 1 + - graf2d/postscript/src/TPostScript.cxx | 106 +++++----- + graf2d/postscript/src/TPostScript.cxx | 106 ++++----- graf3d/gl/CMakeLists.txt | 1 + graf3d/gl/src/TGLFontManager.cxx | 123 ++++++++++- graf3d/gl/src/TGLText.cxx | 56 +++-- - 11 files changed, 493 insertions(+), 192 deletions(-) + 11 files changed, 495 insertions(+), 194 deletions(-) diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx index f0d2124a8f6..41ad4c73020 100644 @@ -207,7 +207,7 @@ index 864ce06b4f0..050796d1ded 100644 static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs static Bool_t fgHinting; ///< use hinting (true by default) diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx -index 758bb98c192..7b1b06cd0ed 100644 +index 758bb98c192..c90d0ac70a9 100644 --- a/graf2d/graf/src/TTF.cxx +++ b/graf2d/graf/src/TTF.cxx @@ -25,6 +25,8 @@ Interface to the freetype 2 library. @@ -453,9 +453,12 @@ index 758bb98c192..7b1b06cd0ed 100644 Error("TTF::SetTextFont", "error loading font %s", ttfont); delete [] ttfont; if (tface) FT_Done_Face(tface); -@@ -453,19 +573,20 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) - delete [] ttfont; +@@ -450,24 +570,25 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) + } + } +- delete [] ttfont; +- fgFontName[fgFontCount] = StrDup(basename); + fgFontIdx[fgFontCount] = ttindex; + fgFontIta[fgFontCount] = italic; @@ -476,7 +479,11 @@ index 758bb98c192..7b1b06cd0ed 100644 + FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr ); } ++ delete [] ttfont; ++ return 0; + } + @@ -494,70 +615,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic) void TTF::SetTextFont(Font_t fontnumber) diff --git a/root-gcc-16-libstdc-links-to-libatomic.patch b/root-gcc-16-libstdc-links-to-libatomic.patch new file mode 100644 index 0000000..776fff3 --- /dev/null +++ b/root-gcc-16-libstdc-links-to-libatomic.patch @@ -0,0 +1,32 @@ +From 7b1632f5602a1bb6e6278d66c25640349c852ab1 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 9 Jan 2026 00:32:27 +0100 +Subject: [PATCH] Starting with gcc 16, libstdc++ links to libatomic. Add to + whitelist. + +$ ldd /lib64/libstdc++.so.6 + linux-vdso.so.1 (0x00007f3cb4c13000) + libm.so.6 => /lib64/libm.so.6 (0x00007f3cb4afc000) + libatomic.so.1 => /lib64/libatomic.so.1 (0x00007f3cb4af1000) + libc.so.6 => /lib64/libc.so.6 (0x00007f3cb460d000) + libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3cb4ac5000) + /lib64/ld-linux-x86-64.so.2 (0x00007f3cb4c15000) +--- + bindings/pyroot/pythonizations/test/import_load_libs.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py +index 63feeca89ba..18906ff921e 100644 +--- a/bindings/pyroot/pythonizations/test/import_load_libs.py ++++ b/bindings/pyroot/pythonizations/test/import_load_libs.py +@@ -77,6 +77,7 @@ class ImportLoadLibs(unittest.TestCase): + "ld.*", + "libffi", + "libgcc_s", ++ "libatomic", + # AddressSanitizer runtime and ROOT configuration + "libclang_rt.asan-.*", + "libROOTSanitizerConfig", +-- +2.52.0 + diff --git a/root.spec b/root.spec index def5fea..4cd9565 100644 --- a/root.spec +++ b/root.spec @@ -39,7 +39,7 @@ Name: root Version: 6.38.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 5%{?dist} +Release: 6%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -103,6 +103,13 @@ Patch14: %{name}-PyROOT-Don-t-install-the-python-modules-twice.patch # Fix test for stricter syntax in numpy 2.4.0 (backport) # https://github.com/root-project/root/pull/20775 Patch15: %{name}-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch +# Starting with gcc 16, libstdc++ links to libatomic +# https://github.com/root-project/root/pull/20826 +Patch16: %{name}-gcc-16-libstdc-links-to-libatomic.patch +# Test fails with gcc 16 (which uses c++20 as default) +# https://github.com/root-project/root/issues/20831 +# https://github.com/root-project/root/pull/20841 +Patch17: %{name}-RF-Use-TRandom3-in-test-RooFuncWrapper.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1909,6 +1916,8 @@ This package contains a library for histogramming in ROOT 7. %patch -P13 -p1 %patch -P14 -p1 %patch -P15 -p1 +%patch -P16 -p1 +%patch -P17 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2475,6 +2484,7 @@ gtest-roofit-roofitcore-testLikelihoodGradientJob" # - gtest-tree-ntuple-ntuple-join-table # - gtest-tree-ntuple-ntuple-largefile2 # - gtest-tree-ntuple-ntuple-merger +# - gtest-tree-ntuple-ntuple-metrics # - gtest-tree-ntuple-ntuple-model # - gtest-tree-ntuple-ntuple-modelext # - gtest-tree-ntuple-ntuple-multi-column @@ -2531,6 +2541,7 @@ gtest-tree-ntuple-ntuple-extended|\ gtest-tree-ntuple-ntuple-join-table|\ gtest-tree-ntuple-ntuple-largefile2|\ gtest-tree-ntuple-ntuple-merger|\ +gtest-tree-ntuple-ntuple-metrics|\ gtest-tree-ntuple-ntuple-model\$\$|\ gtest-tree-ntuple-ntuple-modelext|\ gtest-tree-ntuple-ntuple-multi-column|\ @@ -2598,6 +2609,9 @@ gtest-math-matrix-testMatrixTSparse" # Filter out parts of tests that require remote network access # RNTuple.StdAtomic fails on ix86 (different alignment 64 bit (non)atomic) +# TH3D.FillThreadSafe and RDFHelpers.Histo3DThreadSafe fail on ix86 +# due to alignment issues with std::atomic_ref +# https://github.com/root-project/root/issues/20834 # InterpreterTest.Evaluate fails on s390x # TClingDataMemberInfo.Offset fails on s390x # https://github.com/root-project/root/issues/14512 @@ -2607,6 +2621,8 @@ gtest-math-matrix-testMatrixTSparse" export GTEST_FILTER=-\ %ifarch %{ix86} RNTuple.StdAtomic:\ +TH3D.FillThreadSafe:\ +RDFHelpers.Histo3DThreadSafe:\ %endif %ifarch s390x InterpreterTest.Evaluate:\ @@ -3460,6 +3476,9 @@ fi %endif %changelog +* Mon Jan 12 2026 Mattias Ellert - 6.38.00-6 +- Fixes for gcc 16 + * Thu Dec 25 2025 Mattias Ellert - 6.38.00-5 - Fix test for stricter syntax in numpy 2.4.0 (backport)