The package rpms/root.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/root.git/commit/?id=ea27f7093bee4e9b....
Change: +%ifarch aarch64
Thanks.
Full change: ============
commit ea27f7093bee4e9b47ff5449eb5433f89593d0e8 Author: Mattias Ellert mattias.ellert@physics.uu.se Date: Tue Jun 18 04:22:08 2024 +0200
Add dependency on liburing-devel to root-io
Exclude failing tutorial-tmva-RBatchGenerator_filters_vectors-py test on aarch64 (Fedora 40+)
diff --git a/root.spec b/root.spec index a2adb6c..eb906de 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 4%{?dist} +Release: 5%{?dist} Summary: Numerical data analysis framework
License: LGPL-2.1-or-later @@ -413,7 +413,7 @@ Requires: %{name}-core = %{version}-%{release} # notebook package was merged with JupyROOT package Provides: %{name}-notebook = %{version}-%{release} Obsoletes: %{name}-notebook < 6.32.00 -Requires: js-jsroot >= 7.5 +Requires: js-jsroot >= 7.7 %if %{?fedora}%{!?fedora:0} # jupyter-notebook not available in RHEL/EPEL # some functionality missing @@ -838,6 +838,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. @@ -1140,7 +1143,7 @@ access to http based storage such as webdav and S3. Summary: HTTP server extension for ROOT Requires: %{name}-core%{?_isa} = %{version}-%{release} Requires: %{name}-io%{?_isa} = %{version}-%{release} -Requires: js-jsroot >= 7.5 +Requires: js-jsroot >= 7.7 # Library split (net-httpsniff from net-http) Obsoletes: %{name}-net-http < 6.14.00
@@ -2536,6 +2539,15 @@ gtest-tree-dataframe-test-dataframe-concurrency|\ gtest-tree-dataframe-test-dataframe-simple" %endif
+%if %{?fedora}%{!?fedora:0} >= 40 +# - tutorial-tmva-RBatchGenerator_filters_vectors-py +# *** Break *** segmentation violation +%ifarch aarch64 +excluded="${excluded}|\ +tutorial-tmva-RBatchGenerator_filters_vectors-py" +%endif +%endif + %ifarch %{power64} # - test-stressgraphics(-interpreted) # *** stack smashing detected ***: terminated @@ -3572,6 +3584,11 @@ fi %endif
%changelog +* Mon Jun 17 2024 Mattias Ellert mattias.ellert@physics.uu.se - 6.32.00-5 +- Add dependency on liburing-devel to root-io +- Exclude failing tutorial-tmva-RBatchGenerator_filters_vectors-py test + on aarch64 (Fedora 40+) + * Mon Jun 10 2024 Mattias Ellert mattias.ellert@physics.uu.se - 6.32.00-4 - Backport fix for failing test with Python 3.13
@@ -3583,7 +3600,7 @@ fi
* Mon Jun 03 2024 Mattias Ellert ellert@ellert.se - 6.32.00-1 - Update to 6.32.00 -- Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020) +- Drop EPEL 8 build (now requires Python >= 3.7 and tbb >= 2020) - Dropped patches: 12 - New patches: 6 - The JsMVA python module is now a submodule of the ROOT python module
commit 4946c86aeaca3ac3a3ae44d713c58afa26604fa8 Author: Mattias Ellert mattias.ellert@physics.uu.se Date: Mon Jun 10 22:42:59 2024 +0200
Backport fix for failing test with Python 3.13
diff --git a/root-allow-any-openssl-3.x-with-civetweb.patch b/root-allow-any-openssl-3.x-with-civetweb.patch new file mode 100644 index 0000000..05e2a64 --- /dev/null +++ b/root-allow-any-openssl-3.x-with-civetweb.patch @@ -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 + diff --git a/root-python-3.13-TTree-SetBranchAddress-pythonization.patch b/root-python-3.13-TTree-SetBranchAddress-pythonization.patch new file mode 100644 index 0000000..f891893 --- /dev/null +++ b/root-python-3.13-TTree-SetBranchAddress-pythonization.patch @@ -0,0 +1,214 @@ +From 0cc7d61c6f732e701ef6ed263344105b01ef9613 Mon Sep 17 00:00:00 2001 +From: Jonas Rembser jonas.rembser@cern.ch +Date: Mon, 10 Jun 2024 12:32:42 +0200 +Subject: [PATCH] [PyROOT] Implement TTree SetBranchAddress pythonization in + Python + +The pythonization of `TTree::SetBranchAddress` was implemented in C++, +hacking into CPyCppy by using implementation details like data member +caches (this call: `((CPPInstance *)address)GetDatamemberCache()`). Not +too surprising that it apparently breaks with the upcoming Python 3.13. + +It's better to implement the pythonizations in Python and also manage +the lifetime of the necessary data in Python. This is done in this +commit. + +The pythonization is extensively tested in `ttree_setbranchaddress.py`. + +Possible closes #15799. +--- + .../python/ROOT/_pythonization/_ttree.py | 67 ++++++++++++++++--- + .../pythonizations/src/PyROOTModule.cxx | 2 - + .../pythonizations/src/PyROOTPythonize.h | 1 - + .../pyroot/pythonizations/src/TTreePyz.cxx | 63 ----------------- + 4 files changed, 59 insertions(+), 74 deletions(-) + +diff --git a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py +index 2781189e45..18840bb43e 100644 +--- a/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py ++++ b/bindings/pyroot/pythonizations/python/ROOT/_pythonization/_ttree.py +@@ -130,7 +130,7 @@ ds.SetBranchAddress('structb', ms) + */ + ''' + +-from libROOTPythonizations import GetBranchAttr, SetBranchAddressPyz, BranchPyz ++from libROOTPythonizations import GetBranchAttr, BranchPyz + from . import pythonization + + # TTree iterator +@@ -145,15 +145,66 @@ def _TTree__iter__(self): + if bytes_read == -1: + raise RuntimeError("TTree I/O error") + +-def _SetBranchAddress(self, *args): +- # Modify the behaviour if args is (const char*, void*) +- res = SetBranchAddressPyz(self, *args) ++def _pythonize_branch_addr(branch, addr_orig): ++ """Helper for the SetBranchAddress pythonization, extracting the relevant ++ address from a Python object if possible. ++ """ ++ import cppyy ++ import ctypes + +- if res is None: +- # Fall back to the original implementation for the rest of overloads +- res = self._OriginalSetBranchAddress(*args) ++ # Pythonization for cppyy proxies (of type CPPInstance) ++ if isinstance(addr_orig, cppyy._backend.CPPInstance): + +- return res ++ is_leaf_list = branch.IsA() is cppyy.gbl.TBranch.Class() ++ ++ if is_leaf_list: ++ # If the branch is a leaf list, SetBranchAddress expects the ++ # address of the object that has the corresponding data members. ++ return ctypes.c_void_p(cppyy.addressof(instance=addr_orig, byref=False)) ++ ++ # Otherwise, SetBranchAddress is expecting a pointer to the address of ++ # the object, and the pointer needs to stay alive. Therefore, we create ++ # a container for the pointer and cache it in the original cppyy proxy. ++ addr_view = cppyy.gbl.array["std::intptr_t", 1]([cppyy.addressof(instance=addr_orig, byref=False)]) ++ ++ if not hasattr(addr_orig, "_set_branch_cached_pointers"): ++ addr_orig._set_branch_cached_pointers = [] ++ addr_orig._set_branch_cached_pointers.append(addr_view) ++ ++ # Finally, we have to return the address of the container ++ return ctypes.c_void_p(cppyy.addressof(instance=addr_view, byref=False)) ++ ++ # For NumPy arrays ++ if hasattr(addr_orig, "__array_interface__"): ++ return ctypes.c_void_p(addr_orig.__array_interface__["data"][0]) ++ ++ # For the builtin array library ++ if hasattr(addr_orig, "buffer_info"): ++ return ctypes.c_void_p(addr_orig.buffer_info()[0]) ++ ++ # We don't know how to pythonize the address parameter. return the ++ # original value one. ++ return addr_orig ++ ++def _SetBranchAddress(self, bname, addr, *args, **kwargs): ++ """ ++ Pythonization for TTree::SetBranchAddress. ++ ++ Modify the behaviour of SetBranchAddress so that proxy references can be passed ++ as arguments from the Python side, more precisely in cases where the C++ ++ implementation of the method expects the address of a pointer. ++ ++ For example: ++ ``` ++ v = ROOT.std.vector('int')() ++ t.SetBranchAddress("my_vector_branch", v) ++ ``` ++ """ ++ ++ branch = self.GetBranch(bname) ++ addr = _pythonize_branch_addr(branch, addr) ++ ++ return self._OriginalSetBranchAddress(bname, addr, *args, **kwargs) + + def _Branch(self, *args): + # Modify the behaviour if args is one of: +diff --git a/bindings/pyroot/pythonizations/src/PyROOTModule.cxx b/bindings/pyroot/pythonizations/src/PyROOTModule.cxx +index e943e0ad4b..b74bae358e 100644 +--- a/bindings/pyroot/pythonizations/src/PyROOTModule.cxx ++++ b/bindings/pyroot/pythonizations/src/PyROOTModule.cxx +@@ -48,8 +48,6 @@ static PyMethodDef gPyROOTMethods[] = { + (char *)"Cast the void* returned by TClass::DynamicCast to the right type"}, + {(char *)"AddTObjectEqNePyz", (PyCFunction)PyROOT::AddTObjectEqNePyz, METH_VARARGS, + (char *)"Add equality and inequality comparison operators to TObject"}, +- {(char *)"SetBranchAddressPyz", (PyCFunction)PyROOT::SetBranchAddressPyz, METH_VARARGS, +- (char *)"Fully enable the use of TTree::SetBranchAddress from Python"}, + {(char *)"BranchPyz", (PyCFunction)PyROOT::BranchPyz, METH_VARARGS, + (char *)"Fully enable the use of TTree::Branch from Python"}, + {(char *)"AddPrettyPrintingPyz", (PyCFunction)PyROOT::AddPrettyPrintingPyz, METH_VARARGS, +diff --git a/bindings/pyroot/pythonizations/src/PyROOTPythonize.h b/bindings/pyroot/pythonizations/src/PyROOTPythonize.h +index 9f2d4506b6..684f256596 100644 +--- a/bindings/pyroot/pythonizations/src/PyROOTPythonize.h ++++ b/bindings/pyroot/pythonizations/src/PyROOTPythonize.h +@@ -22,7 +22,6 @@ PyObject *AddPrettyPrintingPyz(PyObject *self, PyObject *args); + + PyObject *GetBranchAttr(PyObject *self, PyObject *args); + PyObject *BranchPyz(PyObject *self, PyObject *args); +-PyObject *SetBranchAddressPyz(PyObject *self, PyObject *args); + + PyObject *AddTClassDynamicCastPyz(PyObject *self, PyObject *args); + +diff --git a/bindings/pyroot/pythonizations/src/TTreePyz.cxx b/bindings/pyroot/pythonizations/src/TTreePyz.cxx +index d6763fdb25..f06811c43c 100644 +--- a/bindings/pyroot/pythonizations/src/TTreePyz.cxx ++++ b/bindings/pyroot/pythonizations/src/TTreePyz.cxx +@@ -201,69 +201,6 @@ PyObject *PyROOT::GetBranchAttr(PyObject * /*self*/, PyObject *args) + return 0; + } + +-//////////////////////////////////////////////////////////////////////////// +-/// \brief Add pythonization for TTree::SetBranchAddress. +-/// \param[in] self Always null, since this is a module function. +-/// \param[in] args Pointer to a Python tuple object containing the arguments +-/// received from Python. +-/// +-/// Modify the behaviour of SetBranchAddress so that proxy references can be passed +-/// as arguments from the Python side, more precisely in cases where the C++ +-/// implementation of the method expects the address of a pointer. +-/// +-/// For example: +-/// ~~~{.py} +-/// v = ROOT.std.vector('int')() +-/// t.SetBranchAddress("my_vector_branch", v) +-/// ~~~ +-PyObject *PyROOT::SetBranchAddressPyz(PyObject * /* self */, PyObject *args) +-{ +- PyObject *treeObj = nullptr, *name = nullptr, *address = nullptr; +- +- int argc = PyTuple_GET_SIZE(args); +- +- // Look for the (const char*, void*) overload +- auto argParseStr = "OUO:SetBranchAddress"; +- if (argc == 3 && PyArg_ParseTuple(args, argParseStr, &treeObj, &name, &address)) { +- +- auto tree = (TTree *)GetTClass(treeObj)->DynamicCast(TTree::Class(), CPyCppyy::Instance_AsVoidPtr(treeObj)); +- +- if (!tree) { +- PyErr_SetString(PyExc_TypeError, +- "TTree::SetBranchAddress must be called with a TTree instance as first argument"); +- return nullptr; +- } +- +- auto branchName = PyUnicode_AsUTF8(name); +- auto branch = tree->GetBranch(branchName); +- if (!branch) { +- PyErr_SetString(PyExc_TypeError, "TTree::SetBranchAddress must be called with a valid branch name"); +- return nullptr; +- } +- +- bool isLeafList = branch->IsA() == TBranch::Class(); +- +- void *buf = 0; +- if (CPyCppyy::Instance_Check(address)) { +- ((CPPInstance *)address)->GetDatamemberCache(); // force creation of cache +- +- if (((CPPInstance *)address)->fFlags & CPPInstance::kIsReference || isLeafList) +- buf = CPyCppyy::Instance_AsVoidPtr(address); +- else +- buf = (void *)&(((CPPInstance *)address)->GetObjectRaw()); +- } else +- Utility::GetBuffer(address, '*', 1, buf, false); +- +- if (buf != nullptr) { +- auto res = tree->SetBranchAddress(PyUnicode_AsUTF8(name), buf); +- return PyInt_FromLong(res); +- } +- } +- +- // Not the overload we wanted to pythonize, return None +- Py_RETURN_NONE; +-} +- + //////////////////////////////////////////////////////////////////////////// + /// Try to match the arguments of TTree::Branch to the following overload: + /// - ( const char*, void*, const char*, Int_t = 32000 ) +-- +2.45.2 + diff --git a/root.spec b/root.spec index cd12db9..a2adb6c 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 3%{?dist} +Release: 4%{?dist} Summary: Numerical data analysis framework
License: LGPL-2.1-or-later @@ -85,6 +85,14 @@ Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch # https://github.com/root-project/root/issues/15430 # https://github.com/root-project/root/pull/15798 Patch11: %{name}-pyroot-add-python-3.13-attributes.patch +# Implement TTree SetBranchAddress pythonization in Python +# Backport fix for failing test with Python 3.13 +# pyunittests-pyroot-pyz-ttree-setbranchaddress +# https://github.com/root-project/root/issues/15799 +# https://github.com/root-project/root/pull/15807 +Patch12: %{name}-python-3.13-TTree-SetBranchAddress-pythonization.patch +# Backport build fix from upstream +Patch13: %{name}-allow-any-openssl-3.x-with-civetweb.patch
BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1931,6 +1939,8 @@ This package contains utility functions for ntuples. %patch -P9 -p1 %patch -P10 -p1 %patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1
# Remove bundled sources in order to be sure they are not used # * afterimage @@ -2502,14 +2512,6 @@ 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 @@ -3570,6 +3572,9 @@ fi %endif
%changelog +* Mon Jun 10 2024 Mattias Ellert mattias.ellert@physics.uu.se - 6.32.00-4 +- Backport fix for failing test with Python 3.13 + * Sun Jun 09 2024 Python Maint python-maint@redhat.com - 6.32.00-3 - Rebuilt for Python 3.13
commit 48045b2bdf7e46b48746527048b2d1c25b230141 Author: Python Maint python-maint@redhat.com Date: Sun Jun 9 02:47:16 2024 +0200
Rebuilt for Python 3.13
diff --git a/root.spec b/root.spec index 8ae9e2f..cd12db9 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 2%{?dist} +Release: 3%{?dist} Summary: Numerical data analysis framework
License: LGPL-2.1-or-later @@ -3570,6 +3570,9 @@ fi %endif
%changelog +* Sun Jun 09 2024 Python Maint python-maint@redhat.com - 6.32.00-3 +- Rebuilt for Python 3.13 + * Sat Jun 08 2024 Mattias Ellert mattias.ellert@physics.uu.se - 6.32.00-2 - Python 3.13 compatibility
commit 559fe2b850daf3fb8eb9c05ba2d993284eb66d7d Author: Mattias Ellert mattias.ellert@physics.uu.se Date: Sat Jun 8 22:04:11 2024 +0200
Python 3.13 compatibility
diff --git a/root-pyroot-add-python-3.13-attributes.patch b/root-pyroot-add-python-3.13-attributes.patch new file mode 100644 index 0000000..9ba3149 --- /dev/null +++ b/root-pyroot-add-python-3.13-attributes.patch @@ -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 + diff --git a/root.spec b/root.spec index c39adee..8ae9e2f 100644 --- a/root.spec +++ b/root.spec @@ -26,7 +26,7 @@ Name: root Version: 6.32.00 %global libversion %(cut -d. -f 1-2 <<< %{version}) -Release: 1%{?dist} +Release: 2%{?dist} Summary: Numerical data analysis framework
License: LGPL-2.1-or-later @@ -81,6 +81,10 @@ Patch9: %{name}-out-of-bounds.patch # Fix one more broken import in JsMVA # https://github.com/root-project/root/pull/15752 Patch10: %{name}-fix-one-more-broken-import-in-JsMVA.patch +# Python 3.13 compatibility +# https://github.com/root-project/root/issues/15430 +# https://github.com/root-project/root/pull/15798 +Patch11: %{name}-pyroot-add-python-3.13-attributes.patch
BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1926,6 +1930,7 @@ This package contains utility functions for ntuples. %patch -P8 -p1 %patch -P9 -p1 %patch -P10 -p1 +%patch -P11 -p1
# Remove bundled sources in order to be sure they are not used # * afterimage @@ -2497,6 +2502,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 @@ -3557,6 +3570,9 @@ fi %endif
%changelog +* Sat Jun 08 2024 Mattias Ellert mattias.ellert@physics.uu.se - 6.32.00-2 +- Python 3.13 compatibility + * Mon Jun 03 2024 Mattias Ellert ellert@ellert.se - 6.32.00-1 - Update to 6.32.00 - Drop EPEL 8 build (now requires Python >= 3.7 ans tbb >= 2020)