Thread: Gen_fmgrtab.sh fails with LANG=et_EE

Gen_fmgrtab.sh fails with LANG=et_EE

From
"Marko Kreen"
Date:
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

Attachment

Re: Gen_fmgrtab.sh fails with LANG=et_EE

From
Tom Lane
Date:
"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

Re: Gen_fmgrtab.sh fails with LANG=et_EE

From
Peter Eisentraut
Date:
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/

Re: [HACKERS] Gen_fmgrtab.sh fails with LANG=et_EE

From
Tom Lane
Date:
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

Re: [HACKERS] Gen_fmgrtab.sh fails with LANG=et_EE

From
"Marko Kreen"
Date:
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