diff --git a/root-PyROOT-Don-t-install-the-python-modules-twice.patch b/root-PyROOT-Don-t-install-the-python-modules-twice.patch new file mode 100644 index 0000000..608765d --- /dev/null +++ b/root-PyROOT-Don-t-install-the-python-modules-twice.patch @@ -0,0 +1,70 @@ +From f09b4ce027b31dcd19ea8a398c35c5dfbcc0507f Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +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 + diff --git a/root-no-export-python-modules.patch b/root-no-export-python-modules.patch index cb56d35..d3fa4bc 100644 --- a/root-no-export-python-modules.patch +++ b/root-no-export-python-modules.patch @@ -1,12 +1,27 @@ -From e0dec6edd0678c2c52aaeb2f3645378ffeaa2d73 Mon Sep 17 00:00:00 2001 +From b4e57c8ccd59d69fe61fa5f6470b3a99ba52aeeb Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 4 Dec 2025 23:13:28 +0100 Subject: [PATCH] Dont export Python modules --- + bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt | 3 +-- bindings/pyroot/pythonizations/CMakeLists.txt | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) + 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 diff --git a/root.spec b/root.spec index 53ba016..14bfa6e 100644 --- a/root.spec +++ b/root.spec @@ -34,12 +34,12 @@ %endif # Do not generate autoprovides for Python modules -%global __provides_exclude_from ^%{python3_sitearch}/lib.*\\.so$ +%global __provides_exclude_from ^%{python3_sitearch}/.*/lib.*\\.so$ Name: root Version: 6.38.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 @@ -95,8 +95,11 @@ Patch9: %{name}-Fix-a-numpy-test-for-32-bit-archs.patch Patch10: %{name}-VecOps-Remove-outdated-IsSmall-helper-function-in-te.patch Patch11: %{name}-vecops-Adaptive-size-of-long-RVec-instances-in-RVec-.patch # Backport fixes to python module -Patch12: root-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch -Patch13: root-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch +Patch12: %{name}-cppyy-Remove-now-irrelevant-load_cpp_backend-call.patch +Patch13: %{name}-cppyy-Remove-code-related-to-finding-CPyCppyy-API-he.patch +# Don't install the python modules twice +# https://github.com/root-project/root/pull/20753 +Patch14: %{name}-PyROOT-Don-t-install-the-python-modules-twice.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -1901,6 +1904,7 @@ This package contains a library for histogramming in ROOT 7. %patch -P11 -p1 %patch -P12 -p1 %patch -P13 -p1 +%patch -P14 -p1 # Remove bundled sources in order to be sure they are not used # * afterimage @@ -2145,6 +2149,8 @@ mv %{buildroot}%{_libdir}/%{name}/*-gdb.py \ # Fix python extension suffix mv %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations.so \ %{buildroot}%{python3_sitearch}/ROOT/libROOTPythonizations%{python3_ext_suffix} +mv %{buildroot}%{python3_sitearch}/cppyy/libcppyy.so \ + %{buildroot}%{python3_sitearch}/cppyy/libcppyy%{python3_ext_suffix} # Move noarch python modules to sitelib if [ "%{python3_sitelib}" != "%{python3_sitearch}" ] ; then @@ -3437,6 +3443,10 @@ fi %endif %changelog +* Thu Dec 18 2025 Mattias Ellert - 6.38.00-3 +- Don't install the python modules twice +- Fix Requires and Provides in the python3-root rpm + * Thu Dec 11 2025 Mattias Ellert - 6.38.00-2 - Skip RPATH using -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON (replaces previously used root specific -Drpath:BOOL=OFF no longer available)