Skip to content

COMP: Modernize CMake and update CI to v5.4.6 with OpenSlide system packages#37

Merged
hjmjohnson merged 5 commits into
mainfrom
update-ci-v5.4.6
Apr 23, 2026
Merged

COMP: Modernize CMake and update CI to v5.4.6 with OpenSlide system packages#37
hjmjohnson merged 5 commits into
mainfrom
update-ci-v5.4.6

Conversation

@hjmjohnson

@hjmjohnson hjmjohnson commented Apr 3, 2026

Copy link
Copy Markdown
Member

Re-enable C++ CI by installing OpenSlide via apt-packages/brew-packages inputs and modernize the CMake build to use itk_module_add_library. Disable Python wheel builds (OpenSlide unavailable in manylinux/Windows containers).

Changes
  • Workflow: Upgrade action ref from @v5.4.2@v5.4.6, pass apt-packages: libopenslide-dev and brew-packages: openslide, restrict C++ OS list to Linux/macOS (no Windows OpenSlide), disable Python wheel workflow.
  • CMake: Replace legacy add_library + include_directories + itk_module_target with itk_module_add_library, which generates the export header and propagates its include directory through target interface properties — fixing IOOpenSlideExport.h: No such file or directory in test targets.
  • Python: Bump minimum to Python 3.10+ in pyproject.toml.

@hjmjohnson hjmjohnson requested a review from dzenanz April 3, 2026 11:56
@hjmjohnson hjmjohnson self-assigned this Apr 3, 2026

@dzenanz dzenanz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not have AI implement its own suggestion(s) about the remote module action?

@hjmjohnson hjmjohnson force-pushed the update-ci-v5.4.6 branch 3 times, most recently from 2a07d86 to 7dcc0b6 Compare April 3, 2026 22:10
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) <noreply@anthropic.com>

@dzenanz dzenanz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good.

@dzenanz

dzenanz commented Apr 6, 2026

Copy link
Copy Markdown
Member

@blowekamp this remote builds against 5.4.5, but fails against a recent main:

/.../ITKIOOpenSlide/src/itkOpenSlideImageIOFactory.cxx:18:10: fatal error: itkOpenSlideImageIOFactory.h: No such file or directory
/.../ITKIOOpenSlide/src/itkOpenSlideImageIO.cxx:24:10: fatal error: itkOpenSlideImageIO.h: No such file or directory

An attempt to fix it is in https://github.com/InsightSoftwareConsortium/ITKIOOpenSlide/tree/wipInclude branch.

Comment thread .github/workflows/build-test-package.yml Outdated
hjmjohnson and others added 4 commits April 12, 2026 21:15
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
…eels

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
@hjmjohnson hjmjohnson changed the title COMP: Disable CI builds requiring OpenSlide and update Python 3.10+ COMP: Modernize CMake and update CI to v5.4.6 with OpenSlide system packages Apr 14, 2026
@hjmjohnson hjmjohnson merged commit 368a7d6 into main Apr 23, 2026
3 of 7 checks passed
@dzenanz

dzenanz commented Apr 23, 2026

Copy link
Copy Markdown
Member

@hjmjohnson the way to upload data to IPFS does not seem to work correctly. This fails both in CI and locally:

Build started at 09:24...
1>------ Skipped Build: Project: RUN_TESTS, Configuration: Debug x64 ------
1>Project not selected to build for this solution configuration 
2>------ Skipped Build: Project: NightlyMemoryCheck, Configuration: Debug x64 ------
2>Project not selected to build for this solution configuration 
3>------ Skipped Build: Project: Nightly, Configuration: Debug x64 ------
3>Project not selected to build for this solution configuration 
4>------ Build started: Project: ITKData, Configuration: Debug x64 ------
5>------ Build started: Project: IOOpenSlideHeaderTestClean, Configuration: Debug x64 ------
6>------ Skipped Build: Project: Experimental, Configuration: Debug x64 ------
6>Project not selected to build for this solution configuration 
7>------ Skipped Build: Project: Continuous, Configuration: Debug x64 ------
7>Project not selected to build for this solution configuration 
8>------ Build started: Project: ClangFormat, Configuration: Debug x64 ------
4>Generating C:/Misc/ITK-IOOpenSlide-vs22/ExternalData/test/Input/CMU-1-Small-Region-label.mha
4>-- Fetching "https://insightsoftwareconsortium.github.io/ITKTestingData/CID/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq"
4>-- Fetching "https://data.kitware.com:443/api/v1/file/hashsum/CID/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq/download"
4>-- Fetching "https://itk.org/files/ExternalData/CID/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq"
4>-- Fetching "http://127.0.0.1:8080/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq"
4>-- Fetching "https://ipfs.io/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq"
4>-- Fetching "https://gateway.pinata.cloud/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq"
4>-- Fetching "https://cloudflare-ipfs.com/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq"
4>-- Fetching "https://dweb.link/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq"
4>CMake Error at C:/Libs/ITK-5.4.5/CMake/ExternalData.cmake:1171 (message):
4>
4>
4>  Object CID=bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq not
4>  found at:
4>
4>    https://insightsoftwareconsortium.github.io/ITKTestingData/CID/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq ("HTTP response code said error")
4>    https://data.kitware.com:443/api/v1/file/hashsum/CID/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq/download ("HTTP response code said error")
4>    https://itk.org/files/ExternalData/CID/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq ("HTTP response code said error")
4>    http://127.0.0.1:8080/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq ("Could not connect to server")
4>    https://ipfs.io/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq ("HTTP response code said error")
4>    https://gateway.pinata.cloud/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq ("Timeout was reached")
4>    https://cloudflare-ipfs.com/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq ("Could not resolve hostname")
4>    https://dweb.link/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq ("HTTP response code said error")
4>
4>
4>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(254,5): error MSB8066: Custom build for 'C:\Dev\ITK-git\Modules\Remote\IOOpenSlide\test\Input\CMU-1-Small-Region-label.mha.cid;C:\Dev\ITK-git\Modules\Remote\IOOpenSlide\test\Input\CMU-1-Small-Region.mha.cid;C:\Dev\ITK-git\Modules\Remote\IOOpenSlide\test\Input\CMU-1-Small-Region.svs.cid;C:\Dev\ITK-git\Modules\Remote\IOOpenSlide\test\Input\CMU-1-level-1-stream-200.mha.cid;C:\Dev\ITK-git\Modules\Remote\IOOpenSlide\test\Input\CMU-1-level-1.mha.cid;C:\Misc\ITK-IOOpenSlide-vs22\CMakeFiles\5c7bb9879fa7711a9ef9ebe0b0fd455a\ITKData.rule' exited with code 1.
4>Done building project "ITKData.vcxproj" -- FAILED.
9>------ Skipped Build: Project: INSTALL, Configuration: Debug x64 ------
9>Project not selected to build for this solution configuration 
10>------ Skipped Build: Project: ITKHeaderTests, Configuration: Debug x64 ------
10>Project not selected to build for this solution configuration 
========== Build: 2 succeeded, 1 failed, 6 up-to-date, 7 skipped ==========
========== Build completed at 09:26 and took 01:59.681 minutes ==========

And it seems that all recently converted remotes fail their CI. Maybe you have stood up some IPFS node on your computer which is only accessible locally? Or only accessible while it is running?

@dzenanz

dzenanz commented Apr 23, 2026

Copy link
Copy Markdown
Member

For example, the error on https://gateway.pinata.cloud/ipfs/bafkreifmnnz2tmcbonoxmg7h4n2tpz35obowqfi5cbyvfk7niwi4cbpymq is: The request timed out searching for a file on the non-pinata IPFS network. - ERR_ID:00016

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants