Gen_fmgrtab.sh fails with LANG=et_EE

Started by Marko Kreenover 19 years ago5 messageshackers
Jump to latest
#1Marko Kreen
markokr@gmail.com

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

Attachments:

genfmgrtab.difftext/x-patch; charset=ANSI_X3.4-1968; name=genfmgrtab.diffDownload+8-8
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marko Kreen (#1)
Re: Gen_fmgrtab.sh fails with LANG=et_EE

"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

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#2)
Re: Gen_fmgrtab.sh fails with LANG=et_EE

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/

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#3)
Re: [HACKERS] Gen_fmgrtab.sh fails with LANG=et_EE

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

#5Marko Kreen
markokr@gmail.com
In reply to: Tom Lane (#4)
Re: [HACKERS] Gen_fmgrtab.sh fails with LANG=et_EE

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