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
Attachments:
genfmgrtab.difftext/x-patch; charset=ANSI_X3.4-1968; name=genfmgrtab.diffDownload+8-8
"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