Repository navigation
[windows] Convert symlinks to hardlinks during tarfile expansion. - #990
Merged
Merged
Conversation
stellaraccident
approved these changes
Jul 10, 2025
stellaraccident
left a comment
Collaborator
There was a problem hiding this comment.
Some day I would still love a root cause, but I agree this is likely the least bad option. It does create some possibilities of different failure modes on windows vs linux with respect to canonical paths and such: the end result will be that linux will be more strict with respect to package layering and windows will be more permissive. So in the future, we may see layering issues only on the one OS. If it has to be that way, having Linux be the canary is better, given that Windows is so sensitive and hard to debug anyway.
ScottTodd
added a commit
that referenced
this pull request
Jul 10, 2025
Progress on #827 (!!) Tested at https://github.com/ROCm/TheRock/actions/runs/16185309410, which triggered these: * https://github.com/ROCm/TheRock/actions/runs/16186383600 (gfx1151) * https://github.com/ROCm/TheRock/actions/runs/16186941663 (gfx120X-all) * https://github.com/ROCm/TheRock/actions/runs/16186966931 (gfx110X-dgpu) Some next steps after this, roughly in order: * Monitor scheduled jobs to check that wheels are successfully built and uploaded * Download/install and test the wheels on various systems, exercising components like hipBLASLt * Update support status: * https://github.com/ROCm/TheRock?tab=readme-ov-file#support-status * https://github.com/ROCm/TheRock/blob/main/RELEASES.md#python-packages-support-status * Build torchvision and torchaudio (need some patches) * Connect with other build/test/release workflows so we get pre-submit, post-submit, and scheduled coverage for these builds/releases/tests * Rebase patches onto PyTorch 2.8 (and/or HEAD), land patches upstream * Add features like Triton support (aotriton?) for optimized flash attention kernels, etc. * Expand the list of supported gfx targets --- ~~This depends on some other open PRs, but I have tested parts of it all the way through to dev wheel publishing and then installation and testing on a dev machine: https://github.com/ROCm/TheRock/actions/runs/16181411431/job/45678668536, #827 (comment) ~~See the other PRs:~~ * ~~#783 * ~~#980 * ~~#988 * ~~#990
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Progress on #827.
This replaces symlinks in the
_rocm_sdk_develfolder of a Python install on Windows with hardlinks. Symlinks are not supported in Python wheels (see https://pep-previews--3786.org.readthedocs.build/pep-0778/ for a proposal to change that) so we expand a directory structure containing symlinks from a tarfile on demand. However, Windows has patchy support for symlinks (dependent on registry/policy settings), while hardlinks are more broadly available. For more background information on symlinks vs hardlinks, see https://stackoverflow.com/questions/185899/what-is-the-difference-between-a-symbolic-link-and-a-hard-link .Tested:
Locally on my gfx1100 machine with a source build
On CI to build a "dev" release: https://github.com/ROCm/TheRock/actions/runs/16177150195
On my gfx1151 machine with that dev release
python -m pip install --index-url https://d25kgig7rdsyks.cloudfront.net/v2/gfx1151/ rocm[libraries,devel]==7.0.0.dev0+98ed4ad77f79822694ec01a36180ec3b95f4bd00 rocm-sdk testOn CI with a PyTorch wheel build using that dev release (based on a branch with workflow changes): https://github.com/ROCm/TheRock/actions/runs/16179933739/job/45673986615