Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/root-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ jobs:

- name: CTest in post-install test project
working-directory: ${{ env.POST_INSTALL_DIR }}
run: ctest -j $(nproc)
run: ctest --output-on-failure -j $(nproc)

event_file:
# For any event that is not a PR, the CI will always run. In PRs, the CI
Expand Down
11 changes: 6 additions & 5 deletions bindings/pyroot/cppyy/CPyCppyy/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ 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}
LIBRARY_OUTPUT_DIRECTORY ${localruntimedir}/cppyy)
if(MSVC)
target_link_libraries(cppyy PRIVATE CPyCppyy)
set_target_properties(cppyy PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
Expand Down Expand Up @@ -116,7 +117,7 @@ set_property(GLOBAL APPEND PROPERTY ROOT_EXPORTED_TARGETS cppyy)

if(NOT MSVC)
# Make sure that relative RUNPATH to main ROOT libraries is always correct.
ROOT_APPEND_LIBDIR_TO_INSTALL_RPATH(cppyy ${CMAKE_INSTALL_PYTHONDIR})
ROOT_APPEND_LIBDIR_TO_INSTALL_RPATH(cppyy ${CMAKE_INSTALL_PYTHONDIR}/cppyy)
ROOT_APPEND_LIBDIR_TO_INSTALL_RPATH(CPyCppyy ${CMAKE_INSTALL_LIBDIR})
endif()

Expand All @@ -127,9 +128,9 @@ install(TARGETS CPyCppyy EXPORT ${CMAKE_PROJECT_NAME}Exports
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries)

install(TARGETS cppyy EXPORT ${CMAKE_PROJECT_NAME}Exports
RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries
ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR} COMPONENT libraries)
RUNTIME DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries
LIBRARY DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries
ARCHIVE DESTINATION ${CMAKE_INSTALL_PYTHONDIR}/cppyy COMPONENT libraries)

file(COPY ${headers} DESTINATION ${CMAKE_BINARY_DIR}/include/CPyCppyy)

Expand Down
10 changes: 9 additions & 1 deletion bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
'include', # load and jit a header file
'c_include', # load and jit a C header file
'load_library', # load a shared library
'nullptr', # unique pointer representing NULL

Check failure on line 43 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F405)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:43:5: F405 `nullptr` may be undefined, or defined from star imports
'sizeof', # size of a C++ type
'typeid', # typeid of a C++ type
'multi', # helper for multiple inheritance
Expand All @@ -64,27 +64,33 @@
ispypy = False

from . import _typemap
from ._version import __version__

Check failure on line 67 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F401)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:67:23: F401 `._version.__version__` imported but unused; consider removing, adding to `__all__`, or using a redundant alias

# Help Windows locate cppyy/libcppyy, which should be in the same location as the current file:
if "win32" in sys.platform:
cppyy_path = os.path.dirname(__file__)
os.add_dll_directory(cppyy_path)
os.add_dll_directory(os.path.dirname(cppyy_path))

# import separately instead of in the above try/except block for easier to
# understand tracebacks
if ispypy:
from ._pypy_cppyy import *

Check failure on line 78 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F403)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:78:5: F403 `from ._pypy_cppyy import *` used; unable to detect undefined names
else:
from ._cpython_cppyy import *

Check failure on line 80 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F403)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:80:5: F403 `from ._cpython_cppyy import *` used; unable to detect undefined names


#- allow importing from gbl --------------------------------------------------
sys.modules['cppyy.gbl'] = gbl

Check failure on line 84 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F405)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:84:28: F405 `gbl` may be undefined, or defined from star imports
sys.modules['cppyy.gbl.std'] = gbl.std

Check failure on line 85 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F405)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:85:32: F405 `gbl` may be undefined, or defined from star imports


#- external typemap ----------------------------------------------------------
_typemap.initialize(_backend) # also creates (u)int8_t mapper

Check failure on line 89 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F405)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:89:21: F405 `_backend` may be undefined, or defined from star imports

try:
gbl.std.int8_t = gbl.int8_t # ensures same _integer_ type

Check failure on line 92 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F405)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:92:23: F405 `gbl` may be undefined, or defined from star imports

Check failure on line 92 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F405)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:92:5: F405 `gbl` may be undefined, or defined from star imports
gbl.std.uint8_t = gbl.uint8_t

Check failure on line 93 in bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (F405)

bindings/pyroot/cppyy/cppyy/python/cppyy/__init__.py:93:5: F405 `gbl` may be undefined, or defined from star imports
except (AttributeError, TypeError):
pass

Expand Down Expand Up @@ -339,7 +345,9 @@

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, libcppyy
import glob

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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
except ImportError:
c = None

import libcppyy as _backend
import cppyy.libcppyy as _backend

if c is not None:
_backend._cpp_backend = c
Expand Down
6 changes: 2 additions & 4 deletions roottest/python/basic/PyROOT_datatypetest.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ def setup_class(cls):
cls.datatypes = cppyy.load_reflection_info(cls.test_dct)
cls.N = cppyy.gbl.N
# In new Cppyy, nullptr can't be found in gbl.
# Take it from libcppyy (we could also use ROOT.nullptr)
import libcppyy
cls.nullptr = libcppyy.nullptr
cls.nullptr = cppyy._backend.nullptr

def test01_load_reflection_cache(self):
"""Loading reflection info twice should result in the same object"""
Expand Down Expand Up @@ -580,7 +578,7 @@ def test09_global_builtin_types(self):
raises(ValueError, setattr, gbl, 'g_uint', -1)
raises(ValueError, setattr, gbl, 'g_ulong', -1)
raises(ValueError, setattr, gbl, 'g_ulong64', -1)

def test10_global_ptr(self):
"""Access of global objects through a pointer"""

Expand Down
4 changes: 1 addition & 3 deletions roottest/python/basic/PyROOT_datatypetest_numpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ def setup_class(cls):
cls.datatypes = cppyy.load_reflection_info(cls.test_dct)
cls.N = cppyy.gbl.N
# In new Cppyy, nullptr can't be found in gbl.
# Take it from libcppyy (we could also use ROOT.nullptr)
import libcppyy
cls.nullptr = libcppyy.nullptr
cls.nullptr = cppyy._backend.nullptr

def test01_buffer_to_numpy(self):
"""Wrap buffer with NumPy array"""
Expand Down
Loading