BUG: GPU Python Wrapping Fails on Linux
Description
Building ITK with ITK_USE_GPU=ON and ITK_WRAP_PYTHON=ON on Linux results in a build failure.
Steps to Reproduce
Configure ITK with ITK_USE_GPU=ON, ITK_WRAP_PYTHON=ON. ITK_USE_SYSTEM_FFTW was also turned ON to use cuFFTW. Then, build ITK.
Expected behavior
The build succeeds and Python wrappings are generated.
Actual behavior
[1/38] Generating .pyi files for Python wrapper interface
FAILED: Wrapping/CMakeFiles/itk-stub-files Wrapping/Generators/Python/itk/_proxies.pyi Wrapping/Generators/Python/itk/__init__.pyi /home/tom/builds/ITK-base-dev/Wrapping/CMakeFiles/itk-stub-files /home/tom/builds/ITK-base-dev/Wrapping/Generators/Python/itk/_proxies.pyi /home/tom/builds/ITK-base-dev/Wrapping/Generators/Python/itk/__init__.pyi
cd /home/tom/builds/ITK-base-dev/Wrapping && /home/tom/anaconda3/bin/python3.8 /home/tom/repos/ITK/Wrapping/Generators/Python/itk/pyi_generator.py --pyi_dir /home/tom/builds/ITK-base-dev/Wrapping/Generators/Python/itk --pkl_dir /home/tom/builds/ITK-base-dev/Wrapping/Generators/Python/itk-pkl --index_list_file /home/tom/builds/ITK-base-dev/Wrapping/GlobalIdxFilesList.txt
Traceback (most recent call last):
File "/home/tom/repos/ITK/Wrapping/Generators/Python/itk/pyi_generator.py", line 609, in <module>
class_name = unpack(class_files, options.pyi_dir)
File "/home/tom/repos/ITK/Wrapping/Generators/Python/itk/pyi_generator.py", line 391, in unpack
base = merge(class_definitions)
File "/home/tom/repos/ITK/Wrapping/Generators/Python/itk/pyi_generator.py", line 450, in merge
raise AssertionError(
AssertionError: The basic values of two associated classes do not match.
Item 1: class `itkCastImageFilter::CastImageFilter` has_new_method: `True` typed: `True` is_abstract: `False` is_enum: `False` has_superclass: `True`Item 2: class `itkGPUCastImageFilter::CastImageFilter` has_new_method: `True` typed: `True` is_abstract: `False` is_enum: `False` has_superclass: `False`
[14/38] Linking CXX shared module Wrapping/Generators/Python/itk/_ITKMetricsv4Python.so
ninja: build stopped: subcommand failed.
Reproducibility
100%
Versions
ITK 5.3.0
Environment
Ubuntu 20.04 CMake 3.21.3 Ninja 1.10.0
Additional Information
Likely due to some POINTER vs POINTER_WITH_SUPERCLASS mismatch for GPUCastImageFilter's wrapping.
Found in attempt to reproduce related https://github.com/InsightSoftwareConsortium/ITK/issues/3744
I can confirm this, building on Mac too, with ITK_USE_GPU=ON and ITK_WRAP_PYTHON=ON:
cd /opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/build/Wrapping && /opt/local/bin/bin/python3.11 /opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/InsightToolkit-5.3.0/Wrapping/Generators/Python/itk/pyi_generator.py --pyi_dir /opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/build/Wrapping/Generators/Python/itk --pkl_dir /opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/build/Wrapping/Generators/Python/itk-pkl --index_list_file /opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/build/Wrapping/GlobalIdxFilesList.txt
Traceback (most recent call last):
File "/opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/InsightToolkit-5.3.0/Wrapping/Generators/Python/itk/pyi_generator.py", line 609, in <module>
class_name = unpack(class_files, options.pyi_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/InsightToolkit-5.3.0/Wrapping/Generators/Python/itk/pyi_generator.py", line 391, in unpack
base = merge(class_definitions)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/var/macports/build/_Users_nilason_ports_graphics_InsightToolkit-devel/py311-InsightToolkit-devel/work/InsightToolkit-5.3.0/Wrapping/Generators/Python/itk/pyi_generator.py", line 450, in merge
raise AssertionError(
AssertionError: The basic values of two associated classes do not match.
Item 1: class `itkCastImageFilter::CastImageFilter` has_new_method: `True` typed: `True` is_abstract: `False` is_enum: `False` has_superclass: `True`Item 2: class `itkGPUCastImageFilter::CastImageFilter` has_new_method: `True` typed: `True` is_abstract: `False` is_enum: `False` has_superclass: `False`
make[2]: *** [Wrapping/CMakeFiles/itk-stub-files] Error 1
Switching to ITK_USE_GPU=OFF, makes it build successfully
I can confirm this bug too from the latest sources.
I can confirm this bug too from the latest sources. Version 5.3.0