From 890c1cd2768ded9b06c18d0a29dca8407c9dae6c Mon Sep 17 00:00:00 2001 From: Ulysse DURAND Date: Thu, 23 Jul 2026 17:00:30 +0200 Subject: [PATCH 1/2] comp: fix vtkAddon library not found --- common.py | 2 +- patch/SuperBuild/External_vtkAddon.cmake | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/common.py b/common.py index 836e8e4..786151c 100644 --- a/common.py +++ b/common.py @@ -1,6 +1,6 @@ # Baseline Slicer repository, change this when rebasing GIT_URL = "https://github.com/Slicer/Slicer.git" -GIT_REVISION = "55f38b57fc9d9a80da0fce51aa12d82064c101cc" +GIT_REVISION = "9034c71a8fce68ab312458b3d7d16f610562263d" # Directories used by the scripts SLICER_DIR = "Slicer" diff --git a/patch/SuperBuild/External_vtkAddon.cmake b/patch/SuperBuild/External_vtkAddon.cmake index f1b0214..c9e70d2 100644 --- a/patch/SuperBuild/External_vtkAddon.cmake +++ b/patch/SuperBuild/External_vtkAddon.cmake @@ -11,18 +11,19 @@ if(NOT DEFINED vtkAddon_DIR AND NOT Slicer_USE_SYSTEM_${proj}) ExternalProject_SetIfNotDefined( Slicer_${proj}_GIT_REPOSITORY - "${EP_GIT_PROTOCOL}://github.com/AlexyPellegrini/vtkAddon.git" + "${EP_GIT_PROTOCOL}://github.com/Slicer/vtkAddon.git" QUIET ) ExternalProject_SetIfNotDefined( Slicer_${proj}_GIT_TAG - "python-dev-cmake" + "main" QUIET ) set(EXTERNAL_PROJECT_OPTIONAL_CMAKE_CACHE_ARGS "-DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH}" + "-DvtkAddon_INSTALL_NO_DEVELOPMENT:BOOL=OFF" "-DvtkAddon_WRAP_PYTHON:BOOL=ON" "-DPYTHON_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE}" "-DPYTHON_INCLUDE_DIRS:PATH=${Python3_INCLUDE_DIR}" @@ -65,6 +66,7 @@ if(NOT DEFINED vtkAddon_DIR AND NOT Slicer_USE_SYSTEM_${proj}) "-DCMAKE_INSTALL_RPATH:STRING=${install_rpath}" -DVTK_WRAP_PYTHON_FIND_LIBS:BOOL=OFF -DVTK_DIR:PATH=${VTK_DIR} + -DVTK_UNDEFINED_SYMBOLS_ALLOWED:BOOL=ON ${EXTERNAL_PROJECT_OPTIONAL_CMAKE_CACHE_ARGS} DEPENDS ${${proj}_DEPENDENCIES} @@ -72,7 +74,7 @@ if(NOT DEFINED vtkAddon_DIR AND NOT Slicer_USE_SYSTEM_${proj}) ExternalProject_GenerateProjectDescription_Step(${proj}) - set(vtkAddon_DIR ${EP_INSTALL_DIR}/lib/CMake/vtkAddon) + set(vtkAddon_DIR ${EP_INSTALL_DIR}/vtkAddon/lib/cmake/vtkAddon) set(vtkAddon_PYTHON_DIR "${EP_INSTALL_DIR}/${python_destination}") # Add path to SlicerLauncherSettings.ini From 40362ca2d8142311b1e5ad1c0fb6814f9e460719 Mon Sep 17 00:00:00 2001 From: Alexy Pellegrini Date: Fri, 25 Sep 2026 10:11:53 +0200 Subject: [PATCH 2/2] Update to current day slicer commit --- build_requirements.txt | 8 +++++++ common.py | 2 +- generate_patch.py | 2 +- patch/Libs/MRML/Core/CMakeLists.txt | 1 + .../MRML/DisplayableManager/CMakeLists.txt | 1 + .../CMake/SlicerCoreSuperbuild.cmake | 4 ++-- set_vtk_version.py | 22 +++++++++++-------- 7 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 build_requirements.txt diff --git a/build_requirements.txt b/build_requirements.txt new file mode 100644 index 0000000..433b0c2 --- /dev/null +++ b/build_requirements.txt @@ -0,0 +1,8 @@ +scikit-build-core +vtk-sdk-python-wheel-helper +cmake +ninja==1.11.1.4 +pytest +virtualenv +vtk-sdk==9.6.2 +vtk==9.6.2 diff --git a/common.py b/common.py index 786151c..7206a15 100644 --- a/common.py +++ b/common.py @@ -1,6 +1,6 @@ # Baseline Slicer repository, change this when rebasing GIT_URL = "https://github.com/Slicer/Slicer.git" -GIT_REVISION = "9034c71a8fce68ab312458b3d7d16f610562263d" +GIT_REVISION = "9a54dda46fdd0db1438711adb7add9ba85bce331" # 2026/09/25 # Directories used by the scripts SLICER_DIR = "Slicer" diff --git a/generate_patch.py b/generate_patch.py index 6895775..0820426 100644 --- a/generate_patch.py +++ b/generate_patch.py @@ -124,5 +124,5 @@ def main() -> None: try: main() except Exception as e: - print(f"Error occured while generation patch:\n{e}") + print(f"Error occured while generating patch:\n{e}") exit(1) \ No newline at end of file diff --git a/patch/Libs/MRML/Core/CMakeLists.txt b/patch/Libs/MRML/Core/CMakeLists.txt index 46ffe32..e714657 100644 --- a/patch/Libs/MRML/Core/CMakeLists.txt +++ b/patch/Libs/MRML/Core/CMakeLists.txt @@ -108,6 +108,7 @@ set(classes vtkDataIOManager vtkDataTransfer vtkEventBroker + vtkImageMapToWindowLevelAddon vtkImageMathematicsAddon vtkImplicitInvertableBoolean vtkMRMLAbstractLayoutNode diff --git a/patch/Libs/MRML/DisplayableManager/CMakeLists.txt b/patch/Libs/MRML/DisplayableManager/CMakeLists.txt index 314192b..f4081b7 100644 --- a/patch/Libs/MRML/DisplayableManager/CMakeLists.txt +++ b/patch/Libs/MRML/DisplayableManager/CMakeLists.txt @@ -40,6 +40,7 @@ set(classes vtkMRMLVolumeGlyphSliceDisplayableManager # DisplayableManager common between ThreeDView and SliceView + vtkMRMLAccuratePicker vtkMRMLOrientationMarkerDisplayableManager vtkMRMLRulerDisplayableManager vtkMRMLScalarBarDisplayableManager diff --git a/patch/SlicerCore/CMake/SlicerCoreSuperbuild.cmake b/patch/SlicerCore/CMake/SlicerCoreSuperbuild.cmake index 8328e89..3edcbf0 100644 --- a/patch/SlicerCore/CMake/SlicerCoreSuperbuild.cmake +++ b/patch/SlicerCore/CMake/SlicerCoreSuperbuild.cmake @@ -1,8 +1,8 @@ # We need to normalize paths because CMake on Windows gives us paths with backslashes # ExternalProject cache files contain `set("some\path")` which is badly interpreted... find_package(Python3 REQUIRED COMPONENTS Interpreter Development.Module) -cmake_path(CONVERT ${Python3_EXECUTABLE} TO_CMAKE_PATH_LIST Python3_EXECUTABLE NORMALIZE) -cmake_path(CONVERT ${Python3_INCLUDE_DIR} TO_CMAKE_PATH_LIST Python3_INCLUDE_DIR NORMALIZE) +cmake_path(CONVERT "${Python3_EXECUTABLE}" TO_CMAKE_PATH_LIST Python3_EXECUTABLE NORMALIZE) +cmake_path(CONVERT "${Python3_INCLUDE_DIR}" TO_CMAKE_PATH_LIST Python3_INCLUDE_DIR NORMALIZE) if(UNIX AND NOT APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") # use the right as VTK enforces it diff --git a/set_vtk_version.py b/set_vtk_version.py index c2149d0..6eeed08 100644 --- a/set_vtk_version.py +++ b/set_vtk_version.py @@ -6,18 +6,22 @@ # This is a simple regex that matches most valid python package version VERSION_PATTERN = r'([1-9][0-9]*!)?(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*((a|b|rc)(0|[1-9][0-9]*))?(\.post(0|[1-9][0-9]*))?(\.dev(0|[1-9][0-9]*))?' -# List of package name to replace version in given file -FILES = { - "vtk": Path(SLICER_DIR) / "SlicerCore" / "pyproject.toml", - "vtk-sdk": Path(SLICER_DIR) / "SlicerCore" / "pyproject.toml", - "vtk-sdk": Path(SLICER_DIR) / "SlicerCore" / "tests" / "packages" / "build_module" / "pyproject.toml", - "vtk-sdk": Path(SLICER_DIR) / "SlicerCore" / "tests" / "packages" / "find_package" / "pyproject.toml", - "vtk-sdk": Path(SLICER_DIR) / "SlicerCoreSDK" / "pyproject.toml", -} +# List of (package name, file) pairs to replace version in +FILES = [ + ("vtk", Path(SLICER_DIR) / "SlicerCore" / "pyproject.toml"), + ("vtk-sdk", Path(SLICER_DIR) / "SlicerCore" / "pyproject.toml"), + ("vtk-sdk", Path(SLICER_DIR) / "SlicerCore" / "tests" / "packages" / "build_module" / "pyproject.toml"), + ("vtk-sdk", Path(SLICER_DIR) / "SlicerCore" / "tests" / "packages" / "find_package" / "pyproject.toml"), + ("vtk", Path(SLICER_DIR) / "SlicerCoreSDK" / "pyproject.toml"), + ("vtk-sdk", Path(SLICER_DIR) / "SlicerCoreSDK" / "pyproject.toml"), + ("vtk", Path(__file__).parent / "build_requirements.txt"), + ("vtk-sdk", Path(__file__).parent / "build_requirements.txt"), +] def patch_version(pyproject: Path, name: str, version: str): """Replace occurence of {name}==X.Y.Z with {name}=={version} in file {pyproject}""" + print(f"Replacing occurence of {name}==X.Y.Z with {name}=={version} in file {pyproject}") new_content = "" with open(pyproject, "r") as file: new_content = re.sub(f"{name}=={VERSION_PATTERN}", f"{name}=={version}", file.read()) @@ -35,7 +39,7 @@ def main(): print(f"Given version, {version}, is not a valid version identifier") exit(1) - for package, file in FILES.items(): + for package, file in FILES: patch_version(file, package, version)