Skip to content
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

fix(utils): resolve input path in delete_dir_contents() if it's a link #3754

Merged
merged 3 commits into from
Apr 9, 2024

Conversation

rami3l
Copy link
Member

@rami3l rami3l commented Apr 2, 2024

Closes #3344, superseding #3452:

A better fix is to resolve the link in the calling code and then use remove_dir_contents as before.
#3753 (comment)

@rami3l rami3l requested a review from rbtcollins April 2, 2024 02:18
@rami3l rami3l force-pushed the fix/remove-dir-all-or-unlink branch 2 times, most recently from b553a5f to 92e4da4 Compare April 2, 2024 02:33
@rami3l rami3l force-pushed the fix/remove-dir-all-or-unlink branch from 92e4da4 to a267f6f Compare April 2, 2024 05:22
// issue #3344
/// `~/.rustup/tmp` and `~/.rustup/downloads` are permitted to be symlinks.
#[test]
#[cfg(any(unix, windows))]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't this equivalent to all platforms?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are indeed other platforms such as wasm, although I don't know if Rustup is meaningful there or not. Similar to other tests above/below it, this one relies on the fact that we compile for Unix or Windows. I just copied the code over as I mentioned above.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that platforms like WASM exist, this seems okay.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a side effect of code evolution, it isn't the pattern in general, and rustup does depend on hardlinks to operate at all. Are there platforms that have hardlinks, but not symlinks?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rbtcollins Looks like symlinks are also available on WASM/WASI: https://doc.rust-lang.org/std/os/wasi/fs/fn.symlink.html, so I'm also okay with removing this line. Anyway Rustup in its current form will fail to build on WASM and not all dependencies of this test work on WASM anyway.

src/utils/utils.rs Outdated Show resolved Hide resolved
// issue #3344
/// `~/.rustup/tmp` and `~/.rustup/downloads` are permitted to be symlinks.
#[test]
#[cfg(any(unix, windows))]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that platforms like WASM exist, this seems okay.

src/utils/utils.rs Outdated Show resolved Hide resolved
@rami3l rami3l requested a review from rbtcollins April 8, 2024 10:21
@rami3l rami3l added this pull request to the merge queue Apr 9, 2024
Merged via the queue into master with commit 68db1c4 Apr 9, 2024
21 checks passed
@rami3l rami3l deleted the fix/remove-dir-all-or-unlink branch April 9, 2024 07:50
@rami3l rami3l mentioned this pull request Apr 14, 2024
3 tasks
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.

Regression when ~/.rustup/downloads and/or tmp are symlinks
3 participants