From e90ced6caf59bf05ebed3e4bc92ce299fcf5bd9d Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Fri, 3 Apr 2026 17:06:06 -0500 Subject: [PATCH 1/5] COMP: Re-enable CI with system package inputs for OpenSlide Re-enable build workflows using new inputs from ITKRemoteModuleBuildTestPackageAction: - apt-packages: install libopenslide-dev on Linux - brew-packages: install openslide on macOS - os-list: skip Windows (no OpenSlide package manager distribution) Python wheel builds re-enabled with default configuration. Also updates minimum Python version to 3.10+. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build-test-package.yml | 8 ++++++-- pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index 1a60a65..594f409 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -12,9 +12,13 @@ on: jobs: cxx-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.2 + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@add-apt-packages-input + with: + apt-packages: 'libopenslide-dev' + brew-packages: 'openslide' + os-list: '["ubuntu-22.04", "macos-15-intel", "macos-15"]' python-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.2 + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.6 secrets: pypi_password: ${{ secrets.pypi_password }} diff --git a/pyproject.toml b/pyproject.toml index 2e16db0..41a6d43 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ classifiers = [ "Topic :: Scientific/Engineering :: Medical Science Apps.", "Topic :: Software Development :: Libraries", ] -requires-python = ">=3.9" +requires-python = ">=3.10" dependencies = [ "itk == 5.4.*", ] From 6eaa53b6b2223e77390ace434ef1ebbb8b07e36d Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 12 Apr 2026 21:15:36 -0500 Subject: [PATCH 2/5] COMP: Add module include/ to search path for src/ targets The CTest dashboard build does not automatically add the module's include/ directory to the compiler search path for the src/ library target. Without this, itkOpenSlideImageIOFactory.h is not found: fatal error: itkOpenSlideImageIOFactory.h: No such file or directory Co-Authored-By: Claude Opus 4.6 (1M context) --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e606291..affce8e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,6 +3,7 @@ set(IOOpenSlide_SRCS itkOpenSlideImageIO.cxx ) +include_directories("${IOOpenSlide_SOURCE_DIR}/include") include_directories(${OPENSLIDE_INCLUDE_DIRS}) add_library(IOOpenSlide ${IOOpenSlide_SRCS}) From 6e5e51bc4c63637777eab9153dfa79f60974aecf Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Mon, 13 Apr 2026 15:54:06 -0500 Subject: [PATCH 3/5] COMP: Update CXX workflow ref to merged v5.4.6 branch The add-apt-packages-input feature branch was merged into v5.4.6 as commit 7beece0. Update the CXX workflow ref to use the stable branch instead of the now-stale feature branch. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build-test-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index 594f409..b256cef 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -12,7 +12,7 @@ on: jobs: cxx-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@add-apt-packages-input + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.6 with: apt-packages: 'libopenslide-dev' brew-packages: 'openslide' From c3b2c47b994fc52143d1170bcf089dc5000fe418 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Tue, 14 Apr 2026 05:09:47 -0500 Subject: [PATCH 4/5] COMP: Add build directory to include path for export header The module export header IOOpenSlideExport.h is generated by CMake in the build directory (CMAKE_CURRENT_BINARY_DIR). The CTest dashboard build does not automatically add this to the include path, causing: fatal error: IOOpenSlideExport.h: No such file or directory Co-Authored-By: Claude Opus 4.6 (1M context) --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index affce8e..5f90211 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,6 +4,7 @@ set(IOOpenSlide_SRCS ) include_directories("${IOOpenSlide_SOURCE_DIR}/include") +include_directories("${CMAKE_CURRENT_BINARY_DIR}") include_directories(${OPENSLIDE_INCLUDE_DIRS}) add_library(IOOpenSlide ${IOOpenSlide_SRCS}) From 4febb2d33e06b4599f87e0a3a67bf3bee397d8f8 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Tue, 14 Apr 2026 12:56:03 -0500 Subject: [PATCH 5/5] COMP: Modernize CMake to itk_module_add_library and disable Python wheels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the legacy add_library + itk_module_target + include_directories pattern with itk_module_add_library, which generates the export header and propagates its include directory through target interface properties. This fixes the IOOpenSlideExport.h not-found error when building test targets in the CTest/dashboard configuration. Disable the Python wheel workflow because OpenSlide is an external C library not available in the manylinux Docker containers or Windows wheel-build environments. Assisted-by: Claude Code — root-cause analysis of export header include path propagation --- .github/workflows/build-test-package.yml | 9 +++++---- src/CMakeLists.txt | 9 ++------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index b256cef..ee8d42b 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -18,7 +18,8 @@ jobs: brew-packages: 'openslide' os-list: '["ubuntu-22.04", "macos-15-intel", "macos-15"]' - python-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.6 - secrets: - pypi_password: ${{ secrets.pypi_password }} + # Python wheel builds are disabled because OpenSlide is an external C + # library that is not available in the manylinux Docker containers or + # the Windows wheel-build environment. Re-enable when the Python + # workflow gains apt-packages / brew-packages support or the module + # bundles its own OpenSlide build. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5f90211..a2885fd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,11 +3,6 @@ set(IOOpenSlide_SRCS itkOpenSlideImageIO.cxx ) -include_directories("${IOOpenSlide_SOURCE_DIR}/include") -include_directories("${CMAKE_CURRENT_BINARY_DIR}") -include_directories(${OPENSLIDE_INCLUDE_DIRS}) - -add_library(IOOpenSlide ${IOOpenSlide_SRCS}) +itk_module_add_library(IOOpenSlide ${IOOpenSlide_SRCS}) +target_include_directories(IOOpenSlide PRIVATE ${OPENSLIDE_INCLUDE_DIRS}) target_link_libraries(IOOpenSlide LINK_PRIVATE ${OPENSLIDE_LIBRARIES}) -itk_module_link_dependencies() -itk_module_target(IOOpenSlide)