-
Notifications
You must be signed in to change notification settings - Fork 1
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
Add support for packaging VTK SDK as a wheel #2
base: main
Are you sure you want to change the base?
Conversation
b3264a7
to
e6b97de
Compare
There are two aspects to consider:
|
e6b97de
to
3b56e25
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.
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 |
Do not rely on scikit-build-core automatic package discovery and explicitly install content of the vtk-sdk archive into a dedicated sub-directory.
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) |
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/
1b5a7bc
to
8e1ac88
Compare
Exclude Python 3.12 not supported with VTK 9.2.5 SDKs
I'm not sure how I am supposed to fix this error: |
bbfd242
to
37784fc
Compare
37784fc
to
9a840d6
Compare
It seems that virtualenv has no type information so I added an exclusion in the code. I'm not sure I use the best approach, but it seems to work! At least on Mac and Windows. There is an issue on Ubuntu because it can't find OpenGL |
cadc25a
to
97032be
Compare
97032be
to
76fc5ea
Compare
Ready to merge! |
45860bb
to
4a91650
Compare
Version is both fetch from build system and hardcoded to ensure everything is coherent.
4a91650
to
0dd089d
Compare
@jcfr Can you please do a quick review for this PR so we can move forward. I removed hash check because hash text files are not generated automatically, so they are not available for latest versions of VTK. Let's address this issue in another PR. |
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?