<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/7ec092d6502205566f164650dbbd8b0edf84cd76">https://github.com/macports/macports-ports/commit/7ec092d6502205566f164650dbbd8b0edf84cd76</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 7ec092d6502 InsightToolkit4: new port based on InsightToolkit-devel, pinned on v4
</span>7ec092d6502 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 7ec092d6502205566f164650dbbd8b0edf84cd76
</span>Author: nilason <n_larsson@yahoo.com>
AuthorDate: Tue Sep 12 12:00:12 2023 +0200
<span style='display:block; white-space:pre;color:#404040;'> InsightToolkit4: new port based on InsightToolkit-devel, pinned on v4
</span>---
graphics/InsightToolkit4/Portfile | 166 +++++++++++++++++++++
.../InsightToolkit4/files/patch-findpython.diff | 91 +++++++++++
.../InsightToolkit4/files/patch-python3.10.diff | 47 ++++++
.../InsightToolkit4/files/patch-python3.8.diff | 90 +++++++++++
.../files/patch-swigpy-sliceobject.diff | 18 +++
5 files changed, 412 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/InsightToolkit4/Portfile b/graphics/InsightToolkit4/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..59df0dcaf18
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/InsightToolkit4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,166 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup active_variants 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup conflicts_build 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name InsightToolkit4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup InsightSoftwareConsortium ITK 4.13.3 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories graphics science devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license Apache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts_build InsightToolkit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {yahoo.com:n_larsson @nilason} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description Insight Segmentation and Registration Toolkit (ITK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description {*}${description} is an open-source, cross-platform system that \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ provides developers with an extensive suite of software tools \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for image analysis. Developed through extreme programming \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ methodologies, ITK builds on a proven, spatially-oriented \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ architecture for processing, segmentation, and registration \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ of scientific images in two, three, or more dimensions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://itk.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname InsightToolkit-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dist_subdir InsightToolkit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 e3564ec4c7f6395b2bce9bc30f6008f55c5d7e65 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 edd2770aaf76e0e9b0aeb089cdf8774f46ebb2c9a74287608bb43c81134ebf16 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 19345356
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# find out include dir for "mpi.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set mpl_include_dir ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {![catch {set result [active_variants hdf5 openmpi]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$result} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set mpl_include_dir "-I${prefix}/include/openmpi-mp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {![catch {set result [active_variants hdf5 mpich]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$result} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set mpl_include_dir "-I${prefix}/include/mpich-mp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {$mpl_include_dir ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cxxflags-append ${mpl_include_dir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard 2014
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# setting cmake.set_cxx_standard is not passed to the SWIG Python build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxxflags-append -std=gnu++14
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append patch-python3.8.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-python3.10.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-swigpy-sliceobject.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append path:include/turbojpeg.h:libjpeg-turbo \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:dcmtk \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:double-conversion \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:expat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:fftw-3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:fftw-3-single \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gdcm \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gtest \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:hdf5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libaec \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libminc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libpng \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:tiff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DBUILD_EXAMPLES=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DBUILD_SHARED_LIBS=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DBUILD_TESTING=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib/itk \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_FORBID_DOWNLOADS=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_INSTALL_LIBRARY_DIR=${prefix}/lib/itk \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_FFTWD=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_FFTWF=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_GPU=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_KWSTYLE=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_DCMTK=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_DOUBLECONVERSION=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_EXPAT=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_FFTW=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_GDCM=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_JPEG=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_LIBRARIES=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_MINC=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_PNG=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_TIFF=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_VXL=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_ZLIB=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_WRAPPING=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_WRAP_PYTHON=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DUSE_FFTWF=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.livecheck.regex {(4\.[^\"]+)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# create Python subports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_versions {310 311}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach v ${python_versions} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ subport py${v}-${name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PortGroup python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ categories graphics science devel python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append patch-findpython.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:castxml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:swig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:swig-python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ use_configure yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python.default_version ${v}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python.pep517 no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.cmd make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.target
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.cmd make install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.destdir DESTDIR=${destroot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ master_sites ${github.master_sites}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fs-traverse f ${worksrcpath} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[file extension ${f}] eq ".py"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/env python|${python.bin}|" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Python bindings for supported Python versions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[string match "py*" ${subport}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ description Python ${python.branch} bindings for {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ long_description This package provides {*}${description}.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_CASTXML=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_USE_SYSTEM_SWIG=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DModule_BridgeNumPy=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DPY_SITE_PACKAGES_PATH=${python.pkgd} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DPython_EXECUTABLE=${python.bin} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DPYTHON_INCLUDE_DIRS=${python.include}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_WRAPPING=OFF -DITK_WRAPPING=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DITK_WRAP_PYTHON=OFF -DITK_WRAP_PYTHON=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${destroot}${prefix}/include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${destroot}${prefix}/lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${destroot}${prefix}/share
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/InsightToolkit4/files/patch-findpython.diff b/graphics/InsightToolkit4/files/patch-findpython.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3bcd5a9a93a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/InsightToolkit4/files/patch-findpython.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,91 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Replace find_package(PythonInterp) with find_package(Python) to be able to pinpoint Python root.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/ThirdParty/GoogleTest/src/itkgoogletest/googletest/cmake/internal_utils.cmake.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/ThirdParty/GoogleTest/src/itkgoogletest/googletest/cmake/internal_utils.cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -215,7 +215,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endfunction()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-find_package(PythonInterp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++find_package(Python COMPONENTS Interpreter REQUIRED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(PYTHONINTERP_FOUND "${Python_Interpreter_FOUND}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # cxx_test_with_flags(name cxx_flags libs srcs...)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMake/ITKModuleHeaderTest.cmake.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMake/ITKModuleHeaderTest.cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,7 +6,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # This does not force the developer to install python to be able to build ITK.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The tests will simply not be run if python is unavailable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-find_package(PythonInterp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++find_package(Python COMPONENTS Interpreter REQUIRED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Improve performance of MSVC GUI, by reducing number of header tests.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set( MAXIMUM_NUMBER_OF_HEADERS_default 35 )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -30,7 +31,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if( NOT ${_name}_THIRD_PARTY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AND EXISTS ${${_name}_SOURCE_DIR}/include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AND PYTHON_EXECUTABLE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- AND NOT (PYTHON_VERSION_STRING VERSION_LESS 2.6)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AND NOT (${_name} STREQUAL ITKTestKernel)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AND NOT (CMAKE_GENERATOR MATCHES "^Visual Studio 10.*"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMake/ITKModuleDoxygen.cmake.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMake/ITKModuleDoxygen.cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,7 +6,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # python is needed to verify the presence of the module name in the doxygen header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Don't require it to not force the developers to install python to be able to build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ITK. The tests will simply not be run if python is not available.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-find_package(PythonInterp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++find_package(Python COMPONENTS Interpreter REQUIRED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ macro( itk_module_doxygen _name )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Wrapping/Generators/Python/CMakeLists.txt.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Wrapping/Generators/Python/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,18 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ###############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # configure python (find PythonInterp first, as of cmake 3.1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-find_package(PythonInterp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-find_package(ITKPythonLibs)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# require at least python 2.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if(PYTHON_VERSION_STRING VERSION_LESS 2.6)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- message(WARNING "Python version less than 2.6: \"${PYTHON_VERSION_STRING}\".")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# check for version mismatch.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- AND NOT(PYTHON_VERSION_STRING VERSION_EQUAL PYTHONLIBS_VERSION_STRING))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- message(WARNING "Python executable (\"${PYTHON_VERSION_STRING}\") and library (\"${PYTHONLIBS_VERSION_STRING}\") version mismatch.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++find_package(Python COMPONENTS Interpreter REQUIRED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(NOT EXTERNAL_WRAP_ITK_PROJECT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CMAKE_DEPENDENT_OPTION(ITK_WRAP_PYTHON_LEGACY "Build Legacy Python support." ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Wrapping/Generators/SwigInterface/CMakeLists.txt.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Wrapping/Generators/SwigInterface/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,7 +8,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ###############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Find python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-find_package(PythonInterp REQUIRED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++find_package(Python COMPONENTS Interpreter REQUIRED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(PYTHONINTERP_FOUND "${Python_Interpreter_FOUND}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ###############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Build swig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/InsightToolkit4/files/patch-python3.10.diff b/graphics/InsightToolkit4/files/patch-python3.10.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1c92927600d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/InsightToolkit4/files/patch-python3.10.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Description: use collections.abc.Callable instead of collections.Callable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ This fixes failure to build from source with Python 3.10. The issue is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ already fixed upstream in ITKv5, the patch is for the unmaintained ITKv4.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Author: Étienne Mollier <emollier@debian.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008803
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Forwarded: not-needed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Last-Update: 2022-04-02
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/ThirdParty/pygccxml/src/pygccxml/declarations/scopedef.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/ThirdParty/pygccxml/src/pygccxml/declarations/scopedef.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7,7 +7,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import warnings
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++import collections.abc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from . import algorithm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from . import templates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from . import declaration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -332,7 +332,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @staticmethod
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _build_operator_function(name, function):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if isinstance(name, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if isinstance(name, collections.abc.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -345,7 +345,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 'operator ' + sym
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 'operator' + sym
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if isinstance(name, collections.Callable) and None is function:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if isinstance(name, collections.abc.Callable) and None is function:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if name:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if 'operator' not in name:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -368,7 +368,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @staticmethod
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def __normalize_args(**keywds):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ """implementation details"""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if isinstance(keywds['name'], collections.Callable) and \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if isinstance(keywds['name'], collections.abc.Callable) and \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ None is keywds['function']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ keywds['function'] = keywds['name']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ keywds['name'] = None
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/InsightToolkit4/files/patch-python3.8.diff b/graphics/InsightToolkit4/files/patch-python3.8.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b78ae5b86e3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/InsightToolkit4/files/patch-python3.8.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,90 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Taken from https://salsa.debian.org/med-team/insighttoolkit/-/blob/itk-4.y/debian/patches/python3.8.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/ThirdParty/pygccxml/src/pygccxml/declarations/scopedef.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/ThirdParty/pygccxml/src/pygccxml/declarations/scopedef.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -293,7 +293,7 @@ class scopedef_t(declaration.declaration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if self.name == '::':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._logger.debug(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "preparing data structures for query optimizer - started")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- start_time = time.clock()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ start_time = time.perf_counter()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.clear_optimizer()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -327,7 +327,7 @@ class scopedef_t(declaration.declaration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if self.name == '::':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._logger.debug((
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "preparing data structures for query optimizer - " +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "done( %f seconds ). "), (time.clock() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "done( %f seconds ). "), (time.perf_counter() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._optimized = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @staticmethod
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -475,7 +475,7 @@ class scopedef_t(declaration.declaration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _find_single(self, match_class, **keywds):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ """implementation details"""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._logger.debug('find single query execution - started')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- start_time = time.clock()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ start_time = time.perf_counter()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ norm_keywds = self.__normalize_args(**keywds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ decl_matcher = self.__create_matcher(match_class, **norm_keywds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dtype = self.__findout_decl_type(match_class, **norm_keywds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -484,13 +484,13 @@ class scopedef_t(declaration.declaration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ found = matcher.get_single(decl_matcher, decls, False)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._logger.debug(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'find single query execution - done( %f seconds )',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (time.clock() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (time.perf_counter() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return found
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _find_multiple(self, match_class, **keywds):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ """implementation details"""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._logger.debug('find all query execution - started')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- start_time = time.clock()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ start_time = time.perf_counter()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ norm_keywds = self.__normalize_args(**keywds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ decl_matcher = self.__create_matcher(match_class, **norm_keywds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dtype = self.__findout_decl_type(match_class, **norm_keywds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -502,7 +502,7 @@ class scopedef_t(declaration.declaration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._logger.debug('%d declaration(s) that match query', len(mfound))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._logger.debug(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'find single query execution - done( %f seconds )',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (time.clock() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (time.perf_counter() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if not mfound and not allow_empty:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ raise RuntimeError(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Multi declaration query returned 0 declarations.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/ThirdParty/pygccxml/src/pygccxml/parser/declarations_cache.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/ThirdParty/pygccxml/src/pygccxml/parser/declarations_cache.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -188,11 +188,11 @@ class file_cache_t(cache_base_t):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cache_file_obj = open(file_name, 'rb')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file_cache_t.logger.info('Loading cache file "%s".', file_name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- start_time = time.clock()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ start_time = time.perf_counter()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cache = pickle.load(cache_file_obj)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file_cache_t.logger.debug(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Cache file has been loaded in %.1f secs",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (time.clock() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (time.perf_counter() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file_cache_t.logger.debug(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Found cache in file: [%s] entries: %s",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file_name, len(list(cache.keys())))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/ThirdParty/pygccxml/src/pygccxml/parser/project_reader.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/ThirdParty/pygccxml/src/pygccxml/parser/project_reader.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -316,11 +316,11 @@ class project_reader_t(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespaces.append(decls)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.logger.debug("Flushing cache... ")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- start_time = time.clock()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ start_time = time.perf_counter()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.__dcache.flush()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.logger.debug(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Cache has been flushed in %.1f secs",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (time.clock() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (time.perf_counter() - start_time))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ answer = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.logger.debug("Joining namespaces ...")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for file_nss in namespaces:
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/InsightToolkit4/files/patch-swigpy-sliceobject.diff b/graphics/InsightToolkit4/files/patch-swigpy-sliceobject.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..da6c05bb461
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/InsightToolkit4/files/patch-swigpy-sliceobject.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Issue filed at https://github.com/InsightSoftwareConsortium/ITK/issues/3782
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Patch accepted upstreams with https://github.com/InsightSoftwareConsortium/ITK/commit/d2361b89fefb07b669b4cf67257fc3bf06afd9f5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Wrapping/Generators/Python/module_ext.i.in.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Wrapping/Generators/Python/module_ext.i.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,9 +10,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <iostream>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if PY_VERSION_HEX >= 0x03020000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define SWIGPY_SLICE_ARG(obj) ((PyObject*) (obj))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define SWIGPY_SLICEOBJECT PyObject
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define SWIGPY_SLICE_ARG(obj) ((PySliceObject*) (obj))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define SWIGPY_SLICEOBJECT PySliceObject
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>
</pre>