Re: [BUGS] Git v2.51.2 on NonStop
From: brian m. carlson <hidden>
Date: 2025-10-30 21:23:32
On 2025-10-30 at 13:52:34, D. Ben Knoble wrote:
On Wed, Oct 29, 2025 at 8:25 PM [off-list ref] wrote:quoted
What appears to be happening is that the Make environment is only using SHELL=/bin/bash for the outer processing but not the inner #!/bin/sh of t7900. The system is using /bin/sh as specified, which uses ksh, not bash, which is the trace above. When I run the individual tests with bash, the error reported goes away. The problem is, with my version of Gnu Make, 4.1.2, the SHELL variable is only being replaced for the command processing of each recipe. Once the system loader sees the shebang of #!/bin/sh, /bin/sh is used as requested, and fails out. This means that I have to remember to manually run each test that fails with bash instead of the default. It is frustrating and now adds hours to my manual evaluation of the CI/CD results. The trace above is from sh, not bash because of this. With Frustration, RandallIs this the only ksh-induced failure? And if so, what is inducing the failure—is it something the test library can work around, or is the system {k,}sh not behaving portably here?
We know that AT&T ksh (ksh93) doesn't work for Git because we require `local` and AT&T ksh doesn't offer that. Other ksh implementations, such as pdksh, mksh, lksh, OpenBSD's ksh (which is also its /bin/sh), ksh88, and various others, do in fact work just fine because they support `local`. The `test_subcommand` function does use `local`, so that may explain why things aren't working. ksh (and zsh in zsh mode, but not in sh mode[0]) also run the last command in a pipeline in the main shell instead of a subshell. That may also be a source of incompatibility. It may also be failing to work for other reasons as well, though. [0] To be clear, zsh has never successfully run our testsuite in zsh mode, but it should mostly work in sh mode. -- brian m. carlson (they/them) Toronto, Ontario, CA
Attachments
- signature.asc [application/pgp-signature] 262 bytes