Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Iñaki Úcar
108e712edc R-maint-sig mass rebuild 2025-04-19 18:53:41 +02:00
Mattias Ellert
03696fac62 Update to 6.30.08
Fixes for TUri class (PCRE2 compatibility)
Update ROOT's R interface for Rcpp 1.0.13
2024-07-23 01:46:15 +02:00
12 changed files with 751 additions and 25 deletions

View file

@ -0,0 +1,42 @@
From defef44f15aebc5eca9e34df767f3f92688d594c Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Thu, 4 Jul 2024 18:21:06 +0200
Subject: [PATCH 2/2] [core] Correct the regular expression for the scheme part
in TUri class
RFC 3986 (https://datatracker.ietf.org/doc/html/rfc3986) defines the
scheme part of a URI as:
scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
The regular expression for finding the scheme part in the TUri class
was defined as
^[[:alpha:]][[:alpha:][:digit:]+-.]*$
This does not match the definition in the RFC, since +-. in regular
expression syntax is the range of ascii codes from '+' to '.', which
means '+', ',', '-' and '.'. I.e. the ',' is included in the regular
expression in error. This commit adds a backslash escape to the '-' so
that it is interpreted as a literal '-' sign instead of indicating a
range in the regular expression.
---
core/base/src/TUri.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/base/src/TUri.cxx b/core/base/src/TUri.cxx
index 9660470556..b324d0ffea 100644
--- a/core/base/src/TUri.cxx
+++ b/core/base/src/TUri.cxx
@@ -270,7 +270,7 @@ Bool_t TUri::SetScheme(const TString &scheme)
Bool_t TUri::IsScheme(const TString &string)
{
return TPRegexp(
- "^[[:alpha:]][[:alpha:][:digit:]+-.]*$"
+ "^[[:alpha:]][[:alpha:][:digit:]+\\-.]*$"
).Match(string);
}
--
2.45.2

View file

@ -0,0 +1,68 @@
From 638593e77b76895db85470a3303d5fe0366e8ec4 Mon Sep 17 00:00:00 2001
From: scott snyder <snyder@bnl.gov>
Date: Wed, 6 Mar 2024 04:06:50 +0100
Subject: [PATCH] Fix writing long strings.
In TBufferFile::WriteFastArrayString, we had
```
if (n < 255) {
*this << (UChar_t)n;
} else {
*this << (UChar_t)255;
*this << n;
}
```
A recent commit changed the type of the n parameter from Int_t to Long64_t.
This is effectively an incompatible change in the on-disk format, but only for strings
which are at least 255 characters long.
Further, ReadFastArrayString is still reading an Int_t, so this version of ROOT cannot
read files that it writes.
Resolve by changing WriteFastArrayString to explicitly write an Int_t.
Also move the bounds check on the length to before writing anything into the buffer.
Fixes a failure seen in the unit tests of the ATLAS EventInfo package
in the dev3LCG build.
---
io/io/src/TBufferFile.cxx | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx
index 7b1fe370bb..81e0f95e02 100644
--- a/io/io/src/TBufferFile.cxx
+++ b/io/io/src/TBufferFile.cxx
@@ -1995,13 +1995,6 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
{
- if (n < 255) {
- *this << (UChar_t)n;
- } else {
- *this << (UChar_t)255;
- *this << n;
- }
-
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Char_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2010,6 +2003,13 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
return; // In case the user re-routes the error handler to not die when Fatal is called
}
+ if (n < 255) {
+ *this << (UChar_t)n;
+ } else {
+ *this << (UChar_t)255;
+ *this << (Int_t)n;
+ }
+
Int_t l = sizeof(Char_t)*n;
if (fBufCur + l > fBufMax) AutoExpand(fBufSize+l);
--
2.45.2

View file

@ -0,0 +1,56 @@
From 9f696986449451d9df951891eb930231e718989b Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Thu, 4 Jul 2024 18:08:32 +0200
Subject: [PATCH 1/2] [core] Make TUri class PCRE2 compatible
PCRE2 has a stricter regular expression syntax parsing than PCRE.
Some non-conforming regular expressions that were accepted by PCRE are
correcrly rejected by PCRE2.
Some of the regular expressions used by the TUri class do not follow
the syntax rules and were relying on them being acceped by PCRE
anyway. This commit corrects the syntax of these expressions so that
they are now accepted by PCRE2. The corrected expressions still work
correctly with the old PCRE.
---
core/base/src/TUri.cxx | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/core/base/src/TUri.cxx b/core/base/src/TUri.cxx
index 04aab1edb3..9660470556 100644
--- a/core/base/src/TUri.cxx
+++ b/core/base/src/TUri.cxx
@@ -27,10 +27,10 @@ a validating parser.
//RFC3986:
// pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
-const char* const kURI_pchar = "(?:[[:alpha:][:digit:]-._~!$&'()*+,;=:@]|%[0-9A-Fa-f][0-9A-Fa-f])";
+const char* const kURI_pchar = "(?:[[:alpha:][:digit:]\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f][0-9A-Fa-f])";
//unreserved characters, see chapter 2.3
-const char* const kURI_unreserved = "[[:alpha:][:digit:]-._~]";
+const char* const kURI_unreserved = "[[:alpha:][:digit:]\\-._~]";
// reserved characters, see chapter
// reserved = gen-delims / sub-delims
@@ -900,7 +900,7 @@ Bool_t TUri::IsPathAbsolute(const TString &string)
Bool_t TUri::IsPathNoscheme(const TString &string)
{
return (TPRegexp(
- TString("^(([[:alpha:][:digit:]-._~!$&'()*+,;=@]|%[0-9A-Fa-f][0-9A-Fa-f])+)(/") + TString(kURI_pchar) + "*)*$"
+ TString("^(([[:alpha:][:digit:]\\-._~!$&'()*+,;=@]|%[0-9A-Fa-f][0-9A-Fa-f])+)(/") + TString(kURI_pchar) + "*)*$"
).Match(string) > 0);
}
@@ -950,7 +950,7 @@ Bool_t TUri::IsPort(const TString &string)
Bool_t TUri::IsRegName(const TString &string)
{
return (TPRegexp(
- "^([[:alpha:][:digit:]-._~!$&'()*+,;=]|%[0-9A-Fa-f][0-9A-Fa-f])*$").Match(string) > 0);
+ "^([[:alpha:][:digit:]\\-._~!$&'()*+,;=]|%[0-9A-Fa-f][0-9A-Fa-f])*$").Match(string) > 0);
}
////////////////////////////////////////////////////////////////////////////////
--
2.45.2

View file

@ -0,0 +1,40 @@
From 8dc4654de6d569e5040313065fd5cd04d651fb92 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Fri, 12 Jul 2024 00:20:04 +0200
Subject: [PATCH] [pyroot] Whitelist libtbbmalloc in library import test
6/1344 Test #12: pyunittests-pyroot-import-load-libs .......................................***Failed 1.35 sec
test_import (import_load_libs.ImportLoadLibs.test_import)
Test libraries loaded after importing ROOT ... ERROR
======================================================================
ERROR: test_import (import_load_libs.ImportLoadLibs.test_import)
Test libraries loaded after importing ROOT
----------------------------------------------------------------------
Exception: Found not whitelisted libraries after importing ROOT:
- libtbbmalloc
If the test fails with a library that is loaded on purpose, please add it to the whitelist.
----------------------------------------------------------------------
Ran 1 test in 1.186s
FAILED (errors=1)
This failure is seen in Fedora 41 after tbb was updated from version
2021.11.0 to version 2021.13.0 in the distribution.
---
bindings/pyroot/pythonizations/test/import_load_libs.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py
index 179c76f6fd..c370a3cd42 100644
--- a/bindings/pyroot/pythonizations/test/import_load_libs.py
+++ b/bindings/pyroot/pythonizations/test/import_load_libs.py
@@ -40,6 +40,7 @@ class ImportLoadLibs(unittest.TestCase):
'libssl',
'libcrypt.*', # by libssl
'libtbb',
+ 'libtbbmalloc',
'liburing', # by libRIO if uring option is enabled
# On centos7 libssl links against kerberos pulling in all dependencies below, removed with libssl1.1.0
'libgssapi_krb5',
--
2.45.2

View file

@ -0,0 +1,30 @@
From 6952dd5ca51e7be8a8ae74b446ac268949f5f383 Mon Sep 17 00:00:00 2001
From: Sergey Linev <S.Linev@gsi.de>
Date: Mon, 10 Jun 2024 09:19:47 +0200
Subject: [PATCH] [http] Allow to use any of openssl 3.x with civetweb
civetweb was designed when only openssl 3.0 was existing.
Therefore name of define is `OPENSSL_API_3_0`
Meanwhile there is openssl 3.1 and 3.2.
While seems to be there is no changes in API both can
be used with civetweb.
---
net/http/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/http/CMakeLists.txt b/net/http/CMakeLists.txt
index 02d7514400..6ef98a604b 100644
--- a/net/http/CMakeLists.txt
+++ b/net/http/CMakeLists.txt
@@ -78,7 +78,7 @@ if(ssl)
MESSAGE(STATUS "Use SSL API VERSION 1.1 for civetweb")
target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_1_1)
set(link_ssl ON)
- elseif((${ssl_major} EQUAL "3") AND ((${ssl_minor} EQUAL "0") OR (${ssl_minor} EQUAL "1")))
+ elseif(${ssl_major} EQUAL "3")
MESSAGE(STATUS "Use SSL API VERSION 3.${ssl_minor} for civetweb")
target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_3_0)
set(link_ssl ON)
--
2.45.2

133
root-fix-typo.patch Normal file
View file

@ -0,0 +1,133 @@
From 1df0dc67beb8053926f39b69e4a4393322de63ed Mon Sep 17 00:00:00 2001
From: ferdymercury <ferdymercury@users.noreply.github.com>
Date: Sun, 25 Feb 2024 18:36:40 +0100
Subject: [PATCH] [skip-ci] fix typo
---
io/io/src/TBufferFile.cxx | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx
index 8d2f36cfc9..7b1fe370bb 100644
--- a/io/io/src/TBufferFile.cxx
+++ b/io/io/src/TBufferFile.cxx
@@ -1953,7 +1953,7 @@ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(UChar_t)*n;
@@ -1979,7 +1979,7 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Char_t)*n;
@@ -2007,7 +2007,7 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Char_t)*n;
@@ -2028,7 +2028,7 @@ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Short_t)*n;
@@ -2060,7 +2060,7 @@ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Int_t)*n;
@@ -2091,7 +2091,7 @@ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = 8*n;
@@ -2113,7 +2113,7 @@ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = 8*n;
@@ -2133,7 +2133,7 @@ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Long64_t)*n;
@@ -2159,7 +2159,7 @@ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Float_t)*n;
@@ -2190,7 +2190,7 @@ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n)
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Double_t)*n;
@@ -2217,7 +2217,7 @@ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerE
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Float_t)*n;
@@ -2275,7 +2275,7 @@ void TBufferFile::WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreame
if (n < 0 || n > maxElements)
{
Fatal("WriteFastArray", "Not enough space left in the buffer (1GB limit). %lld elements is greater than the max left of %d", n, maxElements);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
Int_t l = sizeof(Float_t)*n;
@@ -2346,7 +2346,7 @@ void TBufferFile::WriteFastArray(void *start, const TClass *cl, Long64_t n,
else if (n < 0)
{
Fatal("WriteFastArray", "Negative number of elements %lld", n);
- return; // In case the user re-route the error handler to not die when Fatal is called
+ return; // In case the user re-routes the error handler to not die when Fatal is called
}
int size = cl->Size();
--
2.45.2

View file

@ -0,0 +1,73 @@
From 8592c5e065b8cf46480f5a1efe0363fcf2150551 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 4 Jun 2024 08:47:04 +0200
Subject: [PATCH] Correct format - warnings seen on 32 bit architectures
---
core/clib/src/mmapsup.c | 2 +-
roofit/xroofit/src/xRooNode.cxx | 2 +-
tree/dataframe/src/RDFDisplay.cxx | 4 ++--
tree/dataframe/src/RDFHelpers.cxx | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/core/clib/src/mmapsup.c b/core/clib/src/mmapsup.c
index 81f68a2059..da46dc7ba5 100644
--- a/core/clib/src/mmapsup.c
+++ b/core/clib/src/mmapsup.c
@@ -174,7 +174,7 @@ PTR __mmalloc_mmap_morecore(struct mdesc *mdp, int size)
if (mdp -> top != PAGE_ALIGN(mdp -> top)) {
fprintf(stderr,
"mmap_morecore error: base memory location (%p) is not aligned with %zu as required.\n",
- mdp -> top, (long)pagesize);
+ mdp -> top, pagesize);
return result;
}
mapto = mmap (mdp -> top, mapbytes, PROT_READ | PROT_WRITE,
diff --git a/roofit/xroofit/src/xRooNode.cxx b/roofit/xroofit/src/xRooNode.cxx
index f8c96fbf62..852e6997c0 100644
--- a/roofit/xroofit/src/xRooNode.cxx
+++ b/roofit/xroofit/src/xRooNode.cxx
@@ -11075,7 +11075,7 @@ std::string cling::printValue(const xRooNode *v)
if(!out.empty()) out += ","; else out += "{";
out += n->GetName();
if(out.length()>100 && left > 0) {
- out += TString::Format(",... and %lu more",left);
+ out += TString::Format(",... and %zu more",left);
break;
}
}
diff --git a/tree/dataframe/src/RDFDisplay.cxx b/tree/dataframe/src/RDFDisplay.cxx
index 9dc555fc1d..2ef7de7ddc 100644
--- a/tree/dataframe/src/RDFDisplay.cxx
+++ b/tree/dataframe/src/RDFDisplay.cxx
@@ -232,12 +232,12 @@ void RDisplay::Print() const
// Thus, the first column is only the Row column and the actual first column is printed
columnsToPrint = 2;
}
- Info("Print", "Only showing %lu columns out of %lu\n", columnsToPrint, fNColumns);
+ Info("Print", "Only showing %zu columns out of %zu\n", columnsToPrint, fNColumns);
allColumnsFit = false;
}
if (fNMaxCollectionElements < 1)
- Info("Print", "No collections shown since fNMaxCollectionElements is %lu\n", fNMaxCollectionElements);
+ Info("Print", "No collections shown since fNMaxCollectionElements is %zu\n", fNMaxCollectionElements);
auto nrRows = fTable.size();
std::cout << DashesBetweenLines(columnsToPrint, allColumnsFit); // Print dashes in the top of the table
diff --git a/tree/dataframe/src/RDFHelpers.cxx b/tree/dataframe/src/RDFHelpers.cxx
index 4891454cc0..3490901b5d 100644
--- a/tree/dataframe/src/RDFHelpers.cxx
+++ b/tree/dataframe/src/RDFHelpers.cxx
@@ -74,7 +74,7 @@ unsigned int ROOT::RDF::RunGraphs(std::vector<RResultHandle> handles)
const unsigned int nToRun =
std::count_if(handles.begin(), handles.end(), [](const auto &h) { return !h.IsReady(); });
if (nToRun < handles.size()) {
- Warning("RunGraphs", "Got %lu handles from which %lu link to results which are already ready.", handles.size(),
+ Warning("RunGraphs", "Got %zu handles from which %zu link to results which are already ready.", handles.size(),
handles.size() - nToRun);
}
if (nToRun == 0u)
--
2.45.1

View file

@ -0,0 +1,62 @@
From 4d1486b95cd8c7850b12bd1777ea4463529f0b96 Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sat, 8 Jun 2024 17:08:48 +0200
Subject: [PATCH] [pyroot] Add __firstlineno__ and __static_attributes__ to
blacklist
For compatibility with Python 3.13
See: https://docs.python.org/3.13/whatsnew/3.13.html
From the above page:
* Classes have a new __firstlineno__ attribute, populated by the
compiler, with the line number of the first line of the class
definition. (Contributed by Serhiy Storchaka in gh-118465.)
* Classes have a new __static_attributes__ attribute, populated by the
compiler, with a tuple of names of attributes of this class which
are accessed through self.X from any function in its
body. (Contributed by Irit Katriel in gh-115775.)
Without adding the new attributes to the blacklist there are errors:
AttributeError: 'int' object attribute 'doc' is read-only
from the __firstlineno__ attribute.
AttributeError: 'tuple' object attribute 'doc' is read-only
from the __static_attributes__ attribute.
---
.../python/ROOT/_pythonization/_roofit/__init__.py | 2 +-
.../pythonizations/python/ROOT/_pythonization/_tmva/__init__.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py
index 83b3b69e3b..4ebd53736d 100644
--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py
+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_roofit/__init__.py
@@ -122,7 +122,7 @@ def get_defined_attributes(klass, consider_base_classes=False):
any of its base classes (except for `object`).
"""
- blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__"]
+ blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__", "__firstlineno__", "__static_attributes__"]
if not consider_base_classes:
return sorted([attr for attr in klass.__dict__.keys() if attr not in blacklist])
diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py
index b2dea5b541..72c210663d 100644
--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py
+++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_tmva/__init__.py
@@ -69,7 +69,7 @@ def get_defined_attributes(klass, consider_base_classes=False):
any of its base classes (except for `object`).
"""
- blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__"]
+ blacklist = ["__dict__", "__doc__", "__hash__", "__module__", "__weakref__", "__firstlineno__", "__static_attributes__"]
if not consider_base_classes:
return sorted([attr for attr in klass.__dict__.keys() if attr not in blacklist])
--
2.45.2

32
root-r.patch Normal file
View file

@ -0,0 +1,32 @@
From 141f62e800bfc54d2fdf76c0750dc6082d00910d Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Sun, 21 Jul 2024 23:09:54 +0200
Subject: [PATCH] Update ROOT's R interface for Rcpp 1.0.13
---
bindings/r/inc/TRInternalFunction.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/bindings/r/inc/TRInternalFunction.h b/bindings/r/inc/TRInternalFunction.h
index d9bf532205..fa77cbddbc 100644
--- a/bindings/r/inc/TRInternalFunction.h
+++ b/bindings/r/inc/TRInternalFunction.h
@@ -31,7 +31,15 @@ public:
RCPP_GENERATE_CTOR_ASSIGN(TRInternalFunction_Impl)
+#if RCPP_VERSION >= Rcpp_Version(1,0,13)
+ template <typename OUT, typename... T>
+ TRInternalFunction_Impl(OUT(*fun)(T...))
+ {
+ set(Rcpp::XPtr< Rcpp::CppFunctionN<OUT, T...> >(new Rcpp::CppFunctionN<OUT, T...>(fun), false));
+ }
+#else
#include <TRInternalFunction__ctors.h>
+#endif
void update(SEXP) {}
private:
--
2.45.2

125
root-write-array.patch Normal file
View file

@ -0,0 +1,125 @@
From a7be6f726b13a7ccf1c46dec35f53520781159df Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Fri, 7 Jun 2024 06:49:39 +0200
Subject: [PATCH] Put back check for n = 0
---
io/io/src/TBufferFile.cxx | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/io/io/src/TBufferFile.cxx b/io/io/src/TBufferFile.cxx
index 81e0f95e02..b5b7ef9831 100644
--- a/io/io/src/TBufferFile.cxx
+++ b/io/io/src/TBufferFile.cxx
@@ -1948,6 +1948,8 @@ void TBufferFile::WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElemen
void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(UChar_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -1974,6 +1976,8 @@ void TBufferFile::WriteFastArray(const Bool_t *b, Long64_t n)
void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Char_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -1995,6 +1999,8 @@ void TBufferFile::WriteFastArray(const Char_t *c, Long64_t n)
void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Char_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2023,6 +2029,8 @@ void TBufferFile::WriteFastArrayString(const Char_t *c, Long64_t n)
void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Short_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2054,7 +2062,8 @@ void TBufferFile::WriteFastArray(const Short_t *h, Long64_t n)
void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n)
{
-
+ if (n == 0) return;
+
constexpr Int_t dataWidth = 4;
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2086,6 +2095,8 @@ void TBufferFile::WriteFastArray(const Int_t *ii, Long64_t n)
void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = 8;
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2108,6 +2119,8 @@ void TBufferFile::WriteFastArray(const Long_t *ll, Long64_t n)
void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = 8;
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2128,6 +2141,8 @@ void TBufferFile::WriteFastArray(const ULong_t *ll, Long64_t n)
void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Long64_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2154,6 +2169,8 @@ void TBufferFile::WriteFastArray(const Long64_t *ll, Long64_t n)
void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2185,6 +2202,8 @@ void TBufferFile::WriteFastArray(const Float_t *f, Long64_t n)
void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Double_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2212,6 +2231,8 @@ void TBufferFile::WriteFastArray(const Double_t *d, Long64_t n)
void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerElement *ele)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
@@ -2270,6 +2291,8 @@ void TBufferFile::WriteFastArrayFloat16(const Float_t *f, Long64_t n, TStreamerE
void TBufferFile::WriteFastArrayDouble32(const Double_t *d, Long64_t n, TStreamerElement *ele)
{
+ if (n == 0) return;
+
constexpr Int_t dataWidth = static_cast<Int_t>(sizeof(Float_t));
const Int_t maxElements = (std::numeric_limits<Int_t>::max() - Length())/dataWidth;
if (n < 0 || n > maxElements)
--
2.45.2

113
root.spec
View file

@ -55,9 +55,9 @@
%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$
Name: root
Version: 6.30.06
Version: 6.30.08
%global libversion %(cut -d. -f 1-2 <<< %{version})
Release: 5%{?dist}
Release: 2%{?dist}
Summary: Numerical data analysis framework
License: LGPL-2.1-or-later
@ -120,6 +120,32 @@ Patch14: %{name}-np32.patch
Patch15: %{name}-new-zlib.patch
# Only for EPEL 8 - disable tests not working with old gtest
Patch16: %{name}-old-gtest.patch
# Backport from upstream
Patch17: %{name}-fix-typo.patch
Patch18: %{name}-Fix-writing-long-strings.patch
# Avoid segmentation fault on ix86
# https://github.com/root-project/root/issues/15738
# https://github.com/root-project/root/pull/15780
Patch19: %{name}-write-array.patch
# Correct format warnings seen on 32 bit architectures
# https://github.com/root-project/root/pull/15732
Patch20: %{name}-format-warnings-32-bit.patch
# Python 3.13 compatibility
# https://github.com/root-project/root/issues/15430
# https://github.com/root-project/root/pull/15798
Patch21: %{name}-pyroot-add-python-3.13-attributes.patch
# Backport build fix from upstream
Patch22: %{name}-allow-any-openssl-3.x-with-civetweb.patch
# Fixes for TUri class
# https://github.com/root-project/root/pull/15988
Patch23: root-Make-TUri-class-PCRE2-compatible.patch
Patch24: root-Correct-the-regular-expression-for-the-scheme-p.patch
# Fix test failure with tbb 2021.13.0
# https://github.com/root-project/root/pull/16016
Patch25: root-Whitelist-libtbbmalloc-in-library-import-test.patch
# Update ROOT's R interface for Rcpp 1.0.13
# https://github.com/root-project/root/pull/16075
Patch26: root-r.patch
BuildRequires: gcc-c++
BuildRequires: gcc-gfortran
@ -167,12 +193,17 @@ BuildRequires: qt6-qtbase-devel
BuildRequires: qt6-qtwebengine-devel
%endif
BuildRequires: openssl-devel
%if %{?fedora}%{!?fedora:0} >= 41
# Needed by civetweb.c in root-net-http
BuildRequires: openssl-devel-engine
%endif
BuildRequires: libtool-ltdl-devel
BuildRequires: desktop-file-utils
BuildRequires: dcap-devel
BuildRequires: xrootd-client-devel >= 1:5.0.0
BuildRequires: cfitsio-devel
BuildRequires: davix-devel >= 0.6.4
# Davix version >= 0.6.4, but not between 0.6.8 and 0.7.0
BuildRequires: davix-devel >= 0.7.1
BuildRequires: R-Rcpp-devel
BuildRequires: R-RInside-devel
BuildRequires: readline-devel
@ -891,6 +922,9 @@ from marked up sources.
%package io
Summary: Input/output of ROOT objects
Requires: %{name}-core%{?_isa} = %{version}-%{release}
%if %{?fedora}%{!?fedora:0}
Requires: liburing-devel
%endif
%description io
This package provides I/O routines for ROOT objects.
@ -1151,7 +1185,7 @@ Requires: %{name}-montecarlo-eg%{?_isa} = %{version}-%{release}
%description montecarlo-pythia8
This package contains the Pythia version 8 plug-in for ROOT. This
package provide the ROOT user with transparent interface to the Pythia
package provides the ROOT user with transparent interface to the Pythia
(version 8) event generators for hadronic interactions. If the term
"hadronic" does not ring any bells, this package is not for you.
@ -2013,6 +2047,16 @@ This package contains utility functions for ntuples.
%if %{?rhel}%{!?rhel:0} == 8
%patch -P 16 -p1
%endif
%patch -P 17 -p1
%patch -P 18 -p1
%patch -P 19 -p1
%patch -P 20 -p1
%patch -P 21 -p1
%patch -P 22 -p1
%patch -P 23 -p1
%patch -P 24 -p1
%patch -P 25 -p1
%patch -P 26 -p1
# Remove bundled sources in order to be sure they are not used
# * afterimage
@ -2021,19 +2065,14 @@ rm -rf graf2d/asimage/src/libAfterImage
rm -rf graf3d/ftgl/src graf3d/ftgl/inc
# * freetype
rm -rf graf2d/freetype/src
# * davix, glew, lz4, nlohmann, openssl, pcre, tbb, xxhash, zlib, zstd
rm -rf builtins/davix
# * glew, lz4, nlohmann, pcre, xxhash, zlib, zstd
rm -rf builtins/glew
rm -rf builtins/lz4
%if ! %{bundlejson}
rm -rf builtins/nlohmann
%endif
rm -rf builtins/openssl
rm -rf builtins/pcre
rm -rf builtins/tbb
rm -rf builtins/xrootd
rm -rf builtins/xxhash
rm -rf builtins/zeromq
rm -rf builtins/zlib
rm -rf builtins/zstd
# * lzma
@ -2293,24 +2332,28 @@ mv %{buildroot}%{python3_sitearch}/DistRDF %{buildroot}%{python3_sitelib}
%endif
fi
# Create .egg-info files so that rpm auto-generates provides
# Create .dist-info files so that rpm auto-generates provides
mkdir %{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info
echo 'Name: ROOT' > \
%{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info
%{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitearch}/ROOT-%{version}.egg-info
%{buildroot}%{python3_sitearch}/ROOT-%{version}.dist-info/METADATA
mkdir %{buildroot}%{python3_sitearch}/JupyROOT-%{version}.dist-info
echo 'Name: JupyROOT' > \
%{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info
%{buildroot}%{python3_sitearch}/JupyROOT-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitearch}/JupyROOT-%{version}.egg-info
%{buildroot}%{python3_sitearch}/JupyROOT-%{version}.dist-info/METADATA
mkdir %{buildroot}%{python3_sitelib}/JsMVA-%{version}.dist-info
echo 'Name: JsMVA' > \
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.egg-info
%{buildroot}%{python3_sitelib}/JsMVA-%{version}.dist-info/METADATA
%if %{distrdf}
mkdir %{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info
echo 'Name: DistRDF' > \
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA
echo 'Version: %{version}' >> \
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.egg-info
%{buildroot}%{python3_sitelib}/DistRDF-%{version}.dist-info/METADATA
%endif
# Put jupyter stuff in the right places
@ -2395,6 +2438,7 @@ rm TFile/P050_TGFALFile.C
rm TGLManager/P020_TGWin32GLManager.C
rm TGLManager/P030_TGOSXGLManager.C
rm TProofMgr/P010_TXProofMgr.C
rm TProofMonSender/P010_TProofMonSenderML.C
rm TProofServ/P010_TXProofServ.C
rm TSlave/P010_TXSlave.C
rm TSQLServer/P040_TOracleServer.C
@ -2604,6 +2648,14 @@ tutorial-pyroot-pyroot004_NumbaDeclare-py|\
pyunittests-pyroot-numbadeclare|\
test-webgui-ping"
%if %{?fedora}%{!?fedora:0} >= 41
# - pyunittests-pyroot-pyz-ttree-setbranchaddress
# Segfault with Python 3.13:
# https://github.com/root-project/root/issues/15799
excluded="${excluded}|\
pyunittests-pyroot-pyz-ttree-setbranchaddress"
%endif
%if ! %{pandas}
# - test-import-pandas
# - tutorial-dataframe-df026_AsNumpyArrays-py
@ -3016,7 +3068,7 @@ fi
%{python3_sitearch}/cppyy
%{python3_sitearch}/cppyy_backend
%{python3_sitearch}/ROOT
%{python3_sitearch}/ROOT-*.egg-info
%{python3_sitearch}/ROOT-*.dist-info
%{python3_sitearch}/libcppyy%{python3_version_uscore}.so
%{python3_sitearch}/libcppyy_backend%{python3_version_uscore}.so
%{python3_sitearch}/libROOTPythonizations%{python3_version_uscore}%{python3_ext_suffix}
@ -3026,19 +3078,19 @@ fi
%files -n python%{python3_pkgversion}-jupyroot
%{python3_sitearch}/JupyROOT
%{python3_sitearch}/JupyROOT-*.egg-info
%{python3_sitearch}/JupyROOT-*.dist-info
%{python3_sitearch}/libJupyROOT%{python3_version_uscore}%{python3_ext_suffix}
%{_datadir}/jupyter/kernels/python%{python3_pkgversion}-jupyroot
%doc bindings/jupyroot/README.md
%files -n python%{python3_pkgversion}-jsmva
%{python3_sitelib}/JsMVA
%{python3_sitelib}/JsMVA-*.egg-info
%{python3_sitelib}/JsMVA-*.dist-info
%if %{distrdf}
%files -n python%{python3_pkgversion}-distrdf
%{python3_sitelib}/DistRDF
%{python3_sitelib}/DistRDF-*.egg-info
%{python3_sitelib}/DistRDF-*.dist-info
%endif
%files r -f includelist-bindings-r
@ -3433,7 +3485,6 @@ fi
%{_libdir}/%{name}/libProofDraw_rdict.pcm
%{_libdir}/%{name}/libProofPlayer.*
%{_libdir}/%{name}/libProofPlayer_rdict.pcm
%{_datadir}/%{name}/plugins/TProofMonSender/P010_TProofMonSenderML.C
%{_datadir}/%{name}/plugins/TProofMonSender/P020_TProofMonSenderSQL.C
%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P010_TProofPlayer.C
%{_datadir}/%{name}/plugins/TVirtualProofPlayer/P020_TProofPlayerRemote.C
@ -3554,7 +3605,10 @@ fi
%dir %{_includedir}/%{name}/TMVA/DNN/CNN
%dir %{_includedir}/%{name}/TMVA/DNN/RNN
%license tmva/doc/LICENSE
%exclude %{_includedir}/%{name}/TMVA/RBatchGenerator.hxx
%exclude %{_includedir}/%{name}/TMVA/RBatchLoader.hxx
%exclude %{_includedir}/%{name}/TMVA/RBDT.hxx
%exclude %{_includedir}/%{name}/TMVA/RChunkLoader.hxx
%exclude %{_includedir}/%{name}/TMVA/RInferenceUtils.hxx
%exclude %{_includedir}/%{name}/TMVA/RReader.hxx
%exclude %{_includedir}/%{name}/TMVA/RSofieReader.hxx
@ -3571,7 +3625,10 @@ fi
%{_libdir}/%{name}/libTMVAUtils_rdict.pcm
%dir %{_includedir}/%{name}/TMVA
%dir %{_includedir}/%{name}/TMVA/TreeInference
%{_includedir}/%{name}/TMVA/RBatchGenerator.hxx
%{_includedir}/%{name}/TMVA/RBatchLoader.hxx
%{_includedir}/%{name}/TMVA/RBDT.hxx
%{_includedir}/%{name}/TMVA/RChunkLoader.hxx
%{_includedir}/%{name}/TMVA/RInferenceUtils.hxx
%{_includedir}/%{name}/TMVA/RReader.hxx
%{_includedir}/%{name}/TMVA/RSofieReader.hxx
@ -3744,6 +3801,14 @@ fi
%endif
%changelog
* Sat Apr 19 2025 Iñaki Úcar <iucar@fedoraproject.org> - 6.30.08-2
- R-maint-sig mass rebuild
* Mon Jul 22 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 6.30.08-1
- Update to 6.30.08
- Fixes for TUri class (PCRE2 compatibility)
- Update ROOT's R interface for Rcpp 1.0.13
* Wed May 15 2024 Mattias Ellert <mattias.ellert@physics.uu.se> - 6.30.06-5
- Rebuilt for libarrow.so.1601
- Improved fontconfig support

View file

@ -1,2 +1,2 @@
SHA512 (root-6.30.06.tar.xz) = 10309321a8e803f1ea2019a4d8ddde6220b052ddfa1ed7dedd432201db5917da748e944b2323794317251fd0d70048b276ad7bed6e3fcd84835de7be88b4c420
SHA512 (root-6.30.08.tar.xz) = a0cded2407c84553b5226cc3032a3e6c6aad1db4cb543c22c4e6f129632047e6edee78bd9fd03835ff6801b1e2c0d109d45a2af4884e48d95d1669915baf4aa2
SHA512 (root-testfiles.tar.xz) = 945aef1a0cf5af672d4ab84b0ac00b76118e93008ff72447658ee82d9e955a1540af3ff7126e701418872f1d91b92ee96d4985840a519036c42732023a13f00f