-
Notifications
You must be signed in to change notification settings - Fork 2
Add support for packaging VTK SDK as a wheel #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
b3264a7
to
e6b97de
Compare
There are two aspects to consider:
|
3b56e25
to
674648a
Compare
Hmm it seems that pylint triggers on VTK files, should we disable it since we won't have any python code? |
Ok, so we will tag later I guess. For now the version I hardcoded is 9.2.5. If we hardcode the version maybe I can bring back the hashes of the archives. Can we use the python 3.8 archive version for any newerpython version, or should each version match exactly ? |
Definitely, we should look into adding a script called vtk_version = "9.3.0"
for py_abi_tag in ["cp38-cp38", "cp39-cp39", "cp310-cp310", "cp311-cp311", "cp312-cp312"]:
for platform_tag in ["macosx_10_10_x86_64", "macosx_11_0_arm64", "manylinux_2_17_x86_64.manylinux2014_x86_64", "win_amd64"]:
url = f"https://vtk.org/files/wheel-sdks/vtk-wheel-sdk-{vtk_version}-{py_abi_tag}-{platform_tag}.tar.xz"
# Download files
# -> Adapt from https://github.com/girder/slicer_package_manager/blob/342b48d7b6fdf407731513c30f5dc147eca30d5b/tests/__init__.py#L324-L334
# Compute checksum
# -> See "computeFileChecksum" at https://github.com/girder/slicer_package_manager/blob/342b48d7b6fdf407731513c30f5dc147eca30d5b/tests/__init__.py#L232-L254 |
I ended up addressing the "root" cause by installing the content of the archive in a dedicated directory without relying on the automatic discovery of wheel packages. |
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. Thanks for integrating Codecov - We've got you covered ☂️ |
Thank you for making the required changes! It seems that the mac runners fail because the platform tag (macosx_12_0...) is not the same as the one on the sdk repo. We probably need to the same thing as we do for linux. I'm working on the script to generate the cmake urls file so we will get rid of the problem by changing the logic I think (since the URLs will be hardcoded) |
8e1ac88
to
47488c9
Compare
Before moving forward with the integration, we should add a test checking that a simple project can be built against the generated wheel. Add files like the following:
Consider borrowing some of the testing logic found here:
In this simple test, the
|
ea7aca1
to
85ca0b8
Compare
I'm not sure how I am supposed to fix this error: |
37784fc
to
9a840d6
Compare
This pulls a tar.xz archive from https://vtk.org/files/wheel-sdks and package it as a wheel using scikit-build-core. This wheel will then be added to a pip repository to be fetch through build requirements.
Do not rely on scikit-build-core automatic package discovery and explicitly install content of the vtk-sdk archive into a dedicated sub-directory.
Anticipating the introduction of checksum verification, the vtk-sdk archive version will be a static parameter.
Use python, abi and platform tag terminology to match specification. See https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/
Exclude Python 3.12 not supported with VTK 9.2.5 SDKs
The vtk-sdk is expected to be distributed as-is without being modified using default repair commands. See https://cibuildwheel.pypa.io/en/1.x/options/#repair-wheel-command
Version is both fetch from build system and hardcoded to ensure everything is coherent.
9776dbf
to
9a36353
Compare
31029a4
to
0933793
Compare
FYI, I bumped VTK to 9.5.0 and Python to 3.10+ from 3.8+ @finetjul @Thibault-Pelletier @LucasGivord |
LGTM @jcfr good with you ? |
This is the first batch of code to build the sdk wheel!
The URL of the SDK is composed from the target information, and no hash is checked for now, it was easier to test since my python versions mismatch between windows and linux :)
I removed the c++ code from the repo too.
I'm not sure how we are supposed to propagate the version using the dynamic metadata, for now it seems to always be v0.1.
Also I see that on "cmake-python-distributions" there is a script to update the version in different files, is this something that should be done for this repo too?