This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] iconv-rules generated wrong under tr_TR.UTF-8 locale


Hi;

While trying to compile glibc-2.3.6 under tr_TR.UTF-8 locale, it fails with 
following (attention to locale name);

DEBUG: make  -C iconv others
DEBUG: make[2]: Entering directory 
`/var/tmp/pisi/glibc-2.3.6-11/work/glibc-2.3.6/iconv'
DEBUG: make[2]: Nothing to be done for `others'.
DEBUG: make[2]: Leaving directory 
`/var/tmp/pisi/glibc-2.3.6-11/work/glibc-2.3.6/iconv'
DEBUG: make  -C iconvdata others
DEBUG: make[2]: Entering directory 
`/var/tmp/pisi/glibc-2.3.6-11/work/glibc-2.3.6/iconvdata'
make[2]: *** No rule to make target 
`/var/tmp/pisi/glibc-2.3.6-11/work/build-default-i686-pc-linux-gnu-nptl/iconvdata/Äso8859-1.os', 
needed by `others'.  Stop.
DEBUG: make[2]: Leaving directory 
`/var/tmp/pisi/glibc-2.3.6-11/work/glibc-2.3.6/iconvdata'
make[1]: *** [iconvdata/others] Error 2
DEBUG: make[1]: Leaving directory 
`/var/tmp/pisi/glibc-2.3.6-11/work/glibc-2.3.6'
make: *** [all] Error 2

Turkish has 4 letter "I"s. English has only two, a lowercase dotted i and an 
uppercase dotless I. Turkish has lowercase and uppercase forms of both dotted 
and dotless I. So tolower(I) != i and toupper(i) != I for us.

Althought this situation is not a glibc bug (sed can't convert these properly) 
its directly affected.

All iconvdata/gen-8bit-*.sh scripts (which generated by below command) 
generates wrong locale names but these script must locale independent. So 
please find attached simple patch to solve this issue.

DEBUG: { echo ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 ISO8859-6 
ISO8859-7 ISO8859-8 ISO8859-9 ISO8859-10 ISO8859-11 ISO8859-13 ISO8859-14 
ISO8859-15 ISO8859-16  .... ...iso-ir-209 mac-sami iso8859-11 ibm866nav pt154 
rk1048; } | \
DEBUG: gawk 'NR == 1 { \
DEBUG:    for (i = 1; i <= NF; i++) { \
DEBUG:      printf "%s-routines := %s\n", $i, tolower($i); \
DEBUG:      printf "%s-map := gconv.map\n", $i; \
DEBUG:    } \
DEBUG:  }; \
DEBUG:  NR > 1 { \
DEBUG:    for (i = 2; i <= NF; i++) { \
DEBUG:      printf "$(objpfx)%s.stmp: ", $i; \
DEBUG:      map = toupper($i); \
DEBUG:      sub(/^ISO8859/, "ISO-8859", map); \
DEBUG:      if (map == "ISO_2033") map = map "-1983"; \
DEBUG:      printf "$(charmaps)/%s ", map; \
DEBUG:      printf "gen-%s.sh\n", $1; \
DEBUG:      printf "\t$(generate-%s-table)\n", $1; \
DEBUG:    } \
DEBUG:  }' 
> /var/tmp/pisi/glibc-2.3.6-11/work/build-default-i686-pc-linux-gnu-nptl/iconvdata/iconv-rules.new
DEBUG: 
mv -f /var/tmp/pisi/glibc-2.3.6-11/work/build-default-i686-pc-linux-gnu-nptl/iconvdata/iconv-rules.new /var/tmp/pisi/glibc-2.3.6-11/work/build-default-i686-pc-linux-gnu-nptl/iconvdata/iconv-rules

Cheers
-- 
S.ÃaÄlar Onur <caglar@uludag.org.tr>
http://cekirdek.uludag.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!
diff -ur glibc-2.3.6.orig/iconvdata/gen-8bit-gap-1.sh glibc-2.3.6/iconvdata/gen-8bit-gap-1.sh
--- glibc-2.3.6.orig/iconvdata/gen-8bit-gap-1.sh	2006-04-02 01:22:30.000000000 +0300
+++ glibc-2.3.6/iconvdata/gen-8bit-gap-1.sh	2006-04-02 01:26:26.000000000 +0300
@@ -1,4 +1,5 @@
 #! /bin/sh
+export LC_ALL=C
 echo "static const uint32_t iso88597_to_ucs4[96] = {"
 sed -ne '/^[^[:space:]]*[[:space:]]*.x00/d' \
     -e 's/^<U\(....\)>[[:space:]]*.x\([A-Fa-f].\).*/  [0x\2 - 0xA0] = 0x\1,/p' \
diff -ur glibc-2.3.6.orig/iconvdata/gen-8bit-gap.sh glibc-2.3.6/iconvdata/gen-8bit-gap.sh
--- glibc-2.3.6.orig/iconvdata/gen-8bit-gap.sh	2006-04-02 01:22:31.000000000 +0300
+++ glibc-2.3.6/iconvdata/gen-8bit-gap.sh	2006-04-02 01:26:31.000000000 +0300
@@ -1,4 +1,5 @@
 #! /bin/sh
+export LC_ALL=C
 echo "static const uint32_t to_ucs4[256] = {"
 sed -ne '/^[^[:space:]]*[[:space:]]*.x00/d' \
     -e 's/^<U\(....\)>[[:space:]]*.x\(..\).*/  [0x\2] = 0x\1,/p' \
diff -ur glibc-2.3.6.orig/iconvdata/gen-8bit.sh glibc-2.3.6/iconvdata/gen-8bit.sh
--- glibc-2.3.6.orig/iconvdata/gen-8bit.sh	2006-04-02 01:22:34.000000000 +0300
+++ glibc-2.3.6/iconvdata/gen-8bit.sh	2006-04-02 01:26:38.000000000 +0300
@@ -1,4 +1,5 @@
 #! /bin/sh
+export LC_ALL=C
 echo "static const uint32_t to_ucs4[256] = {"
 sed -ne '/^[^[:space:]]*[[:space:]]*.x00/d' \
     -e 's/^<U\(....\)>[[:space:]]*.x\(..\).*/  [0x\2] = 0x\1,/p' \

Attachment: pgp00000.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]