Обсуждение: Gen_fmgrtab.sh fails with LANG=et_EE
I recently changed locale in my machine and PostgreSQL build broke. The reason is that Gen_fmgrtab.sh uses [^A-Z] expression to sed and the GNU people in their infinite wisdom made that locale-dependant. As the script uses the complicated pipeline only for fmgroids.h -> FMGROIDS_H conversion, it seems simpler to just make it explicitly set, instead to try to work around GNU sed. I grepped around source and did not find other instances of this. The A-Z experssion was only in perl scripts or in configure and configure should be fine as it explicitly resets locale. -- marko
Вложения
"Marko Kreen" <markokr@gmail.com> writes:
> I grepped around source and did not find other instances of this.
> The A-Z experssion was only in perl scripts or in configure and
> configure should be fine as it explicitly resets locale.
Why not do the same in Gen_fmgrtab.sh? A quick LANG=C seems less
invasive than this.
regards, tom lane
Tom Lane wrote: > "Marko Kreen" <markokr@gmail.com> writes: > > I grepped around source and did not find other instances of this. > > The A-Z experssion was only in perl scripts or in configure and > > configure should be fine as it explicitly resets locale. > > Why not do the same in Gen_fmgrtab.sh? A quick LANG=C seems less > invasive than this. Well, the line of code is cpp_define=`echo $OIDSFILE | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | sed -e 's/[^A-Z]/_/g'` so it ought to be pretty obvious what the correct solution for the problem "character ranges are locale-dependent" is. -- Peter Eisentraut http://developer.postgresql.org/~petere/
Peter Eisentraut <peter_e@gmx.net> writes:
> Well, the line of code is
> cpp_define=`echo $OIDSFILE | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | sed -e 's/[^A-Z]/_/g'`
> so it ought to be pretty obvious what the correct solution for the
> problem "character ranges are locale-dependent" is.
Doh. Patched that way.
Curiously, I couldn't replicate the failure on Fedora 5 --- Marko's
platform must have different locale behavior for et_EE.
regards, tom lane
On 9/5/06, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Peter Eisentraut <peter_e@gmx.net> writes: > > Well, the line of code is > > cpp_define=`echo $OIDSFILE | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | sed -e 's/[^A-Z]/_/g'` > > so it ought to be pretty obvious what the correct solution for the > > problem "character ranges are locale-dependent" is. > > Doh. Patched that way. > > Curiously, I couldn't replicate the failure on Fedora 5 --- Marko's > platform must have different locale behavior for et_EE. Did you add it to locale-gen config and ran it? Btw, I removed all the pipeline in my patch, because I felt such messy pipeline for such a tiny thing is ugly. Especially as the filename wont change that much. Thus I though it would be cleaner to just put the symbol together with filename definition. -- marko