Обсуждение: 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