-
-
Notifications
You must be signed in to change notification settings - Fork 14
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
REF: Reorganize windows artifacts #14
REF: Reorganize windows artifacts #14
Conversation
Redistribute Windows artifacts according to whether they are needed at compile-link-time OR runtime. For Windows, DLLs are only needed at Windows runtime. LIBs and headers are only needed at build time. For Unix, SOs are needed both at build and runtime. Include target_name directory for Windows to support cross-compile (in future?).
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
…nda-forge-pinning 2023.12.03.16.36.48
@conda-forge-admin, please rerender |
…nda-forge-pinning 2023.12.04.19.29.31
Thanks for exploring this Daniel! 🙏 Think one thing we need to be aware of is Recognize though that the introduction of cross-compiler support for CUDA Linux and the attempt to mimic this with CUDA Windows (where cross-compiler support is absent) has resulted in some ambiguity (like what |
This PR does not increase the divergence between Linux and Windows packages; it makes them more similar. This PR does not remove any package; it does not change any dependency relationships. In fact, it adds the static library packages that were missing from the Windows variant of this recipe and only redistributes the Windows artifacts so they are (correctly) sorted according to what is needed at compile/link-time vs run-time.
As I tried to explain in this comment, the different purposes/intention of
It seems unambiguous to me that the purpose of a
Restructure No. Patch Yes. As explained above, DLLs are not needed at compile time. Only LIBs are needed at compile-time, and LIBs are included in Please let me know if I can answer any more questions. |
recipe/meta.yaml
Outdated
- Library\lib\{{ target_name }}\cuda.lib # [win] | ||
- Library\lib\{{ target_name }}\cudadevrt.lib # [win] | ||
- Library\lib\{{ target_name }}\cudart.lib # [win] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moving these libs down a directory probably requires a patch to the NVCC feedstock. However, this PR could probably be refactored to not use Library\lib\{{ target_name }}
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What would this look like if we kept .lib
s in Library\lib
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With no target_name
directory, you cannot install multiple cuda-cudart-dev_{{ target_platform }}
packages at the same time because the artifacts are not separated and will clobber. However, this is probably not a common use case and is not possible yet for Windows because there is no alternative to x86 for Windows.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Without implementing {{ target_name }} for Windows, this PR is just moving the DLL from cuda-cudart_{{ target_platform }}
to cuda-cudart
. Which is what isuru originally suggested.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can actually shrink the diff more by removing the existence tests I added.
@conda-forge-admin, please rerender |
Hi! This is the friendly automated conda-forge-webservice. I tried to rerender for you, but it looks like there was nothing to do. This message was generated by GitHub actions workflow run https://github.com/conda-forge/cuda-cudart-feedstock/actions/runs/7188148583. |
I deny responsibility for these recently failing builds on Linux because I haven't changed any of the Linux packages in this recipe, and it looks like the Windows build fails even before the build script is executed. |
The Linux build fails to apparent package corruption. Wonder if some build tool was updated that caused issues
|
I'm saving this. Genius! I may or may not ping and attribute you every time I use it. At least until you tell me to stop. In all seriousness, I think the target structure in lib is not appropriate. The lib folder is assumed to be native by conda conventions. If you want to provide non-native libraries to link against, I think the place to do it is in another folder, like the $PREFIX/targets folder discussed in other cuda feedstocks. |
Fine
I was just trying to follow the upstream artifact layout. However, following conda convention makes more sense. |
OK. As @jakirkham suggested, the Windows fail was my fault for checking the errorcode before it was set. That is now fixed. I still deny responsibility for the Linux fail, however. I have built the linux package locally without Docker and it doesn't fail via file corruption. |
The linux failures are from our rpath tests, I made this update in another PR to avoid conflicting rpath patching. Seems to be some varying order of operations that happens around this. Otherwise this LGTM. Windows users will still end up with |
Hi! This is the friendly automated conda-forge-linting service. I wanted to let you know that I linted all conda-recipes in your PR ( Here's what I've got... For recipe:
|
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
Thanks, @jakirkham @adibbley! |
Thanks Daniel for the PR! And Michael and Alex for the reviews 🙏 Think we've landed on a good approach here after a bit of iteration. Thanks for sticking with it Daniel Sounds like we are on-board with this change and it should behave well with minimal disruption Am going to configure to merge once CI passes (added one last stylistic tweak) We can follow up on anything else separately |
Hi! This is the friendly conda-forge automerge bot! I considered the following status checks when analyzing this PR:
Thus the PR was passing, but not in a mergeable state (mergeable=None, mergeable_state=unknown). |
Hi! This is the friendly conda-forge automerge bot! I considered the following status checks when analyzing this PR:
Thus the PR was passing and merged! Have a great day! |
build: | ||
number: 6 | ||
number: 7 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Even though this bumped the build/number
to 7
, there was already a bump to 7
from PR ( #15 ), which was merged previously. As a result there was no build/number
bump for this PR and packages were not published
Have manually bumped the build/number
to 8
with commit ( 00246a6 ). So we should soon see new packages with the fix
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch!
Windows DLLs are not needed at compile/link time; only headers and LIB files are needed. Thus to silence downstream overlinking warnings/errors, Windows DLLs should be moved from the noarch target_platform output (which is a second-order dependency downstream) to the native output which is listed in the run_exports directly.
More Explanation in #13 (comment)
Checklist
0
(if the version changed)conda-smithy
(Use the phrase@conda-forge-admin, please rerender
in a comment in this PR for automated rerendering)Closes #13
Closes #16 (as superseded)