Compare commits

..

2 commits

Author SHA1 Message Date
Than Ngo
73badaf2a6 disable check for test build 2022-02-16 19:49:46 +01:00
Than Ngo
c7533ee7a9 test build 2022-02-16 11:06:51 +01:00
46 changed files with 4152 additions and 3109 deletions

142
root-32bit-dataframe.patch Normal file
View file

@ -0,0 +1,142 @@
diff -ur root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py root-6.24.02/bindings/pyroot_legacy/ROOT.py
--- root-6.24.02.orig/bindings/pyroot_legacy/ROOT.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/bindings/pyroot_legacy/ROOT.py 2021-08-11 10:44:16.895804556 +0200
@@ -438,9 +438,7 @@
# This function is injected as method to the respective classes in Pythonize.cxx.
_root._RDataFrameAsNumpy = _RDataFrameAsNumpy
-# This Pythonisation is there only for 64 bits builds
-if (sys.maxsize > 2**32): # https://docs.python.org/3/library/platform.html#cross-platform
- _root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix
+_root.CreateScopeProxy( "TTree" ).AsMatrix = _TTreeAsMatrix
### RINT command emulation ------------------------------------------------------
diff -ur root-6.24.02.orig/build/unix/makepchinput.py root-6.24.02/build/unix/makepchinput.py
--- root-6.24.02.orig/build/unix/makepchinput.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/build/unix/makepchinput.py 2021-08-11 10:44:16.926804638 +0200
@@ -252,9 +252,6 @@
"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 -ur root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx root-6.24.02/tree/dataframe/test/dataframe_cache.cxx
--- root-6.24.02.orig/tree/dataframe/test/dataframe_cache.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/dataframe_cache.cxx 2021-08-11 10:44:16.927804641 +0200
@@ -224,8 +224,6 @@
}
-#ifdef R__B64
-
TEST(Cache, Regex)
{
@@ -335,8 +333,6 @@
gSystem->Unlink(fileName);
}
-#endif // R__B64
-
// ROOT-10563
TEST(Cache, Alias)
{
diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx root-6.24.02/tree/dataframe/test/datasource_arrow.cxx
--- root-6.24.02.orig/tree/dataframe/test/datasource_arrow.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/datasource_arrow.cxx 2021-08-11 10:44:16.927804641 +0200
@@ -177,8 +177,6 @@
}
#endif
-#ifdef R__B64
-
TEST(RArrowDS, FromARDF)
{
std::unique_ptr<RDataSource> tds(new RArrowDS(createTestTable(), {}));
@@ -250,5 +248,3 @@
}
#endif // R__USE_IMT
-
-#endif // R__B64
diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx root-6.24.02/tree/dataframe/test/datasource_csv.cxx
--- root-6.24.02.orig/tree/dataframe/test/datasource_csv.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/datasource_csv.cxx 2021-08-11 10:44:16.927804641 +0200
@@ -207,8 +207,6 @@
}
#endif
-#ifdef R__B64
-
TEST(RCsvDS, FromARDF)
{
std::unique_ptr<RDataSource> tds(new RCsvDS(fileName0));
@@ -321,5 +319,3 @@
}
#endif // R__USE_IMT
-
-#endif // R__B64
diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx root-6.24.02/tree/dataframe/test/datasource_root.cxx
--- root-6.24.02.orig/tree/dataframe/test/datasource_root.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/datasource_root.cxx 2021-08-11 10:44:16.928804644 +0200
@@ -117,8 +117,6 @@
}
#endif
-#ifdef R__B64
-
TEST(TRootTDS, FromARDF)
{
std::unique_ptr<RDataSource> tds(new RRootDS(treeName, fileGlob));
@@ -190,5 +188,3 @@
}
#endif // R__USE_IMT
-
-#endif // R__B64
diff -ur root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx root-6.24.02/tree/dataframe/test/datasource_trivial.cxx
--- root-6.24.02.orig/tree/dataframe/test/datasource_trivial.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/datasource_trivial.cxx 2021-08-11 10:44:16.928804644 +0200
@@ -141,8 +141,6 @@
EXPECT_EQ(df.Range(10).Count().GetValue(), 10);
}
-#ifdef R__B64
-
TEST(RTrivialDS, FromARDFWithJitting)
{
std::unique_ptr<RDataSource> tds(new RTrivialDS(32));
@@ -245,5 +243,3 @@
}
#endif // R__USE_IMT
-
-#endif // R__B64
diff -ur root-6.24.02.orig/tutorials/CMakeLists.txt root-6.24.02/tutorials/CMakeLists.txt
--- root-6.24.02.orig/tutorials/CMakeLists.txt 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/CMakeLists.txt 2021-08-11 10:44:16.974804766 +0200
@@ -279,10 +279,6 @@
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()
-
#---These ones are disabled !!! ------------------------------------
set(extra_veto
legacy/benchmarks.C
@@ -335,7 +331,6 @@
${classic_veto}
${pythia_veto}
${root7_veto}
- ${bits32_veto}
${xrootd_veto}
${mlp_veto}
${spectrum_veto}

View file

@ -1,7 +1,7 @@
From 55446dcd6eabc1fff218f266c11f31697fe99f09 Mon Sep 17 00:00:00 2001
From 70d941cd6ebbc3726e08ef7f52d0135453f0b840 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Fri, 13 Mar 2020 16:21:55 +0100
Subject: [PATCH] Run tests on 32 bit
Subject: [PATCH 2/3] Run tests on 32 bit
---
test/stressGeometry.cxx | 8 --------
@ -9,7 +9,7 @@ Subject: [PATCH] Run tests on 32 bit
2 files changed, 3 insertions(+), 15 deletions(-)
diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx
index f8d78f4f54..617b9e1644 100644
index 5e81f5f2ca..18e41a6f45 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 f8d78f4f54..617b9e1644 100644
TString fname;
for (i=0; i<NG; i++) {
diff --git a/tree/tree/test/CMakeLists.txt b/tree/tree/test/CMakeLists.txt
index 5bb222edc5..f29a17801d 100644
index 0c1a39d01e..3bafe47934 100644
--- a/tree/tree/test/CMakeLists.txt
+++ b/tree/tree/test/CMakeLists.txt
@@ -17,13 +17,9 @@ endif()
@@ -12,13 +12,9 @@ ROOT_ADD_GTEST(testTOffsetGeneration TOffsetGeneration.cxx ElementStruct.cxx Ele
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)
-#FIXME: tests are having timeout on 32bit CERN VM (in docker container everything is fine),
-# to be reverted after investigation.
-if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4)
- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer)
- ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
- ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
-endif()
+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer)
+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)
ROOT_ADD_GTEST(testTBranch TBranch.cxx LIBRARIES RIO Tree MathCore)
ROOT_ADD_GTEST(testTIOFeatures TIOFeatures.cxx LIBRARIES RIO Tree)
--
2.45.1
2.24.1

View file

@ -1,49 +0,0 @@
From f7bfa429deb9dbae9058998888bbcaa84af0ca08 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,32 +0,0 @@
From 40f8cd0adeb7257778c789e1ae639f260780402b Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,63 +0,0 @@
From 0e1e1f0ba1908ae1020337ed7ec0565bf979b92c Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,70 +0,0 @@
From f09b4ce027b31dcd19ea8a398c35c5dfbcc0507f Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,82 +0,0 @@
From d5135f7869406396b3ba8e944c71dbdd67d3ea01 Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
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

View file

@ -1,50 +0,0 @@
From e1f42658629ad67ce7cb224a1379d133f61f2e35 Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
Date: Sun, 11 Jan 2026 10:25:51 +0100
Subject: [PATCH] [RF] Use TRandom3 in test RooFuncWrapper
Use TRandom3 instead of the `<random>` 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 <RooWorkspace.h>
#include <ROOT/StringUtils.hxx>
+#include <TMath.h>
#include <TROOT.h>
+#include <TRandom3.h>
#include <TSystem.h>
-#include <TMath.h>
#include <functional>
-#include <random>
#include "gtest_wrapper.h"
@@ -66,13 +66,13 @@ double getNumDerivative(const RooAbsReal &pdf, RooRealVar &var, const RooArgSet
void randomizeParameters(const RooArgSet &parameters)
{
+ TRandom3 rng(1337);
+
double lowerBound = -0.1;
double upperBound = 0.1;
- std::uniform_real_distribution<double> 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<RooAbsRealLValue *>(param);
if (!par)
--
2.52.0

View file

@ -1,60 +0,0 @@
From 4da50ef374cd231163dff77493f9367cd62583d9 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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 <geom_name>_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

View file

@ -1,47 +0,0 @@
From 98a5042a02dd7c1aaa9fbd5e54c8620c6b72484f Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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 a6c7aedac99..90ac0139c24 100644
--- a/core/clingutils/test/CMakeLists.txt
+++ b/core/clingutils/test/CMakeLists.txt
@@ -36,3 +36,6 @@ if(NOT builtin_clang)
endif()
ROOT_ADD_UNITTEST_DIR(Core ${CLING_LIBRARIES} $<TARGET_OBJECTS:ClingUtils>)
+
+# 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 4b4b43bdd29..a028802fedc 100644
--- a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
+++ b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
@@ -66,6 +66,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}
@@ -129,5 +132,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.52.0

View file

@ -1,34 +0,0 @@
From fd18e83ae79760f7e8cca6f28b6d0f89d912b152 Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
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<int> &v)
-{
- // the first array element is right after the 3 data members of SmallVectorBase
- return reinterpret_cast<std::uintptr_t>(v.begin()) - reinterpret_cast<std::uintptr_t>(&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

View file

@ -0,0 +1,26 @@
From 2e3fabbe5423f50ee98ce848d8e85ec7a2a2106d Mon Sep 17 00:00:00 2001
From: Enrico Guiraud <enrico.guiraud@cern.ch>
Date: Thu, 15 Jul 2021 12:17:56 +0200
Subject: [PATCH] [DF] Add RCutFlowReport to LinkDef
This should fix some sporadic failures in cling's symbol resolution
in builds without runtime cxx modules.
---
tree/dataframe/inc/LinkDef.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h
index 8103468082..684fc3b6f1 100644
--- a/tree/dataframe/inc/LinkDef.h
+++ b/tree/dataframe/inc/LinkDef.h
@@ -58,6 +58,7 @@
#pragma link C++ class ROOT::Detail::RDF::RMergeableValue<TProfile>+;
#pragma link C++ class ROOT::Detail::RDF::RMergeableValue<TProfile2D>+;
#pragma link C++ class TNotifyLink<ROOT::Internal::RDF::RDataBlockFlag>;
+#pragma link C++ class ROOT::RDF::RCutFlowReport;
#endif
--
2.31.1

View file

@ -0,0 +1,25 @@
From d9e15857c189edcfa75af5c6244ff68fac74f06f Mon Sep 17 00:00:00 2001
From: Enrico Guiraud <enrico.guiraud@cern.ch>
Date: Thu, 10 Jun 2021 10:00:32 +0200
Subject: [PATCH] [DF] Add RDisplay to LinkDef
To help cling autoloading.
---
tree/dataframe/inc/LinkDef.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h
index 3879ac8d5d..8103468082 100644
--- a/tree/dataframe/inc/LinkDef.h
+++ b/tree/dataframe/inc/LinkDef.h
@@ -20,6 +20,7 @@
#pragma link C++ namespace ROOT::Internal::RDF::GraphDrawing;
#pragma link C++ namespace ROOT::Detail::RDF;
#pragma link C++ namespace ROOT::RDF;
+#pragma link C++ class ROOT::RDF::RDisplay-;
#pragma link C++ class ROOT::Internal::RDF::RActionBase-;
#pragma link C++ class ROOT::Internal::RDF::RJittedAction-;
#pragma link C++ class ROOT::Detail::RDF::RFilterBase-;
--
2.31.1

View file

@ -0,0 +1,36 @@
From 56d52ccf2fad2736e49d3cfc4c9df22492e1dbfc Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 8 Jun 2021 02:46:18 +0200
Subject: [PATCH] Add TTreeProcessorMP to LinkDef
This fixes test failure:
745/1157 Test #729: tutorial-multicore-mp102_readNtuplesFillHistosAndFit ................***Failed 1.55 sec
Processing /builddir/build/BUILD/root-6.25.01/tutorials/multicore/mp102_readNtuplesFillHistosAndFit.C...
IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMPC1Ej' unresolved while linking [cling interface function]!
You are probably missing the definition of ROOT::TTreeProcessorMP::TTreeProcessorMP(unsigned int)
Maybe you need to load the corresponding shared library?
IncrementalExecutor::executeFunction: symbol '_ZN4ROOT16TTreeProcessorMP11ReplyToIdleEP7TSocket' unresolved while linking [cling interface function]!
You are probably missing the definition of ROOT::TTreeProcessorMP::ReplyToIdle(TSocket*)
Maybe you need to load the corresponding shared library?
CMake Error at /builddir/build/BUILD/root-6.25.01/x86_64-redhat-linux-gnu/RootTestDriver.cmake:237 (message):
error code: 1
---
tree/treeplayer/inc/LinkDef.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tree/treeplayer/inc/LinkDef.h b/tree/treeplayer/inc/LinkDef.h
index e7fdd7c9bf..d195536a40 100644
--- a/tree/treeplayer/inc/LinkDef.h
+++ b/tree/treeplayer/inc/LinkDef.h
@@ -30,6 +30,7 @@
#pragma link C++ class TSimpleAnalysis+;
#ifndef _MSC_VER
#pragma link C++ class TMPWorkerTree+;
+#pragma link C++ class ROOT::TTreeProcessorMP-;
#endif
#ifdef R__USE_IMT
#pragma link C++ class ROOT::TTreeProcessorMT-;
--
2.31.1

View file

@ -1,109 +0,0 @@
From 251de0f8b237ce041df4960f831fe4a1fade6d92 Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
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

View file

@ -1,46 +0,0 @@
From f4577e76a5dc23842d6be0a82df804f71fc820ef Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
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

View file

@ -0,0 +1,21 @@
diff -ur root-6.20.02.orig/documentation/doxygen/filter.cxx root-6.20.02/documentation/doxygen/filter.cxx
--- root-6.20.02.orig/documentation/doxygen/filter.cxx 2020-03-15 16:21:25.000000000 +0100
+++ root-6.20.02/documentation/doxygen/filter.cxx 2020-03-15 20:05:59.047270429 +0100
@@ -378,16 +378,7 @@
// notebook found
if (gLineString.find("\\notebook") != string::npos) {
- ExecuteCommand(StringFormat("%s converttonotebook.py %s %s/notebooks/",
- gPythonExec.c_str(),
- gFileName.c_str(), gOutDir.c_str()));
- if (gPython){
- gLineString = "## ";
- }
- else{
- gLineString = "/// ";
- }
- gLineString += StringFormat( "\\htmlonly <a href=\"https://nbviewer.jupyter.org/url/root.cern/doc/master/notebooks/%s.nbconvert.ipynb\" target=\"_blank\"><img src= notebook.gif alt=\"View in nbviewer\" style=\"height:1em\" ></a> <a href=\"https://cern.ch/swanserver/cgi-bin/go?projurl=https://root.cern/doc/master/notebooks/%s.nbconvert.ipynb\" target=\"_blank\"><img src=\"https://swanserver.web.cern.ch/swanserver/images/badge_swan_white_150.png\" alt=\"Open in SWAN\" style=\"height:1em\" ></a> \\endhtmlonly \n", gMacroName.c_str() , gMacroName.c_str());
+ gLineString = "";
}
// \macro_output found

View file

@ -0,0 +1,44 @@
diff -ur root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C
--- root-6.24.06.orig/tutorials/multicore/mp201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
+++ root-6.24.06/tutorials/multicore/mp201_parallelHistoFill.C 2021-11-05 18:09:46.916687882 +0100
@@ -5,7 +5,6 @@
/// This tutorial shows how a histogram can be filled in parallel
/// with a multiprocess approach.
///
-/// \macro_image
/// \macro_code
///
/// \date January 2016
diff -ur root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C
--- root-6.24.06.orig/tutorials/multicore/mt201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
+++ root-6.24.06/tutorials/multicore/mt201_parallelHistoFill.C 2021-12-06 18:19:08.498933048 +0100
@@ -10,7 +10,6 @@
/// method. This method is not thread safe: in presence of ROOT histograms, the
/// system will not crash but the result is not uniquely defined.
///
-/// \macro_image
/// \macro_code
///
/// \date January 2016
diff -ur root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C root-6.24.06/tutorials/multicore/mt304_fillHistos.C
--- root-6.24.06.orig/tutorials/multicore/mt304_fillHistos.C 2021-09-01 10:08:19.000000000 +0200
+++ root-6.24.06/tutorials/multicore/mt304_fillHistos.C 2021-12-06 19:54:20.634373797 +0100
@@ -5,7 +5,6 @@
/// Illustrates use of power-of-two autobin algorithm
///
/// \macro_code
-/// \macro_image
///
/// \date November 2017
/// \author Gerardo Ganis
diff -ur root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C
--- root-6.24.06.orig/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-09-01 10:08:19.000000000 +0200
+++ root-6.24.06/tutorials/multicore/mtbb201_parallelHistoFill.C 2021-12-06 19:54:22.174377227 +0100
@@ -5,7 +5,6 @@
/// This tutorial shows how a histogram can be filled in parallel
/// with a multiprocess approach.
///
-/// \macro_image
/// \macro_code
///
/// \date January 2016

275
root-doxygen-crash.patch Normal file
View file

@ -0,0 +1,275 @@
diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C root-6.24.02/tutorials/dataframe/df002_dataModel.C
--- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df002_dataModel.C 2021-08-11 03:55:11.021149115 +0200
@@ -7,7 +7,6 @@
/// complex than flat ntuples with RDataFrame
///
/// \macro_code
-/// \macro_image
///
/// \date December 2016
/// \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py root-6.24.02/tutorials/dataframe/df002_dataModel.py
--- root-6.24.02.orig/tutorials/dataframe/df002_dataModel.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df002_dataModel.py 2021-08-11 03:55:11.084149272 +0200
@@ -7,7 +7,6 @@
## complex than flat ntuples with RDataFrame
##
## \macro_code
-## \macro_image
##
## \date May 2017
## \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.C root-6.24.02/tutorials/dataframe/df003_profiles.C
--- root-6.24.02.orig/tutorials/dataframe/df003_profiles.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df003_profiles.C 2021-08-11 03:55:11.148149432 +0200
@@ -7,7 +7,6 @@
/// RDataFrame. See the documentation of TProfile and TProfile2D to better
/// understand the analogy of this code with the example one.
///
-/// \macro_image
/// \macro_code
///
/// \date February 2017
diff -ur root-6.24.02.orig/tutorials/dataframe/df003_profiles.py root-6.24.02/tutorials/dataframe/df003_profiles.py
--- root-6.24.02.orig/tutorials/dataframe/df003_profiles.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df003_profiles.py 2021-08-11 03:55:11.211149590 +0200
@@ -8,7 +8,6 @@
## understand the analogy of this code with the example one.
##
## \macro_code
-## \macro_image
##
## \date February 2017
## \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C
--- root-6.24.02.orig/tutorials/dataframe/df005_fillAnyObject.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df005_fillAnyObject.C 2021-08-11 03:55:11.275149750 +0200
@@ -7,7 +7,6 @@
/// `Fill` method.
///
/// \macro_code
-/// \macro_image
///
/// \date March 2017
/// \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C root-6.24.02/tutorials/dataframe/df007_snapshot.C
--- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df007_snapshot.C 2021-08-11 03:55:11.338149907 +0200
@@ -5,7 +5,6 @@
///
/// This tutorial shows how to write out datasets in ROOT format using the RDataFrame
///
-/// \macro_image
/// \macro_code
///
/// \date April 2017
diff -ur root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py root-6.24.02/tutorials/dataframe/df007_snapshot.py
--- root-6.24.02.orig/tutorials/dataframe/df007_snapshot.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df007_snapshot.py 2021-08-11 03:55:11.402150067 +0200
@@ -5,7 +5,6 @@
##
## This tutorial shows how to write out datasets in ROOT format using the RDataFrame
##
-## \macro_image
## \macro_code
##
## \date April 2017
diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C
--- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.C 2021-08-11 03:55:11.465150225 +0200
@@ -14,7 +14,6 @@
/// DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700).
///
/// \macro_code
-/// \macro_image
///
/// \date October 2017
/// \author Enric Tejedor (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py
--- root-6.24.02.orig/tutorials/dataframe/df014_CSVDataSource.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df014_CSVDataSource.py 2021-08-11 03:55:11.529150385 +0200
@@ -14,7 +14,6 @@
## DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700).
##
## \macro_code
-## \macro_image
##
## \date October 2017
## \author Enric Tejedor (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C
--- root-6.24.02.orig/tutorials/dataframe/df015_LazyDataSource.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df015_LazyDataSource.C 2021-08-11 03:55:11.593150545 +0200
@@ -14,7 +14,6 @@
/// From the ROOT website: https://root.cern.ch/files/tutorials/tdf014_CsvDataSource_MuRun2010B.csv
///
/// \macro_code
-/// \macro_image
///
/// \date February 2018
/// \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C root-6.24.02/tutorials/dataframe/df016_vecOps.C
--- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df016_vecOps.C 2021-08-11 03:55:11.656150702 +0200
@@ -7,7 +7,6 @@
/// stored in datasets, a situation very common in HEP data analysis.
///
/// \macro_code
-/// \macro_image
///
/// \date February 2018
/// \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py root-6.24.02/tutorials/dataframe/df016_vecOps.py
--- root-6.24.02.orig/tutorials/dataframe/df016_vecOps.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df016_vecOps.py 2021-08-11 03:55:11.720150862 +0200
@@ -6,7 +6,6 @@
## This tutorial shows the potential of the VecOps approach for treating collections
## stored in datasets, a situation very common in HEP data analysis.
##
-## \macro_image
## \macro_code
##
## \date February 2018
diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C
--- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.C 2021-08-11 03:55:11.783151020 +0200
@@ -11,7 +11,6 @@
/// greater than 100.
///
/// \macro_code
-/// \macro_image
///
/// \date March 2018
/// \authors Danilo Piparo (CERN), Andre Vieira Silva
diff -ur root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py
--- root-6.24.02.orig/tutorials/dataframe/df017_vecOpsHEP.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df017_vecOpsHEP.py 2021-08-11 03:55:11.846151177 +0200
@@ -7,7 +7,6 @@
## model typically adopted in HEP for analysis.
##
## \macro_code
-## \macro_image
##
## \date March 2018
## \authors Danilo Piparo (CERN), Andre Vieira Silva
diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.C root-6.24.02/tutorials/dataframe/df019_Cache.C
--- root-6.24.02.orig/tutorials/dataframe/df019_Cache.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df019_Cache.C 2021-08-11 03:55:11.910151337 +0200
@@ -18,7 +18,6 @@
/// only when the event loop is triggered on it.
///
/// \macro_code
-/// \macro_image
///
/// \date June 2018
/// \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df019_Cache.py root-6.24.02/tutorials/dataframe/df019_Cache.py
--- root-6.24.02.orig/tutorials/dataframe/df019_Cache.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df019_Cache.py 2021-08-11 03:55:11.973151495 +0200
@@ -18,7 +18,6 @@
## only when the event loop is triggered on it.
##
## \macro_code
-## \macro_image
##
## \date June 2018
## \author Danilo Piparo (CERN)
diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C root-6.24.02/tutorials/dataframe/df021_createTGraph.C
--- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.C 2021-08-11 03:55:12.037151655 +0200
@@ -4,7 +4,6 @@
/// Fill a TGraph using RDataFrame.
///
/// \macro_code
-/// \macro_image
///
/// \date July 2018
/// \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)
diff -ur root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py root-6.24.02/tutorials/dataframe/df021_createTGraph.py
--- root-6.24.02.orig/tutorials/dataframe/df021_createTGraph.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/dataframe/df021_createTGraph.py 2021-08-11 03:55:12.100151813 +0200
@@ -4,7 +4,6 @@
## Fill a TGraph using RDataFrame.
##
## \macro_code
-## \macro_image
##
## \date July 2018
## \authors Enrico Guiraud, Danilo Piparo (CERN), Massimo Tumolo (Politecnico di Torino)
diff -ur root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C root-6.24.02/tutorials/tmva/tmva003_RReader.C
--- root-6.24.02.orig/tutorials/tmva/tmva003_RReader.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/tmva/tmva003_RReader.C 2021-08-11 04:16:33.833359421 +0200
@@ -5,7 +5,6 @@
/// TMVA XML files.
///
/// \macro_code
-/// \macro_output
///
/// \date July 2019
/// \author Stefan Wunsch
diff -ur root-6.24.02.orig/tutorials/tmva/tmva103_Application.C root-6.24.02/tutorials/tmva/tmva103_Application.C
--- root-6.24.02.orig/tutorials/tmva/tmva103_Application.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/tmva/tmva103_Application.C 2021-08-11 21:56:49.387390340 +0200
@@ -6,7 +6,6 @@
/// event-by-event inference, batch inference and pipelines with RDataFrame.
///
/// \macro_code
-/// \macro_output
///
/// \date December 2018
/// \author Stefan Wunsch
diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C
--- root-6.24.02.orig/tutorials/tmva/TMVA_CNN_Classification.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/tmva/TMVA_CNN_Classification.C 2021-08-10 15:21:03.306171069 +0200
@@ -6,7 +6,6 @@
/// This is an example of using a CNN in TMVA. We do classification using a toy image data set
/// that is generated when running the example macro
///
-/// \macro_image
/// \macro_output
/// \macro_code
///
diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C
--- root-6.24.02.orig/tutorials/tmva/TMVA_Higgs_Classification.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/tmva/TMVA_Higgs_Classification.C 2021-08-10 15:21:33.974251559 +0200
@@ -7,7 +7,6 @@
/// used in this paper: Baldi, P., P. Sadowski, and D. Whiteson. “Searching for Exotic Particles in High-energy Physics
/// with Deep Learning.” Nature Communications 5 (July 2, 2014).
///
-/// \macro_image
/// \macro_output
/// \macro_code
///
diff -ur root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C
--- root-6.24.02.orig/tutorials/tmva/TMVA_RNN_Classification.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/tmva/TMVA_RNN_Classification.C 2021-08-10 15:21:15.657203486 +0200
@@ -6,7 +6,6 @@
/// This is an example of using a RNN in TMVA. We do classification using a toy time dependent data set
/// that is generated when running this example macro
///
-/// \macro_image
/// \macro_output
/// \macro_code
///
diff -ur root-6.24.02.orig/tutorials/v7/line.cxx root-6.24.02/tutorials/v7/line.cxx
--- root-6.24.02.orig/tutorials/v7/line.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/v7/line.cxx 2021-08-16 14:25:32.528867781 +0200
@@ -6,7 +6,6 @@
/// "normal" coordinates' system and changing the line color linearly from black
/// to red.
///
-/// \macro_image (line.png)
/// \macro_code
///
/// \date 2018-03-18
diff -ur root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C
--- root-6.24.02.orig/tutorials/v7/ntuple/ntpl005_introspection.C 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tutorials/v7/ntuple/ntpl005_introspection.C 2021-08-10 15:22:06.504336763 +0200
@@ -4,7 +4,6 @@
/// Write and read an RNTuple from a user-defined class. Adapted from tv3.C
/// Illustrates various RNTuple introspection methods.
///
-/// \macro_image
/// \macro_code
///
/// \date April 2020

87
root-doxygen-fix1.patch Normal file
View file

@ -0,0 +1,87 @@
From e303e0105b6f7bd7848a4385fcb62bedb847abb4 Mon Sep 17 00:00:00 2001
From: Olivier Couet <olivier.couet@cern.ch>
Date: Mon, 12 Apr 2021 16:22:49 +0200
Subject: [PATCH] RLogScopedVerbosity doxygen doc fix (#7830)
* RLogScopedVerbosity doxygen doc was not visible because source code was under ``` instead of ~~~
* [foundation] RLogger doc (NFC) - thanks, Sergey!
Co-authored-by: Axel Naumann <Axel.Naumann@cern.ch>
---
core/foundation/inc/ROOT/RLogger.hxx | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/core/foundation/inc/ROOT/RLogger.hxx b/core/foundation/inc/ROOT/RLogger.hxx
index d753bbc358..c1a1b22690 100644
--- a/core/foundation/inc/ROOT/RLogger.hxx
+++ b/core/foundation/inc/ROOT/RLogger.hxx
@@ -109,7 +109,7 @@ public:
/// Construct an anonymous channel.
RLogChannel() = default;
- /// Construct an anonymous channel with a default vebosity.
+ /// Construct an anonymous channel with a default verbosity.
explicit RLogChannel(ELogLevel verbosity) : fVerbosity(verbosity) {}
/// Construct a log channel given its name, which is part of the diagnostics.
@@ -202,11 +202,11 @@ namespace Detail {
This builder can be used through the utility preprocessor macros R__LOG_ERROR,
R__LOG_WARNING etc like this:
- ```c++
+~~~ {.cpp}
R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42;
const int decreasedInfoLevel = 5;
R__LOG_XDEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details";
- ```
+~~~
This will automatically capture the current class and function name, the file and line number.
*/
@@ -235,10 +235,10 @@ public:
Change the verbosity level (global or specific to the RLogChannel passed to the
constructor) for the lifetime of this object.
Example:
- ```c++
+~~~ {.cpp}
RLogScopedVerbosity debugThis(gFooLog, ELogLevel::kDebug);
Foo::SomethingToDebug();
- ```
+~~~
*/
class RLogScopedVerbosity {
RLogChannel *fChannel;
@@ -331,10 +331,10 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons
- The conditional `RLogBuilder` use prevents stream operators from being called if
verbosity is too low, i.e.:
- ````
+ ~~~
RLogScopedVerbosity silence(RLogLevel::kFatal);
R__LOG_DEBUG(7) << WillNotBeCalled();
- ```
+ ~~~
- To update counts of warnings / errors / fatal errors, those RLogEntries must
always be created, even if in the end their emission will be silenced. This
should be fine, performance-wise, as they should not happen frequently.
@@ -350,13 +350,13 @@ inline ELogLevel RLogChannel::GetEffectiveVerbosity(const RLogManager &mgr) cons
/// \name LogMacros
/// Macros to log diagnostics.
-/// ```c++
+/// ~~~ {.cpp}
/// R__LOG_INFO(ROOT::Experimental::HistLog()) << "all we know is " << 42;
///
/// RLogScopedVerbosity verbose(kDebug + 5);
/// const int decreasedInfoLevel = 5;
-/// R__LOG_DEBUG(decreasedInfoLevel, ROOT::Experimental::WebGUILog()) << "nitty-gritty details";
-/// ```
+/// R__LOG_DEBUG(ROOT::Experimental::WebGUILog(), decreasedInfoLevel) << "nitty-gritty details";
+/// ~~~
///\{
#define R__LOG_FATAL(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kFatal, __VA_ARGS__)
#define R__LOG_ERROR(...) R__LOG_TO_CHANNEL(ROOT::Experimental::ELogLevel::kError, __VA_ARGS__)
--
2.33.1

26
root-doxygen-fix2.patch Normal file
View file

@ -0,0 +1,26 @@
From 37a1a43347bc1ecb492b13e2f06d80c16779c84f Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sun, 5 Dec 2021 21:51:32 +0100
Subject: [PATCH] Fix doxygen warning
warning: reached end of file while inside a ~~~ block!
---
gui/webdisplay/src/RWebDisplayHandle.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx
index 44a544bb51..84ff7a6990 100644
--- a/gui/webdisplay/src/RWebDisplayHandle.cxx
+++ b/gui/webdisplay/src/RWebDisplayHandle.cxx
@@ -608,7 +608,7 @@ std::unique_ptr<RWebDisplayHandle> RWebDisplayHandle::Display(const RWebDisplayA
/// Browser can specified when starting `root --web=firefox`
/// Returns true when browser started
/// It is convenience method, equivalent to:
-/// ~~~
+/// ~~~
/// RWebDisplayArgs args;
/// args.SetUrl(url);
/// args.SetStandalone(false);
--
2.33.1

View file

@ -0,0 +1,16 @@
diff -ur root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py
--- root-6.22.04.orig/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-13 11:42:09.000000000 +0100
+++ root-6.22.04/bindings/pyroot/pythonizations/python/ROOT/__init__.py 2020-11-14 15:38:24.462463625 +0100
@@ -19,6 +19,12 @@
# Prevent cppyy from filtering ROOT libraries
environ['CPPYY_NO_ROOT_FILTER'] = '1'
+try:
+ from ctypes import cdll
+ libCore = cdll.LoadLibrary("libCore.so")
+except:
+ print("An exception occurred while loading libCore.so with ctypes")
+
import cppyy
if not 'ROOTSYS' in environ:
# Revert setting made by cppyy

View file

@ -0,0 +1,63 @@
From 3bc55ece1db8b32c5e86fd6b85856addd67265fb Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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<char>; _Alloc = std::allocator<char>; 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<IntegerType>(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

View file

@ -0,0 +1,168 @@
From 153f1c3de0e24f5678fd3a706f902ac12b11048e Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sun, 18 Apr 2021 07:28:41 +0200
Subject: [PATCH] Fix multicore tests when running on machines with few cores
When running on machines with few cores, enabling multithreading can
give you fewer cores than requested. For most of the tests this does
not matter. However, some tests verify the number of threads used.
This commit adapts those tests for this situation.
---
tree/dataframe/test/dataframe_concurrency.cxx | 18 +++++++++-------
tree/dataframe/test/dataframe_interface.cxx | 7 +++++--
tree/dataframe/test/dataframe_simple.cxx | 2 +-
tree/dataframe/test/dataframe_snapshot.cxx | 6 ++++--
.../test/treeprocmt/treeprocessormt.cxx | 21 +++++++++++++++----
5 files changed, 37 insertions(+), 17 deletions(-)
diff --git a/tree/dataframe/test/dataframe_concurrency.cxx b/tree/dataframe/test/dataframe_concurrency.cxx
index d1b25493e5..a4bce595f8 100644
--- a/tree/dataframe/test/dataframe_concurrency.cxx
+++ b/tree/dataframe/test/dataframe_concurrency.cxx
@@ -57,33 +57,35 @@ TEST(RDFConcurrency, NestedParallelismBetweenDefineCalls)
// [DF] Warn on mismatch between slot pool size and effective number of slots
TEST(RDFSimpleTests, ThrowOnPoolSizeMismatch)
{
+ const unsigned int nslots = std::min(3u, std::thread::hardware_concurrency());
+
// pool created after RDF
- {
+ if (nslots > 1) {
ROOT::RDataFrame df(1);
- ROOT::EnableImplicitMT(3);
+ ROOT::EnableImplicitMT(nslots);
try {
df.Count().GetValue();
} catch (const std::runtime_error &e) {
const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required "
- "was 1, but when starting the event loop it was 3. Maybe EnableImplicitMT() was "
+ "was 1, but when starting the event loop it was " + std::to_string(nslots) + ". Maybe EnableImplicitMT() was "
"called after the RDataFrame was constructed?";
- EXPECT_STREQ(e.what(), expected_msg);
+ EXPECT_STREQ(e.what(), expected_msg.c_str());
}
ROOT::DisableImplicitMT();
}
// pool deleted after RDF creation
- {
- ROOT::EnableImplicitMT(3);
+ if (nslots > 1) {
+ ROOT::EnableImplicitMT(nslots);
ROOT::RDataFrame df(1);
ROOT::DisableImplicitMT();
try {
df.Count().GetValue();
} catch (const std::runtime_error &e) {
const auto expected_msg = "RLoopManager::Run: when the RDataFrame was constructed the number of slots required "
- "was 3, but when starting the event loop it was 1. Maybe DisableImplicitMT() was "
+ "was " + std::to_string(nslots) + ", but when starting the event loop it was 1. Maybe DisableImplicitMT() was "
"called after the RDataFrame was constructed?";
- EXPECT_STREQ(e.what(), expected_msg);
+ EXPECT_STREQ(e.what(), expected_msg.c_str());
}
}
}
diff --git a/tree/dataframe/test/dataframe_interface.cxx b/tree/dataframe/test/dataframe_interface.cxx
index afdd8360ef..90e052f1a7 100644
--- a/tree/dataframe/test/dataframe_interface.cxx
+++ b/tree/dataframe/test/dataframe_interface.cxx
@@ -7,6 +7,8 @@
#include "gtest/gtest.h"
+#include <thread>
+
using namespace ROOT;
using namespace ROOT::RDF;
@@ -351,9 +353,10 @@ TEST(RDataFrameInterface, GetNSlots)
ROOT::RDataFrame df0(1);
EXPECT_EQ(1U, df0.GetNSlots());
#ifdef R__USE_IMT
- ROOT::EnableImplicitMT(3);
+ unsigned int nslots = std::min(3U, std::thread::hardware_concurrency());
+ ROOT::EnableImplicitMT(nslots);
ROOT::RDataFrame df3(1);
- EXPECT_EQ(3U, df3.GetNSlots());
+ EXPECT_EQ(nslots, df3.GetNSlots());
ROOT::DisableImplicitMT();
ROOT::RDataFrame df1(1);
EXPECT_EQ(1U, df1.GetNSlots());
diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx
index c6aba48b3e..e6b92be776 100644
--- a/tree/dataframe/test/dataframe_simple.cxx
+++ b/tree/dataframe/test/dataframe_simple.cxx
@@ -26,7 +26,7 @@ using namespace ROOT::VecOps;
// Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially
class RDFSimpleTests : public ::testing::TestWithParam<bool> {
protected:
- RDFSimpleTests() : NSLOTS(GetParam() ? 4u : 1u)
+ RDFSimpleTests() : NSLOTS(GetParam() ? std::min(4u, std::thread::hardware_concurrency()) : 1u)
{
if (GetParam())
ROOT::EnableImplicitMT(NSLOTS);
diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx
index 3ce9254442..92444feff1 100644
--- a/tree/dataframe/test/dataframe_snapshot.cxx
+++ b/tree/dataframe/test/dataframe_snapshot.cxx
@@ -10,6 +10,7 @@
#include "gtest/gtest.h"
#include <limits>
#include <memory>
+#include <thread>
using namespace ROOT; // RDataFrame
using namespace ROOT::RDF; // RInterface
using namespace ROOT::VecOps; // RVec
@@ -1041,9 +1042,10 @@ TEST(RDFSnapshotMore, EmptyBuffersMT)
{
const auto fname = "emptybuffersmt.root";
const auto treename = "t";
- ROOT::EnableImplicitMT(4);
+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency());
+ ROOT::EnableImplicitMT(nslots);
ROOT::RDataFrame d(10);
- auto dd = d.DefineSlot("x", [](unsigned int s) { return s == 3 ? 0 : 1; })
+ auto dd = d.DefineSlot("x", [&](unsigned int s) { return s == nslots - 1 ? 0 : 1; })
.Filter([](int x) { return x == 0; }, {"x"}, "f");
auto r = dd.Report();
dd.Snapshot<int>(treename, fname, {"x"});
diff --git a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
index 5d5b2cbf42..963ce8a1b1 100644
--- a/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
+++ b/tree/treeplayer/test/treeprocmt/treeprocessormt.cxx
@@ -294,14 +294,27 @@ TEST(TreeProcessorMT, LimitNTasks_CheckEntries)
}
};
- ROOT::EnableImplicitMT(4);
+ const unsigned int nslots = std::min(4U, std::thread::hardware_concurrency());
+ ROOT::EnableImplicitMT(nslots);
ROOT::TTreeProcessorMT p(filename, treename);
p.Process(f);
- EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n";
- EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n";
- EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n";
+ if (nslots == 4) {
+ EXPECT_EQ(nTasks, 96U) << "Wrong number of tasks generated!\n";
+ EXPECT_EQ(nEntriesCountsMap[10], 65U) << "Wrong number of tasks with 10 clusters each!\n";
+ EXPECT_EQ(nEntriesCountsMap[11], 31U) << "Wrong number of tasks with 11 clusters each!\n";
+ }
+ else if (nslots == 2) {
+ EXPECT_EQ(nTasks, 48U) << "Wrong number of tasks generated!\n";
+ EXPECT_EQ(nEntriesCountsMap[20], 17U) << "Wrong number of tasks with 20 clusters each!\n";
+ EXPECT_EQ(nEntriesCountsMap[21], 31U) << "Wrong number of tasks with 21 clusters each!\n";
+ }
+ else if (nslots == 1) {
+ EXPECT_EQ(nTasks, 24U) << "Wrong number of tasks generated!\n";
+ EXPECT_EQ(nEntriesCountsMap[41], 17U) << "Wrong number of tasks with 41 clusters each!\n";
+ EXPECT_EQ(nEntriesCountsMap[42], 7U) << "Wrong number of tasks with 42 clusters each!\n";
+ }
gSystem->Unlink(filename);
ROOT::DisableImplicitMT();
--
2.30.2

View file

@ -0,0 +1,29 @@
From 5b8e969ca045aa238c685009e0aa48d74cbdbf22 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Fri, 13 Mar 2020 17:09:03 +0100
Subject: [PATCH 1/2] Fix ppc64le compilation with gcc 10
Reapply fix lost in the LLVM 9 upgrade. This fix is in LLVM 10.
Backported from llvm upstream
https://reviews.llvm.org/D74129
---
interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
index c8ed42d266..16bb00d2e9 100644
--- a/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
+++ b/interpreter/llvm/src/tools/clang/lib/Lex/Lexer.cpp
@@ -2546,7 +2546,7 @@ bool Lexer::SkipBlockComment(Token &Result, const char *CurPtr,
'/', '/', '/', '/', '/', '/', '/', '/'
};
while (CurPtr+16 <= BufferEnd &&
- !vec_any_eq(*(const vector unsigned char*)CurPtr, Slashes))
+ !vec_any_eq(*(const __vector unsigned char*)CurPtr, Slashes))
CurPtr += 16;
#else
// Scan for '/' quickly. Many block comments are very large.
--
2.30.2

View file

@ -0,0 +1,43 @@
From ddc155795baa9d4690717c204e54a7fd4600c688 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Mon, 17 Jan 2022 18:49:30 +0100
Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12
.../hist/hist/test/test_tprofile2poly.cxx:61: Failure
The difference between cont1 and cont2 is 1.4551915228366852e-11, which exceeds delta, where
cont1 evaluates to 54886.064319363642,
cont2 evaluates to 54886.064319363628, and
delta evaluates to 9.999999960041972e-12.
.../hist/hist/test/test_tprofile2poly.cxx:61: Failure
The difference between cont1 and cont2 is 1.4551915228366852e-11, where
cont1 evaluates to 109868.61342004745,
cont2 evaluates to 109868.61342004743.
The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead.
---
hist/hist/test/test_tprofile2poly.cxx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx
index 40cb3052a2..5150da0bea 100644
--- a/hist/hist/test/test_tprofile2poly.cxx
+++ b/hist/hist/test/test_tprofile2poly.cxx
@@ -58,14 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
for(Double_t x=0.5; x<10; x+=2.0) {
cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(x,y));
cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(x,y));
- ASSERT_NEAR(cont1, cont2, delta);
+ ASSERT_NEAR(cont1, cont2, 2*delta);
}
}
// test overflow
cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11));
cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11));
- ASSERT_NEAR(cont1, cont2, delta);
+ ASSERT_NEAR(cont1, cont2, 2*delta);
}
--
2.34.1

File diff suppressed because it is too large Load diff

View file

@ -1,32 +0,0 @@
From 7b1632f5602a1bb6e6278d66c25640349c852ab1 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

View file

@ -1,6 +0,0 @@
#!/bin/sh
VERSION=$1
wget -N https://root.cern/download/root_v${VERSION}.source.tar.gz
tar -z -x -f root_v${VERSION}.source.tar.gz
find root-${VERSION}/fonts -type f -a '!' -name 'STIX*' -exec rm {} ';'
tar -J -c --group root --owner root -f root-${VERSION}.tar.xz root-${VERSION}

36
root-jsmva-static.patch Normal file
View file

@ -0,0 +1,36 @@
diff -ur root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py
--- root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-08-11 09:06:21.894746090 +0200
@@ -188,7 +188,7 @@
## Class for creating the output scripts and inserting them to cell output
class JsDraw:
## Base repository
- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
+ __jsMVARepo = "/static/JsMVA"
## String containing the link to JavaScript files
__jsMVASourceDir = __jsMVARepo + "/js"
diff -ur root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py
--- root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-08-11 09:06:21.925746168 +0200
@@ -188,7 +188,7 @@
## Class for creating the output scripts and inserting them to cell output
class JsDraw:
## Base repository
- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
+ __jsMVARepo = "/static/JsMVA"
## String containing the link to JavaScript files
__jsMVASourceDir = __jsMVARepo + "/js"
diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js
--- root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js 2021-08-11 09:10:45.638410266 +0200
@@ -16,7 +16,7 @@
(function(factory){
- var JSROOT_source_dir = "https://root.cern.ch/js/notebook/scripts/";
+ var JSROOT_source_dir = "/static/scripts/";
var url = "";
if (requirejs.s.contexts.hasOwnProperty("_")) {

43
root-memory-usage.patch Normal file
View file

@ -0,0 +1,43 @@
From 21395b23947df7e2b5e0c93626453aeacdee026c Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 16 Jan 2018 10:25:50 +0100
Subject: [PATCH] Reduce the needed memory for compilation
The linking of rootcling_stage1 and libCling requires a lot of memory.
Since these are linked from mostly the same objects, the build is
ready to link them at the same time. If you make a parallel build this
means that the two targets that require the most amount of memory are
being linked in parallel. This exhausts the available memory, and the
computer starts swapping.
This commit adds a dependency of one of the targets to the other. The
dependency is not really there since it is not needed for building,
but it prevents the two memory consuming targets to be built in
parallel.
A similar dependency existed before the latest code changes (see
commit 2638f6fc7f54b0995f2f9d60363daaf8aae2386e), then between
rootcling and libCling.
---
core/metacling/src/CMakeLists.txt | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt
index 2923345f7c..b44a4d4115 100644
--- a/core/metacling/src/CMakeLists.txt
+++ b/core/metacling/src/CMakeLists.txt
@@ -114,6 +114,11 @@ ROOT_LINKER_LIBRARY(Cling
$<TARGET_OBJECTS:MetaCling>
LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS})
+# The dependency on rootcling_stage1 was added to prevent Cling (libCling) and
+# rootcling_stage1 from being linked in parallel.
+# This avoids doing two memory consuming operations in parallel.
+add_dependencies(Cling rootcling_stage1)
+
if(MSVC)
set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
set(cling_exports
--
2.26.2

View file

@ -1,53 +1,30 @@
From b4e57c8ccd59d69fe61fa5f6470b3a99ba52aeeb Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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 +-------
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)
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()
-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)
# 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/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()
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})
-# 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)
-
# 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)
# Install library
-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
- 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

215
root-old-gtest-compat.patch Normal file
View file

@ -0,0 +1,215 @@
diff -ur root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx root-6.24.02/hist/hist/test/test_THBinIterator.cxx
--- root-6.24.02.orig/hist/hist/test/test_THBinIterator.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/hist/hist/test/test_THBinIterator.cxx 2021-08-06 22:59:45.039518775 +0200
@@ -1,5 +1,10 @@
#include "gtest/gtest.h"
+#ifndef INSTANTIATE_TEST_SUITE_P
+#define SetUpTestSuite SetUpTestCase
+#define TearDownTestSuite TearDownTestCase
+#endif
+
// test iterating histogram bins and using the new THistRange and
// THBinIterator classes
diff -ur root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx root-6.24.02/math/mathcore/test/stress/testGenVector.cxx
--- root-6.24.02.orig/math/mathcore/test/stress/testGenVector.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/math/mathcore/test/stress/testGenVector.cxx 2021-08-06 09:31:38.795835283 +0200
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
+#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 -ur root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx
--- root-6.24.02.orig/math/mathcore/test/stress/testSMatrix.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/math/mathcore/test/stress/testSMatrix.cxx 2021-08-06 09:31:38.796835286 +0200
@@ -7,6 +7,16 @@
#include "TestHelper.h"
#include "gtest/gtest.h"
+#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 -ur root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx root-6.24.02/math/mathcore/test/stress/testVector34.cxx
--- root-6.24.02.orig/math/mathcore/test/stress/testVector34.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/math/mathcore/test/stress/testVector34.cxx 2021-08-06 09:31:38.796835286 +0200
@@ -4,6 +4,16 @@
#include "gtest/gtest.h"
+#ifndef TYPED_TEST_SUITE_P
+#define TYPED_TEST_SUITE_P TYPED_TEST_CASE_P
+#endif
+#ifndef REGISTER_TYPED_TEST_SUITE_P
+#define REGISTER_TYPED_TEST_SUITE_P REGISTER_TYPED_TEST_CASE_P
+#endif
+#ifndef INSTANTIATE_TYPED_TEST_SUITE_P
+#define INSTANTIATE_TYPED_TEST_SUITE_P INSTANTIATE_TYPED_TEST_CASE_P
+#endif
+
#include "StatFunction.h"
#include "VectorTest.h"
diff -ur root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx root-6.24.02/math/mathcore/test/stress/testVector.cxx
--- root-6.24.02.orig/math/mathcore/test/stress/testVector.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/math/mathcore/test/stress/testVector.cxx 2021-08-06 09:31:38.796835286 +0200
@@ -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 -ur root-6.24.02.orig/math/mathcore/test/testGradient.cxx root-6.24.02/math/mathcore/test/testGradient.cxx
--- root-6.24.02.orig/math/mathcore/test/testGradient.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/math/mathcore/test/testGradient.cxx 2021-08-06 09:31:38.796835286 +0200
@@ -22,6 +22,10 @@
#include "gtest/gtest.h"
+#ifndef TYPED_TEST_SUITE
+#define TYPED_TEST_SUITE TYPED_TEST_CASE
+#endif
+
#include <chrono>
#include <iostream>
#include <string>
diff -ur root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx root-6.24.02/math/mathcore/test/testGradientFitting.cxx
--- root-6.24.02.orig/math/mathcore/test/testGradientFitting.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/math/mathcore/test/testGradientFitting.cxx 2021-08-06 09:31:38.797835288 +0200
@@ -12,6 +12,16 @@
#include "gtest/gtest.h"
+#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 <iostream>
#include <string>
diff -ur root-6.24.02.orig/math/mathmore/test/testStress.cxx root-6.24.02/math/mathmore/test/testStress.cxx
--- root-6.24.02.orig/math/mathmore/test/testStress.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/math/mathmore/test/testStress.cxx 2021-08-06 09:31:38.797835288 +0200
@@ -26,6 +26,16 @@
#include "gtest/gtest.h"
+#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 -ur root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx
--- root-6.24.02.orig/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/roofit/roofitcore/test/testProxiesAndCategories.cxx 2021-08-06 09:31:38.798835290 +0200
@@ -16,6 +16,9 @@
#include "gtest/gtest.h"
+#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 -ur root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx
--- root-6.24.02.orig/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/dataframe_datablockcallback.cxx 2021-08-06 09:31:38.801835298 +0200
@@ -11,6 +11,10 @@
#include <gtest/gtest.h>
+#ifndef INSTANTIATE_TEST_SUITE_P
+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
+#endif
+
#include <algorithm> // std::min
#include <thread> // std::hardware_concurrency
diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx
--- root-6.24.02.orig/tree/dataframe/test/dataframe_merge_results.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/dataframe_merge_results.cxx 2021-08-06 09:31:38.802835300 +0200
@@ -308,7 +308,7 @@
EXPECT_FALSE(mh3);
EXPECT_FALSE(mh4);
EXPECT_FALSE(mh5);
- EXPECT_TRUE(mergedptr);
+ EXPECT_TRUE(!!mergedptr);
const auto &mh = mergedptr->GetValue();
diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx root-6.24.02/tree/dataframe/test/dataframe_regression.cxx
--- root-6.24.02.orig/tree/dataframe/test/dataframe_regression.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/dataframe_regression.cxx 2021-08-06 09:31:38.802835300 +0200
@@ -9,6 +9,10 @@
#include "gtest/gtest.h"
+#ifndef INSTANTIATE_TEST_SUITE_P
+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
+#endif
+
// Fixture for all tests in this file. If parameter is true, run with implicit MT, else run sequentially
class RDFRegressionTests : public ::testing::TestWithParam<bool> {
protected:
diff -ur root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx root-6.24.02/tree/dataframe/test/dataframe_simple.cxx
--- root-6.24.02.orig/tree/dataframe/test/dataframe_simple.cxx 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/tree/dataframe/test/dataframe_simple.cxx 2021-08-06 09:31:38.803835303 +0200
@@ -1,5 +1,10 @@
/****** Run RDataFrame tests both with and without IMT enabled *******/
#include <gtest/gtest.h>
+
+#ifndef INSTANTIATE_TEST_SUITE_P
+#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
+#endif
+
#include <ROOTUnitTestSupport.h>
#include <ROOT/RDataFrame.hxx>
#include <ROOT/TSeq.hxx>

46
root-older-python.patch Normal file
View file

@ -0,0 +1,46 @@
From 61116151cce8fe5b397555a65f7b55001b8e416b Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
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

36
root-ppc-codemodel.patch Normal file
View file

@ -0,0 +1,36 @@
From 774ab9358d852e2c004564183de4a60eaaa5ac98 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Fri, 23 Apr 2021 21:40:14 +0200
Subject: [PATCH 2/2] Actually request the use of the large code model for
ppc64/ppc64le
Instead of erroring out with an assert.
---
interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
index 46771aa8c0..93a48f31f3 100644
--- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
@@ -73,14 +73,14 @@ CreateHostTargetMachine(const clang::CompilerInstance& CI) {
JTMB->getOptions().EmulatedTLS = false;
#endif // _WIN32
- std::unique_ptr<TargetMachine> TM = cantFail(JTMB->createTargetMachine());
-
#if defined(__powerpc64__) || defined(__PPC64__)
// We have to use large code model for PowerPC64 because TOC and text sections
// can be more than 2GB apart.
- assert(TM->getCodeModel() >= CodeModel::Large);
+ JTMB->setCodeModel(CodeModel::Large);
#endif
+ std::unique_ptr<TargetMachine> TM = cantFail(JTMB->createTargetMachine());
+
// Forcefully disable GlobalISel, it might be enabled on AArch64 without
// optimizations. In tests on an Apple M1 after the upgrade to LLVM 9, this
// new instruction selection framework emits branches / calls that expect all
--
2.30.2

View file

@ -0,0 +1,49 @@
From 55ae047b70e927de5c84cfa5ad42905cbd58d499 Mon Sep 17 00:00:00 2001
From: Vassil Vassilev <v.g.vassilev@gmail.com>
Date: Sat, 4 Dec 2021 00:06:19 +0000
Subject: [PATCH] [llvm] Restore the ppc64le support that we lost in llvm8.
This patch is backported from https://reviews.llvm.org/D94183
For more discussion see https://github.com/numba/numba/issues/4026
Fixes root-project/root#8072 and root-project/root#9297
---
.../src/lib/Target/PowerPC/PPCISelLowering.cpp | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
index 24d50074860d..a922b40aa902 100644
--- a/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -4463,7 +4463,15 @@ callsShareTOCBase(const Function *Caller, SDValue Callee,
if (!G)
return false;
- const GlobalValue *GV = G->getGlobal();
+ const GlobalValue *GV = G->getGlobal();
+
+ // If the GV is not a strong definition then we need to assume it can be
+ // replaced by another function at link time. The function that replaces
+ // it may not share the same TOC as the caller since the callee may be
+ // replaced by a PC Relative version of the same function.
+ if (!GV->isStrongDefinitionForLinker())
+ return false;
+
// The medium and large code models are expected to provide a sufficiently
// large TOC to provide all data addressing needs of a module with a
// single TOC. Since each module will be addressed with a single TOC then we
@@ -4472,13 +4480,6 @@ callsShareTOCBase(const Function *Caller, SDValue Callee,
CodeModel::Large == TM.getCodeModel())
return TM.shouldAssumeDSOLocal(*Caller->getParent(), GV);
- // Otherwise we need to ensure callee and caller are in the same section,
- // since the linker may allocate multiple TOCs, and we don't know which
- // sections will belong to the same TOC base.
-
- if (!GV->isStrongDefinitionForLinker())
- return false;
-
// Any explicitly-specified sections and section prefixes must also match.
// Also, if we're using -ffunction-sections, then each function is always in
// a different section (the same is true for COMDAT functions).

View file

@ -0,0 +1,80 @@
From c65f3d96f3f4433bff9d40fa9cf1dec100867a07 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 8 Jun 2021 10:12:37 +0200
Subject: [PATCH] Fix 'this' pointer is null warnings
.../roofit/roofitcore/src/RooDataHist.cxx: In member function 'void RooDataHist::_adjustBinning(RooRealVar&, const TAxis&, RooRealVar*, Int_t*)':
.../roofit/roofitcore/src/RooDataHist.cxx:595:122: warning: 'this' pointer is null [-Wnonnull]
595 | coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ;
| ^~~~~~~~~~~~~~~
.../roofit/roofitcore/src/RooRealSumFunc.cxx: In constructor 'RooRealSumFunc::RooRealSumFunc(const char*, const char*, const RooArgList&, const RooArgList&)':
.../roofit/roofitcore/src/RooRealSumFunc.cxx:156:35: warning: 'this' pointer is null [-Wnonnull]
156 | << " is not of type RooAbsReal, fatal error" << endl;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx: In member function 'void TMVA::DNN::TDataLoader<AData, TMVA::DNN::TReference<AReal> >::CopyInput(TMatrixT<AReal>&, TMVA::DNN::IndexIterator_t) [with AData = std::tuple<const std::vector<TMVA::Event*, std::allocator<TMVA::Event*> >&, const TMVA::DataSetInfo&>; AReal = float]':
.../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:131:34: warning: 'this' pointer is null [-Wnonnull]
131 | Int_t n = event->GetNVariables();
| ~~~~~~~~~~~~~~~~~~~~^~
In file included from .../tmva/tmva/inc/TMVA/VariableTransformBase.h:48,
from .../tmva/tmva/inc/TMVA/Tools.h:58,
from .../tmva/tmva/inc/TMVA/DNN/GeneralLayer.h:36,
from .../tmva/tmva/inc/TMVA/DNN/CNN/ConvLayer.h:32,
from .../tmva/tmva/inc/TMVA/DNN/Architectures/Reference.h:24,
from .../tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx:17:
.../tmva/tmva/inc/TMVA/Event.h:88:16: note: in a call to non-static member function 'UInt_t TMVA::Event::GetNVariables() const'
88 | UInt_t GetNVariables() const;
| ^~~~~~~~~~~~~
---
roofit/roofitcore/src/RooDataHist.cxx | 2 +-
roofit/roofitcore/src/RooRealSumFunc.cxx | 4 ++--
tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/roofit/roofitcore/src/RooDataHist.cxx b/roofit/roofitcore/src/RooDataHist.cxx
index 84cf2c0f68..8dddb88e2b 100644
--- a/roofit/roofitcore/src/RooDataHist.cxx
+++ b/roofit/roofitcore/src/RooDataHist.cxx
@@ -591,7 +591,7 @@ void RooDataHist::importDHistSet(const RooArgList& /*vars*/, RooCategory& indexC
void RooDataHist::_adjustBinning(RooRealVar &theirVar, const TAxis &axis,
RooRealVar *ourVar, Int_t *offset)
{
- if (!dynamic_cast<RooRealVar*>(ourVar)) {
+ if (!dynamic_cast<RooRealVar*>(static_cast<RooAbsArg*>(ourVar))) {
coutE(InputArguments) << "RooDataHist::adjustBinning(" << GetName() << ") ERROR: dimension " << ourVar->GetName() << " must be real" << endl ;
assert(0) ;
}
diff --git a/roofit/roofitcore/src/RooRealSumFunc.cxx b/roofit/roofitcore/src/RooRealSumFunc.cxx
index 3f78020acd..a1625d7e35 100644
--- a/roofit/roofitcore/src/RooRealSumFunc.cxx
+++ b/roofit/roofitcore/src/RooRealSumFunc.cxx
@@ -149,10 +149,10 @@ RooRealSumFunc::RooRealSumFunc(const char *name, const char *title, const RooArg
_coefList.add(*coef);
}
- func = (RooAbsReal *)funcIter->Next();
+ func = (RooAbsArg *)funcIter->Next();
if (func) {
if (!dynamic_cast<RooAbsReal *>(func)) {
- coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << coef->GetName()
+ coutE(InputArguments) << "RooRealSumFunc::RooRealSumFunc(" << GetName() << ") last func " << func->GetName()
<< " is not of type RooAbsReal, fatal error" << endl;
assert(0);
}
diff --git a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
index 2465abf308..24a09d1fc0 100644
--- a/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
+++ b/tmva/tmva/src/DNN/Architectures/Reference/DataLoader.cxx
@@ -128,7 +128,7 @@ void TDataLoader<TMVAInput_t, TReference<Real_t>>::CopyInput(TMatrixT<Real_t> &m
Event *event = nullptr;
Int_t m = matrix.GetNrows();
- Int_t n = event->GetNVariables();
+ Int_t n = matrix.GetNcols();
// Copy input variables.
--
2.31.1

View file

@ -0,0 +1,32 @@
From 1ca221f010fdcfb6249ae7b1cac77fbe29b86214 Mon Sep 17 00:00:00 2001
From: Enrico Guiraud <enrico.guiraud@cern.ch>
Date: Mon, 7 Jun 2021 11:02:48 +0200
Subject: [PATCH] [io] Avoid nullptr deref when printing warning in
TStreamerInfo
---
io/io/src/TStreamerInfo.cxx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx
index d545ab7be8..a026635890 100644
--- a/io/io/src/TStreamerInfo.cxx
+++ b/io/io/src/TStreamerInfo.cxx
@@ -1109,12 +1109,12 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */)
fClassVersion, GetName(), GetName(), GetName(), fClassVersion);
} else {
Warning("BuildCheck", "\n\
- The StreamerInfo from %s does not match existing one (%s:%d)\n\
+ The StreamerInfo does not match existing one (%s:%d)\n\
The existing one has not been used yet and will be discarded.\n\
Reading should work properly, however writing object of\n\
type %s will not work properly. Most likely the version number\n\
of the class was not properly updated [See ClassDef(%s,%d)].",
- file->GetName(), GetName(), fClassVersion, GetName(), GetName(), fClassVersion);
+ GetName(), fClassVersion, GetName(), GetName(), fClassVersion);
}
}
}
--
2.31.1

39
root-stress-s390x.patch Normal file
View file

@ -0,0 +1,39 @@
From 30cbc0d44364586ac64a3ac0fd6641e338549bbe Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 10 Aug 2021 06:33:17 +0200
Subject: [PATCH] Adjust tests for s390x
---
math/mathcore/test/stress/testGenVector.cxx | 2 +-
test/stressMathCore.cxx | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/math/mathcore/test/stress/testGenVector.cxx b/math/mathcore/test/stress/testGenVector.cxx
index 8da429c395..df9061c88e 100644
--- a/math/mathcore/test/stress/testGenVector.cxx
+++ b/math/mathcore/test/stress/testGenVector.cxx
@@ -79,7 +79,7 @@ TYPED_TEST_P(GenVectorTest, TestGenVectors)
scale = this->fDim * 20;
if (this->fDim == 3 && this->V2Name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi
if (this->fDim == 4 && ( this->V2Name() == "PtEtaPhiMVector" || this->V2Name() == "PxPyPzMVector")) {
-#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__))
+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__))
scale *= 1.E7;
#else
scale *= 10;
diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx
index 4d4695a8a0..b6d2d2c9e7 100644
--- a/test/stressMathCore.cxx
+++ b/test/stressMathCore.cxx
@@ -1120,7 +1120,7 @@ int testVector(int ngen, bool testio=false) {
scale = Dim*20;
if (Dim==3 && VecType<V2>::name() == "RhoEtaPhiVector") scale *= 12; // for problem with RhoEtaPhi
if (Dim==4 && ( VecType<V2>::name() == "PtEtaPhiMVector" || VecType<V2>::name() == "PxPyPzMVector")) {
-#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__))
+#if (defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(__s390x__))
scale *= 1.E7;
#else
scale *= 10;
--
2.31.1

31
root-symbol-rewrite.patch Normal file
View file

@ -0,0 +1,31 @@
From f99eedeb72644671cd584f48e4c136d47f6b0020 Mon Sep 17 00:00:00 2001
From: Fangrui Song <maskray@google.com>
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

View file

@ -72,7 +72,14 @@ 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

111
root-unbundle-gtest.patch Normal file
View file

@ -0,0 +1,111 @@
diff -ur root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake
--- root-6.24.02.orig/cmake/modules/SearchInstalledSoftware.cmake 2021-06-28 11:17:14.000000000 +0200
+++ root-6.24.02/cmake/modules/SearchInstalledSoftware.cmake 2021-08-11 10:56:26.680731609 +0200
@@ -1699,102 +1699,17 @@
#---Download googletest--------------------------------------------------------------
if (testing)
- # FIXME: Remove our version of gtest in roottest. We can reuse this one.
- # Add googletest
- # http://stackoverflow.com/questions/9689183/cmake-googletest
+ # Workaround for missing libraries in Fedora's gmock packaging < 1.8.0
+ if(EXISTS ${CMAKE_SOURCE_DIR}/googlemock)
+ set(_G_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/googlemock)
- set(_gtest_byproduct_binary_dir
- ${CMAKE_CURRENT_BINARY_DIR}/googletest-prefix/src/googletest-build)
- set(_gtest_byproducts
- ${_gtest_byproduct_binary_dir}/lib/libgtest.a
- ${_gtest_byproduct_binary_dir}/lib/libgtest_main.a
- ${_gtest_byproduct_binary_dir}/lib/libgmock.a
- ${_gtest_byproduct_binary_dir}/lib/libgmock_main.a
- )
-
- if(MSVC)
- set(EXTRA_GTEST_OPTS
- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${_gtest_byproduct_binary_dir}/lib/
- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH=${_gtest_byproduct_binary_dir}/lib/
- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${_gtest_byproduct_binary_dir}/lib/
- -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH=${_gtest_byproduct_binary_dir}/lib/
- -Dgtest_force_shared_crt=ON
- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config Release)
- endif()
- if(APPLE)
- set(EXTRA_GTEST_OPTS
- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT})
- endif()
-
- ExternalProject_Add(
- googletest
- GIT_REPOSITORY https://github.com/google/googletest.git
- GIT_SHALLOW 1
- GIT_TAG release-1.10.0
- UPDATE_COMMAND ""
- # TIMEOUT 10
- # # Force separate output paths for debug and release builds to allow easy
- # # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
- # CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
- # -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
- # -Dgtest_force_shared_crt=ON
- CMAKE_ARGS -G ${CMAKE_GENERATOR}
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- -DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS}
- -DCMAKE_AR=${CMAKE_AR}
- -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
- ${EXTRA_GTEST_OPTS}
- # Disable install step
- INSTALL_COMMAND ""
- BUILD_BYPRODUCTS ${_gtest_byproducts}
- # Wrap download, configure and build steps in a script to log output
- LOG_DOWNLOAD ON
- LOG_CONFIGURE ON
- LOG_BUILD ON
- TIMEOUT 600
- )
-
- # Specify include dirs for gtest and gmock
- ExternalProject_Get_Property(googletest source_dir)
- set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include)
- set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include)
- # Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052
- file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR})
-
- # Libraries
- ExternalProject_Get_Property(googletest binary_dir)
- set(_G_LIBRARY_PATH ${binary_dir}/lib/)
-
- # Use gmock_main instead of gtest_main because it initializes gtest as well.
- # Note: The libraries are listed in reverse order of their dependancies.
- foreach(lib gtest gtest_main gmock gmock_main)
+ foreach(lib gmock gmock_main)
add_library(${lib} IMPORTED STATIC GLOBAL)
- set_target_properties(${lib} PROPERTIES
- IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}"
- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
- )
- add_dependencies(${lib} googletest)
- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND
- ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 9)
- target_compile_options(${lib} INTERFACE -Wno-deprecated-copy)
- endif()
endforeach()
- # Once we require at least cmake 3.11, target_include_directories will work for imported targets
- # Because of https://gitlab.kitware.com/cmake/cmake/-/merge_requests/1264
- # We need this workaround:
- SET_PROPERTY(TARGET gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR})
- SET_PROPERTY(TARGET gmock APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR})
- #target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIR})
- #target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIR})
-
- set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX})
- set_property(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX})
set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX})
set_property(TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX})
+ endif()
endif()
#------------------------------------------------------------------------------------

55
root-uring.patch Normal file
View file

@ -0,0 +1,55 @@
diff --git a/io/io/src/RRawFileUnix.cxx b/io/io/src/RRawFileUnix.cxx
index 829c5e4cb6..417c3adf30 100644
--- a/io/io/src/RRawFileUnix.cxx
+++ b/io/io/src/RRawFileUnix.cxx
@@ -115,26 +115,33 @@ void ROOT::Internal::RRawFileUnix::OpenImpl()
void ROOT::Internal::RRawFileUnix::ReadVImpl(RIOVec *ioVec, unsigned int nReq)
{
#ifdef R__HAS_URING
- if (RIoUring::IsAvailable()) {
- RIoUring ring;
- std::vector<RIoUring::RReadEvent> reads;
- reads.reserve(nReq);
- for (std::size_t i = 0; i < nReq; ++i) {
- RIoUring::RReadEvent ev;
- ev.fBuffer = ioVec[i].fBuffer;
- ev.fOffset = ioVec[i].fOffset;
- ev.fSize = ioVec[i].fSize;
- ev.fFileDes = fFileDes;
- reads.push_back(ev);
+ thread_local bool uring_failed = false;
+ if (!uring_failed) {
+ try {
+ RIoUring ring; // throws std::runtime_error
+ std::vector<RIoUring::RReadEvent> reads;
+ reads.reserve(nReq);
+ for (std::size_t i = 0; i < nReq; ++i) {
+ RIoUring::RReadEvent ev;
+ ev.fBuffer = ioVec[i].fBuffer;
+ ev.fOffset = ioVec[i].fOffset;
+ ev.fSize = ioVec[i].fSize;
+ ev.fFileDes = fFileDes;
+ reads.push_back(ev);
+ }
+ ring.SubmitReadsAndWait(reads.data(), nReq);
+ for (std::size_t i = 0; i < nReq; ++i) {
+ ioVec[i].fOutBytes = reads.at(i).fOutBytes;
+ }
+ return;
}
- ring.SubmitReadsAndWait(reads.data(), nReq);
- for (std::size_t i = 0; i < nReq; ++i) {
- ioVec[i].fOutBytes = reads.at(i).fOutBytes;
+ catch(const std::runtime_error &e) {
+ Warning("RIoUring", "io_uring is unexpectedly not available because:\n%s", e.what());
+ Warning("RRawFileUnix",
+ "io_uring setup failed, falling back to blocking I/O in ReadV");
+ uring_failed = true;
}
- return;
}
- Warning("RRawFileUnix",
- "io_uring setup failed, falling back to default ReadV implementation");
#endif
RRawFile::ReadVImpl(ioVec, nReq);
}

View file

@ -1,135 +0,0 @@
From 44c501ac9fdb9049783d9738a9603eec572f52f0 Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
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<int>` 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<int> fixed_vreg1{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3};
- RVec<int> fixed_vreg2{4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6};
- RVec<int> 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<int>::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<int> fixed_vreg1(nElems);
+ RVec<int> fixed_vreg2(nElems);
+ RVec<int> fixed_vreg3(nElems + 1);
RVec<int> fixed_vmocksmall{0, 7};
- RVec<int> vreg1{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3};
- RVec<int> vreg2{4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6};
- RVec<int> vreg3{7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7};
- RVec<int> vmocksmall{0, 7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 7, 8, 9, 7, 8, 9};
+ RVec<int> vreg1(nElems);
+ RVec<int> vreg2(nElems);
+ RVec<int> vreg3(nElems + 1);
+ RVec<int> 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<int>::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<int> fixed_vsmall{1, 2, 3};
RVec<int> fixed_vreg1{4, 5, 6};
RVec<int> fixed_vreg2{7, 8};
RVec<int> fixed_vreg3{9, 10, 11, 12, 13, 14};
- RVec<int> fixed_vreg4{15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30};
+ RVec<int> 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<int> vsmall7{1, 2, 3};
RVec<int> vsmall8{1, 2, 3};
- RVec<int> 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<int> vreg10{4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6};
+ RVec<int> vreg1;
+ RVec<int> vreg10;
+ RVec<int> vreg2{7, 8};
+ RVec<int> vreg20{7, 8};
+ RVec<int> vreg3{9, 10, 11, 12, 13, 14};
+ RVec<int> vreg30{9, 10, 11, 12, 13, 14};
+ RVec<int> 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<int> 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<int> 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<int> 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<int> 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<int> 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

3013
root.spec

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,2 @@
SHA512 (root-6.38.00.tar.xz) = 7c452b509e8171a0cbb7c102a3d4c07333fc8535f1b2c2ab0b9f7434604f098989a78bb71c41039dd41dbbd3438ea8703939826092f075d9d730b6b53c84ac55
SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670
SHA512 (clad-2.2.tar.gz) = 6f76d706a829901fc0fcdb38b5ddad6ea8ad9186ea48a4b6b585fc62974a2cda11b96a448c25daaba0586962d6428773e7ab751236c6afa72a91d12f30f2d05e
SHA512 (root-6.24.06.tar.xz) = fe316283503dae60acb26d2ae3e838e6f9c01e1f89ff9973aa2b666a30c00f99f5e0df02b54e3744cd14a45a49ca2fc7d1f19fbac6b69071b9c9e0c98f2e0645
SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f