Skip to content

Conversation

@jcfr
Copy link
Member

@jcfr jcfr commented Jun 20, 2024

BUG: Update SimpleITK to fix import adding missing use of custom namespace

Update remaining use of itk::simple introduced after Slicer/SimpleITK@f95590f7 and omitted when updating SimpleITK in the context of acf3dd47 (ENH: Update ITK to 5.4.0)

List of SimpleITK changes:

$ git shortlog 4328a91a..441c59aa --no-merges
Jean-Christophe Fillion-Robin (2):
      COMP: Update remaining Swig interface files to use "slicer_itk" namespace
      COMP: Revert namespace changes in "sitkPathType.i" to fix build issues

COMP: Ensure SimpleITK is built using Slicer Python environment

Ensure SimpleITK is built using the Slicer Python environment by fixing the configuration to account for changes introduced in SimpleITK/SimpleITK@1b7d670b2, which uses the new CMake FindPython module.

This commit addresses the following warning:

CMake Warning at /path/to/SimpleITK/CMake/sitkLanguageOptions.cmake:110 (message):
  Use Python_EXECUTABLE! Ignoring PYTHON_EXECUTABLE:

Additionally, it resolves the error encountered when using CMake versions earlier than 3.24:

CMake Error at /path/to/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Python (missing: Interpreter Development.Module)
Call Stack (most recent call first):
  /path/to/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /path/to/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPython.cmake:561 (find_package_handle_standard_args)
  Wrapping/Python/CMakeLists.txt:7 (find_package)

To support CMake versions earlier than 3.24, the _Python_VERSION variables are explicitly passed.
This workaround is necessary because the fix introduced in Kitware/CMake@ece3bedbf (FindPython: fix error on multiple queries with different COMPONENTS) is not available in older CMake versions.

List of SimpleITK changes:

$ git shortlog 236005d4..4328a91af --no-merges
Jean-Christophe Fillion-Robin (2):
      COMP: Ensure Python_* variables are passed to SimpleITK inner-build
      COMP: Support CMake < 3.24 passing _Python_VERSION vars to inner-build

This pull request supersedes #7810

Related pull requests and issues:

@jcfr jcfr linked an issue Jun 20, 2024 that may be closed by this pull request
@jcfr

This comment was marked as outdated.

@jcfr jcfr force-pushed the update-simpleitk-to-include-missing-swig-interface-updates branch 2 times, most recently from f5344b6 to a844adc Compare June 21, 2024 05:11
@jcfr

This comment was marked as outdated.

@jcfr jcfr force-pushed the update-simpleitk-to-include-missing-swig-interface-updates branch 4 times, most recently from b1a0da2 to 14a6f68 Compare June 22, 2024 07:41
jcfr added 2 commits June 22, 2024 03:42
Ensure SimpleITK is built using the Slicer Python environment by fixing the configuration
to account for changes introduced in SimpleITK/SimpleITK@1b7d670b2, which uses the new
CMake FindPython module.

This commit addresses the following warning:

```
CMake Warning at /path/to/SimpleITK/CMake/sitkLanguageOptions.cmake:110 (message):
  Use Python_EXECUTABLE! Ignoring PYTHON_EXECUTABLE:
```

Additionally, it resolves the error encountered when using CMake versions earlier than 3.24:

```
CMake Error at /path/to/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Python (missing: Interpreter Development.Module)
Call Stack (most recent call first):
  /path/to/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /path/to/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPython.cmake:561 (find_package_handle_standard_args)
  Wrapping/Python/CMakeLists.txt:7 (find_package)
```

To support CMake versions earlier than 3.24, the _Python_VERSION variables are explicitly passed.
This workaround is necessary because the fix introduced in Kitware/CMake@ece3bedbf (FindPython:
fix error on multiple queries with different COMPONENTS) is not available in older CMake versions.

List of SimpleITK changes:

```
$ git shortlog 236005d4..4328a91af --no-merges
Jean-Christophe Fillion-Robin (2):
      COMP: Ensure Python_* variables are passed to SimpleITK inner-build
      COMP: Support CMake < 3.24 passing _Python_VERSION vars to inner-build
```
…space

Update remaining use of `itk::simple` introduced after
Slicer/SimpleITK@f95590f7 and omitted when updating SimpleITK in
the context of Slicer/Slicer@acf3dd47 (ENH: Update ITK to 5.4.0)

List of SimpleITK changes:

```
$ git shortlog 4328a91a..441c59aa --no-merges
Jean-Christophe Fillion-Robin (2):
      COMP: Update remaining Swig interface files to use "slicer_itk" namespace
      COMP: Revert namespace changes in "sitkPathType.i" to fix build issues
```
@jcfr jcfr force-pushed the update-simpleitk-to-include-missing-swig-interface-updates branch 2 times, most recently from 2ff50b1 to d99dc71 Compare June 22, 2024 07:53
@jcfr
Copy link
Member Author

jcfr commented Jun 22, 2024

Considering that building the branch on Windows1, macOS2 and Linux3 succeeds and allows to successfully run import SimpleITK (tested on Windows and Linux, macOS was not yet completed), I am bypassing our usual review process and moving forward with the integration 🚀

Footnotes

  1. "bluestreak" Windows factory

  2. "computron" macOS factory

  3. Ubuntu 20.04

@jcfr jcfr merged commit a26bdd2 into Slicer:main Jun 22, 2024
@jcfr jcfr deleted the update-simpleitk-to-include-missing-swig-interface-updates branch June 22, 2024 08:06
@dzenanz
Copy link
Member

dzenanz commented Jun 24, 2024

Thank you for following up JC!

@lassoan
Copy link
Contributor

lassoan commented Jun 24, 2024

I've tested this and I can confirm that SimpleITK in the latest Slicer Preview Release works well!
Thank you @jcfr!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

SimpleITK import fails in preview builds of Windows

3 participants