Compare commits
9 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8626580cf | ||
|
|
27b349be2a | ||
|
|
732511f3a6 | ||
|
|
64acc88ed1 | ||
|
|
bdcedb0537 | ||
|
|
bbcab50659 | ||
|
|
32ec236e95 |
||
|
|
f287293ea9 | ||
|
|
84f092c91d |
23 changed files with 1050 additions and 797 deletions
|
|
@ -1,33 +1,49 @@
|
||||||
From 81286803e7791377ae75f40e9c65f8928ad8fe31 Mon Sep 17 00:00:00 2001
|
From f7bfa429deb9dbae9058998888bbcaa84af0ca08 Mon Sep 17 00:00:00 2001
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||||
Date: Fri, 30 May 2025 05:31:08 +0200
|
Date: Tue, 2 Dec 2025 05:33:31 +0100
|
||||||
Subject: [PATCH] Adjust test/stressGraphics.ref
|
Subject: [PATCH] Adjust test/stressGraphics.ref
|
||||||
|
|
||||||
Test 37: TScatter with TPolyMarker test............................ OK
|
|
||||||
PDF output......................................... 37 FAILED
|
|
||||||
Result = 22236
|
|
||||||
Reference = 22560
|
|
||||||
Error = 324 (was 300)
|
|
||||||
JPG output................................................ OK
|
|
||||||
PNG output................................................ OK
|
|
||||||
C file result............................................. OK
|
|
||||||
---
|
---
|
||||||
test/stressGraphics.ref | 2 +-
|
test/stressGraphics.ref | 10 +++++-----
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref
|
diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref
|
||||||
index a894796951..a8746db4df 100644
|
index 2498ec6d755..4520a5ab113 100644
|
||||||
--- a/test/stressGraphics.ref
|
--- a/test/stressGraphics.ref
|
||||||
+++ b/test/stressGraphics.ref
|
+++ b/test/stressGraphics.ref
|
||||||
@@ -35,7 +35,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
|
@@ -10,11 +10,11 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
|
||||||
34 3304592 100 712308 3000 62688 19000 123056 7000 3396789 1000
|
9 9253 100 14377 150 19851 2400 12199 900 9283 100
|
||||||
35 3954 100 14654 300 17378 7800 9629 2000 3794 200
|
10 8863 70 13645 100 24343 1100 23278 1700 8894 70
|
||||||
36 9073 100 22150 300 27691 7800 20712 2000 9157 200
|
11 12971 100 14750 50 34063 2000 32033 1200 13070 150
|
||||||
- 37 17800 200 22560 300 28599 7800 42618 2000 17600 200
|
- 12 7674 100 13533 50 83557 3000 38505 4000 7720 150
|
||||||
+ 37 17800 200 22560 400 28599 7800 42618 2000 17600 200
|
- 13 5600 400 13242 300 16881 400 15063 800 5638 400
|
||||||
38 12926 200 24304 300 24021 6800 12637 2000 12584 200
|
+ 12 7674 100 13533 100 83557 3000 38505 4000 7720 150
|
||||||
39 29664 200 19354 300 23024 6500 12821 2000 31317 200
|
+ 13 5600 400 13242 400 16881 400 15063 800 5638 400
|
||||||
40 46000 400 23482 300 38792 8500 30458 4000 46000 400
|
14 14190539 4000000 12926 100 23076 9500 25987 3000 14190704 4000000
|
||||||
|
15 15690 5000 17179 200 23076 9500 14232 1500 10437 5000
|
||||||
|
- 16 28072 400 23520 200 44462 11000 30062 5000 38007 400
|
||||||
|
+ 16 28072 400 23520 250 44462 11000 30062 5000 38007 400
|
||||||
|
17 20444 400 21520 150 27511 11000 16867 600 20721 400
|
||||||
|
18 15894 100 19305 200 27187 10300 15925 350 15925 100
|
||||||
|
19 22521 300 42926 250 43868 17000 19232 11000 22729 300
|
||||||
|
@@ -44,7 +44,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
|
||||||
|
43 207729 750 87126 750 76094 38000 54717 11000 210497 800
|
||||||
|
44 401670 6500 156361 2000 62719 34100 45592 14000 410114 6500
|
||||||
|
45 566142 5000 225206 2000 65828 31800 53934 6500 573396 5000
|
||||||
|
- 46 3738751 35000 1292739 12000 60580 9900 133547 3500 3783013 35000
|
||||||
|
+ 46 3738751 35000 1292739 13000 60580 9900 133547 3500 3783013 35000
|
||||||
|
47 1466028 9000 853193 50000 38425 13500 91242 18100 1463263 7500
|
||||||
|
48 38312 200 56877 750 36524 11800 119641 8000 38121 200
|
||||||
|
49 19556 1000 31967 1000 36859 10000 37602 8000 19900 3000
|
||||||
|
@@ -53,7 +53,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# JPGRef# JPGErr# PNGRef# PN
|
||||||
|
52 270825 10000 115500 1000 45496 11000 34685 5000 272950 10000
|
||||||
|
53 15025 3000 29289 500 42525 11300 33336 3900 14787 4000
|
||||||
|
54 254604 5000 383258 7000 55666 30400 46534 6500 259594 7000
|
||||||
|
- 55 4846 150 14075 150 33239 600 25303 500 4877 150
|
||||||
|
+ 55 4846 150 14075 200 33239 600 25303 500 4877 150
|
||||||
|
56 1435879 150000 12837 100 25830 100 365000 15000 1085792 250000
|
||||||
|
57 5884 500 16577 200 40706 14000 30026 4000 5884 500
|
||||||
|
58 5723 700 15720 200 32236 11000 16916 3200 5670 800
|
||||||
--
|
--
|
||||||
2.49.0
|
2.52.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
From c3a9293a08fecb288cdd09b399c9c2808923e617 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
|
||||||
Date: Wed, 27 Aug 2025 17:09:12 +0200
|
|
||||||
Subject: [PATCH] Avoid OverflowError from RDF pythonization
|
|
||||||
|
|
||||||
Fixes test failures on 32 bit intel ix86.
|
|
||||||
|
|
||||||
The following tests FAILED:
|
|
||||||
62 - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-rdataframe-makenumpy (Failed) python python_runtime_deps
|
|
||||||
1257 - tutorial-analysis-dataframe-df032_RDFFromNumpy-py (Failed) python_runtime_deps tutorial
|
|
||||||
|
|
||||||
1259/1470 Test #1257: tutorial-analysis-dataframe-df032_RDFFromNumpy-py .............................................***Failed 1.14 sec
|
|
||||||
Traceback (most recent call last):
|
|
||||||
File ".../tutorials/analysis/dataframe/df032_RDFFromNumpy.py", line 23, in <module>
|
|
||||||
df = ROOT.RDF.FromNumpy({'x': x, 'y': y})
|
|
||||||
File ".../redhat-linux-build/lib/ROOT/_facade.py", line 349, in MakeNumpyDataFrameCopy
|
|
||||||
return _MakeNumpyDataFrame(np_dict)
|
|
||||||
File ".../redhat-linux-build/lib/ROOT/_pythonization/_rdataframe.py", line 601, in _MakeNumpyDataFrame
|
|
||||||
return ROOT.Internal.RDF.MakeRVecDataFrame(ROOT.__ROOT_Internal.MakePyDeleter(key), *args)
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
|
|
||||||
OverflowError: Python int too large to convert to C long
|
|
||||||
---
|
|
||||||
.../pythonizations/python/ROOT/_pythonization/_rdataframe.py | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py
|
|
||||||
index d5cade59805..f9bb2771a73 100644
|
|
||||||
--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py
|
|
||||||
+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_rdataframe.py
|
|
||||||
@@ -584,7 +584,7 @@ def _MakeNumpyDataFrame(np_dict):
|
|
||||||
|
|
||||||
namespace __ROOT_Internal {
|
|
||||||
|
|
||||||
- inline std::function<void()> MakePyDeleter(std::intptr_t ptr) {
|
|
||||||
+ inline std::function<void()> MakePyDeleter(std::uintptr_t ptr) {
|
|
||||||
PyObject *obj = reinterpret_cast<PyObject*>(ptr);
|
|
||||||
Py_INCREF(obj);
|
|
||||||
return [obj](){ Py_DECREF(obj); };
|
|
||||||
--
|
|
||||||
2.51.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
|
||||||
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
From 8f08aac1c5d356352d2bd24b05dcdd092d3ca864 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
|
||||||
Date: Thu, 19 Jun 2025 13:28:24 +0200
|
|
||||||
Subject: [PATCH] Fix test for 32 bit architectures
|
|
||||||
|
|
||||||
[ RUN ] TypeReflectionTest.GetSizeOfType
|
|
||||||
/builddir/build/BUILD/root-6.36.00-build/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp:79: Failure
|
|
||||||
Expected equality of these values:
|
|
||||||
Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4]))
|
|
||||||
Which is: 12
|
|
||||||
16
|
|
||||||
[ FAILED ] TypeReflectionTest.GetSizeOfType (23 ms)
|
|
||||||
|
|
||||||
[ RUN ] ScopeReflectionTest.SizeOf
|
|
||||||
/builddir/build/BUILD/root-6.36.00-build/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp:161: Failure
|
|
||||||
Expected equality of these values:
|
|
||||||
Cpp::SizeOf(Decls[7])
|
|
||||||
Which is: 12
|
|
||||||
(size_t)16
|
|
||||||
Which is: 16
|
|
||||||
[ FAILED ] ScopeReflectionTest.SizeOf (26 ms)
|
|
||||||
---
|
|
||||||
.../CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp | 3 ++-
|
|
||||||
.../CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp | 3 ++-
|
|
||||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp
|
|
||||||
index 0b39080859..d490d0833c 100644
|
|
||||||
--- a/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp
|
|
||||||
+++ b/interpreter/CppInterOp/unittests/CppInterOp/ScopeReflectionTest.cpp
|
|
||||||
@@ -158,7 +158,8 @@ TEST(ScopeReflectionTest, SizeOf) {
|
|
||||||
EXPECT_EQ(Cpp::SizeOf(Decls[4]), (size_t)0);
|
|
||||||
EXPECT_EQ(Cpp::SizeOf(Decls[5]), (size_t)1);
|
|
||||||
EXPECT_EQ(Cpp::SizeOf(Decls[6]), (size_t)4);
|
|
||||||
- EXPECT_EQ(Cpp::SizeOf(Decls[7]), (size_t)16);
|
|
||||||
+ struct B {short a; double b;};
|
|
||||||
+ EXPECT_EQ(Cpp::SizeOf(Decls[7]), sizeof(B));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp
|
|
||||||
index a3e482596d..28cc32f166 100644
|
|
||||||
--- a/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp
|
|
||||||
+++ b/interpreter/CppInterOp/unittests/CppInterOp/TypeReflectionTest.cpp
|
|
||||||
@@ -77,7 +77,8 @@ TEST(TypeReflectionTest, GetSizeOfType) {
|
|
||||||
EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[1])), 1);
|
|
||||||
EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[2])), 4);
|
|
||||||
EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[3])), 8);
|
|
||||||
- EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), 16);
|
|
||||||
+ struct B {int a; double b;};
|
|
||||||
+ EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[4])), sizeof(B));
|
|
||||||
EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetTypeFromScope(Decls[5])), 0);
|
|
||||||
EXPECT_EQ(Cpp::GetSizeOfType(Cpp::GetVariableType(Decls[6])),
|
|
||||||
sizeof(intptr_t));
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
From f4ac6bf20278c19c88cf98f6062ecfad86b87378 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
|
||||||
Date: Thu, 19 Jun 2025 14:02:31 +0200
|
|
||||||
Subject: [PATCH] Ignore warnings from uring IO
|
|
||||||
|
|
||||||
Tests randomly fail because the uring memory is exhausted.
|
|
||||||
|
|
||||||
Here are some examples:
|
|
||||||
|
|
||||||
[ RUN ] RNTuple.RandomAccess
|
|
||||||
.../root-6.36.00/core/testsupport/src/TestSupport.cxx:79: Failure
|
|
||||||
Failed
|
|
||||||
Received unexpected diagnostic of severity 2000 at 'RIoUring' reading 'io_uring is unexpectedly not available because:
|
|
||||||
Failed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user'.
|
|
||||||
Suppress those using ROOT/TestSupport.hxx
|
|
||||||
.../root-6.36.00/core/testsupport/src/TestSupport.cxx:79: Failure
|
|
||||||
Failed
|
|
||||||
Received unexpected diagnostic of severity 2000 at 'RRawFileUnix' reading 'io_uring setup failed, falling back to blocking I/O in ReadV'.
|
|
||||||
Suppress those using ROOT/TestSupport.hxx
|
|
||||||
[ FAILED ] RNTuple.RandomAccess (20472 ms)
|
|
||||||
|
|
||||||
[ RUN ] RNTupleDSTest.ChainMT
|
|
||||||
.../root-6.34.08/core/testsupport/src/TestSupport.cxx:79: Failure
|
|
||||||
Failed
|
|
||||||
Received unexpected diagnostic of severity 2000 at 'RIoUring' reading 'io_uring is unexpectedly not available because:
|
|
||||||
Failed to allocate memory for the smallest possible io_uring instance. 'memlock' memory has been exhausted for this user'.
|
|
||||||
Suppress those using ROOT/TestSupport.hxx
|
|
||||||
.../root-6.34.08/core/testsupport/src/TestSupport.cxx:79: Failure
|
|
||||||
Failed
|
|
||||||
Received unexpected diagnostic of severity 2000 at 'RRawFileUnix' reading 'io_uring setup failed, falling back to blocking I/O in ReadV'.
|
|
||||||
Suppress those using ROOT/TestSupport.hxx
|
|
||||||
[ FAILED ] RNTupleDSTest.ChainMT (1004 ms)
|
|
||||||
---
|
|
||||||
core/testsupport/src/TestSupport.cxx | 12 ++++++++++++
|
|
||||||
1 file changed, 12 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/core/testsupport/src/TestSupport.cxx b/core/testsupport/src/TestSupport.cxx
|
|
||||||
index 9889a432f4..4c3395ef16 100644
|
|
||||||
--- a/core/testsupport/src/TestSupport.cxx
|
|
||||||
+++ b/core/testsupport/src/TestSupport.cxx
|
|
||||||
@@ -76,6 +76,18 @@ static struct ForbidDiagnostics {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (level == kWarning && strcmp(location, "RIoUring") == 0 &&
|
|
||||||
+ strstr(msg, "io_uring is unexpectedly not available because:") != nullptr) {
|
|
||||||
+ std::cerr << "Warning in " << location << " " << msg << std::endl;
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (level == kWarning && strcmp(location, "RRawFileUnix") == 0 &&
|
|
||||||
+ strcmp(msg, "io_uring setup failed, falling back to blocking I/O in ReadV") == 0) {
|
|
||||||
+ std::cerr << "Warning in " << location << " " << msg << std::endl;
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
FAIL() << "Received unexpected diagnostic of severity "
|
|
||||||
<< level
|
|
||||||
<< " at '" << location << "' reading '" << msg << "'.\n"
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
||||||
From f26668d48bfc75e9c176f7981e51ddc3b5ed7895 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jonas Rembser <jonas.rembser@cern.ch>
|
|
||||||
Date: Wed, 11 Jun 2025 14:15:07 +0200
|
|
||||||
Subject: [PATCH] [Python] Update reference refcount values for Python 3.14
|
|
||||||
compatibility
|
|
||||||
|
|
||||||
Closes: #18988.
|
|
||||||
---
|
|
||||||
.../pyroot/pythonizations/test/rdataframe_makenumpy.py | 9 ++++++++-
|
|
||||||
bindings/pyroot/pythonizations/test/rvec_asrvec.py | 10 +++++++---
|
|
||||||
2 files changed, 15 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
|
||||||
index 072148aeb6..c7da723523 100644
|
|
||||||
--- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
|
||||||
+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
|
||||||
@@ -75,10 +75,17 @@ class DataFrameFromNumpy(unittest.TestCase):
|
|
||||||
def test_refcount(self):
|
|
||||||
"""
|
|
||||||
Check refcounts of associated PyObjects
|
|
||||||
+
|
|
||||||
+ In case of Python <=3.14, we expect a refcount of 2 for the data dict,
|
|
||||||
+ because the call to sys.getrefcount creates a second reference by
|
|
||||||
+ itself. Starting from Python 3.14, we expect a refcount of 1 because
|
|
||||||
+ there were changes to the interpreter to avoid some unnecessary ref
|
|
||||||
+ counts. See also:
|
|
||||||
+ https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-refcount
|
|
||||||
"""
|
|
||||||
data = {"x": np.array([1, 2, 3], dtype="float32")}
|
|
||||||
gc.collect()
|
|
||||||
- self.assertEqual(sys.getrefcount(data), 2)
|
|
||||||
+ self.assertEqual(sys.getrefcount(data), 1 + int(sys.version_info < (3, 14)))
|
|
||||||
self.assertEqual(sys.getrefcount(data["x"]), 2)
|
|
||||||
|
|
||||||
df = ROOT.RDF.FromNumpy(data)
|
|
||||||
diff --git a/bindings/pyroot/pythonizations/test/rvec_asrvec.py b/bindings/pyroot/pythonizations/test/rvec_asrvec.py
|
|
||||||
index 5e6c820705..9d3a294bf1 100644
|
|
||||||
--- a/bindings/pyroot/pythonizations/test/rvec_asrvec.py
|
|
||||||
+++ b/bindings/pyroot/pythonizations/test/rvec_asrvec.py
|
|
||||||
@@ -123,8 +123,12 @@ class AsRVec(unittest.TestCase):
|
|
||||||
"""
|
|
||||||
Test reference count of returned RVec
|
|
||||||
|
|
||||||
- We expect a refcount of 2 for the RVec because the call to sys.getrefcount
|
|
||||||
- creates a second reference by itself.
|
|
||||||
+ In case of Python <=3.14, we expect a refcount of 2 for the RVec
|
|
||||||
+ because the call to sys.getrefcount creates a second reference by
|
|
||||||
+ itself. Starting from Python 3.14, we expect a refcount of 1 because
|
|
||||||
+ there were changes to the interpreter to avoid some unnecessary ref
|
|
||||||
+ counts. See also:
|
|
||||||
+ https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-refcount
|
|
||||||
We attach the adopted pyobject to the RVec and increase the refcount of the
|
|
||||||
numpy array. After deletion of the rvec, the refcount of the numpy array
|
|
||||||
is decreased.
|
|
||||||
@@ -132,7 +136,7 @@ class AsRVec(unittest.TestCase):
|
|
||||||
np_obj = np.array([1, 2])
|
|
||||||
rvec = ROOT.VecOps.AsRVec(np_obj)
|
|
||||||
gc.collect()
|
|
||||||
- self.assertEqual(sys.getrefcount(rvec), 2)
|
|
||||||
+ self.assertEqual(sys.getrefcount(rvec), 1 + int(sys.version_info < (3, 14)))
|
|
||||||
self.assertEqual(sys.getrefcount(np_obj), 3)
|
|
||||||
del rvec
|
|
||||||
gc.collect()
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
From 530d925f9832fe5fd1469ebf145f85227cfce1d4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
|
||||||
Date: Fri, 20 Jun 2025 07:21:05 +0200
|
|
||||||
Subject: [PATCH] [Python] Update reference refcount values for Python 3.14
|
|
||||||
compatibility
|
|
||||||
|
|
||||||
---
|
|
||||||
bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py | 2 +-
|
|
||||||
bindings/pyroot/pythonizations/test/rvec_asrvec.py | 4 ++--
|
|
||||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
|
||||||
index c7da723523..fc0f88155a 100644
|
|
||||||
--- a/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
|
||||||
+++ b/bindings/pyroot/pythonizations/test/rdataframe_makenumpy.py
|
|
||||||
@@ -90,7 +90,7 @@ class DataFrameFromNumpy(unittest.TestCase):
|
|
||||||
|
|
||||||
df = ROOT.RDF.FromNumpy(data)
|
|
||||||
gc.collect()
|
|
||||||
- self.assertEqual(sys.getrefcount(df), 2)
|
|
||||||
+ self.assertEqual(sys.getrefcount(df), 1 + int(sys.version_info < (3, 14)))
|
|
||||||
|
|
||||||
self.assertEqual(sys.getrefcount(data["x"]), 3)
|
|
||||||
|
|
||||||
diff --git a/bindings/pyroot/pythonizations/test/rvec_asrvec.py b/bindings/pyroot/pythonizations/test/rvec_asrvec.py
|
|
||||||
index 9d3a294bf1..f489da826e 100644
|
|
||||||
--- a/bindings/pyroot/pythonizations/test/rvec_asrvec.py
|
|
||||||
+++ b/bindings/pyroot/pythonizations/test/rvec_asrvec.py
|
|
||||||
@@ -137,10 +137,10 @@ class AsRVec(unittest.TestCase):
|
|
||||||
rvec = ROOT.VecOps.AsRVec(np_obj)
|
|
||||||
gc.collect()
|
|
||||||
self.assertEqual(sys.getrefcount(rvec), 1 + int(sys.version_info < (3, 14)))
|
|
||||||
- self.assertEqual(sys.getrefcount(np_obj), 3)
|
|
||||||
+ self.assertEqual(sys.getrefcount(np_obj), 2 + int(sys.version_info < (3, 14)))
|
|
||||||
del rvec
|
|
||||||
gc.collect()
|
|
||||||
- self.assertEqual(sys.getrefcount(np_obj), 2)
|
|
||||||
+ self.assertEqual(sys.getrefcount(np_obj), 1 + int(sys.version_info < (3, 14)))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
From e59ece55e4eead85b2b6fd8c6ddc2dfa179f0d09 Mon Sep 17 00:00:00 2001
|
From 98a5042a02dd7c1aaa9fbd5e54c8620c6b72484f Mon Sep 17 00:00:00 2001
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||||
Date: Mon, 2 Jun 2025 21:22:39 +0200
|
Date: Mon, 2 Jun 2025 21:22:39 +0200
|
||||||
Subject: [PATCH] Save memory. Do not link to LLVM libraries in parallel
|
Subject: [PATCH] Save memory. Do not link to LLVM libraries in parallel
|
||||||
|
|
@ -9,21 +9,21 @@ Subject: [PATCH] Save memory. Do not link to LLVM libraries in parallel
|
||||||
2 files changed, 9 insertions(+)
|
2 files changed, 9 insertions(+)
|
||||||
|
|
||||||
diff --git a/core/clingutils/test/CMakeLists.txt b/core/clingutils/test/CMakeLists.txt
|
diff --git a/core/clingutils/test/CMakeLists.txt b/core/clingutils/test/CMakeLists.txt
|
||||||
index 15cc3ff48a..f62735e972 100644
|
index a6c7aedac99..90ac0139c24 100644
|
||||||
--- a/core/clingutils/test/CMakeLists.txt
|
--- a/core/clingutils/test/CMakeLists.txt
|
||||||
+++ b/core/clingutils/test/CMakeLists.txt
|
+++ b/core/clingutils/test/CMakeLists.txt
|
||||||
@@ -31,3 +31,6 @@ if(NOT builtin_clang)
|
@@ -36,3 +36,6 @@ if(NOT builtin_clang)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
ROOT_ADD_UNITTEST_DIR(Core RIO ${CLING_LIBRARIES} $<TARGET_OBJECTS:ClingUtils>)
|
ROOT_ADD_UNITTEST_DIR(Core ${CLING_LIBRARIES} $<TARGET_OBJECTS:ClingUtils>)
|
||||||
+
|
+
|
||||||
+# Save memory. Do not link to LLVM libraries in parallel
|
+# Save memory. Do not link to LLVM libraries in parallel
|
||||||
+add_dependencies(coreclingutilstestUnit CppInterOpTests)
|
+add_dependencies(coreclingutilstestUnit CppInterOpTests)
|
||||||
diff --git a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
|
diff --git a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
|
||||||
index 0ba35053fd..c6440cf301 100644
|
index 4b4b43bdd29..a028802fedc 100644
|
||||||
--- a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
|
--- a/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
|
||||||
+++ b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
|
+++ b/interpreter/CppInterOp/unittests/CppInterOp/CMakeLists.txt
|
||||||
@@ -65,6 +65,9 @@ target_link_libraries(CppInterOpTests
|
@@ -66,6 +66,9 @@ target_link_libraries(CppInterOpTests
|
||||||
clangCppInterOp
|
clangCppInterOp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ index 0ba35053fd..c6440cf301 100644
|
||||||
set_output_directory(CppInterOpTests
|
set_output_directory(CppInterOpTests
|
||||||
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES}
|
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES}
|
||||||
LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES}
|
LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${EXTRA_PATH_TEST_BINARIES}
|
||||||
@@ -116,5 +119,8 @@ set_output_directory(DynamicLibraryManagerTests
|
@@ -129,5 +132,8 @@ set_output_directory(DynamicLibraryManagerTests
|
||||||
|
|
||||||
add_dependencies(DynamicLibraryManagerTests TestSharedLib)
|
add_dependencies(DynamicLibraryManagerTests TestSharedLib)
|
||||||
|
|
||||||
|
|
@ -43,5 +43,5 @@ index 0ba35053fd..c6440cf301 100644
|
||||||
#export_executable_symbols_for_plugins(TestSharedLib)
|
#export_executable_symbols_for_plugins(TestSharedLib)
|
||||||
add_subdirectory(TestSharedLib)
|
add_subdirectory(TestSharedLib)
|
||||||
--
|
--
|
||||||
2.49.0
|
2.52.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
From 7bfd27ac478356e7c718b18b5eb3a3b277b833d1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
|
||||||
Date: Tue, 3 Jun 2025 06:49:27 +0200
|
|
||||||
Subject: [PATCH] Use size_t for offset
|
|
||||||
|
|
||||||
[ RUN ] VariableReflectionTest.StaticConstExprDatamember
|
|
||||||
/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:545: Failure
|
|
||||||
Expected equality of these values:
|
|
||||||
3
|
|
||||||
*(int*)offset
|
|
||||||
Which is: 0
|
|
||||||
/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:561: Failure
|
|
||||||
Expected equality of these values:
|
|
||||||
5
|
|
||||||
*(int*)offset
|
|
||||||
Which is: 0
|
|
||||||
/builddir/build/BUILD/root-6.36.00/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp:580: Failure
|
|
||||||
Expected equality of these values:
|
|
||||||
2
|
|
||||||
*(int*)offset
|
|
||||||
Which is: 0
|
|
||||||
[ FAILED ] VariableReflectionTest.StaticConstExprDatamember (9 ms)
|
|
||||||
---
|
|
||||||
.../unittests/CppInterOp/VariableReflectionTest.cpp | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp b/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp
|
|
||||||
index 26dad4f25c..571ae5cd5d 100644
|
|
||||||
--- a/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp
|
|
||||||
+++ b/interpreter/CppInterOp/unittests/CppInterOp/VariableReflectionTest.cpp
|
|
||||||
@@ -552,7 +552,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) {
|
|
||||||
EXPECT_EQ(datamembers.size(), 1);
|
|
||||||
|
|
||||||
intptr_t offset = Cpp::GetVariableOffset(datamembers[0]);
|
|
||||||
- EXPECT_EQ(3, *(int*)offset);
|
|
||||||
+ EXPECT_EQ(3, *(size_t*)offset);
|
|
||||||
|
|
||||||
ASTContext& C = Interp->getCI()->getASTContext();
|
|
||||||
std::vector<Cpp::TemplateArgInfo> template_args = {
|
|
||||||
@@ -568,7 +568,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) {
|
|
||||||
EXPECT_EQ(datamembers.size(), 1);
|
|
||||||
|
|
||||||
offset = Cpp::GetVariableOffset(datamembers[0]);
|
|
||||||
- EXPECT_EQ(5, *(int*)offset);
|
|
||||||
+ EXPECT_EQ(5, *(size_t*)offset);
|
|
||||||
|
|
||||||
std::vector<Cpp::TemplateArgInfo> ele_template_args = {
|
|
||||||
{C.IntTy.getAsOpaquePtr()}, {C.FloatTy.getAsOpaquePtr()}};
|
|
||||||
@@ -587,7 +587,7 @@ TEST(VariableReflectionTest, StaticConstExprDatamember) {
|
|
||||||
EXPECT_EQ(datamembers.size(), 1);
|
|
||||||
|
|
||||||
offset = Cpp::GetVariableOffset(datamembers[0]);
|
|
||||||
- EXPECT_EQ(2, *(int*)offset);
|
|
||||||
+ EXPECT_EQ(2, *(size_t*)offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(VariableReflectionTest, GetEnumConstantDatamembers) {
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
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 4bfc8d1ff53b398c8e5bd879ca32ead4321b844a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
|
||||||
Date: Wed, 20 Aug 2025 08:17:16 +0200
|
|
||||||
Subject: [PATCH] [df] Support libarrow 21
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
arrow::internal::GenericToStatus → arrow::ToStatus
|
|
||||||
---
|
|
||||||
tree/dataframe/test/datasource_arrow.cxx | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/tree/dataframe/test/datasource_arrow.cxx b/tree/dataframe/test/datasource_arrow.cxx
|
|
||||||
index 05493baa3d4..73749b59afc 100644
|
|
||||||
--- a/tree/dataframe/test/datasource_arrow.cxx
|
|
||||||
+++ b/tree/dataframe/test/datasource_arrow.cxx
|
|
||||||
@@ -12,6 +12,7 @@
|
|
||||||
#include <arrow/record_batch.h>
|
|
||||||
#include <arrow/table.h>
|
|
||||||
#include <arrow/type.h>
|
|
||||||
+#include <arrow/util/config.h>
|
|
||||||
#if defined(__GNUC__)
|
|
||||||
#pragma GCC diagnostic pop
|
|
||||||
#endif
|
|
||||||
@@ -21,9 +22,15 @@
|
|
||||||
#include <iostream>
|
|
||||||
using namespace arrow;
|
|
||||||
|
|
||||||
+#if ARROW_VERSION_MAJOR >= 21
|
|
||||||
+#define ASSERT_OK(expr) \
|
|
||||||
+ for (::arrow::Status _st = ::arrow::ToStatus((expr)); !_st.ok();) \
|
|
||||||
+ FAIL() << "'" ARROW_STRINGIFY(expr) "' failed with " << _st.ToString()
|
|
||||||
+#else
|
|
||||||
#define ASSERT_OK(expr) \
|
|
||||||
for (::arrow::Status _st = ::arrow::internal::GenericToStatus((expr)); !_st.ok();) \
|
|
||||||
FAIL() << "'" ARROW_STRINGIFY(expr) "' failed with " << _st.ToString()
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
// Copied from arrow/testing/builder.h
|
|
||||||
template <typename TYPE, typename C_TYPE = typename TYPE::c_type>
|
|
||||||
--
|
|
||||||
2.50.1
|
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
From c5f13cb25c3b803346d1a6cac483badbcf2ced62 Mon Sep 17 00:00:00 2001
|
From 4d450f306a8ab8220f43675c70f399d89e5a4a03 Mon Sep 17 00:00:00 2001
|
||||||
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||||
Date: Sat, 11 May 2024 20:09:47 +0200
|
Date: Sat, 11 May 2024 20:09:47 +0200
|
||||||
Subject: [PATCH] Use system fonts via fontconfig
|
Subject: [PATCH] Use system fonts via fontconfig
|
||||||
|
|
@ -9,20 +9,19 @@ Subject: [PATCH] Use system fonts via fontconfig
|
||||||
graf2d/asimage/src/TASImage.cxx | 91 +++++++-
|
graf2d/asimage/src/TASImage.cxx | 91 +++++++-
|
||||||
graf2d/graf/CMakeLists.txt | 1 +
|
graf2d/graf/CMakeLists.txt | 1 +
|
||||||
graf2d/graf/inc/TTF.h | 3 +-
|
graf2d/graf/inc/TTF.h | 3 +-
|
||||||
graf2d/graf/src/TTF.cxx | 291 +++++++++++++++++---------
|
graf2d/graf/src/TTF.cxx | 295 +++++++++++++++++---------
|
||||||
graf2d/postscript/CMakeLists.txt | 1 +
|
graf2d/postscript/CMakeLists.txt | 1 +
|
||||||
graf2d/postscript/src/TPostScript.cxx | 106 +++++-----
|
graf2d/postscript/src/TPostScript.cxx | 106 ++++-----
|
||||||
graf3d/gl/CMakeLists.txt | 1 +
|
graf3d/gl/CMakeLists.txt | 1 +
|
||||||
graf3d/gl/src/TGLFontManager.cxx | 123 ++++++++++-
|
graf3d/gl/src/TGLFontManager.cxx | 123 ++++++++++-
|
||||||
graf3d/gl/src/TGLText.cxx | 56 +++--
|
graf3d/gl/src/TGLText.cxx | 56 +++--
|
||||||
gui/gui/src/TGApplication.cxx | 10 +-
|
11 files changed, 495 insertions(+), 194 deletions(-)
|
||||||
12 files changed, 494 insertions(+), 201 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx
|
diff --git a/core/base/src/TApplication.cxx b/core/base/src/TApplication.cxx
|
||||||
index 992713264a..32bfc0bbb9 100644
|
index f0d2124a8f6..41ad4c73020 100644
|
||||||
--- a/core/base/src/TApplication.cxx
|
--- a/core/base/src/TApplication.cxx
|
||||||
+++ b/core/base/src/TApplication.cxx
|
+++ b/core/base/src/TApplication.cxx
|
||||||
@@ -251,18 +251,12 @@ void TApplication::InitializeGraphics(Bool_t only_web)
|
@@ -253,18 +253,12 @@ void TApplication::InitializeGraphics(Bool_t only_web)
|
||||||
LoadGraphicsLibs();
|
LoadGraphicsLibs();
|
||||||
|
|
||||||
// Try to load TrueType font renderer. Only try to load if not in batch
|
// Try to load TrueType font renderer. Only try to load if not in batch
|
||||||
|
|
@ -43,7 +42,7 @@ index 992713264a..32bfc0bbb9 100644
|
||||||
if (gClassTable->GetDict("TGX11TTF")) {
|
if (gClassTable->GetDict("TGX11TTF")) {
|
||||||
// in principle we should not have linked anything against libGX11TTF
|
// in principle we should not have linked anything against libGX11TTF
|
||||||
// but with ACLiC this can happen, initialize TGX11TTF by hand
|
// but with ACLiC this can happen, initialize TGX11TTF by hand
|
||||||
@@ -276,7 +270,6 @@ void TApplication::InitializeGraphics(Bool_t only_web)
|
@@ -278,7 +272,6 @@ void TApplication::InitializeGraphics(Bool_t only_web)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -52,10 +51,10 @@ index 992713264a..32bfc0bbb9 100644
|
||||||
|
|
||||||
if (!only_web || !fAppImp) {
|
if (!only_web || !fAppImp) {
|
||||||
diff --git a/graf2d/asimage/CMakeLists.txt b/graf2d/asimage/CMakeLists.txt
|
diff --git a/graf2d/asimage/CMakeLists.txt b/graf2d/asimage/CMakeLists.txt
|
||||||
index 31114ad45d..be95419491 100644
|
index b5ccf983473..8ee57c1fac0 100644
|
||||||
--- a/graf2d/asimage/CMakeLists.txt
|
--- a/graf2d/asimage/CMakeLists.txt
|
||||||
+++ b/graf2d/asimage/CMakeLists.txt
|
+++ b/graf2d/asimage/CMakeLists.txt
|
||||||
@@ -30,6 +30,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage
|
@@ -28,6 +28,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ASImage
|
||||||
${FREETYPE_LIBRARIES}
|
${FREETYPE_LIBRARIES}
|
||||||
${X11_LIBRARIES}
|
${X11_LIBRARIES}
|
||||||
ZLIB::ZLIB
|
ZLIB::ZLIB
|
||||||
|
|
@ -64,7 +63,7 @@ index 31114ad45d..be95419491 100644
|
||||||
Core
|
Core
|
||||||
Graf
|
Graf
|
||||||
diff --git a/graf2d/asimage/src/TASImage.cxx b/graf2d/asimage/src/TASImage.cxx
|
diff --git a/graf2d/asimage/src/TASImage.cxx b/graf2d/asimage/src/TASImage.cxx
|
||||||
index 7e046f4724..137265bd4a 100644
|
index 6ea60a78801..e85d804b7ec 100644
|
||||||
--- a/graf2d/asimage/src/TASImage.cxx
|
--- a/graf2d/asimage/src/TASImage.cxx
|
||||||
+++ b/graf2d/asimage/src/TASImage.cxx
|
+++ b/graf2d/asimage/src/TASImage.cxx
|
||||||
@@ -117,6 +117,8 @@ extern "C" {
|
@@ -117,6 +117,8 @@ extern "C" {
|
||||||
|
|
@ -76,7 +75,7 @@ index 7e046f4724..137265bd4a 100644
|
||||||
// auxiliary functions for general polygon filling
|
// auxiliary functions for general polygon filling
|
||||||
#include "TASPolyUtils.c"
|
#include "TASPolyUtils.c"
|
||||||
|
|
||||||
@@ -2595,11 +2597,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
|
@@ -2620,11 +2622,88 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
|
||||||
// This is for backward compatibility...
|
// This is for backward compatibility...
|
||||||
if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1);
|
if (fn.Last('/') == 0) fn = fn(1, fn.Length() - 1);
|
||||||
|
|
||||||
|
|
@ -170,7 +169,7 @@ index 7e046f4724..137265bd4a 100644
|
||||||
|
|
||||||
if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) {
|
if (fn.EndsWith(".pfa") || fn.EndsWith(".PFA") || fn.EndsWith(".pfb") || fn.EndsWith(".PFB") || fn.EndsWith(".ttf") || fn.EndsWith(".TTF") || fn.EndsWith(".otf") || fn.EndsWith(".OTF")) {
|
||||||
ttfont = kTRUE;
|
ttfont = kTRUE;
|
||||||
@@ -2623,7 +2702,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
|
@@ -2648,7 +2727,7 @@ void TASImage::DrawText(Int_t x, Int_t y, const char *text, Int_t size,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -180,7 +179,7 @@ index 7e046f4724..137265bd4a 100644
|
||||||
if (!font) {
|
if (!font) {
|
||||||
font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho);
|
font = get_asfont(gFontManager, "fixed", 0, size, ASF_GuessWho);
|
||||||
diff --git a/graf2d/graf/CMakeLists.txt b/graf2d/graf/CMakeLists.txt
|
diff --git a/graf2d/graf/CMakeLists.txt b/graf2d/graf/CMakeLists.txt
|
||||||
index d7d1b77c21..c4ebb994a4 100644
|
index d7d1b77c21a..c4ebb994a4a 100644
|
||||||
--- a/graf2d/graf/CMakeLists.txt
|
--- a/graf2d/graf/CMakeLists.txt
|
||||||
+++ b/graf2d/graf/CMakeLists.txt
|
+++ b/graf2d/graf/CMakeLists.txt
|
||||||
@@ -91,6 +91,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Graf
|
@@ -91,6 +91,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Graf
|
||||||
|
|
@ -192,7 +191,7 @@ index d7d1b77c21..c4ebb994a4 100644
|
||||||
Hist
|
Hist
|
||||||
Matrix
|
Matrix
|
||||||
diff --git a/graf2d/graf/inc/TTF.h b/graf2d/graf/inc/TTF.h
|
diff --git a/graf2d/graf/inc/TTF.h b/graf2d/graf/inc/TTF.h
|
||||||
index 0bef9dcb95..ea96fe47ce 100644
|
index 864ce06b4f0..050796d1ded 100644
|
||||||
--- a/graf2d/graf/inc/TTF.h
|
--- a/graf2d/graf/inc/TTF.h
|
||||||
+++ b/graf2d/graf/inc/TTF.h
|
+++ b/graf2d/graf/inc/TTF.h
|
||||||
@@ -76,9 +76,10 @@ protected:
|
@@ -76,9 +76,10 @@ protected:
|
||||||
|
|
@ -208,7 +207,7 @@ index 0bef9dcb95..ea96fe47ce 100644
|
||||||
static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs
|
static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs
|
||||||
static Bool_t fgHinting; ///< use hinting (true by default)
|
static Bool_t fgHinting; ///< use hinting (true by default)
|
||||||
diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx
|
diff --git a/graf2d/graf/src/TTF.cxx b/graf2d/graf/src/TTF.cxx
|
||||||
index ca38ed1f9c..8f1d62686b 100644
|
index 758bb98c192..c90d0ac70a9 100644
|
||||||
--- a/graf2d/graf/src/TTF.cxx
|
--- a/graf2d/graf/src/TTF.cxx
|
||||||
+++ b/graf2d/graf/src/TTF.cxx
|
+++ b/graf2d/graf/src/TTF.cxx
|
||||||
@@ -25,6 +25,8 @@ Interface to the freetype 2 library.
|
@@ -25,6 +25,8 @@ Interface to the freetype 2 library.
|
||||||
|
|
@ -233,7 +232,7 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
FT_Matrix *TTF::fgRotMatrix = nullptr;
|
FT_Matrix *TTF::fgRotMatrix = nullptr;
|
||||||
FT_Library TTF::fgLibrary;
|
FT_Library TTF::fgLibrary;
|
||||||
FT_BBox TTF::fgCBox;
|
FT_BBox TTF::fgCBox;
|
||||||
@@ -72,6 +75,11 @@ void TTF::Init()
|
@@ -71,6 +74,11 @@ void TTF::Init()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -245,7 +244,7 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
// load default font (arialbd)
|
// load default font (arialbd)
|
||||||
SetTextFont(62);
|
SetTextFont(62);
|
||||||
}
|
}
|
||||||
@@ -109,12 +117,15 @@ Short_t TTF::CharToUnicode(UInt_t code)
|
@@ -108,12 +116,15 @@ Short_t TTF::CharToUnicode(UInt_t code)
|
||||||
charmap = fgFace[fgCurFontIdx]->charmaps[i];
|
charmap = fgFace[fgCurFontIdx]->charmaps[i];
|
||||||
platform = charmap->platform_id;
|
platform = charmap->platform_id;
|
||||||
encoding = charmap->encoding_id;
|
encoding = charmap->encoding_id;
|
||||||
|
|
@ -265,7 +264,7 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
{
|
{
|
||||||
fgCharMap[fgCurFontIdx] = charmap;
|
fgCharMap[fgCurFontIdx] = charmap;
|
||||||
if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx]))
|
if (FT_Set_Charmap(fgFace[fgCurFontIdx], fgCharMap[fgCurFontIdx]))
|
||||||
@@ -387,21 +398,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
@@ -392,21 +403,145 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
||||||
}
|
}
|
||||||
const char *basename = gSystem->BaseName(fontname);
|
const char *basename = gSystem->BaseName(fontname);
|
||||||
|
|
||||||
|
|
@ -423,7 +422,7 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,28 +546,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
@@ -416,28 +551,13 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
||||||
kTTMaxFonts);
|
kTTMaxFonts);
|
||||||
Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
|
Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
|
||||||
fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
|
fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
|
||||||
|
|
@ -437,7 +436,7 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
|
- char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
|
||||||
-
|
-
|
||||||
- if (!ttfont) {
|
- if (!ttfont) {
|
||||||
- Error("TTF::SetTextFont", "font file %s not found in path", fontname);
|
- Error("TTF::SetTextFont", "font file %s not found in path %s", fontname, ttpath);
|
||||||
- if (fgFontCount) {
|
- if (fgFontCount) {
|
||||||
- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
|
- Warning("TTF::SetTextFont", "using default font %s", fgFontName[0]);
|
||||||
- fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
|
- fgCurFontIdx = 0; // use font 0 (default font, set in ctor)
|
||||||
|
|
@ -454,9 +453,12 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
Error("TTF::SetTextFont", "error loading font %s", ttfont);
|
Error("TTF::SetTextFont", "error loading font %s", ttfont);
|
||||||
delete [] ttfont;
|
delete [] ttfont;
|
||||||
if (tface) FT_Done_Face(tface);
|
if (tface) FT_Done_Face(tface);
|
||||||
@@ -448,19 +568,20 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
@@ -450,24 +570,25 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
||||||
delete [] ttfont;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- delete [] ttfont;
|
||||||
|
-
|
||||||
fgFontName[fgFontCount] = StrDup(basename);
|
fgFontName[fgFontCount] = StrDup(basename);
|
||||||
+ fgFontIdx[fgFontCount] = ttindex;
|
+ fgFontIdx[fgFontCount] = ttindex;
|
||||||
+ fgFontIta[fgFontCount] = italic;
|
+ fgFontIta[fgFontCount] = italic;
|
||||||
|
|
@ -477,8 +479,12 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
+ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr );
|
+ FT_Set_Transform( fgFace[fgCurFontIdx], &slantMat, nullptr );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ delete [] ttfont;
|
||||||
|
+
|
||||||
return 0;
|
return 0;
|
||||||
@@ -489,70 +610,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
}
|
||||||
|
|
||||||
|
@@ -494,70 +615,50 @@ Int_t TTF::SetTextFont(const char *fontname, Int_t italic)
|
||||||
|
|
||||||
void TTF::SetTextFont(Font_t fontnumber)
|
void TTF::SetTextFont(Font_t fontnumber)
|
||||||
{
|
{
|
||||||
|
|
@ -588,7 +594,7 @@ index ca38ed1f9c..8f1d62686b 100644
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
diff --git a/graf2d/postscript/CMakeLists.txt b/graf2d/postscript/CMakeLists.txt
|
diff --git a/graf2d/postscript/CMakeLists.txt b/graf2d/postscript/CMakeLists.txt
|
||||||
index eb091bbb39..a05023a3f4 100644
|
index eb091bbb396..a05023a3f41 100644
|
||||||
--- a/graf2d/postscript/CMakeLists.txt
|
--- a/graf2d/postscript/CMakeLists.txt
|
||||||
+++ b/graf2d/postscript/CMakeLists.txt
|
+++ b/graf2d/postscript/CMakeLists.txt
|
||||||
@@ -27,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Postscript
|
@@ -27,6 +27,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Postscript
|
||||||
|
|
@ -600,7 +606,7 @@ index eb091bbb39..a05023a3f4 100644
|
||||||
Graf
|
Graf
|
||||||
)
|
)
|
||||||
diff --git a/graf2d/postscript/src/TPostScript.cxx b/graf2d/postscript/src/TPostScript.cxx
|
diff --git a/graf2d/postscript/src/TPostScript.cxx b/graf2d/postscript/src/TPostScript.cxx
|
||||||
index 09ea7ffa9c..180fd5e3c1 100644
|
index df9e3ae16ea..1e353e1ca53 100644
|
||||||
--- a/graf2d/postscript/src/TPostScript.cxx
|
--- a/graf2d/postscript/src/TPostScript.cxx
|
||||||
+++ b/graf2d/postscript/src/TPostScript.cxx
|
+++ b/graf2d/postscript/src/TPostScript.cxx
|
||||||
@@ -234,6 +234,7 @@ To change the color model use `gStyle->SetColorModelPS(c)`.
|
@@ -234,6 +234,7 @@ To change the color model use `gStyle->SetColorModelPS(c)`.
|
||||||
|
|
@ -611,7 +617,7 @@ index 09ea7ffa9c..180fd5e3c1 100644
|
||||||
|
|
||||||
#include "strlcpy.h"
|
#include "strlcpy.h"
|
||||||
#include "snprintf.h"
|
#include "snprintf.h"
|
||||||
@@ -1585,56 +1586,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename)
|
@@ -1584,56 +1585,60 @@ Bool_t TPostScript::FontEmbedType42(const char *filename)
|
||||||
|
|
||||||
void TPostScript::FontEmbed(void)
|
void TPostScript::FontEmbed(void)
|
||||||
{
|
{
|
||||||
|
|
@ -715,7 +721,7 @@ index 09ea7ffa9c..180fd5e3c1 100644
|
||||||
} else {
|
} else {
|
||||||
if (FontEmbedType2(ttfont)) {
|
if (FontEmbedType2(ttfont)) {
|
||||||
// nothing
|
// nothing
|
||||||
@@ -1643,12 +1648,13 @@ void TPostScript::FontEmbed(void)
|
@@ -1642,12 +1647,13 @@ void TPostScript::FontEmbed(void)
|
||||||
} else if(FontEmbedType42(ttfont)) {
|
} else if(FontEmbedType42(ttfont)) {
|
||||||
// nothing
|
// nothing
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -733,7 +739,7 @@ index 09ea7ffa9c..180fd5e3c1 100644
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PrintStr("%%IncludeResource: font Times-Roman@");
|
PrintStr("%%IncludeResource: font Times-Roman@");
|
||||||
@@ -2837,10 +2843,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars)
|
@@ -2836,10 +2842,10 @@ void TPostScript::Text(Double_t xx, Double_t yy, const wchar_t *chars)
|
||||||
{ "Root.PSFont.9", "/FreeMonoOblique" },
|
{ "Root.PSFont.9", "/FreeMonoOblique" },
|
||||||
{ "Root.PSFont.10", "/FreeMonoBold" },
|
{ "Root.PSFont.10", "/FreeMonoBold" },
|
||||||
{ "Root.PSFont.11", "/FreeMonoBoldOblique" },
|
{ "Root.PSFont.11", "/FreeMonoBoldOblique" },
|
||||||
|
|
@ -748,10 +754,10 @@ index 09ea7ffa9c..180fd5e3c1 100644
|
||||||
{ "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" },
|
{ "Root.PSFont.STIXGenIt", "/STIXGeneral-Italic" },
|
||||||
{ "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" },
|
{ "Root.PSFont.STIXGenBd", "/STIXGeneral-Bold" },
|
||||||
diff --git a/graf3d/gl/CMakeLists.txt b/graf3d/gl/CMakeLists.txt
|
diff --git a/graf3d/gl/CMakeLists.txt b/graf3d/gl/CMakeLists.txt
|
||||||
index a874da9e1d..5454469606 100644
|
index e759473ca0f..c453397fc52 100644
|
||||||
--- a/graf3d/gl/CMakeLists.txt
|
--- a/graf3d/gl/CMakeLists.txt
|
||||||
+++ b/graf3d/gl/CMakeLists.txt
|
+++ b/graf3d/gl/CMakeLists.txt
|
||||||
@@ -208,6 +208,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL
|
@@ -211,6 +211,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(RGL
|
||||||
${GL2PS_LIBRARIES}
|
${GL2PS_LIBRARIES}
|
||||||
${X11_LIBRARIES}
|
${X11_LIBRARIES}
|
||||||
RGlew
|
RGlew
|
||||||
|
|
@ -760,7 +766,7 @@ index a874da9e1d..5454469606 100644
|
||||||
Hist
|
Hist
|
||||||
Gui
|
Gui
|
||||||
diff --git a/graf3d/gl/src/TGLFontManager.cxx b/graf3d/gl/src/TGLFontManager.cxx
|
diff --git a/graf3d/gl/src/TGLFontManager.cxx b/graf3d/gl/src/TGLFontManager.cxx
|
||||||
index 776e9d286f..c4134c5980 100644
|
index 58ea1188d59..647642de615 100644
|
||||||
--- a/graf3d/gl/src/TGLFontManager.cxx
|
--- a/graf3d/gl/src/TGLFontManager.cxx
|
||||||
+++ b/graf3d/gl/src/TGLFontManager.cxx
|
+++ b/graf3d/gl/src/TGLFontManager.cxx
|
||||||
@@ -36,6 +36,7 @@
|
@@ -36,6 +36,7 @@
|
||||||
|
|
@ -771,7 +777,7 @@ index 776e9d286f..c4134c5980 100644
|
||||||
|
|
||||||
/** \class TGLFont
|
/** \class TGLFont
|
||||||
\ingroup opengl
|
\ingroup opengl
|
||||||
@@ -450,16 +451,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod
|
@@ -448,16 +449,120 @@ void TGLFontManager::RegisterFont(Int_t sizeIn, Int_t fileID, TGLFont::EMode mod
|
||||||
FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode));
|
FontMap_i it = fFontMap.find(TGLFont(size, fileID, mode));
|
||||||
if (it == fFontMap.end())
|
if (it == fFontMap.end())
|
||||||
{
|
{
|
||||||
|
|
@ -902,7 +908,7 @@ index 776e9d286f..c4134c5980 100644
|
||||||
FTFont* ftfont = 0;
|
FTFont* ftfont = 0;
|
||||||
switch (mode)
|
switch (mode)
|
||||||
diff --git a/graf3d/gl/src/TGLText.cxx b/graf3d/gl/src/TGLText.cxx
|
diff --git a/graf3d/gl/src/TGLText.cxx b/graf3d/gl/src/TGLText.cxx
|
||||||
index f84f5193d2..8a672c787c 100644
|
index 2ed3ee0917a..03feb0ee0a4 100644
|
||||||
--- a/graf3d/gl/src/TGLText.cxx
|
--- a/graf3d/gl/src/TGLText.cxx
|
||||||
+++ b/graf3d/gl/src/TGLText.cxx
|
+++ b/graf3d/gl/src/TGLText.cxx
|
||||||
@@ -32,6 +32,8 @@
|
@@ -32,6 +32,8 @@
|
||||||
|
|
@ -914,7 +920,7 @@ index f84f5193d2..8a672c787c 100644
|
||||||
#define FTGL_BITMAP 0
|
#define FTGL_BITMAP 0
|
||||||
#define FTGL_PIXMAP 1
|
#define FTGL_PIXMAP 1
|
||||||
#define FTGL_OUTLINE 2
|
#define FTGL_OUTLINE 2
|
||||||
@@ -176,27 +178,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
|
@@ -175,27 +177,35 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
|
||||||
{
|
{
|
||||||
int fontid = fontnumber / 10;
|
int fontid = fontnumber / 10;
|
||||||
|
|
||||||
|
|
@ -971,7 +977,7 @@ index f84f5193d2..8a672c787c 100644
|
||||||
|
|
||||||
if (fGLTextFont) delete fGLTextFont;
|
if (fGLTextFont) delete fGLTextFont;
|
||||||
|
|
||||||
@@ -204,7 +214,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
|
@@ -203,7 +213,9 @@ void TGLText::SetGLTextFont(Font_t fontnumber)
|
||||||
|
|
||||||
fGLTextFont = new FTGLPolygonFont(ttfont);
|
fGLTextFont = new FTGLPolygonFont(ttfont);
|
||||||
|
|
||||||
|
|
@ -982,32 +988,6 @@ index f84f5193d2..8a672c787c 100644
|
||||||
Error("SetGLTextFont","Cannot set FTGL::FaceSize");
|
Error("SetGLTextFont","Cannot set FTGL::FaceSize");
|
||||||
- delete [] ttfont;
|
- delete [] ttfont;
|
||||||
}
|
}
|
||||||
diff --git a/gui/gui/src/TGApplication.cxx b/gui/gui/src/TGApplication.cxx
|
|
||||||
index 72d7dbbf95..73a44fdd7f 100644
|
|
||||||
--- a/gui/gui/src/TGApplication.cxx
|
|
||||||
+++ b/gui/gui/src/TGApplication.cxx
|
|
||||||
@@ -81,20 +81,12 @@ TGApplication::TGApplication(const char *appClassName,
|
|
||||||
gROOT->SetBatch(kFALSE);
|
|
||||||
|
|
||||||
if (strcmp(appClassName, "proofserv")) {
|
|
||||||
- const char *ttpath = gEnv->GetValue("Root.TTFontPath",
|
|
||||||
- TROOT::GetTTFFontDir());
|
|
||||||
- char *ttfont = gSystem->Which(ttpath, "arialbd.ttf", kReadPermission);
|
|
||||||
- // Added by cholm for use of DFSG - fonts - based on fix by Kevin
|
|
||||||
- if (!ttfont)
|
|
||||||
- ttfont = gSystem->Which(ttpath, "FreeSansBold.ttf", kReadPermission);
|
|
||||||
- if (ttfont && gEnv->GetValue("Root.UseTTFonts", 1)) {
|
|
||||||
+ if (gEnv->GetValue("Root.UseTTFonts", 1)) {
|
|
||||||
TPluginHandler *h;
|
|
||||||
if ((h = gROOT->GetPluginManager()->FindHandler("TVirtualX", "x11ttf")))
|
|
||||||
if (h->LoadPlugin() == -1)
|
|
||||||
Info("TGApplication", "no TTF support");
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- delete [] ttfont;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the canvas colors early so they are allocated before
|
|
||||||
--
|
--
|
||||||
2.45.0
|
2.52.0
|
||||||
|
|
||||||
|
|
|
||||||
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,16 +1,53 @@
|
||||||
--- root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-28 06:06:46.000000000 +0200
|
From b4e57c8ccd59d69fe61fa5f6470b3a99ba52aeeb Mon Sep 17 00:00:00 2001
|
||||||
+++ root-6.32.00/bindings/pyroot/pythonizations/CMakeLists.txt 2024-05-29 09:47:08.960324940 +0200
|
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
||||||
@@ -189,11 +189,10 @@
|
Date: Thu, 4 Dec 2025 23:13:28 +0100
|
||||||
# Create meta-target PyROOT3 (INTERFACE library)
|
Subject: [PATCH] Dont export Python modules
|
||||||
# Export of targets are not supported for custom targets(add_custom_targets())
|
|
||||||
add_library(PyROOT INTERFACE)
|
---
|
||||||
|
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(TARGETS cppyy EXPORT ${CMAKE_PROJECT_NAME}Exports
|
||||||
|
- RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries # Windows
|
||||||
|
+install(TARGETS cppyy RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries # Windows
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries)
|
||||||
|
|
||||||
|
diff --git a/bindings/pyroot/pythonizations/CMakeLists.txt b/bindings/pyroot/pythonizations/CMakeLists.txt
|
||||||
|
index 1230f18ca47..2df4b733320 100644
|
||||||
|
--- a/bindings/pyroot/pythonizations/CMakeLists.txt
|
||||||
|
+++ b/bindings/pyroot/pythonizations/CMakeLists.txt
|
||||||
|
@@ -202,11 +202,6 @@ foreach(py_source ${py_sources})
|
||||||
|
COMMENT "Compiling PyROOT source ${py_source} for Python ${Python3_VERSION}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
-# Create meta-target PyROOT3 (INTERFACE library)
|
||||||
|
-# Export of targets are not supported for custom targets(add_custom_targets())
|
||||||
|
-add_library(PyROOT INTERFACE)
|
||||||
-target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations)
|
-target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy ROOTPythonizations)
|
||||||
+target_link_libraries(PyROOT INTERFACE cppyy_backend cppyy)
|
-
|
||||||
|
# Define library output directories for build and install trees
|
||||||
|
set(pymoduledir_build "${localruntimedir}/ROOT")
|
||||||
|
set(pymoduledir_install "${CMAKE_INSTALL_PYTHONDIR}/ROOT")
|
||||||
|
@@ -231,8 +226,7 @@ if(NOT MSVC)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Install library
|
# Install library
|
||||||
-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
|
-install(TARGETS ${libname} EXPORT ${CMAKE_PROJECT_NAME}Exports
|
||||||
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
|
- RUNTIME DESTINATION ${pymoduledir_install} COMPONENT libraries
|
||||||
+install(TARGETS ${libname} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
|
+install(TARGETS ${libname} RUNTIME DESTINATION ${pymoduledir_install} COMPONENT libraries
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
|
LIBRARY DESTINATION ${pymoduledir_install} COMPONENT libraries
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
|
ARCHIVE DESTINATION ${pymoduledir_install} COMPONENT libraries)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.52.0
|
||||||
|
|
||||||
|
|
|
||||||
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
|
||||||
|
|
||||||
4
sources
4
sources
|
|
@ -1,3 +1,3 @@
|
||||||
SHA512 (root-6.36.04.tar.xz) = d8798d777f308e59ebb3429323895757ca9538499dbb1989d70b3a01c2122b2a01911b0e7da673d7a9fc40acd49fdbf6a5b4341266c1b68a8a88d9f904e7919b
|
SHA512 (root-6.38.00.tar.xz) = 7c452b509e8171a0cbb7c102a3d4c07333fc8535f1b2c2ab0b9f7434604f098989a78bb71c41039dd41dbbd3438ea8703939826092f075d9d730b6b53c84ac55
|
||||||
SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670
|
SHA512 (root-testfiles.tar.xz) = 4bb7f8ca00b1427ba49f6428e9cfe5908a2ffdd2ce4134d3bc169a0629198352b5500fe0cf92c121d148e5af41f7016c96038a77794a4d37d94e6ec0a9d75670
|
||||||
SHA512 (clad-1.9.tar.gz) = df0569f12e3381e9285639eee927d9effb2812765caad2d281c41f6673828ab28b7bf8143ae9686090649cf889e757cfead58baa47e907de468185125a4d772c
|
SHA512 (clad-2.2.tar.gz) = 6f76d706a829901fc0fcdb38b5ddad6ea8ad9186ea48a4b6b585fc62974a2cda11b96a448c25daaba0586962d6428773e7ab751236c6afa72a91d12f30f2d05e
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue