GNOME Bugzilla – Bug 81669
charset.alias problems on Tru64
Last modified: 2011-02-18 15:48:50 UTC
According to bug 78257 g_print() is segfaulting on Tru64 (in the C locale) as of GLib-2.0.1. This probably means that the output of g_get_charset() is not recognized by g_convert(). Which means that config.charset needs some addition to its entry for osf*) [ and hopefully osf* is being hit for Tru64 ] Knowing what g_get_charset() would be useful ... could you try compiling the attached program with: cc -o charset charset.c `pkg-config --cflags --libs glib-2.0` And report what the output is?
Created attachment 8433 [details] [review] charset test program
*** Bug 78256 has been marked as a duplicate of this bug. ***
Owen I assume you meant gcc, which is what I use, cc can't compile it. It says: $ charset The charset is ISO-8859-1 failed to convert: Conversion from character set 'UTF-8' to 'ISO-8859-1' is not supported
Created attachment 8488 [details] [review] Diagnostic patch for gconvert.c
Could you try applying the attached patch to gconvert.c and see what the output of the test program with that change to GLib? Also, could you attach your $(prefix)/lib/charset.alias? Thanks, Owen
Created attachment 8492 [details] charset.alias
Ok, now this is the output: The charset is ISO-8859-1 Trying conversion from UTF-8 to ISO8859-1 Trying conversion from UTF-8 to ISO8859-1 failed to convert: Conversion from character set 'UTF-8' to 'ISO-8859-1' is not supported The requested file is attached. Manuel
Ok, now this is the output: The charset is ISO-8859-1 Trying conversion from UTF-8 to ISO8859-1 Trying conversion from UTF-8 to ISO8859-1 failed to convert: Conversion from character set 'UTF-8' to 'ISO-8859-1' is not supported Manuel
Can you confirm (by looking at the docs for iconv_open or whatever) that your system's iconv doesn't have a conversion between ISO-8859-1 (under any name) and UTF-8 (under any name)?
Indeed it doesn't, here's what's supported: $ pwd /usr/lib/nls/loc $ ls * C en_GB.88591.en fr_CA.88591 nl_BE.ISO8859-1 C.en en_GB.88591@DEC fr_CA.88591.en nl_NL.88591 Cextend en_GB.88591@DEC.en fr_CA.ISO8859-1 nl_NL.88591.en Cextend.en en_GB.ISO8859-1 fr_CH.88591 nl_NL.ISO8859- 1 da_DK.88591 en_US.88591 fr_CH.88591.en no_NO.88591 da_DK.88591.en en_US.88591.en fr_CH.ISO8859-1 no_NO.88591.en da_DK.ISO8859-1 en_US.ISO8859-1 fr_FR.88591 no_NO.ISO8859-1 de_CH.88591 en_US.cp850 fr_FR.88591.en pt_PT.88591 de_CH.88591.en es_ES.88591 fr_FR.88591@DEC pt_PT.88591.en de_CH.ISO8859-1 es_ES.88591.en fr_FR.88591@DEC.en pt_PT.ISO8859-1 de_DE.88591 es_ES.ISO8859-1 fr_FR.ISO8859-1 sv_SE.88591 de_DE.88591.en fi_FI.88591 is_IS.ISO8859-1 sv_SE.88591.en de_DE.88591@DEC fi_FI.88591.en it_IT.88591 sv_SE.ISO8859- 1 de_DE.88591@DEC.en fi_FI.ISO8859-1 it_IT.88591.en tr_TR.ISO8859- 9 de_DE.ISO8859-1 fr_BE.88591 it_IT.ISO8859-1 el_GR.ISO8859-7 fr_BE.88591.en nl_BE.88591 en_GB.88591 fr_BE.ISO8859-1 nl_BE.88591.en charmaps: ascii.cm iconv: ASCII-GR_ISO8859-1 ISO8859- 1_ISO8859-1-GL ISO8859-1_fold8 ISO8859-1-GL_ISO8859-1 ISO8859-1_ISO8859-1-GR ct_ISO8859-1 ISO8859-1-GR_ISO8859-1 ISO8859-1_ct fold7_ISO8859-1 ISO8859- 1_ASCII-GR ISO8859-1_fold7 fold8_ISO8859-1 Can the missing file(s) be obtained somewhere?
What you need to do is to install GNU libiconv and configure with --with-libiconv. I'd like to be able to test for the necessary support in configure, but it's really difficult to do, since we need all the machinery in glib/glib/libcharset to be able to do the test. So, I guess we'll just have to mention the need for GNU libiconv on Tru64 in the README / install docs.
When I do that, another problem comes up: gcc -g -O2 -Wall -o glib-genmarshal glib- genmarshal.o ../glib/.libs/libglib-2.0 .so /usr/local/lib/libintl.so /usr/local/lib/libiconv.so -Wl,-rpath -Wl,/usr/use rs/coul1358/glib- 2.0.1/glib/.libs:/usr/users/coul1358/local/lib /usr/bin/ld: Warning version mismatch for shared library libiconv.so glib-genmarshal depends on version 2.0.4:2.0 and libintl.so depends on version o sf.1 echo "#ifndef __G_MARSHAL_H__" > xgen-gmh \ && echo "#define __G_MARSHAL_H__" >> xgen-gmh \ && ./glib-genmarshal --nostdinc --prefix=g_cclosure_marshal ./gmarshal.list --he ader >> xgen-gmh \ && echo "#endif /* __G_MARSHAL_H__ */" >> xgen-gmh \ && (cmp -s xgen-gmh ./gmarshal.h || cp xgen-gmh ./gmarshal.h) \ && rm -f xgen-gmh xgen-gmh~ \ && echo timestamp > stamp-gmarshal.h 4354:./glib-genmarshal: /sbin/loader: Fatal Error: Cannot load multiple versions of shared object. libintl.so depends on version osf.1 of libiconv.so and Main d epends on version 2.0.4:2.0 of libiconv.so. make[1]: *** [stamp-gmarshal.h] Error 1 make[1]: Leaving directory `/usr/users/coul1358/glib-2.0.1/gobject' make: *** [install- recursive] Error 1
Hmm, is this GNU libintl? If so, you'll probably need to rebuild it to use GNU libiconv as well.
That's it, better mention that in the readme docs too. testglib now runs on my system. Thanks.
Patch applied Index: ChangeLog =================================================================== RCS file: /cvs/gnome/glib/ChangeLog,v retrieving revision 1.1085.2.28 diff -u -p -r1.1085.2.28 ChangeLog --- ChangeLog 11 Jun 2002 23:27:24 -0000 1.1085.2.28 +++ ChangeLog 13 Jun 2002 20:01:02 -0000 @@ -1,3 +1,8 @@ +Thu Jun 13 15:57:46 2002 Owen Taylor <otaylor@redhat.com> + + * INSTALL.in: Add a note about the deficiency + of Tru64 iconv. (#81699, Manuel Op de Coul) + Tue Jun 11 17:03:39 2002 Owen Taylor <otaylor@redhat.com> * tests/patterntest.c (test_compilation) Index: INSTALL.in =================================================================== RCS file: /cvs/gnome/glib/INSTALL.in,v retrieving revision 1.4.2.1 diff -u -p -r1.4.2.1 INSTALL.in --- INSTALL.in 22 May 2002 20:01:17 -0000 1.4.2.1 +++ INSTALL.in 13 Jun 2002 20:01:02 -0000 @@ -47,6 +47,12 @@ At a minimum you'll need the SUNWuiu8 pa should also install the SUNWciu8, SUNWhiu8, SUNWjiu8, and SUNWkiu8 packages. +The native iconv on Compaq Tru64 doesn't contain support for +UTF-8, so you'll need to use GNU libiconv instead. (When +using GNU libiconv for GTK+, you'll need to use GNU libiconv +for GNU gettext as well.) This probably applies to related +operating systems as well. + Finally, for message catalog handling, GTK+ requires an implementation of gettext(). If your system doesn't provide this functionality, you should use the libintl library from the GNU gettext package,