Compare commits
59 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8626580cf | ||
|
|
27b349be2a | ||
|
|
732511f3a6 | ||
|
|
64acc88ed1 | ||
|
|
bdcedb0537 | ||
|
|
bbcab50659 | ||
|
|
32ec236e95 |
||
|
|
f287293ea9 | ||
|
|
84f092c91d | ||
|
|
da1ca8ff8f | ||
|
|
66c113fcb0 | ||
|
|
18473dc6e6 | ||
|
|
895043f78c | ||
|
|
c3014d3347 | ||
|
|
cb90d9590d | ||
|
|
3d242ce025 | ||
|
|
146af48801 | ||
|
|
e4856607de | ||
|
|
f25bdb0931 | ||
|
|
e076764de0 | ||
|
|
3a74b8b610 | ||
|
|
2726b64fa0 | ||
|
|
0afdff9fae | ||
|
|
6edd65804f | ||
|
|
5a76613429 | ||
|
|
593e746266 | ||
|
|
ab1aa62b45 | ||
|
|
aaf51a11c7 | ||
|
|
920e7b2575 | ||
|
|
fe8a030c52 | ||
|
|
450c67721a | ||
|
|
40be88f67c | ||
|
|
71b6707207 | ||
|
|
b1bbc0fadf | ||
|
|
02870ffba1 |
||
|
|
3487b3a060 | ||
|
|
2ad57ba760 | ||
|
|
745e82c601 | ||
|
|
8d9fc44478 | ||
|
|
75f062bccd | ||
|
|
cac5562c15 | ||
|
|
6b314d2ebb | ||
|
|
5498e74caf | ||
|
|
59f38a443a | ||
|
|
1617973423 | ||
|
|
dafa5d9be6 | ||
|
|
c960d44c7d | ||
|
|
8bc319c318 | ||
|
|
82f076284e | ||
|
|
c1e2a7a6b3 | ||
|
|
ea27f7093b | ||
|
|
4946c86aea | ||
|
|
48045b2bdf | ||
|
|
559fe2b850 | ||
|
|
95f73fc33a | ||
|
|
4d9bac3891 | ||
|
|
0f2b684662 | ||
|
|
518c033b52 | ||
|
|
fbaff99ab6 |
31 changed files with 2231 additions and 3035 deletions
|
|
@ -1,7 +1,7 @@
|
|||
From 70d941cd6ebbc3726e08ef7f52d0135453f0b840 Mon Sep 17 00:00:00 2001
|
||||
From 55446dcd6eabc1fff218f266c11f31697fe99f09 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Fri, 13 Mar 2020 16:21:55 +0100
|
||||
Subject: [PATCH 2/3] Run tests on 32 bit
|
||||
Subject: [PATCH] Run tests on 32 bit
|
||||
|
||||
---
|
||||
test/stressGeometry.cxx | 8 --------
|
||||
|
|
@ -9,7 +9,7 @@ Subject: [PATCH 2/3] Run tests on 32 bit
|
|||
2 files changed, 3 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/test/stressGeometry.cxx b/test/stressGeometry.cxx
|
||||
index 5e81f5f2ca..18e41a6f45 100644
|
||||
index f8d78f4f54..617b9e1644 100644
|
||||
--- a/test/stressGeometry.cxx
|
||||
+++ b/test/stressGeometry.cxx
|
||||
@@ -257,14 +257,6 @@ void stressGeometry(const char *exp="*", Bool_t generate_ref=kFALSE, Bool_t vecg
|
||||
|
|
@ -28,26 +28,26 @@ index 5e81f5f2ca..18e41a6f45 100644
|
|||
TString fname;
|
||||
for (i=0; i<NG; i++) {
|
||||
diff --git a/tree/tree/test/CMakeLists.txt b/tree/tree/test/CMakeLists.txt
|
||||
index 0c1a39d01e..3bafe47934 100644
|
||||
index 5bb222edc5..f29a17801d 100644
|
||||
--- a/tree/tree/test/CMakeLists.txt
|
||||
+++ b/tree/tree/test/CMakeLists.txt
|
||||
@@ -12,13 +12,9 @@ ROOT_ADD_GTEST(testTOffsetGeneration TOffsetGeneration.cxx ElementStruct.cxx Ele
|
||||
@@ -17,13 +17,9 @@ endif()
|
||||
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)
|
||||
- ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
|
||||
- ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
|
||||
- ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
|
||||
-endif()
|
||||
+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer)
|
||||
+ROOT_ADD_GTEST(testBulkApiMultiple BulkApiMultiple.cxx LIBRARIES RIO Tree TreePlayer TIMEOUT 3000)
|
||||
+ROOT_ADD_GTEST(testBulkApiVarLength BulkApiVarLength.cxx LIBRARIES RIO Tree TreePlayer)
|
||||
+ROOT_ADD_GTEST(testBulkApiSillyStruct BulkApiSillyStruct.cxx LIBRARIES RIO Tree TreePlayer SillyStruct)
|
||||
ROOT_ADD_GTEST(testTBasket TBasket.cxx LIBRARIES RIO Tree)
|
||||
ROOT_ADD_GTEST(testTBranch TBranch.cxx LIBRARIES RIO Tree MathCore)
|
||||
ROOT_ADD_GTEST(testTIOFeatures TIOFeatures.cxx LIBRARIES RIO Tree)
|
||||
--
|
||||
2.24.1
|
||||
2.45.1
|
||||
|
||||
|
|
|
|||
49
root-Adjust-test-stressGraphics.ref.patch
Normal file
49
root-Adjust-test-stressGraphics.ref.patch
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
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
|
||||
|
||||
32
root-Fix-a-numpy-test-for-32-bit-archs.patch
Normal file
32
root-Fix-a-numpy-test-for-32-bit-archs.patch
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
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
|
||||
|
||||
63
root-Geom-Add-missing-includes-of-TMath.h.patch
Normal file
63
root-Geom-Add-missing-includes-of-TMath.h.patch
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
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
|
||||
|
||||
70
root-PyROOT-Don-t-install-the-python-modules-twice.patch
Normal file
70
root-PyROOT-Don-t-install-the-python-modules-twice.patch
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
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
|
||||
|
||||
82
root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch
Normal file
82
root-Python-Fix-TF1-Pythonization-test-for-NumPy-2.4.0.patch
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
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
|
||||
|
||||
50
root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch
Normal file
50
root-RF-Use-TRandom3-in-test-RooFuncWrapper.patch
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
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 ¶meters)
|
||||
{
|
||||
+ 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
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
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
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
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
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
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
|
||||
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
From 51b84e7bc21f8729de8d3e8f9ff08b337af33b78 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Fri, 17 Nov 2023 17:15:15 +0100
|
||||
Subject: [PATCH] Avoid out of memory during linking regardless of build type
|
||||
|
||||
---
|
||||
core/metacling/src/CMakeLists.txt | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt
|
||||
index e750480eb3..dd50793d29 100644
|
||||
--- a/core/metacling/src/CMakeLists.txt
|
||||
+++ b/core/metacling/src/CMakeLists.txt
|
||||
@@ -111,11 +111,8 @@ ROOT_LINKER_LIBRARY(Cling
|
||||
$<TARGET_OBJECTS:MetaCling>
|
||||
LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS} ${CLING_PLUGIN_LINK_LIBS})
|
||||
|
||||
-string(TOUPPER "${LLVM_BUILD_TYPE}" THE_BUILD_TYPE)
|
||||
-if("${THE_BUILD_TYPE}" STREQUAL DEBUG OR "${THE_BUILD_TYPE}" STREQUAL RELWITHDEBINFO)
|
||||
- # When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm.
|
||||
- add_dependencies(Cling rootcling_stage1)
|
||||
-endif()
|
||||
+# When these two link at the same time, they can exhaust the RAM on many machines, since they both link against llvm.
|
||||
+add_dependencies(Cling rootcling_stage1)
|
||||
|
||||
if(MSVC)
|
||||
set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
From b32c7a1b080cb5d14f242070bf906ea6929d604d Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Fri, 25 Mar 2022 11:13:12 +0100
|
||||
Subject: [PATCH] Byte swap values read from the protobuf raw data stream on
|
||||
big endian
|
||||
|
||||
---
|
||||
tmva/sofie_parsers/src/RModelParser_ONNX.cxx | 23 +++++++++++++++-----
|
||||
1 file changed, 17 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
|
||||
index ab457dcddc..d701fb3299 100644
|
||||
--- a/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
|
||||
+++ b/tmva/sofie_parsers/src/RModelParser_ONNX.cxx
|
||||
@@ -1,3 +1,4 @@
|
||||
+#include "Byteswap.h"
|
||||
#include "TMVA/RModelParser_ONNX.hxx"
|
||||
#include "onnx_proto3.pb.h"
|
||||
|
||||
@@ -335,9 +336,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose)
|
||||
case ETensorType::FLOAT: {
|
||||
std::shared_ptr<void> data(malloc(fLength * sizeof(float)), free);
|
||||
|
||||
- if (tensorproto->raw_data().empty() == false) {
|
||||
- auto raw_data_ptr = reinterpret_cast<float *>(const_cast<char *>(tensorproto->raw_data().c_str()));
|
||||
- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(float));
|
||||
+ if (!tensorproto->raw_data().empty()) {
|
||||
+#ifdef R__BYTESWAP
|
||||
+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(float));
|
||||
+#else
|
||||
+ for (std::size_t k = 0; k < fLength; ++k)
|
||||
+ (reinterpret_cast<uint32_t *>(data.get()))[k] =
|
||||
+ Rbswap_32((reinterpret_cast<const uint32_t *>(tensorproto->raw_data().c_str()))[k]);
|
||||
+#endif
|
||||
} else {
|
||||
tensorproto->mutable_float_data()->ExtractSubrange(0, tensorproto->float_data_size(),
|
||||
static_cast<float *>(data.get()));
|
||||
@@ -350,9 +356,14 @@ RModel RModelParser_ONNX::Parse(std::string filename, bool verbose)
|
||||
case ETensorType::INT64: {
|
||||
std::shared_ptr<void> data(malloc(fLength * sizeof(int64_t)), free);
|
||||
|
||||
- if (tensorproto->raw_data().empty() == false) {
|
||||
- auto raw_data_ptr = reinterpret_cast<int64_t *>(const_cast<char *>(tensorproto->raw_data().c_str()));
|
||||
- std::memcpy(data.get(), raw_data_ptr, fLength * sizeof(int64_t));
|
||||
+ if (!tensorproto->raw_data().empty()) {
|
||||
+#ifdef R__BYTESWAP
|
||||
+ std::memcpy(data.get(), tensorproto->raw_data().c_str(), fLength * sizeof(int64_t));
|
||||
+#else
|
||||
+ for (std::size_t k = 0; k < fLength; ++k)
|
||||
+ (reinterpret_cast<uint64_t *>(data.get()))[k] =
|
||||
+ Rbswap_64((reinterpret_cast<const uint64_t *>(tensorproto->raw_data().c_str()))[k]);
|
||||
+#endif
|
||||
} else {
|
||||
tensorproto->mutable_int64_data()->ExtractSubrange(0, tensorproto->int64_data_size(),
|
||||
static_cast<int64_t *>(data.get()));
|
||||
--
|
||||
2.39.2
|
||||
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From fae9b92742c5e991ad33769d1357a721838e93f9 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Fri, 17 Nov 2023 11:37:23 +0100
|
||||
Subject: [PATCH 1/3] Add fit/exampleFit3D.C to clad veto
|
||||
|
||||
---
|
||||
tutorials/CMakeLists.txt | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt
|
||||
index 5cba95407b..81f6539f03 100644
|
||||
--- a/tutorials/CMakeLists.txt
|
||||
+++ b/tutorials/CMakeLists.txt
|
||||
@@ -74,7 +74,8 @@ if(NOT ROOT_minuit2_FOUND)
|
||||
#---Tutorials disabled depending on the build components-------------
|
||||
|
||||
if(NOT clad)
|
||||
- set(clad_veto fit/minuit2GausFit.C)
|
||||
+ set(clad_veto fit/minuit2GausFit.C
|
||||
+ fit/exampleFit3D.C)
|
||||
endif()
|
||||
|
||||
# RBatchGenerator tutorials need Python 3.8+.
|
||||
--
|
||||
2.42.0
|
||||
|
||||
109
root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch
Normal file
109
root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
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
|
||||
|
||||
46
root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch
Normal file
46
root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
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
|
||||
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From 15f50c71b4d89bfbf06ce817dee38e843f0f55cd Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Mon, 17 Jan 2022 23:50:47 +0100
|
||||
Subject: [PATCH] Fix test failure on ppc64le and aarch64 with gcc 12
|
||||
|
||||
.../hist/hist/test/test_tprofile2poly.cxx:61: Failure
|
||||
The difference between cont1 and cont2 is 1.4551915228366852e-11, which exceeds delta, where
|
||||
cont1 evaluates to 54886.064319363642,
|
||||
cont2 evaluates to 54886.064319363628, and
|
||||
delta evaluates to 9.999999960041972e-12.
|
||||
.../hist/hist/test/test_tprofile2poly.cxx:61: Failure
|
||||
The difference between cont1 and cont2 is 1.4551915228366852e-11, where
|
||||
cont1 evaluates to 109868.61342004745,
|
||||
cont2 evaluates to 109868.61342004743.
|
||||
The abs_error parameter delta evaluates to 9.999999960041972e-12 which is smaller than the minimum distance between doubles for numbers of this magnitude which is 1.4551915228366852e-11, thus making this EXPECT_NEAR check equivalent to EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead.
|
||||
---
|
||||
hist/hist/test/test_tprofile2poly.cxx | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/hist/hist/test/test_tprofile2poly.cxx b/hist/hist/test/test_tprofile2poly.cxx
|
||||
index 40cb3052a2..ecf559a4b3 100644
|
||||
--- a/hist/hist/test/test_tprofile2poly.cxx
|
||||
+++ b/hist/hist/test/test_tprofile2poly.cxx
|
||||
@@ -58,15 +58,14 @@ void binEntriesCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
|
||||
for(Double_t x=0.5; x<10; x+=2.0) {
|
||||
cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(x,y));
|
||||
cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(x,y));
|
||||
- ASSERT_NEAR(cont1, cont2, delta);
|
||||
+ ASSERT_NEAR(cont1, cont2, 2 * delta);
|
||||
}
|
||||
|
||||
}
|
||||
// test overflow
|
||||
cont1 = tp2d->GetBinEffectiveEntries(tp2d->FindBin(11,11));
|
||||
cont2 = tpp->GetBinEffectiveEntries(tpp->FindBin(11,11));
|
||||
- ASSERT_NEAR(cont1, cont2, delta);
|
||||
-
|
||||
+ ASSERT_NEAR(cont1, cont2, 2 * delta);
|
||||
}
|
||||
|
||||
void binErrorCompare(TProfile2D* tp2d, TProfile2Poly* tpp) {
|
||||
--
|
||||
2.39.2
|
||||
|
||||
File diff suppressed because it is too large
Load diff
32
root-gcc-16-libstdc-links-to-libatomic.patch
Normal file
32
root-gcc-16-libstdc-links-to-libatomic.patch
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
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
|
||||
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From 1942f5569b1d101f2c89341765ea37850e3de669 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Fri, 17 Nov 2023 11:43:46 +0100
|
||||
Subject: [PATCH 2/3] Add old gtest compat for SetUpTestSuite/TearDownTestSuite
|
||||
|
||||
---
|
||||
tree/tree/test/friendinfo.cxx | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/tree/tree/test/friendinfo.cxx b/tree/tree/test/friendinfo.cxx
|
||||
index 141a495052..6e94056946 100644
|
||||
--- a/tree/tree/test/friendinfo.cxx
|
||||
+++ b/tree/tree/test/friendinfo.cxx
|
||||
@@ -14,6 +14,8 @@
|
||||
// Backward compatibility for gtest version < 1.10.0
|
||||
#ifndef INSTANTIATE_TEST_SUITE_P
|
||||
#define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
|
||||
+#define SetUpTestSuite SetUpTestCase
|
||||
+#define TearDownTestSuite TearDownTestCase
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
From ba0dc65e558fd916dbe18f8dbe8208a3be932c25 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Mon, 28 Mar 2022 09:20:18 +0200
|
||||
Subject: [PATCH] Ignore warnings about RooNaNPacker not being implemented for
|
||||
big endian
|
||||
|
||||
This warning is triggered in many tests, so it makes sense to put it
|
||||
in the default ignored set.
|
||||
---
|
||||
core/testsupport/src/TestSupport.cxx | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx
|
||||
index 259ab4e09c..79cd476950 100644
|
||||
--- a/core/testsupport/src/TestSupport.cxx
|
||||
+++ b/core/testsupport/src/TestSupport.cxx
|
||||
@@ -73,6 +73,13 @@ static struct ForbidDiagnostics {
|
||||
return;
|
||||
}
|
||||
|
||||
+ // FIXME: RooNaNPacker warns about not being implemented for big endian
|
||||
+ if (level == kWarning
|
||||
+ && strcmp(msg, "Fast recovery from undefined function values only implemented for little-endian machines. If necessary, request an extension of functionality on https://root.cern") == 0) {
|
||||
+ std::cerr << "Warning in " << location << " " << msg << std::endl;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
FAIL() << "Received unexpected diagnostic of severity "
|
||||
<< level
|
||||
<< " at '" << location << "' reading '" << msg << "'.\n"
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
diff -ur root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py
|
||||
--- root-6.24.02.orig/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
|
||||
+++ root-6.24.02/bindings/jsmva/python/JsMVA/JPyInterface.py 2021-08-11 09:06:21.894746090 +0200
|
||||
@@ -188,7 +188,7 @@
|
||||
## Class for creating the output scripts and inserting them to cell output
|
||||
class JsDraw:
|
||||
## Base repository
|
||||
- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
|
||||
+ __jsMVARepo = "/static/JsMVA"
|
||||
|
||||
## String containing the link to JavaScript files
|
||||
__jsMVASourceDir = __jsMVARepo + "/js"
|
||||
diff -ur root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py
|
||||
--- root-6.24.02.orig/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-06-28 11:17:14.000000000 +0200
|
||||
+++ root-6.24.02/bindings/pyroot_legacy/JsMVA/JPyInterface.py 2021-08-11 09:06:21.925746168 +0200
|
||||
@@ -188,7 +188,7 @@
|
||||
## Class for creating the output scripts and inserting them to cell output
|
||||
class JsDraw:
|
||||
## Base repository
|
||||
- __jsMVARepo = "https://root.cern.ch/js/jsmva/latest"
|
||||
+ __jsMVARepo = "/static/JsMVA"
|
||||
|
||||
## String containing the link to JavaScript files
|
||||
__jsMVASourceDir = __jsMVARepo + "/js"
|
||||
diff -ur root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js
|
||||
--- root-6.24.02.orig/etc/notebook/JsMVA/js/JsMVA.js 2021-06-28 11:17:14.000000000 +0200
|
||||
+++ root-6.24.02/etc/notebook/JsMVA/js/JsMVA.js 2021-08-11 09:10:45.638410266 +0200
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
(function(factory){
|
||||
|
||||
- var JSROOT_source_dir = "https://root.cern/js/5.9.1/scripts/";
|
||||
+ var JSROOT_source_dir = "/static/scripts/";
|
||||
|
||||
var url = "";
|
||||
if (requirejs.s.contexts.hasOwnProperty("_")) {
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
From 260fc202a1387cfc3f3ef756f584923ab5b0a198 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Thu, 21 Dec 2023 17:58:49 +0100
|
||||
Subject: [PATCH] Adapt tests to work with zlib-ng
|
||||
|
||||
Fedora 40 has replaced zlib with a zlib compatible version of zlib-ng
|
||||
---
|
||||
test/stress.cxx | 2 +-
|
||||
test/stressGraphics.ref | 28 ++++++++++++++--------------
|
||||
2 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/test/stress.cxx b/test/stress.cxx
|
||||
index de8061a9fc..77f48d43b8 100644
|
||||
--- a/test/stress.cxx
|
||||
+++ b/test/stress.cxx
|
||||
@@ -406,7 +406,7 @@ void stress3()
|
||||
#else
|
||||
constexpr Long64_t lastgood = 52090;
|
||||
#endif
|
||||
- constexpr Long64_t tolerance = 150;
|
||||
+ constexpr Long64_t tolerance = 300;
|
||||
#ifdef R__HAS_DEFAULT_LZ4
|
||||
constexpr Long64_t difflastgoodlz4 = 5500;
|
||||
if (last < lastgood - tolerance || last > lastgood + difflastgoodlz4 + tolerance || comp < 1.5 || comp > 2.1)
|
||||
diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref
|
||||
index 16d06e33fa..a21068927d 100644
|
||||
--- a/test/stressGraphics.ref
|
||||
+++ b/test/stressGraphics.ref
|
||||
@@ -2,12 +2,12 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
|
||||
1 529 50 12767 50 23848 3700 3937 100 569 60
|
||||
2 4627 600 14506 100 13368 7900 9208 3000 4690 600
|
||||
3 452 50 12694 50 11232 4200 3796 10700 492 50
|
||||
- 4 23617 1500 19386 100 143320 123000 45665 11000 24908 1500
|
||||
+ 4 23617 1500 19386 200 143320 123000 45665 11000 24908 1500
|
||||
5 1025 150 12802 200 33468 9900 30846 5000 1072 200
|
||||
6 430 50 12669 50 9558 100 5325 700 471 50
|
||||
7 4980 50 13893 50 16143 1300 12230 500 5011 70
|
||||
8 5442 80 13473 50 18430 700 12398 300 5469 80
|
||||
- 9 9253 100 14377 50 19851 2400 12199 900 9449 100
|
||||
+ 9 9253 100 14377 100 19851 2400 12199 900 9449 100
|
||||
10 8863 70 13645 100 24343 1100 23278 1700 8894 70
|
||||
11 12971 100 14444 50 34063 2000 32033 1200 12864 150
|
||||
12 7674 100 13533 50 83557 3000 38505 4000 7720 150
|
||||
@@ -15,30 +15,30 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
|
||||
14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000
|
||||
15 15690 5000 17179 200 23076 9500 15202 900 10437 5000
|
||||
16 28072 400 23287 200 44462 11000 30062 5000 38007 400
|
||||
- 17 20444 400 21520 100 27511 11000 16867 600 20721 400
|
||||
- 18 15894 100 19305 100 27187 10300 15925 350 15925 100
|
||||
- 19 22521 300 42926 150 43868 17000 19232 11000 22729 300
|
||||
+ 17 20444 400 21520 150 27511 11000 16867 600 20721 400
|
||||
+ 18 15894 100 19305 200 27187 10300 15925 350 15925 100
|
||||
+ 19 22521 300 42926 200 43868 17000 19232 11000 22729 300
|
||||
20 3664 600 14437 100 19824 6300 10396 900 4220 600
|
||||
21 17608 600 13900 150 49440 6300 37586 9000 5938 600
|
||||
22 4866 600 14162 100 30889 10050 21311 1800 4845 600
|
||||
- 23 4131 40 15272 50 34038 2500 12258 1400 4162 40
|
||||
+ 23 4131 40 15272 100 34038 2500 12258 1400 4162 40
|
||||
24 7813 300 23739 100 11085 6000 6973 3100 8081 300
|
||||
25 28422 150 29391 300 14104 14800 7386 2800 14493 150
|
||||
26 4545 150 14541 100 27602 14800 13094 2800 4467 150
|
||||
27 6141 200 15967 100 39594 21600 19331 7000 6596 500
|
||||
28 9110 500 16584 200 21346 21600 10645 7000 8869 500
|
||||
29 7419 500 15112 200 18872 21600 7928 7000 7296 500
|
||||
- 30 17016 5500 18198 100 32434 17400 22157 5000 20823 5500
|
||||
- 31 30615 8200 27176 150 50520 18200 35724 5400 36690 8200
|
||||
- 32 3304592 100 712308 500 62688 19000 123056 7000 0 0
|
||||
+ 30 17016 5500 18198 250 32434 17400 22157 5000 20823 5500
|
||||
+ 31 30615 8200 27176 200 50520 18200 35724 5400 36690 8200
|
||||
+ 32 3304592 100 712308 3000 62688 19000 123056 7000 0 0
|
||||
33 89233 500 47975 300 65532 27800 37314 12000 90600 500
|
||||
34 36514 300 16815 200 47408 12700 33739 3700 36399 300
|
||||
- 35 207729 750 87126 100 76094 38000 54717 11000 210497 800
|
||||
- 36 401670 6500 156361 500 62719 34100 45592 14000 410114 6500
|
||||
- 37 566142 5000 225206 750 65828 31800 53934 6500 573396 5000
|
||||
- 38 3738751 35000 1292739 8000 60580 9900 133547 3500 3783013 35000
|
||||
+ 35 207729 750 87126 750 76094 38000 54717 11000 210497 800
|
||||
+ 36 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500
|
||||
+ 37 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000
|
||||
+ 38 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000
|
||||
39 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500
|
||||
- 40 38312 200 56877 250 36524 11800 119641 8000 38121 200
|
||||
+ 40 38312 200 56877 750 36524 11800 119641 8000 38121 200
|
||||
41 15025 3000 29289 500 42525 11300 33336 3900 14787 4000
|
||||
42 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000
|
||||
43 4846 150 14075 150 33239 600 25303 300 4877 150
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
|
@ -1,30 +1,53 @@
|
|||
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()
|
||||
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)
|
||||
|
||||
# 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(TARGETS cppyy EXPORT ${CMAKE_PROJECT_NAME}Exports
|
||||
- RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries # Windows
|
||||
+install(TARGETS cppyy RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries # Windows
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries)
|
||||
|
||||
diff -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})
|
||||
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()
|
||||
|
||||
# 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)
|
||||
-# 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 ${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
|
||||
|
||||
|
|
|
|||
111
root-np32.patch
111
root-np32.patch
|
|
@ -1,111 +0,0 @@
|
|||
From 42b9c691fdd2d0001c61f78cc8adfbb9c994f6b4 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Fri, 17 Nov 2023 11:46:14 +0100
|
||||
Subject: [PATCH 3/3] Fix pythonizations test errors on ix86 Linux
|
||||
|
||||
======================================================================
|
||||
ERROR: test_sliced_array (rdataframe_makenumpy.DataFrameFromNumpy.test_sliced_array)
|
||||
Test correct reading of a sliced numpy array (#13690)
|
||||
----------------------------------------------------------------------
|
||||
Traceback (most recent call last):
|
||||
File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py", line 153, in test_sliced_array
|
||||
x_col = df.Take['Long64_t']("x")
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
cppyy.gbl.std.runtime_error: Could not instantiate Take<Long64_t>:
|
||||
ROOT::RDF::RResultPtr<vector<Long64_t> > ROOT::RDF::RInterface<ROOT::Detail::RDF::RLoopManager,void>::Take(basic_string_view<char,char_traits<char> > column = "") =>
|
||||
runtime_error: Column x has type int while the id specified is associated to type Long64_t
|
||||
----------------------------------------------------------------------
|
||||
|
||||
======================================================================
|
||||
ERROR: test_dtypes (rtensor.AsRTensor.test_dtypes)
|
||||
Test adoption of numpy arrays with different data types
|
||||
----------------------------------------------------------------------
|
||||
Traceback (most recent call last):
|
||||
File "/builddir/build/BUILD/root-6.30.00/bindings/pyroot/pythonizations/test/rtensor.py", line 45, in test_dtypes
|
||||
root_obj = ROOT.TMVA.Experimental.RTensor(self.cpptypes[i])(np_obj)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/builddir/build/BUILD/root-6.30.00/redhat-linux-build/lib/ROOT/_pythonization/_tmva/_rtensor.py", line 131, in RTensorInit
|
||||
return self._original_init_(data,shape,layout)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
TypeError: none of the 6 overloaded methods succeeded. Full details:
|
||||
RTensor<long,vector<long> >::RTensor<long,vector<long> >(TMVA::Experimental::RTensor<long,vector<long> >&&) =>
|
||||
TypeError: takes at most 1 arguments (3 given)
|
||||
RTensor<long,vector<long> >::RTensor<long,vector<long> >(const TMVA::Experimental::RTensor<long,vector<long> >&) =>
|
||||
TypeError: takes at most 1 arguments (3 given)
|
||||
RTensor<long,vector<long> >::RTensor<long,vector<long> >(shared_ptr<vector<long> > container, vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
|
||||
TypeError: could not convert argument 1
|
||||
RTensor<long,vector<long> >::RTensor<long,vector<long> >(vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
|
||||
TypeError: takes at most 2 arguments (3 given)
|
||||
RTensor<long,vector<long> >::RTensor<long,vector<long> >(long* data, vector<unsigned int> shape, vector<unsigned int> strides, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
|
||||
TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr)
|
||||
RTensor<long,vector<long> >::RTensor<long,vector<long> >(long* data, vector<unsigned int> shape, TMVA::Experimental::MemoryLayout layout = MemoryLayout::RowMajor) =>
|
||||
TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr)
|
||||
----------------------------------------------------------------------
|
||||
---
|
||||
.../pyroot/pythonizations/test/rdataframe_makenumpy.py | 8 ++++----
|
||||
bindings/pyroot/pythonizations/test/rtensor.py | 8 +-------
|
||||
2 files changed, 5 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
||||
index cd2ebc9b5b..cc46f5bea1 100644
|
||||
--- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
||||
+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
||||
@@ -142,19 +142,19 @@ class DataFrameFromNumpy(unittest.TestCase):
|
||||
gc.collect()
|
||||
ref4 = sys.getrefcount(x)
|
||||
self.assertEqual(ref1, ref4)
|
||||
-
|
||||
+
|
||||
def test_sliced_array(self):
|
||||
"""
|
||||
Test correct reading of a sliced numpy array (#13690)
|
||||
"""
|
||||
- table = np.array([[1,2], [3,4]])
|
||||
+ table = np.array([[1,2], [3,4]], dtype="int64")
|
||||
columns = {'x': table[:,0], 'y': table[:,1]}
|
||||
df = ROOT.RDF.FromNumpy(columns)
|
||||
x_col = df.Take['Long64_t']("x")
|
||||
y_col = df.Take['Long64_t']("y")
|
||||
- self.assertEqual(list(x_col.GetValue()), [1,3])
|
||||
+ self.assertEqual(list(x_col.GetValue()), [1,3])
|
||||
self.assertEqual(list(y_col.GetValue()), [2,4])
|
||||
-
|
||||
+
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
diff --git a/bindings/pyroot/pythonizations/test/rtensor.py b/bindings/pyroot/pythonizations/test/rtensor.py
|
||||
index 99b458cfa9..ca119f0b41 100644
|
||||
--- a/bindings/pyroot/pythonizations/test/rtensor.py
|
||||
+++ b/bindings/pyroot/pythonizations/test/rtensor.py
|
||||
@@ -2,7 +2,6 @@ import unittest
|
||||
import ROOT
|
||||
RTensor = ROOT.TMVA.Experimental.RTensor
|
||||
import numpy as np
|
||||
-import platform
|
||||
|
||||
|
||||
def check_shape(root_obj, np_obj):
|
||||
@@ -21,18 +20,13 @@ class AsRTensor(unittest.TestCase):
|
||||
dtypes = [
|
||||
"int32", "int64", "uint32", "uint64", "float32", "float64"
|
||||
]
|
||||
- cpptypes = ["int", "long", "unsigned int", "unsigned long", "float", "double"]
|
||||
+ cpptypes = ["int32_t", "int64_t", "uint32_t", "uint64_t", "float", "double"]
|
||||
|
||||
# Tests
|
||||
def test_dtypes(self):
|
||||
"""
|
||||
Test adoption of numpy arrays with different data types
|
||||
"""
|
||||
- #using long long on Linux does not work although it is same size as long
|
||||
- if (platform.system() == "Windows") :
|
||||
- self.cpptypes[1] = "long long"
|
||||
- self.cpptypes[3] = "unsigned long long"
|
||||
-
|
||||
i = 0
|
||||
for dtype in self.dtypes:
|
||||
np_obj = np.array([[1, 2], [3, 4], [5, 6]], dtype=dtype)
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
From 8b7369a527aa52204e1ce529c8cb206cfee4c61b Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Fri, 17 Nov 2023 16:18:12 +0100
|
||||
Subject: [PATCH] Disable tests that don't compile with old gtest (EPEL 8)
|
||||
|
||||
---
|
||||
core/metacling/test/TClingLoadUnloadFileTests.cxx | 2 ++
|
||||
roofit/histfactory/test/testHistFactory.cxx | 2 ++
|
||||
roofit/roofitcore/test/testRooProdPdf.cxx | 2 ++
|
||||
roofit/roofitcore/test/testTestStatistics.cxx | 2 ++
|
||||
4 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/core/metacling/test/TClingLoadUnloadFileTests.cxx b/core/metacling/test/TClingLoadUnloadFileTests.cxx
|
||||
index 7f97f3f441..d1b7a65fbc 100644
|
||||
--- a/core/metacling/test/TClingLoadUnloadFileTests.cxx
|
||||
+++ b/core/metacling/test/TClingLoadUnloadFileTests.cxx
|
||||
@@ -73,6 +73,7 @@ void remove_n_library_artifacts(const std::string &basename, unsigned int n)
|
||||
}
|
||||
}
|
||||
|
||||
+/*
|
||||
TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadSameLib)
|
||||
{
|
||||
GTEST_SKIP() << "fails sporadically, see "
|
||||
@@ -125,3 +126,4 @@ TEST(TClingLoadUnloadFile, ConcurrentLoadUnloadOneLibPerThread)
|
||||
|
||||
remove_n_library_artifacts(basename, n_libraries);
|
||||
}
|
||||
+*/
|
||||
diff --git a/roofit/histfactory/test/testHistFactory.cxx b/roofit/histfactory/test/testHistFactory.cxx
|
||||
index 7553ba4e4a..fefdca8e97 100644
|
||||
--- a/roofit/histfactory/test/testHistFactory.cxx
|
||||
+++ b/roofit/histfactory/test/testHistFactory.cxx
|
||||
@@ -752,6 +752,7 @@ std::string getNameFromInfo(testing::TestParamInfo<HFFixture::ParamType> const &
|
||||
return getName(paramInfo.param, false);
|
||||
}
|
||||
|
||||
+/*
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
HistFactory, HFFixture,
|
||||
testing::Combine(testing::Values(MakeModelMode::OverallSyst, MakeModelMode::HistoSyst, MakeModelMode::StatSyst,
|
||||
@@ -784,3 +785,4 @@ INSTANTIATE_TEST_SUITE_P(HistFactoryCodeGen, HFFixtureFit,
|
||||
testing::Values(RooFit::EvalBackend::Codegen())),
|
||||
getNameFromInfo);
|
||||
#endif
|
||||
+*/
|
||||
diff --git a/roofit/roofitcore/test/testRooProdPdf.cxx b/roofit/roofitcore/test/testRooProdPdf.cxx
|
||||
index 34fb559cd1..09734f5c5d 100644
|
||||
--- a/roofit/roofitcore/test/testRooProdPdf.cxx
|
||||
+++ b/roofit/roofitcore/test/testRooProdPdf.cxx
|
||||
@@ -64,6 +64,7 @@ TEST_P(TestProdPdf, CachingOpt)
|
||||
<< "b=" << b.getVal() << " +- " << b.getError() << " doesn't match truth value with O" << _optimize << ".";
|
||||
}
|
||||
|
||||
+/*
|
||||
INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf,
|
||||
testing::Combine(testing::Values(0, 1, 2),
|
||||
testing::Values(ROOFIT_EVAL_BACKENDS)),
|
||||
@@ -72,6 +73,7 @@ INSTANTIATE_TEST_SUITE_P(RooProdPdf, TestProdPdf,
|
||||
ss << "opt" << std::get<0>(paramInfo.param) << std::get<1>(paramInfo.param).name();
|
||||
return ss.str();
|
||||
});
|
||||
+*/
|
||||
|
||||
TEST(RooProdPdf, TestGetPartIntList)
|
||||
{
|
||||
diff --git a/roofit/roofitcore/test/testTestStatistics.cxx b/roofit/roofitcore/test/testTestStatistics.cxx
|
||||
index 3099d82060..5846353043 100644
|
||||
--- a/roofit/roofitcore/test/testTestStatistics.cxx
|
||||
+++ b/roofit/roofitcore/test/testTestStatistics.cxx
|
||||
@@ -585,6 +585,7 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVar, TestStatisticTest, testing::Values(ROOFIT_EV
|
||||
return ss.str();
|
||||
});
|
||||
|
||||
+/*
|
||||
INSTANTIATE_TEST_SUITE_P(RooNLLVar, OffsetBinTest,
|
||||
testing::Combine(testing::Values(ROOFIT_EVAL_BACKENDS), // EvalBackend
|
||||
testing::Values(false, true), // unbinned or binned
|
||||
@@ -622,3 +623,4 @@ INSTANTIATE_TEST_SUITE_P(RooNLLVarBinnedL, OffsetBinTest,
|
||||
ss << (std::get<5>(paramInfo.param) ? "BinnedL" : "");
|
||||
return ss.str();
|
||||
});
|
||||
+*/
|
||||
456
root-pcre2.patch
456
root-pcre2.patch
|
|
@ -1,456 +0,0 @@
|
|||
From f89fc640f9ca1b2cccf0dc496b0b7ea434b53fad Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Mon, 2 Oct 2023 09:25:13 +0200
|
||||
Subject: [PATCH] Support PCRE2
|
||||
|
||||
---
|
||||
.../pythonizations/test/import_load_libs.py | 1 +
|
||||
cmake/modules/FindPCRE2.cmake | 106 ++++++++++++++++++
|
||||
cmake/modules/SearchInstalledSoftware.cmake | 17 +--
|
||||
core/base/CMakeLists.txt | 9 +-
|
||||
core/base/src/TPRegexp.cxx | 99 +++++++++++++++-
|
||||
tutorials/legacy/regexp/regexp.C | 6 +-
|
||||
6 files changed, 223 insertions(+), 15 deletions(-)
|
||||
create mode 100644 cmake/modules/FindPCRE2.cmake
|
||||
|
||||
diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py
|
||||
index 087db7da5c..179c76f6fd 100644
|
||||
--- a/bindings/pyroot/pythonizations/test/import_load_libs.py
|
||||
+++ b/bindings/pyroot/pythonizations/test/import_load_libs.py
|
||||
@@ -23,6 +23,7 @@ class ImportLoadLibs(unittest.TestCase):
|
||||
'libc',
|
||||
'libdl',
|
||||
'libpcre',
|
||||
+ 'libpcre2-8',
|
||||
# libCling and dependencies
|
||||
'libCling.*',
|
||||
'librt',
|
||||
diff --git a/cmake/modules/FindPCRE2.cmake b/cmake/modules/FindPCRE2.cmake
|
||||
new file mode 100644
|
||||
index 0000000000..2417453e8b
|
||||
--- /dev/null
|
||||
+++ b/cmake/modules/FindPCRE2.cmake
|
||||
@@ -0,0 +1,106 @@
|
||||
+# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.
|
||||
+# All rights reserved.
|
||||
+#
|
||||
+# For the licensing terms see $ROOTSYS/LICENSE.
|
||||
+# For the list of contributors see $ROOTSYS/README/CREDITS.
|
||||
+
|
||||
+#.rst:
|
||||
+# FindPCRE2
|
||||
+# --------
|
||||
+#
|
||||
+# Find PCRE2 library
|
||||
+#
|
||||
+# Imported Targets
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# This module defines :prop_tgt:`IMPORTED` target:
|
||||
+#
|
||||
+# ``PCRE2::PCRE2``
|
||||
+# The pcre2 library, if found.
|
||||
+#
|
||||
+# Result Variables
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+# This module will set the following variables in your project:
|
||||
+#
|
||||
+# ``PCRE2_FOUND``
|
||||
+# True if PCRE2 has been found.
|
||||
+# ``PCRE2_INCLUDE_DIRS``
|
||||
+# Where to find pcre2.h
|
||||
+# ``PCRE2_LIBRARIES``
|
||||
+# The libraries to link against to use PCRE2.
|
||||
+# ``PCRE2_VERSION``
|
||||
+# The version of the PCRE2 found (e.g. 10.42)
|
||||
+#
|
||||
+# Obsolete variables
|
||||
+# ^^^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# The following variables may also be set, for backwards compatibility:
|
||||
+#
|
||||
+# ``PCRE2_PCRE2_LIBRARY``
|
||||
+# where to find the PCRE2_PCRE2 library.
|
||||
+# ``PCRE2_INCLUDE_DIR``
|
||||
+# where to find the pcre2.h header (same as PCRE2_INCLUDE_DIRS)
|
||||
+#
|
||||
+
|
||||
+foreach(var PCRE2_FOUND PCRE2_INCLUDE_DIR PCRE2_PCRE2_LIBRARY PCRE2_LIBRARIES)
|
||||
+ unset(${var} CACHE)
|
||||
+endforeach()
|
||||
+
|
||||
+find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h PATH_SUFFIXES include)
|
||||
+mark_as_advanced(PCRE2_INCLUDE_DIR)
|
||||
+
|
||||
+if (PCRE2_INCLUDE_DIR AND EXISTS "${PCRE2_INCLUDE_DIR}/pcre2.h")
|
||||
+ file(STRINGS "${PCRE2_INCLUDE_DIR}/pcre2.h" PCRE2_H REGEX "^#define PCRE2_(MAJOR|MINOR).*$")
|
||||
+ string(REGEX REPLACE "^.*PCRE2_MAJOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MAJOR "${PCRE2_H}")
|
||||
+ string(REGEX REPLACE "^.*PCRE2_MINOR[ ]+([0-9]+).*$" "\\1" PCRE2_VERSION_MINOR "${PCRE2_H}")
|
||||
+ set(PCRE2_VERSION "${PCRE2_VERSION_MAJOR}.${PCRE2_VERSION_MINOR}")
|
||||
+endif()
|
||||
+
|
||||
+if(NOT PCRE2_PCRE2_LIBRARY)
|
||||
+ find_library(PCRE2_PCRE2_LIBRARY_RELEASE NAMES pcre2-8)
|
||||
+ find_library(PCRE2_PCRE2_LIBRARY_DEBUG NAMES pcre2-8${CMAKE_DEBUG_POSTFIX} pcre2-8d)
|
||||
+ include(SelectLibraryConfigurations)
|
||||
+ select_library_configurations(PCRE2_PCRE2)
|
||||
+endif()
|
||||
+
|
||||
+include(FindPackageHandleStandardArgs)
|
||||
+find_package_handle_standard_args(PCRE2
|
||||
+ REQUIRED_VARS
|
||||
+ PCRE2_INCLUDE_DIR
|
||||
+ PCRE2_PCRE2_LIBRARY
|
||||
+ VERSION_VAR
|
||||
+ PCRE2_VERSION
|
||||
+)
|
||||
+
|
||||
+if(PCRE2_FOUND)
|
||||
+ set(PCRE2_INCLUDE_DIRS "${PCRE2_INCLUDE_DIR}")
|
||||
+
|
||||
+ if (NOT PCRE2_LIBRARIES)
|
||||
+ set(PCRE2_LIBRARIES "${PCRE2_PCRE2_LIBRARY}")
|
||||
+ endif()
|
||||
+
|
||||
+ if(NOT TARGET PCRE2::PCRE2)
|
||||
+ add_library(PCRE2::PCRE2 UNKNOWN IMPORTED)
|
||||
+ set_target_properties(PCRE2::PCRE2 PROPERTIES
|
||||
+ INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIRS}")
|
||||
+
|
||||
+ if(PCRE2_PCRE2_LIBRARY_DEBUG)
|
||||
+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
|
||||
+ IMPORTED_CONFIGURATIONS DEBUG)
|
||||
+ set_target_properties(PCRE2::PCRE2 PROPERTIES
|
||||
+ IMPORTED_LOCATION_DEBUG "${PCRE2_PCRE2_LIBRARY_DEBUG}")
|
||||
+ endif()
|
||||
+
|
||||
+ if(PCRE2_PCRE2_LIBRARY_RELEASE)
|
||||
+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
|
||||
+ IMPORTED_CONFIGURATIONS RELEASE)
|
||||
+ set_target_properties(PCRE2::PCRE2 PROPERTIES
|
||||
+ IMPORTED_LOCATION_RELEASE "${PCRE2_PCRE2_LIBRARY_RELEASE}")
|
||||
+ endif()
|
||||
+
|
||||
+ if(NOT PCRE2_PCRE2_LIBRARY_DEBUG AND NOT PCRE2_PCRE2_LIBRARY_RELEASE)
|
||||
+ set_property(TARGET PCRE2::PCRE2 APPEND PROPERTY
|
||||
+ IMPORTED_LOCATION "${PCRE2_PCRE2_LIBRARY}")
|
||||
+ endif()
|
||||
+ endif()
|
||||
+endif()
|
||||
diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
|
||||
index 464155fd50..252aa56737 100644
|
||||
--- a/cmake/modules/SearchInstalledSoftware.cmake
|
||||
+++ b/cmake/modules/SearchInstalledSoftware.cmake
|
||||
@@ -204,13 +204,16 @@ if(NOT builtin_pcre)
|
||||
foreach(suffix FOUND INCLUDE_DIR PCRE_LIBRARY)
|
||||
unset(PCRE_${suffix} CACHE)
|
||||
endforeach()
|
||||
- if(fail-on-missing)
|
||||
- find_package(PCRE REQUIRED)
|
||||
- else()
|
||||
- find_package(PCRE)
|
||||
- if(NOT PCRE_FOUND)
|
||||
- message(STATUS "PCRE not found. Switching on builtin_pcre option")
|
||||
- set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE)
|
||||
+ find_package(PCRE2)
|
||||
+ if(NOT PCRE2_FOUND)
|
||||
+ if(fail-on-missing)
|
||||
+ find_package(PCRE REQUIRED)
|
||||
+ else()
|
||||
+ find_package(PCRE)
|
||||
+ if(NOT PCRE_FOUND)
|
||||
+ message(STATUS "PCRE not found. Switching on builtin_pcre option")
|
||||
+ set(builtin_pcre ON CACHE BOOL "Enabled because PCRE not found (${builtin_pcre_description})" FORCE)
|
||||
+ endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt
|
||||
index df701fedea..5798c93775 100644
|
||||
--- a/core/base/CMakeLists.txt
|
||||
+++ b/core/base/CMakeLists.txt
|
||||
@@ -214,7 +214,14 @@ target_include_directories(Core PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/v7/inc>
|
||||
)
|
||||
|
||||
-target_link_libraries(Core PRIVATE PCRE::PCRE)
|
||||
+if(PCRE2_FOUND)
|
||||
+ target_link_libraries(Core PRIVATE PCRE2::PCRE2)
|
||||
+ set_source_files_properties(src/TPRegexp.cxx
|
||||
+ TARGET_DIRECTORY Core
|
||||
+ PROPERTIES COMPILE_DEFINITIONS USE_PCRE2)
|
||||
+else()
|
||||
+ target_link_libraries(Core PRIVATE PCRE::PCRE)
|
||||
+endif()
|
||||
|
||||
ROOT_INSTALL_HEADERS(${BASE_HEADER_DIRS})
|
||||
|
||||
diff --git a/core/base/src/TPRegexp.cxx b/core/base/src/TPRegexp.cxx
|
||||
index 949b8cc8e9..d70f3e5b8b 100644
|
||||
--- a/core/base/src/TPRegexp.cxx
|
||||
+++ b/core/base/src/TPRegexp.cxx
|
||||
@@ -25,19 +25,36 @@ found at : http://perldoc.perl.org/perlre.html
|
||||
#include "TObjString.h"
|
||||
#include "TError.h"
|
||||
|
||||
+#ifdef USE_PCRE2
|
||||
+#ifdef R__WIN32
|
||||
+#define PCRE2_STATIC
|
||||
+#endif
|
||||
+#define PCRE2_CODE_UNIT_WIDTH 8
|
||||
+#include <pcre2.h>
|
||||
+#define PCRE_CASELESS PCRE2_CASELESS
|
||||
+#define PCRE_MULTILINE PCRE2_MULTILINE
|
||||
+#define PCRE_DOTALL PCRE2_DOTALL
|
||||
+#define PCRE_EXTENDED PCRE2_EXTENDED
|
||||
+#define PCRE_ERROR_NOMATCH PCRE2_ERROR_NOMATCH
|
||||
+#else
|
||||
#ifdef R__WIN32
|
||||
#define PCRE_STATIC
|
||||
#endif
|
||||
#include <pcre.h>
|
||||
+#endif
|
||||
|
||||
#include <vector>
|
||||
#include <stdexcept>
|
||||
|
||||
struct PCREPriv_t {
|
||||
+#ifdef USE_PCRE2
|
||||
+ pcre2_code *fPCRE;
|
||||
+ PCREPriv_t() { fPCRE = nullptr; }
|
||||
+#else
|
||||
pcre *fPCRE;
|
||||
pcre_extra *fPCREExtra;
|
||||
-
|
||||
PCREPriv_t() { fPCRE = nullptr; fPCREExtra = nullptr; }
|
||||
+#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -79,10 +96,15 @@ TPRegexp::TPRegexp(const TPRegexp &p)
|
||||
|
||||
TPRegexp::~TPRegexp()
|
||||
{
|
||||
+#ifdef USE_PCRE2
|
||||
+ if (fPriv->fPCRE)
|
||||
+ pcre2_code_free(fPriv->fPCRE);
|
||||
+#else
|
||||
if (fPriv->fPCRE)
|
||||
pcre_free(fPriv->fPCRE);
|
||||
if (fPriv->fPCREExtra)
|
||||
pcre_free(fPriv->fPCREExtra);
|
||||
+#endif
|
||||
delete fPriv;
|
||||
}
|
||||
|
||||
@@ -93,12 +115,18 @@ TPRegexp &TPRegexp::operator=(const TPRegexp &p)
|
||||
{
|
||||
if (this != &p) {
|
||||
fPattern = p.fPattern;
|
||||
+#ifdef USE_PCRE2
|
||||
+ if (fPriv->fPCRE)
|
||||
+ pcre2_code_free(fPriv->fPCRE);
|
||||
+ fPriv->fPCRE = nullptr;
|
||||
+#else
|
||||
if (fPriv->fPCRE)
|
||||
pcre_free(fPriv->fPCRE);
|
||||
fPriv->fPCRE = nullptr;
|
||||
if (fPriv->fPCREExtra)
|
||||
pcre_free(fPriv->fPCREExtra);
|
||||
fPriv->fPCREExtra = nullptr;
|
||||
+#endif
|
||||
fPCREOpts = p.fPCREOpts;
|
||||
}
|
||||
return *this;
|
||||
@@ -197,31 +225,50 @@ TString TPRegexp::GetModifiers() const
|
||||
|
||||
void TPRegexp::Compile()
|
||||
{
|
||||
+#ifdef USE_PCRE2
|
||||
+ if (fPriv->fPCRE)
|
||||
+ pcre2_code_free(fPriv->fPCRE);
|
||||
+#else
|
||||
if (fPriv->fPCRE)
|
||||
pcre_free(fPriv->fPCRE);
|
||||
+#endif
|
||||
|
||||
if (fPCREOpts & kPCRE_DEBUG_MSGS)
|
||||
Info("Compile", "PREGEX compiling %s", fPattern.Data());
|
||||
|
||||
+#ifdef USE_PCRE2
|
||||
+ int errcode;
|
||||
+ PCRE2_SIZE patIndex;
|
||||
+ fPriv->fPCRE = pcre2_compile((PCRE2_SPTR)fPattern.Data(), fPattern.Length(),
|
||||
+ fPCREOpts & kPCRE_INTMASK,
|
||||
+ &errcode, &patIndex, nullptr);
|
||||
+#else
|
||||
const char *errstr;
|
||||
Int_t patIndex;
|
||||
fPriv->fPCRE = pcre_compile(fPattern.Data(), fPCREOpts & kPCRE_INTMASK,
|
||||
&errstr, &patIndex, nullptr);
|
||||
+#endif
|
||||
|
||||
if (!fPriv->fPCRE) {
|
||||
+#ifdef USE_PCRE2
|
||||
+ PCRE2_UCHAR errstr[256];
|
||||
+ pcre2_get_error_message(errcode, errstr, 256);
|
||||
+#endif
|
||||
if (fgThrowAtCompileError) {
|
||||
throw std::runtime_error
|
||||
(TString::Format("TPRegexp::Compile() compilation of TPRegexp(%s) failed at: %d because %s",
|
||||
- fPattern.Data(), patIndex, errstr).Data());
|
||||
+ fPattern.Data(), (int)patIndex, errstr).Data());
|
||||
} else {
|
||||
Error("Compile", "compilation of TPRegexp(%s) failed at: %d because %s",
|
||||
- fPattern.Data(), patIndex, errstr);
|
||||
+ fPattern.Data(), (int)patIndex, errstr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
+#ifndef USE_PCRE2
|
||||
if (fPriv->fPCREExtra || (fPCREOpts & kPCRE_OPTIMIZE))
|
||||
Optimize();
|
||||
+#endif
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -229,6 +276,7 @@ void TPRegexp::Compile()
|
||||
|
||||
void TPRegexp::Optimize()
|
||||
{
|
||||
+#ifndef USE_PCRE2
|
||||
if (fPriv->fPCREExtra)
|
||||
pcre_free(fPriv->fPCREExtra);
|
||||
|
||||
@@ -243,6 +291,7 @@ void TPRegexp::Optimize()
|
||||
Error("Optimize", "Optimization of TPRegexp(%s) failed: %s",
|
||||
fPattern.Data(), errstr);
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -308,21 +357,43 @@ Int_t TPRegexp::MatchInternal(const TString &s, Int_t start,
|
||||
Int_t nMaxMatch, TArrayI *pos) const
|
||||
{
|
||||
Int_t *offVec = new Int_t[3*nMaxMatch];
|
||||
+
|
||||
+#ifdef USE_PCRE2
|
||||
+ pcre2_match_data *match_data;
|
||||
+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr);
|
||||
+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR8)s.Data(),
|
||||
+ s.Length(), start, 0,
|
||||
+ match_data, nullptr);
|
||||
+#else
|
||||
// pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS.
|
||||
Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(),
|
||||
s.Length(), start, 0,
|
||||
offVec, 3*nMaxMatch);
|
||||
+#endif
|
||||
|
||||
if (nrMatch == PCRE_ERROR_NOMATCH)
|
||||
nrMatch = 0;
|
||||
else if (nrMatch <= 0) {
|
||||
Error("Match","pcre_exec error = %d", nrMatch);
|
||||
+#ifdef USE_PCRE2
|
||||
+ pcre2_match_data_free(match_data);
|
||||
+#endif
|
||||
delete [] offVec;
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if (pos)
|
||||
+ if (pos) {
|
||||
+#ifdef USE_PCRE2
|
||||
+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data);
|
||||
+ for (int i = 0; i < 2 * nrMatch; ++i)
|
||||
+ offVec[i] = oVec[i];
|
||||
+#endif
|
||||
pos->Set(2*nrMatch, offVec);
|
||||
+ }
|
||||
+
|
||||
+#ifdef USE_PCRE2
|
||||
+ pcre2_match_data_free(match_data);
|
||||
+#endif
|
||||
delete [] offVec;
|
||||
|
||||
return nrMatch;
|
||||
@@ -404,13 +475,24 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
|
||||
Int_t offset = start;
|
||||
Int_t last = 0;
|
||||
|
||||
+#ifdef USE_PCRE2
|
||||
+ pcre2_match_data *match_data;
|
||||
+ match_data = pcre2_match_data_create_from_pattern(fPriv->fPCRE, nullptr);
|
||||
+#endif
|
||||
+
|
||||
while (kTRUE) {
|
||||
|
||||
// find next matching subs
|
||||
// pcre_exec allows less options - see pcre_internal.h PUBLIC_EXEC_OPTIONS.
|
||||
+#ifdef USE_PCRE2
|
||||
+ Int_t nrMatch = pcre2_match(fPriv->fPCRE, (PCRE2_SPTR)s.Data(),
|
||||
+ s.Length(), offset, 0,
|
||||
+ match_data, nullptr);
|
||||
+#else
|
||||
Int_t nrMatch = pcre_exec(fPriv->fPCRE, fPriv->fPCREExtra, s.Data(),
|
||||
s.Length(), offset, 0,
|
||||
offVec, 3*nMaxMatch);
|
||||
+#endif
|
||||
|
||||
if (nrMatch == PCRE_ERROR_NOMATCH) {
|
||||
break;
|
||||
@@ -419,6 +501,12 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
|
||||
break;
|
||||
}
|
||||
|
||||
+#ifdef USE_PCRE2
|
||||
+ PCRE2_SIZE *oVec = pcre2_get_ovector_pointer(match_data);
|
||||
+ for (int i = 0; i < 2 * nrMatch; ++i)
|
||||
+ offVec[i] = oVec[i];
|
||||
+#endif
|
||||
+
|
||||
// append anything previously unmatched, but not substituted
|
||||
if (last <= offVec[0]) {
|
||||
fin += s(last,offVec[0]-last);
|
||||
@@ -446,6 +534,9 @@ Int_t TPRegexp::SubstituteInternal(TString &s, const TString &replacePattern,
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef USE_PCRE2
|
||||
+ pcre2_match_data_free(match_data);
|
||||
+#endif
|
||||
delete [] offVec;
|
||||
|
||||
fin += s(last,s.Length()-last);
|
||||
diff --git a/tutorials/legacy/regexp/regexp.C b/tutorials/legacy/regexp/regexp.C
|
||||
index 995b823bce..f38ed6799e 100644
|
||||
--- a/tutorials/legacy/regexp/regexp.C
|
||||
+++ b/tutorials/legacy/regexp/regexp.C
|
||||
@@ -94,11 +94,11 @@ void regexp()
|
||||
// criteria:
|
||||
// 1) It should be of the form string1@string2 . The "^" and "$" ensure that we compare the complete
|
||||
// email string
|
||||
- // 2) ([\\w-\\.]+) :
|
||||
+ // 2) ([\\w\\-\\.]+) :
|
||||
// string1 is only allowed to be composed out of the alphanumeric characters, "-" and "." .
|
||||
// The "+" ensures that string1 can not be empty .
|
||||
// 3) string2 is matched against three different parts :
|
||||
- // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+)) :
|
||||
+ // a. ((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+)) :
|
||||
// This regular expression ensures that EITHER the string starts with "[" followed by three groups
|
||||
// of numbers, separated by "." , where each group has 1 to 3 numbers, OR alphanumeric strings,
|
||||
// possibly containing "-" characters, separated by "." .
|
||||
@@ -108,7 +108,7 @@ void regexp()
|
||||
// At most one "]" character .
|
||||
|
||||
TString s5("fons.rademakers@cern.ch");
|
||||
- TPRegexp r5("^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
|
||||
+ TPRegexp r5("^([\\w\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
|
||||
cout << "Check if the email address \"" << s5 << "\" is valid: " << (r5.MatchB(s5) ? "TRUE" : "FALSE") << endl;
|
||||
|
||||
// Substitute Example with pattern modifier :
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -72,14 +72,7 @@ wget -N ${SITE}/tesla.root
|
|||
wget -N ${SITE}/wa91_ref_3.root
|
||||
wget -N ${SITE}/wa91.root
|
||||
|
||||
wget -N ${SITE}/AtlasGraphs.root
|
||||
wget -N ${SITE}/europe.root
|
||||
wget -N ${SITE}/Higgs_data.root
|
||||
wget -N ${SITE}/linearIO.root
|
||||
wget -N ${SITE}/stressHistogram.5.18.00.root
|
||||
wget -N ${SITE}/tmva_class_example.root
|
||||
wget -N ${SITE}/tmva_multiclass_example.root
|
||||
wget -N ${SITE}/tmva_reg_example.root
|
||||
wget -N ${SITE}/usa.root
|
||||
|
||||
for f in *.root ; do ln -s $f $f.ROOT.cachefile ; done
|
||||
|
|
|
|||
|
|
@ -1,86 +0,0 @@
|
|||
From e6928c405fe1647a0ee6ea32543b18ebc3828227 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||
Date: Thu, 23 Feb 2023 22:10:46 +0100
|
||||
Subject: [PATCH] Use consistent wording of the comments in the different TMVA
|
||||
classification tests to avoid confusion.
|
||||
|
||||
---
|
||||
tutorials/tmva/TMVA_CNN_Classification.C | 2 +-
|
||||
tutorials/tmva/TMVA_CNN_Classification.py | 4 ++--
|
||||
tutorials/tmva/TMVA_RNN_Classification.C | 6 ++++--
|
||||
tutorials/tmva/TMVA_RNN_Classification.py | 5 +++--
|
||||
4 files changed, 10 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/tutorials/tmva/TMVA_CNN_Classification.C b/tutorials/tmva/TMVA_CNN_Classification.C
|
||||
index cc6829a24d..db5af784d4 100644
|
||||
--- a/tutorials/tmva/TMVA_CNN_Classification.C
|
||||
+++ b/tutorials/tmva/TMVA_CNN_Classification.C
|
||||
@@ -134,7 +134,7 @@ void TMVA_CNN_Classification(int nevts = 1000, std::vector<bool> opt = {1, 1, 1,
|
||||
|
||||
bool writeOutputFile = true;
|
||||
|
||||
- int num_threads = 4; // use by default 4 threads if value is not set before
|
||||
+ int num_threads = 4; // use max 4 threads
|
||||
// switch off MT in OpenBLAS to avoid conflict with tbb
|
||||
gSystem->Setenv("OMP_NUM_THREADS", "1");
|
||||
|
||||
diff --git a/tutorials/tmva/TMVA_CNN_Classification.py b/tutorials/tmva/TMVA_CNN_Classification.py
|
||||
index 85fde20763..5d3c6e7220 100644
|
||||
--- a/tutorials/tmva/TMVA_CNN_Classification.py
|
||||
+++ b/tutorials/tmva/TMVA_CNN_Classification.py
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
import ROOT
|
||||
|
||||
-#switch off MT in OpenMP (BLAS)
|
||||
+# switch off MT in OpenBLAS to avoid conflict with tbb
|
||||
ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1")
|
||||
|
||||
TMVA = ROOT.TMVA
|
||||
@@ -145,7 +145,7 @@ if not useTMVACNN:
|
||||
|
||||
writeOutputFile = True
|
||||
|
||||
-num_threads = 4 # use default threads
|
||||
+num_threads = 4 # use max 4 threads
|
||||
max_epochs = 10 # maximum number of epochs used for training
|
||||
|
||||
|
||||
diff --git a/tutorials/tmva/TMVA_RNN_Classification.C b/tutorials/tmva/TMVA_RNN_Classification.C
|
||||
index 8701ba6c19..d4bb7a4e4a 100644
|
||||
--- a/tutorials/tmva/TMVA_RNN_Classification.C
|
||||
+++ b/tutorials/tmva/TMVA_RNN_Classification.C
|
||||
@@ -191,8 +191,10 @@ void TMVA_RNN_Classification(int nevts = 2000, int use_type = 1)
|
||||
useKeras = false;
|
||||
#endif
|
||||
|
||||
- int num_threads = 4; // use by default all threads
|
||||
- gSystem->Setenv("OMP_NUM_THREADS", "1"); // switch off MT in OpenBLAS
|
||||
+ int num_threads = 4; // use max 4 threads
|
||||
+ // switch off MT in OpenBLAS to avoid conflict with tbb
|
||||
+ gSystem->Setenv("OMP_NUM_THREADS", "1");
|
||||
+
|
||||
// do enable MT running
|
||||
if (num_threads >= 0) {
|
||||
ROOT::EnableImplicitMT(num_threads);
|
||||
diff --git a/tutorials/tmva/TMVA_RNN_Classification.py b/tutorials/tmva/TMVA_RNN_Classification.py
|
||||
index 625a120b3d..65aa83c070 100644
|
||||
--- a/tutorials/tmva/TMVA_RNN_Classification.py
|
||||
+++ b/tutorials/tmva/TMVA_RNN_Classification.py
|
||||
@@ -26,10 +26,11 @@ num_threads = 4 # use max 4 threads
|
||||
# do enable MT running
|
||||
if ROOT.gSystem.GetFromPipe("root-config --has-imt") == "yes":
|
||||
ROOT.EnableImplicitMT(num_threads)
|
||||
- ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1") # switch OFF MT in OpenBLAS
|
||||
+ # switch off MT in OpenBLAS to avoid conflict with tbb
|
||||
+ ROOT.gSystem.Setenv("OMP_NUM_THREADS", "1")
|
||||
print("Running with nthreads = {}".format(ROOT.GetThreadPoolSize()))
|
||||
else:
|
||||
- print("Running in serail mode since ROOT does not support MT")
|
||||
+ print("Running in serial mode since ROOT does not support MT")
|
||||
|
||||
|
||||
TMVA = ROOT.TMVA
|
||||
--
|
||||
2.39.2
|
||||
|
||||
135
root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch
Normal file
135
root-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
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
|
||||
|
||||
5
sources
5
sources
|
|
@ -1,2 +1,3 @@
|
|||
SHA512 (root-6.30.06.tar.xz) = 10309321a8e803f1ea2019a4d8ddde6220b052ddfa1ed7dedd432201db5917da748e944b2323794317251fd0d70048b276ad7bed6e3fcd84835de7be88b4c420
|
||||
SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f
|
||||
SHA512 (root-6.38.00.tar.xz) = 7c452b509e8171a0cbb7c102a3d4c07333fc8535f1b2c2ab0b9f7434604f098989a78bb71c41039dd41dbbd3438ea8703939826092f075d9d730b6b53c84ac55
|
||||
SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670
|
||||
SHA512 (clad-2.2.tar.gz) = 6f76d706a829901fc0fcdb38b5ddad6ea8ad9186ea48a4b6b585fc62974a2cda11b96a448c25daaba0586962d6428773e7ab751236c6afa72a91d12f30f2d05e
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue