Skip to content

vtk: publish the VTK_INSTALL_SDK=ON include/cmake tree as a build artifact - #3312

Merged
luhenry merged 1 commit into
mainfrom
vtk-sdk-headers
Oct 15, 2026
Merged

luhenry merged 1 commit into
mainfrom
vtk-sdk-headers

Conversation

@luhenry

@luhenry luhenry commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Not a version bump - modifies the already-published vtk build itself. cadquery-ocp's queue entry is blocked on a riscv64 VTK SDK: build-vtk.yml already configures -DVTK_INSTALL_SDK=ON and runs cmake --build /build --target install, which already writes include/ plus the generated vtk-config.cmake package files to /build/install - but the workflow only ever packages vtkmodules/*.so into the published wheel, so that install output never left the runner. No riscv64 vtk SDK exists anywhere else (not on conda-forge, not on PyPI).

Change: two new steps in build_wheels, gated on matrix.python == 'cp312' (module set is identical across cp312/cp313/cp314; only cp314t additionally disables IONetCDF, and it isn't a cadquery-ocp target). They tar up the already-installed include/ tree and whichever directory find locates vtk-config.cmake in (handles lib vs lib64), and upload-artifact the result as vtk-<version>-sdk, separate from the existing per-interpreter wheel artifacts. No new compute - pure repackaging of install output the build already produces.

Differs from upstream: n/a (this is additive to our own workflow, not a new build shape).

Why an artifact, not a second wheel: this repo does have a "ship C++ headers separately" precedent (tbb-devel), but it publishes its own wheel through _publish-wheel.yml's GitHub Release path. That path is wired for wheels (+ one GPL-sources tarball) only; widening it to a non-wheel SDK tarball is a shared-workflow change affecting every package, out of scope here. A plain artifact (retention-days: 90) is the conservative, in-scope option - cadquery-ocp isn't ready to consume it yet anyway.

Risk / validation caveat: docs/packages/vtk.yaml has no pending version, so _setup.yml resolves versions to [] on this PR and build_wheels (and therefore these two new steps) does not run at all on this PR's own CI - a green check here only proves the YAML parses, not that the packaging logic works. Both new steps carry continue-on-error: true so that if anything about them is wrong, they cannot fail the job or block a future version's real wheel publish. Verified the find/cp -a/tar logic separately against a fabricated directory tree (both lib and lib64 cmake layouts) outside CI. Real validation only happens the next time a new vtk version is queued and goes through the normal push-to-main build, or via an explicit maintainer-triggered workflow_dispatch rebuild of an existing version (full ~15-20h build per leg, so not done preemptively here). Left as draft for that reason - flip to ready whenever that validation is convenient.

Testing: n/a (SDK step is best-effort/non-blocking; existing wheel build/test steps are untouched).

License: n/a (no change to what ships in the wheel).

…tifact

VTK_INSTALL_SDK=ON is already set, and cmake --build /build --target install
already writes a full include/ tree plus the generated vtk-config.cmake
package files to /build/install - but build-vtk.yml only ever packaged
vtkmodules/*.so into the published wheel, so none of that SDK output ever
left the runner. This blocks the cadquery-ocp port, whose CMake needs
find_package(VTK) headers on riscv64 (see .queue.yml's cadquery-ocp entry).

Additive only: packages the already-installed include/ and vtk-config.cmake
directories from the cp312 leg (module-identical to cp313/cp314; cp314t
disables IONetCDF and isn't a cadquery-ocp target anyway) into a tarball and
uploads it as its own vtk-<version>-sdk artifact, alongside the existing
per-interpreter wheel artifacts and without touching how they're built or
published. No new compute: this is a pure repackaging of install output the
build step already produces.

A plain GitHub Actions artifact (90-day retention) rather than a second
published wheel: _publish-wheel.yml's durable GitHub Release path is wired
for wheels (+ one GPL-sources tarball) only, and widening it is a
shared-workflow change out of scope for a single-package fix.
luhenry added a commit that referenced this pull request Oct 15, 2026
build-vtk.yml (PR #3312) captures VTK_INSTALL_SDK=ON's already-produced
include/ and vtk-config.cmake tree as a standalone artifact for cadquery-ocp
rather than rebuilding anything, picking one representative matrix leg when
the module set isn't identical across the matrix, and favoring a
continue-on-error GitHub Actions artifact over widening the shared
_publish-wheel.yml release path for a single package. Recorded in
native-deps-and-linking.md for reuse by future similar cases.
luhenry added a commit that referenced this pull request Oct 15, 2026
@luhenry
luhenry marked this pull request as ready for review October 15, 2026 13:07
@luhenry
luhenry merged commit 20ef388 into main Oct 15, 2026
8 of 9 checks passed
@luhenry
luhenry deleted the vtk-sdk-headers branch October 15, 2026 13:07
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.

1 participant