On Sunday, July 14, 2024 6:02 PM, brian m. carlson wrote: >On 2024-07-14 at 18:28:56, rsbecker@xxxxxxxxxxxxx wrote: >> On Sunday, July 14, 2024 2:16 PM, brian m. carlson wrote: >> >I don't think this is the right approach. Every version of ksh >> >_except_ AT&T ksh works just fine here. pdksh, mksh, lksh, OpenBSD's >> >ksh (which is also its /bin/sh) work fine, as do bash, dash, >> >FreeBSD's sh (ash), Busybox's sh (also ash), and zsh (when run in sh >> >mode with 5.9 or newer). AT&T ksh is considering adding local in a newer >version for this reason. >> > >> >Literally only AT&T ksh is not supported here, and so anyone can set >> >SHELL_PATH to any suitable shell. I don't think it's useful to get >> >rid of local when there are a variety of acceptable and portable options. >> >> We can add NonStop's ksh to the list of not supported. I'm using >TEST_SHELL_PATH while running make all in the t directory. Test passes when I use >bash. For some reason (maybe GNUMake 4.1, which is what I have in my POSIX >environment, I don't get TEST_SHELL_PATH passed down from the outer Makefile, >but I can work with that. t0021 is now passing in my current CI stream using bash >5.0.18. > >I think we had discussed that you were using AT&T ksh on NonStop, which would >explain the situation. That's the most common version of ksh on proprietary Unix >systems, and you can usually detect it with something like this: > >% ksh -c 'echo $KSH_VERSION' >Version AJM 93u+m/1.0.8 2024-01-01 > >Variants of pdksh look like this (this one from OpenBSD): > >% ksh -c 'echo $KSH_VERSION' >@(#)PD KSH v5.2.14 99/07/13.2 > >And mksh and lksh (which are the same shell, just compiled differently, look like >this: > >% mksh -c 'echo $KSH_VERSION' >@(#)MIRBSD KSH R59 2024/02/01 +Debian > >% lksh -c 'echo $KSH_VERSION' >@(#)LEGACY KSH R59 2024/02/01 +Debian > >I think using bash as a workaround is the right choice here if all you have is AT&T >ksh. We did discuss the ksh issue on NonStop but the check for whether this is an AT&T ksh is non-functional (KSH_VERSION is not set). What we did was change SHELL=/usr/coreutils/bin/bash and TEST_LINT= to get the tests to execute. Unfortunately, the GNU Make we have (4.1) does not pass TEST_SHELL_PATH (also set) down to inner make processes, so we still get stuck with ksh. I changed our CI system to run the test make on its own, which is now working on this test. Regards, Randall