From 7ecd76a31df8d9395464a256ff8e3b2ed269a301 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Sun, 15 Mar 2026 18:58:09 +0100 Subject: [PATCH] Update to 6.38.04 Rebuild for pythia8 8.3.17 Dropped patches: 11 New patches: 1 --- root-Adjust-test-stressGraphics.ref.patch | 49 ----- ...ython-version-file-to-wrong-location.patch | 29 +++ root-Fix-a-numpy-test-for-32-bit-archs.patch | 32 ---- ...Geom-Add-missing-includes-of-TMath.h.patch | 63 ------- ...n-t-install-the-python-modules-twice.patch | 70 -------- ...1-Pythonization-test-for-NumPy-2.4.0.patch | 82 --------- ...-Use-TRandom3-in-test-RooFuncWrapper.patch | 50 ------ ...tdated-IsSmall-helper-function-in-te.patch | 34 ---- ...e-related-to-finding-CPyCppyy-API-he.patch | 109 ------------ ...now-irrelevant-load_cpp_backend-call.patch | 46 ----- root-gcc-16-libstdc-links-to-libatomic.patch | 32 ---- ...size-of-long-RVec-instances-in-RVec-.patch | 135 -------------- root.spec | 168 ++++++++---------- sources | 2 +- 14 files changed, 100 insertions(+), 801 deletions(-) delete mode 100644 root-Adjust-test-stressGraphics.ref.patch create mode 100644 root-Avoid-additional-python-version-file-to-wrong-location.patch delete mode 100644 root-Fix-a-numpy-test-for-32-bit-archs.patch delete mode 100644 root-Geom-Add-missing-includes-of-TMath.h.patch delete mode 100644 root-PyROOT-Don-t-install-the-python-modules-twice.patch delete mode 100644 root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch delete mode 100644 root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch delete mode 100644 root-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch delete mode 100644 root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch delete mode 100644 root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch delete mode 100644 root-gcc-16-libstdc-links-to-libatomic.patch delete 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 deleted file mode 100644 index b4c5871..0000000 --- a/root-Adjust-test-stressGraphics.ref.patch +++ /dev/null @@ -1,49 +0,0 @@ -From f7bfa429deb9dbae9058998888bbcaa84af0ca08 Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Tue, 2 Dec 2025 05:33:31 +0100 -Subject: [PATCH] Adjust test/stressGraphics.ref - ---- - test/stressGraphics.ref | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref -index 2498ec6d755..4520a5ab113 100644 ---- a/test/stressGraphics.ref -+++ b/test/stressGraphics.ref -@@ -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.52.0 - diff --git a/root-Avoid-additional-python-version-file-to-wrong-location.patch b/root-Avoid-additional-python-version-file-to-wrong-location.patch new file mode 100644 index 0000000..cbbab31 --- /dev/null +++ b/root-Avoid-additional-python-version-file-to-wrong-location.patch @@ -0,0 +1,29 @@ +From 3f1a626fbe09504c05c5ecec47beb6aa6498d87f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Fri, 13 Mar 2026 08:58:40 +0100 +Subject: [PATCH] Avoid additional python version file to wrong location + +(cherry picked from commit 3db196516a2073b3f20e9b82019818a6bef23b01) +--- + bindings/pyroot/pythonizations/CMakeLists.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt +index 40207644a41..68b632c2ae0 100644 +--- a/bindings/pyroot/pythonizations/CMakeLists.txt ++++ b/bindings/pyroot/pythonizations/CMakeLists.txt +@@ -157,9 +157,10 @@ endforeach() + + # The Python version at build time should be easy to figure out from Python, so + # we can raise an exception if the used Python version is not compatible. ++# The file will be implicitly installed by install(DIRECTORY ...) in the ++# ROOT_PYTHON_PACKAGE function. + set(python_version_file "${localruntimedir}/ROOT/_python_version.py") + file(WRITE "${python_version_file}" "_root_python_version = \"${Python3_VERSION}\"\n") +-install(FILES "${python_version_file}" DESTINATION "${CMAKE_INSTALL_PYTHONDIR}") + + # A custom target that depends on the Python sources being present in the build + # directory. This will be used as a dependency of the pythonization libraries, +-- +2.53.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 deleted file mode 100644 index 5e095f3..0000000 --- a/root-Fix-a-numpy-test-for-32-bit-archs.patch +++ /dev/null @@ -1,32 +0,0 @@ -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-Geom-Add-missing-includes-of-TMath.h.patch b/root-Geom-Add-missing-includes-of-TMath.h.patch deleted file mode 100644 index 966d8da..0000000 --- a/root-Geom-Add-missing-includes-of-TMath.h.patch +++ /dev/null @@ -1,63 +0,0 @@ -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-PyROOT-Don-t-install-the-python-modules-twice.patch b/root-PyROOT-Don-t-install-the-python-modules-twice.patch deleted file mode 100644 index 608765d..0000000 --- a/root-PyROOT-Don-t-install-the-python-modules-twice.patch +++ /dev/null @@ -1,70 +0,0 @@ -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-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch b/root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch deleted file mode 100644 index 2bc2576..0000000 --- a/root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch +++ /dev/null @@ -1,82 +0,0 @@ -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-RF-Use-TRandom3-in-test-RooFuncWrapper.patch b/root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch deleted file mode 100644 index 34bdebc..0000000 --- a/root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch +++ /dev/null @@ -1,50 +0,0 @@ -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-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch b/root-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch deleted file mode 100644 index 58ba414..0000000 --- a/root-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch +++ /dev/null @@ -1,34 +0,0 @@ -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-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch b/root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch deleted file mode 100644 index 882247f..0000000 --- a/root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch +++ /dev/null @@ -1,109 +0,0 @@ -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 deleted file mode 100644 index a79c861..0000000 --- a/root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch +++ /dev/null @@ -1,46 +0,0 @@ -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-gcc-16-libstdc-links-to-libatomic.patch b/root-gcc-16-libstdc-links-to-libatomic.patch deleted file mode 100644 index 776fff3..0000000 --- a/root-gcc-16-libstdc-links-to-libatomic.patch +++ /dev/null @@ -1,32 +0,0 @@ -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-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch b/root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch deleted file mode 100644 index 369ce3e..0000000 --- a/root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch +++ /dev/null @@ -1,135 +0,0 @@ -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 beb0004..8c7a55d 100644 --- a/root.spec +++ b/root.spec @@ -20,12 +20,7 @@ %global pandas 0 %endif -%if "%{?dist}" == ".el10_0" -# R not available in EPEL 10.0 -%global rrr 0 -%else %global rrr 1 -%endif %if %{?fedora}%{!?fedora:0} >= 40 || %{?rhel}%{!?rhel:0} >= 10 %global roofitmp 1 @@ -37,9 +32,9 @@ %global __provides_exclude_from ^%{python3_sitearch}/.*/lib.*\\.so$ Name: root -Version: 6.38.00 +Version: 6.38.04 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 7%{?dist} +Release: 1%{?dist} Summary: Numerical data analysis framework License: LGPL-2.1-or-later @@ -77,39 +72,14 @@ 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 test/stressGraphics.ref -# 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 +Patch5: %{name}-Revert-test-Fetch-the-geometries-from-EOS-and-not-fr.patch # Preserve memory during parallel build # https://github.com/root-project/root/pull/18991 -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 -# Backport fixes to python module -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 -# 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 +Patch6: %{name}-Save-memory-Do-not-link-to-LLVM-libraries-in-parallel.patch +# https://github.com/root-project/root/pull/21604 +# https://github.com/root-project/root/pull/21605 +Patch7: %{name}-Avoid-additional-python-version-file-to-wrong-location.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -144,9 +114,9 @@ BuildRequires: sqlite-devel BuildRequires: libGL-devel BuildRequires: libGLU-devel BuildRequires: libxcrypt-devel -BuildRequires: python%{python3_pkgversion}-devel >= 3.7 -BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python%{python3_pkgversion}-numpy +BuildRequires: python3-devel >= 3.9 +BuildRequires: python3-setuptools +BuildRequires: python3-numpy %ifarch %{qt6_qtwebengine_arches} BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtwebengine-devel @@ -189,7 +159,7 @@ BuildRequires: cppzmq-devel %endif %endif %if %{pandas} -BuildRequires: python%{python3_pkgversion}-pandas +BuildRequires: python3-pandas %endif BuildRequires: perl-generators BuildRequires: gtest-devel @@ -399,63 +369,63 @@ This package contains the unit test support library for ROOT. %package tpython Summary: ROOT's TPython interface Requires: %{name}-core%{?_isa} = %{version}-%{release} -Requires: python%{python3_pkgversion}-%{name}%{?_isa} = %{version}-%{release} +Requires: python3-%{name}%{?_isa} = %{version}-%{release} # Package split (tpython from Python bindings) -Obsoletes: python%{python3_pkgversion}-%{name} < 6.22.00 +Obsoletes: python3-%{name} < 6.22.00 %description tpython This package contains ROOT's TPython interface. It makes it possible to call Python from ROOT. -%package -n python%{python3_pkgversion}-%{name} +%package -n python3-%{name} Summary: Python extension for ROOT -%py_provides python%{python3_pkgversion}-%{name} -Provides: %{name}-python%{python3_pkgversion} = %{version}-%{release} -Obsoletes: %{name}-python%{python3_pkgversion} < 6.08.00 +%py_provides python3-%{name} +Provides: %{name}-python3 = %{version}-%{release} +Obsoletes: %{name}-python3 < 6.08.00 Requires: %{name}-core%{?_isa} = %{version}-%{release} 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 -Obsoletes: python%{python3_pkgversion}-jsmva < 6.32.00 +Obsoletes: python3-%{name} < 6.22.00 +Obsoletes: python3-jsmva < 6.32.00 -%description -n python%{python3_pkgversion}-%{name} +%description -n python3-%{name} This package contains the Python extension for ROOT. It makes it possible to use ROOT classes in Python. -%package -n python%{python3_pkgversion}-jupyroot +%package -n python3-jupyroot Summary: ROOT Jupyter kernel BuildArch: noarch -%py_provides python%{python3_pkgversion}-jupyroot -Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} +%py_provides python3-jupyroot +Requires: python3-%{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.10 -%if %{?fedora}%{!?fedora:0} || ( %{?rhel}%{!?rhel:0} >= 10 && "%{?dist}" != ".el10_0" ) +%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 10 # 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 -Requires: python%{python3_pkgversion}-metakernel +Requires: python3-ipython +Requires: python3-metakernel Requires: python-jupyter-filesystem %endif -%description -n python%{python3_pkgversion}-jupyroot +%description -n python3-jupyroot The Jupyter kernel for the ROOT notebook. %if %{distrdf} -%package -n python%{python3_pkgversion}-distrdf +%package -n python3-distrdf Summary: Distributed RDataFrame BuildArch: noarch -%py_provides python%{python3_pkgversion}-distrdf -Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} +%py_provides python3-distrdf +Requires: python3-%{name} = %{version}-%{release} Requires: %{name}-tree-dataframe = %{version}-%{release} -%description -n python%{python3_pkgversion}-distrdf +%description -n python3-distrdf A layer on top of RDataFrame to enable distributed computations. It is a port of the previously known PyRDF python package. %endif @@ -1165,7 +1135,7 @@ This package contains the basic authentication algorithms used by ROOT. %package net-davix Summary: Davix extension for ROOT -Requires: davix-libs%{?_isa} >= 0.6.4 +Requires: davix-libs%{?_isa} >= 0.7.1 Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} @@ -1319,7 +1289,7 @@ provided here process whole data arrays (batches) instead of a single event at a time, as in the legacy evaluate() function in roofit. In addition, the code is written in a manner that allows for compiler optimizations, notably auto-vectorization. This library is compiled -multiple times for different vector instuction set architectures and +multiple times for different vector instruction set architectures and the optimal code is executed during runtime, as a result of an automatic hardware detection mechanism that this library contains. @@ -1535,7 +1505,7 @@ 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 +Requires: python3-numpy %description tmva-python Python integration with TMVA. @@ -1680,7 +1650,7 @@ An algorithm to unfold distributions from detector to truth level. %package cli Summary: ROOT command line utilities BuildArch: noarch -Requires: python%{python3_pkgversion}-%{name} = %{version}-%{release} +Requires: python3-%{name} = %{version}-%{release} %description cli The ROOT command line utilities is a set of scripts for common tasks @@ -1908,16 +1878,6 @@ This package contains a library for histogramming in ROOT 7. %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 -%patch -P15 -p1 -%patch -P16 -p1 -%patch -P17 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2197,10 +2157,9 @@ echo 'Version: %{version}' >> \ mkdir -p %{buildroot}%{_datadir}/jupyter/kernels cp -pr %{buildroot}%{_datadir}/%{name}/notebook/kernels/root \ - %{buildroot}%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot -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 + %{buildroot}%{_datadir}/jupyter/kernels/python3-jupyroot +sed -e 's!python[0-9]*\.[0-9]*!%{__python3}!' \ + -i %{buildroot}%{_datadir}/jupyter/kernels/python3-jupyroot/kernel.json sed -e '/^\#!/d' \ -i %{buildroot}%{python3_sitelib}/JupyROOT/kernel/rootkernel.py @@ -2289,7 +2248,7 @@ sed -e 's/FATAL_ERROR \(.*imported\)/WARNING \1/' \ 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.")' \ +If this target is not used this warning can be ignored.'$'\x22'')' \ -e '/Possible reasons include/,/)/d' \ -i %{buildroot}%{_datadir}/%{name}/cmake/ROOTConfig-targets.cmake @@ -2435,9 +2394,6 @@ tutorial-visualisation-webcanv-fonts_ttf.cxx" # - 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() @@ -2446,7 +2402,6 @@ tutorial-visualisation-webcanv-fonts_ttf.cxx" # Which is: 900 excluded="${excluded}|\ gtest-hist-hist-TFormulaGradientTests|\ -pyunittests-bindings-pyroot-pythonizations-pyroot-array-numpy-views|\ tmva-sofie-test-TestCustomModelsFromONNX\$\$" %endif @@ -2580,12 +2535,12 @@ test-stresshistogram\$\$|\ test-stresshistogram-interpreted" # The zlib-ng library is compiled with hardware acceleration support on s390x -# in Fedora 43 and later. +# in Fedora 43 and later and RHEL 10.1 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 +%if %{?fedora}%{!?fedora:0} >= 43 || %{?rhel}%{!?rhel:0} >= 10 excluded="${excluded}|\ test-stress\$\$|\ gtest-tree-readspeed-readspeed-general|\ @@ -2607,11 +2562,24 @@ excluded="${excluded}|\ gtest-math-matrix-testMatrixTSparse" %endif +# Test failures with GCC 16 on AArch64 +# https://bugzilla.redhat.com/show_bug.cgi?id=2440537 +# https://github.com/root-project/root/issues/21565 +%if %{?fedora}%{!?fedora:0} >= 44 +%ifarch aarch64 +excluded="${excluded}|\ +gtest-tree-ntuple-ntuple-cast|\ +gtest-tree-ntuple-ntuple-join-table|\ +gtest-tree-ntuple-ntuple-packing|\ +gtest-tree-ntuple-ntuple-show|\ +gtest-tree-ntuple-ntuple-types|\ +gtest-tree-ntuple-ntuple-view|\ +gtest-tree-ntupleutil-ntuple-importer" +%endif +%endif + # 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 @@ -2621,8 +2589,6 @@ gtest-math-matrix-testMatrixTSparse" export GTEST_FILTER=-\ %ifarch %{ix86} RNTuple.StdAtomic:\ -TH3D.FillThreadSafe:\ -RDFHelpers.Histo3DThreadSafe:\ %endif %ifarch s390x InterpreterTest.Evaluate:\ @@ -2654,14 +2620,14 @@ 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 -%pre -n python%{python3_pkgversion}-%{name} +%pre -n python3-%{name} if [ -r /var/lib/alternatives/libPyROOT.so ] ; then for alt in `grep python3.*/.*.so /var/lib/alternatives/libPyROOT.so` ; do %{_sbindir}/update-alternatives --remove libPyROOT.so $alt done fi -%post -n python%{python3_pkgversion}-jupyroot +%post -n python3-jupyroot mkdir -p /etc/jupyter if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py @@ -2680,7 +2646,7 @@ c.ServerApp.extra_static_paths.append('%{_jsdir}/jsroot') # Extra static paths for JupyROOT - end - do not remove this line EOF -%postun -n python%{python3_pkgversion}-jupyroot +%postun -n python3-jupyroot if [ $1 -eq 0 ] ; then if [ -e /etc/jupyter/jupyter_notebook_config.py ] ; then sed '/Extra static paths for JupyROOT - start/','/Extra static paths for JupyROOT - end/'d -i /etc/jupyter/jupyter_notebook_config.py @@ -2816,23 +2782,23 @@ fi %{_libdir}/%{name}/libROOTTPython.* %{_libdir}/%{name}/libROOTTPython_rdict.pcm -%files -n python%{python3_pkgversion}-%{name} -f includelist-bindings-pyroot +%files -n python3-%{name} -f includelist-bindings-pyroot %{python3_sitearch}/cppyy %{python3_sitearch}/ROOT %{python3_sitearch}/ROOT-*.dist-info %{_libdir}/%{name}/libCPyCppyy.* %dir %{_includedir}/%{name}/CPyCppyy -%files -n python%{python3_pkgversion}-jupyroot +%files -n python3-jupyroot %{python3_sitelib}/JupyROOT %{python3_sitelib}/JupyROOT-*.dist-info -%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot +%{_datadir}/jupyter/kernels/python3-jupyroot %{_bindir}/rootnb.exe %doc bindings/jupyroot/README.md %doc bindings/jupyroot/JupyROOT-on-EPEL %if %{distrdf} -%files -n python%{python3_pkgversion}-distrdf +%files -n python3-distrdf %{python3_sitelib}/DistRDF %{python3_sitelib}/DistRDF-*.dist-info %endif @@ -3476,6 +3442,12 @@ fi %endif %changelog +* Fri Mar 13 2026 Mattias Ellert - 6.38.04-1 +- Update to 6.38.04 +- Rebuild for pythia8 8.3.17 +- Dropped patches: 11 +- New patches: 1 + * Sat Jan 17 2026 Fedora Release Engineering - 6.38.00-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild diff --git a/sources b/sources index 98e90e5..11e9563 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (root-6.38.00.tar.xz) = 7c452b509e8171a0cbb7c102a3d4c07333fc8535f1b2c2ab0b9f7434604f098989a78bb71c41039dd41dbbd3438ea8703939826092f075d9d730b6b53c84ac55 +SHA512 (root-6.38.04.tar.xz) = 3f8b4bf1f778008e1d6d3a711ac791391fb32971c03bd6367994e137cc16a87a3e382ce962f9197eef386c736fb8a525eb47606eef5f3390d85942b0d6b641b6 SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670 SHA512 (clad-2.2.tar.gz) = 6f76d706a829901fc0fcdb38b5ddad6ea8ad9186ea48a4b6b585fc62974a2cda11b96a448c25daaba0586962d6428773e7ab751236c6afa72a91d12f30f2d05e