Re: [PATCH v2] CodingGuidelines: explicitly allow "local" for test scripts
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- May 5, 2021, 03:59 UTC
- Message-ID
- <6092180651fdc_105ac2088a@natae.notmuch>
- In-Reply-To
- <YJH712E2kT9yJkGT@camp.crustytoothpaste.net>
brian m. carlson wrote:
Show 20 quoted lines
> On 2021-05-05 at 00:08:17, Felipe Contreras wrote:
> > brian m. carlson wrote:
> > > On 2021-05-04 at 15:09:54, Ævar Arnfjörð Bjarmason wrote:
> > > > My aim here was to discover if we had any reason to think that "local"
> > > > was less universally implemented than other POSIX/C89-plus features we
> > > > rely on. It seems that it's not.
> > >
> > > "local" is missing in AT&T ksh.
> >
> > It's not missing, it's supported only in "functions", which have a
> > different syntax in ksh:
> >
> > function f { local x="foo"; echo $x; }; f
>
> I believe there's a bash compatibility mode that enables this, but I
> don't see support for it in the version Debian ships[0], which doesn't
> enable that mode:
>
> ksh -c 'function f { local x="foo"; echo $x; }; f'
> ksh: f[1]: local: not found [No such file or directory]I tried to build ksh myself to make sure, and apparently there's a mess of different versions of it. I manually applied some patches and tried three times before giving up.
It's clear the Debian version and the Arch Linux version are completely different.
> Regardless of the specifics, I think we can both agree that it doesn't > work in sh-style functions, so for Git's purposes, AT&T ksh does not > meet our needs in terms of support for local.
Indeed. But it also probably doesn't meet many other needs. A quick check shows 54 failed tests just on t0000-basic.sh. I don't think it's something we should even consider.
Cheers.
-- Felipe Contreras