Skip to content

Conversation

@rhizoome
Copy link
Contributor

Programs such as BusyBox, Toybox and Coreutils (also gzib, bzip etc) in multi-call mode derive their identity from the symlink. Resolving the symlink causes them to misbehave.

fixes #2943

@davidism davidism changed the base branch from main to stable June 4, 2025 22:59
@davidism davidism changed the base branch from stable to main June 4, 2025 23:01
@davidism davidism changed the base branch from main to stable June 4, 2025 23:03
@Rowlando13 Rowlando13 deleted the branch pallets:stable July 16, 2025 06:23
@Rowlando13 Rowlando13 closed this Jul 16, 2025
@Rowlando13 Rowlando13 reopened this Jul 16, 2025
@Rowlando13 Rowlando13 deleted the branch pallets:stable July 22, 2025 09:42
@Rowlando13 Rowlando13 closed this Jul 22, 2025
@davidism davidism reopened this Jul 22, 2025
@stefreak
Copy link
Contributor

stefreak commented Aug 7, 2025

Makes sense, this looks good to me 👍

@Rowlando13
Copy link
Collaborator

This looks like this will work but it's not obvious that calling .resolve() will break things for BusyBox, etc. Please add a comment and a test.

@Rowlando13 Rowlando13 marked this pull request as draft August 23, 2025 07:34
@Rowlando13 Rowlando13 added the bug label Aug 23, 2025
@stefreak
Copy link
Contributor

stefreak commented Sep 28, 2025

@Rowlando13 How can we ensure the presence of Busybox for the test?

@Rowlando13
Copy link
Collaborator

The issue says that it is from resolving symlinks and that multiple utilities exhibit the behavior. I would imagine one of those utilities would installed on A GitHub runner, but I don't know that they are. I was going to leave it up to the person who submitted the issue.

@rhizoome
Copy link
Contributor Author

rhizoome commented Sep 29, 2025 via email

@Rowlando13
Copy link
Collaborator

Rowlando13 commented Sep 30, 2025

I think in Python would be best. I would guess it is hard to guarantee everything that a shell gives you from inside pytest since it does a lot of funny things, but I don't know for sure. @davidism might know. I am pretty sure we don't want to have busybox as part of our test suite, since it would make things slower and I don't think any of the core contributors have experience with it.

@davidism
Copy link
Member

It's fine without a test. Please make the comment very specific about why we use absolute and not resolve, so that we don't change it back later.

Programs such as BusyBox, Toybox and Coreutils (also gzib, bzip etc) in multi-call mode
derive their identity from the symlink. Resolving the symlink causes them to misbehave.
@rhizoome rhizoome changed the title Fix _pipepager() to work with multi-call binaries Fix _pipepager()/_tempfilepage() to work with multi-call binaries Sep 30, 2025
@rhizoome
Copy link
Contributor Author

It's fine without a test. Please make the comment very specific about why we use absolute and not resolve, so that we don't change it back later.

I updated this PR, but I got curious on how difficult it is to add busybox tests. It seems quite straight forward so I added this proposal: #3101

@davidism
Copy link
Member

Comment looks good. I'm not going to add the busybox tests, but it's a good reference, thanks for looking into it.

@rhizoome rhizoome marked this pull request as ready for review September 30, 2025 17:02
rhizoome added a commit to rhizoome/click that referenced this pull request Sep 30, 2025
rhizoome added a commit to rhizoome/click that referenced this pull request Sep 30, 2025
@Rowlando13 Rowlando13 merged commit 5f86603 into pallets:stable Oct 2, 2025
10 checks passed
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 17, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

_pipepager() fails with mutli-call binaries

4 participants