mirror of
https://github.com/postgres/postgres.git
synced 2025-05-18 00:02:16 -04:00
Add support for ICU 4.2
Supporting ICU 4.2 seems useful because it ships with CentOS 6. Versions before ICU 4.6 don't support pkg-config, so document an installation method without using pkg-config. In ICU 4.2, ucol_getKeywordsForLocale() sometimes returns values that will not be accepted by uloc_toLanguageTag(). Skip loading keyword variants in that version. Reported-by: Victor Wagner <vitus@wagner.pp.ru>
This commit is contained in:
parent
f85f88bcc2
commit
eccead9ed4
@ -774,10 +774,26 @@ su - postgres
|
|||||||
Build with support for
|
Build with support for
|
||||||
the <productname>ICU</productname><indexterm><primary>ICU</></>
|
the <productname>ICU</productname><indexterm><primary>ICU</></>
|
||||||
library. This requires the <productname>ICU4C</productname> package
|
library. This requires the <productname>ICU4C</productname> package
|
||||||
as well
|
|
||||||
as <productname>pkg-config</productname><indexterm><primary>pkg-config</></>
|
|
||||||
to be installed. The minimum required version
|
to be installed. The minimum required version
|
||||||
of <productname>ICU4C</productname> is currently 4.6.
|
of <productname>ICU4C</productname> is currently 4.2.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
By default,
|
||||||
|
<productname>pkg-config</productname><indexterm><primary>pkg-config</></>
|
||||||
|
will be used to find the required compilation options. This is
|
||||||
|
supported for <productname>ICU4C</productname> version 4.6 and later.
|
||||||
|
For older versions, or if <productname>pkg-config</productname> is
|
||||||
|
not available, the variables <envar>ICU_CFLAGS</envar>
|
||||||
|
and <envar>ICU_LIBS</envar> can be specified
|
||||||
|
to <filename>configure</filename>, like in this example:
|
||||||
|
<programlisting>
|
||||||
|
./configure ... --with-icu ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
|
||||||
|
</programlisting>
|
||||||
|
(If <productname>ICU4C</productname> is in the default search path
|
||||||
|
for the compiler, then you still need to specify a nonempty string in
|
||||||
|
order to avoid use of <productname>pkg-config</productname>, for
|
||||||
|
example, <literal>ICU_CFLAGS=' '</literal>.)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
@ -722,7 +722,17 @@ pg_import_system_collations(PG_FUNCTION_ARGS)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Add keyword variants
|
* Add keyword variants
|
||||||
|
*
|
||||||
|
* In ICU 4.2, ucol_getKeywordsForLocale() sometimes returns
|
||||||
|
* values that will not be accepted by uloc_toLanguageTag(). Skip
|
||||||
|
* loading keyword variants in that version. (Both
|
||||||
|
* ucol_getKeywordValuesForLocale() and uloc_toLanguageTag() are
|
||||||
|
* new in ICU 4.2, so older versions are not supported at all.)
|
||||||
|
*
|
||||||
|
* XXX We have no information about ICU 4.3 through 4.7, but we
|
||||||
|
* know the below works with 4.8.
|
||||||
*/
|
*/
|
||||||
|
#if U_ICU_VERSION_MAJOR_NUM > 4 || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM > 2)
|
||||||
status = U_ZERO_ERROR;
|
status = U_ZERO_ERROR;
|
||||||
en = ucol_getKeywordValuesForLocale("collation", name, TRUE, &status);
|
en = ucol_getKeywordValuesForLocale("collation", name, TRUE, &status);
|
||||||
if (U_FAILURE(status))
|
if (U_FAILURE(status))
|
||||||
@ -769,6 +779,7 @@ pg_import_system_collations(PG_FUNCTION_ARGS)
|
|||||||
(errmsg("could not get keyword values for locale \"%s\": %s",
|
(errmsg("could not get keyword values for locale \"%s\": %s",
|
||||||
name, u_errorName(status))));
|
name, u_errorName(status))));
|
||||||
uenum_close(en);
|
uenum_close(en);
|
||||||
|
#endif /* ICU >4.2 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* USE_ICU */
|
#endif /* USE_ICU */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user