external-sourcery-toolchain: remove

As per discussion on the mailing list [1], remove this largely
unmaintained external toolchain support in favour of the maintained
version in meta-sourcery [2].

Also correct the example and documentation.conf entries for TCMODE to
match up with this change.

[1] http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087133.html
[2] https://github.com/MentorEmbedded/meta-sourcery/

(From OE-Core rev: 7603b15415301679bccbcb89af688c211704a43a)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2013-12-12 16:07:05 +00:00 committed by Richard Purdie
parent b1b0c31515
commit 07ce0296bb
6 changed files with 1 additions and 644 deletions

View File

@ -1,107 +0,0 @@
def csl_run(d, cmd, *args):
import bb.process
import subprocess
topdir = d.getVar('TOPDIR', True)
toolchain_path = d.getVar('EXTERNAL_TOOLCHAIN', True)
if not toolchain_path:
return 'UNKNOWN', 'UNKNOWN'
target_prefix = d.getVar('TARGET_PREFIX', True)
path = os.path.join(toolchain_path, 'bin', target_prefix + cmd)
args = [path] + list(args)
return bb.process.run(args, cwd=topdir, stderr=subprocess.PIPE)
def csl_get_version(d):
try:
stdout, stderr = csl_run(d, 'gcc', '-v')
except bb.process.CmdError as exc:
bb.error('Failed to obtain CodeSourcery toolchain version: %s' % exc)
bb.error('Make sure that MACHINE is set correctly in your local.conf and the toolchain supports %s.' % d.getVar("TARGET_ARCH", True))
return 'UNKNOWN'
else:
last_line = stderr.splitlines()[-1]
return last_line
def csl_get_main_version(d):
version = csl_get_version(d)
if version != 'UNKNOWN':
return version.split()[-1].rstrip(')')
else:
return version
def csl_get_gcc_version(d):
version = csl_get_version(d)
if version != 'UNKNOWN':
return version.split()[2]
else:
return version
def csl_get_libc_version(d):
syspath = d.expand('${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}')
if not syspath:
return 'UNKNOWN'
libpath = syspath + '/libc/lib/'
if not os.path.exists(libpath):
libpath = syspath + '/libc/sgxx-glibc/lib/'
if os.path.exists(libpath):
for file in os.listdir(libpath):
if file.find('libc-') == 0:
return file[5:-3]
return 'UNKNOWN'
def csl_get_kernel_version(d):
syspath = d.expand('${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}')
if not syspath:
return 'UNKNOWN'
vf = syspath + '/libc/usr/include/linux/version.h'
if not os.path.exists(vf):
vf = syspath + '/libc/sgxx-glibc/usr/include/linux/version.h'
try:
f = open(vf, 'r')
except (OSError, IOError):
return 'UNKNOWN'
l = f.readlines();
f.close();
for s in l:
if s.find('LINUX_VERSION_CODE') > 0:
ver = int(s.split()[2])
maj = ver / 65536
ver = ver % 65536
min = ver / 256
ver = ver % 256
return str(maj)+'.'+str(min)+'.'+str(ver)
return 'UNKNOWN'
def csl_get_gdb_version(d):
try:
stdout, stderr = csl_run(d, 'gdb', '-v')
except bb.process.CmdError:
return 'UNKNOWN'
else:
first_line = stdout.splitlines()[0]
return first_line.split()[-1]
python csl_version_handler () {
d = e.data
ld = d.createCopy()
ld.finalize()
d.setVar('CSL_VER_MAIN', csl_get_main_version(ld))
d.setVar('CSL_VER_GCC', csl_get_gcc_version(ld))
d.setVar('CSL_VER_LIBC', csl_get_libc_version(ld))
d.setVar('CSL_VER_KERNEL', csl_get_kernel_version(ld))
d.setVar('CSL_VER_GDB', csl_get_gdb_version(ld))
}
addhandler csl_version_handler
csl_version_handler[eventmask] = "bb.event.ConfigParsed"
# Ensure that any variable which includes the --sysroot (CC, CXX, etc) also
# depends on the toolchain version
TOOLCHAIN_OPTIONS[vardeps] += "CSL_VER_MAIN CSL_VER_GCC"

View File

@ -1,2 +0,0 @@
TCMODE = "external-sourcery"
require conf/distro/include/tcmode-${TCMODE}.inc

View File

@ -1,128 +0,0 @@
#
# Configuration to use external Sourcery G++ toolchain
#
EXTERNAL_TOOLCHAIN ?= "/usr/local/csl/${TARGET_ARCH}"
TOOLCHAIN_PATH_ADD = "${EXTERNAL_TOOLCHAIN}/bin:"
PATH =. "${TOOLCHAIN_PATH_ADD}"
CSL_TARGET_SYS_powerpc ?= "powerpc-linux-gnu"
CSL_TARGET_SYS_powerpc64 ?= "powerpc-linux-gnu"
CSL_TARGET_SYS_arm ?= "arm-none-linux-gnueabi"
CSL_TARGET_SYS_mips ?= "mips-linux-gnu"
CSL_TARGET_SYS_mipsel ?= "mips-linux-gnu"
CSL_TARGET_SYS_mips64 ?= "mips-linux-gnu"
CSL_TARGET_SYS_i686 ?= "i686-pc-linux-gnu"
CSL_TARGET_SYS_i586 ?= "i686-pc-linux-gnu"
CSL_TARGET_SYS = "${TARGET_SYS}"
TARGET_PREFIX = "${CSL_TARGET_SYS}-"
PREFERRED_PROVIDER_linux-libc-headers = "external-sourcery-toolchain"
PREFERRED_PROVIDER_linux-libc-headers-dev = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs = "external-sourcery-toolchain"
PREFERRED_PROVIDER_libgcc = "external-sourcery-toolchain"
PREFERRED_PROVIDER_eglibc = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/libc = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/libintl = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/libiconv = "external-sourcery-toolchain"
PREFERRED_PROVIDER_glibc-thread-db = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/linux-libc-headers = "external-sourcery-toolchain"
PREFERRED_PROVIDER_virtual/linux-libc-headers-dev = "external-sourcery-toolchain"
PREFERRED_PROVIDER_gdbserver ??= "external-sourcery-toolchain"
# No need to re-compile the locale files
GLIBC_INTERNAL_USE_BINARY_LOCALE = "precompiled"
ENABLE_BINARY_LOCALE_GENERATION = ""
TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_HOST}"
# Point to the appropriate multilib sysroot from the external toolchain, whose
# files will be extracted into the OE sysroot
def exttc_run(d, cmd):
try:
return bb.process.run(cmd, shell=True, env={'PATH': d.getVar('PATH', True)})[0].rstrip()
except (OSError, bb.process.CmdError):
return ''
EXTERNAL_TOOLCHAIN_SYSROOT_CMD = "${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} -print-sysroot"
EXTERNAL_TOOLCHAIN_SYSROOT ??= "${@exttc_run(d, EXTERNAL_TOOLCHAIN_SYSROOT_CMD)}"
# These bits are here temporarily to sidestep the need to use a separate set
# of tune files to pass the appropriate multilib selection arguments to the
# sourcery toolchain, as is needed to extract the sysroot content.
TUNE_CCARGS_append_x86 = " -msgxx-glibc"
CSL_MULTILIB_ARGS[ppce500] ?= "-te500v1"
CSL_MULTILIB_ARGS[ppce500mc] ?= "-te500mc"
CSL_MULTILIB_ARGS[ppce500v2] ?= "-te500v2"
CSL_MULTILIB_ARGS[ppce600] ?= "-te600"
def csl_multilib_arg(d):
argument = d.getVarFlag('CSL_MULTILIB_ARGS', d.getVar('DEFAULTTUNE', True) or '')
if argument:
return argument
else:
return ''
EXTERNAL_TOOLCHAIN_SYSROOT_CMD += "${@csl_multilib_arg(d)}"
# Unfortunately, the CSL ia32 toolchain has non-prefixed binaries in its
# bindir (e.g. gcc, ld). To avoid this messing up our build, we avoid adding
# this bindir to our PATH, and instead add symlinks to the prefixed binaries
# to our staging toolchain bindir.
python toolchain_metadata_setup () {
d = e.data
l = d.createCopy()
l.finalize()
if os.path.exists(bb.data.expand('${EXTERNAL_TOOLCHAIN}/bin/gcc', l)):
d.setVar('TOOLCHAIN_PATH_ADD', '')
}
addhandler toolchain_metadata_setup
toolchain_metadata_setup[eventmask] = "bb.event.ConfigParsed"
python toolchain_setup () {
d = e.data
if not d.getVar('TOOLCHAIN_PATH_ADD', True):
populate_toolchain_links(d)
}
addhandler toolchain_setup
toolchain_setup[eventmask] = "bb.event.BuildStarted"
def populate_toolchain_links(d):
import errno
from glob import glob
d = d.createCopy()
d.finalize()
pattern = d.expand('${EXTERNAL_TOOLCHAIN}/bin/${TARGET_PREFIX}*')
files = glob(pattern)
if not files:
bb.fatal("Unable to populate toolchain binary symlinks in %s" % pattern)
bindir = d.getVar('STAGING_BINDIR_TOOLCHAIN', True)
bb.utils.mkdirhier(bindir)
for f in files:
base = os.path.basename(f)
newpath = os.path.join(bindir, base)
try:
os.symlink(f, newpath)
except OSError as exc:
if exc.errno == errno.EEXIST:
break
bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc))
require conf/distro/include/csl-versions.inc

View File

@ -260,7 +260,7 @@ TARGET_OS[doc] = "Specifies the target's operating system."
TARGET_PREFIX[doc] = "The prefix for the cross compile toolchain. E.g arm-linux- ."
TARGET_SYS[doc] = "The target system is composed out of TARGET_ARCH,TARGET_VENDOR and TARGET_OS."
TCLIBC[doc] = "Specifies which variant of the GNU standard C library (libc) to use during the build process. You can select eglibc or uclibc."
TCMODE[doc] = "The toolchain selector. It selects the external toolchain built using the OpenEmbedded build system or a few supported combinations of the upstream GCC or CodeSourcery Labs toolchain."
TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
TEST_IMAGE[doc] = "Enable test booting of virtual machine images under the qemu emulator after any root filesystems are created and run tests against those images."
TIME[doc] = "The time the build was started HMS"
TMPDIR[doc] = "This variable is the temporary directory the OpenEmbedded build system uses when it does its work building images. By default, the TMPDIR variable is named tmp within the Build Directory."

View File

@ -1,149 +0,0 @@
require recipes-core/eglibc/eglibc-package.inc
INHIBIT_DEFAULT_DEPS = "1"
# License applies to this recipe code, not the toolchain itself
SUMMARY = "External Sourcery G++ toolchain"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
PROVIDES += "\
linux-libc-headers \
virtual/${TARGET_PREFIX}gcc \
virtual/${TARGET_PREFIX}g++ \
virtual/${TARGET_PREFIX}gcc-initial \
virtual/${TARGET_PREFIX}gcc-intermediate \
virtual/${TARGET_PREFIX}binutils \
virtual/${TARGET_PREFIX}libc-for-gcc \
virtual/${TARGET_PREFIX}libc-initial \
virtual/${TARGET_PREFIX}compilerlibs \
virtual/libc \
virtual/libintl \
virtual/libiconv \
glibc-thread-db \
libgcc \
eglibc \
virtual/linux-libc-headers \
"
PV = "${CSL_VER_MAIN}"
PR = "r7"
#SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/${CSL_TARGET_SYS}/arm-${PV}-${TARGET_PREFIX}i686-pc-linux-gnu.tar.bz2"
SRC_URI = "file://SUPPORTED"
do_install() {
# Use optimized files if available
sysroot="${EXTERNAL_TOOLCHAIN_SYSROOT}"
cp -a $sysroot${base_libdir}/. ${D}${base_libdir}
cp -a $sysroot/etc/. ${D}${sysconfdir}
cp -a $sysroot/sbin/. ${D}${base_sbindir}
install -d ${D}/usr
for usr_element in bin libexec sbin share ${base_libdir}; do
usr_path=$sysroot/usr/$usr_element
cp -a $usr_path ${D}/usr/
done
for datadir_element in man info; do
datadir_path=$sysroot/usr/$datadir_element
if [ -e $datadir_path ]; then
cp -a $datadir_path ${D}${datadir}/
fi
done
# Some toolchains have headers under the core specific area
if [ -e $sysroot/usr/include ]; then
cp -a $sysroot/usr/include/. ${D}${includedir}
else
cp -a $sysroot/../usr/include/. ${D}${includedir}
fi
rm ${D}${sysconfdir}/rpc
rm -r ${D}${datadir}/zoneinfo
mv ${D}${libdir}/bin/* ${D}${bindir}/
if [ -e ${D}${libdir}/bin/.debug ]; then
mv ${D}${libdir}/bin/.debug/* ${D}${bindir}/.debug/
fi
ln -s ../../bin/gdbserver ${D}${libdir}/bin/sysroot-gdbserver
sed -i -e 's/__packed/__attribute__ ((packed))/' ${D}${includedir}/mtd/ubi-user.h
sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" -e "s# ${libdir}# .#g" ${D}${libdir}/libc.so
sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" -e "s# ${libdir}# .#g" ${D}${libdir}/libpthread.so
}
SYSROOT_PREPROCESS_FUNCS += "external_toolchain_sysroot_adjust"
external_toolchain_sysroot_adjust() {
dest_sysroot="$(${CC} -print-sysroot | sed -e's,^${STAGING_DIR_HOST},,; s,/$,,')"
if [ -n "$dest_sysroot" ]; then
rm -f ${SYSROOT_DESTDIR}/$dest_sysroot
ln -s . ${SYSROOT_DESTDIR}/$dest_sysroot
fi
# If the usr/lib directory doesn't exist, the toolchain fails to even
# try to find crti.o in a completely different directory (usr/lib64)
install -d ${SYSROOT_DESTDIR}/usr/lib
}
PACKAGES =+ "libgcc libgcc-dev libstdc++ libstdc++-dev libstdc++-staticdev linux-libc-headers linux-libc-headers-dev gdbserver gdbserver-dbg"
# This test should be fixed to ignore .a files in .debug dirs
INSANE_SKIP_${PN}-dbg = "staticdev"
# We don't care about GNU_HASH in prebuilt binaries
INSANE_SKIP_${PN}-utils += "ldflags"
INSANE_SKIP_libstdc++ += "ldflags"
INSANE_SKIP_libgcc += "ldflags"
INSANE_SKIP_gdbserver += "ldflags"
PKG_${PN} = "eglibc"
PKG_${PN}-dev = "eglibc-dev"
PKG_${PN}-staticdev = "eglibc-staticdev"
PKG_${PN}-doc = "eglibc-doc"
PKG_${PN}-dbg = "eglibc-dbg"
PKG_${PN}-pic = "eglibc-pic"
PKG_${PN}-utils = "eglibc-utils"
PKG_${PN}-gconv = "eglibc-gconv"
PKG_${PN}-extra-nss = "eglibc-extra-nss"
PKG_${PN}-thread-db = "eglibc-thread-db"
PKG_${PN}-pcprofile = "eglibc-pcprofile"
PKGV = "${CSL_VER_LIBC}"
PKGV_libgcc = "${CSL_VER_GCC}"
PKGV_libgcc-dev = "${CSL_VER_GCC}"
PKGV_libstdc++ = "${CSL_VER_GCC}"
PKGV_libstdc++-dev = "${CSL_VER_GCC}"
PKGV_libstdc++-staticdev = "${CSL_VER_GCC}"
PKGV_linux-libc-headers = "${CSL_VER_KERNEL}"
PKGV_linux-libc-headers-dev = "${CSL_VER_KERNEL}"
PKGV_gdbserver = "${CSL_VER_GDB}"
PKGV_gdbserver-dbg = "${CSL_VER_GDB}"
FILES_libgcc = "${base_libdir}/libgcc_s.so.1"
FILES_libgcc-dev = "${base_libdir}/libgcc_s.so"
FILES_libstdc++ = "${libdir}/libstdc++.so.*"
FILES_libstdc++-dev = "${includedir}/c++/${PV} \
${libdir}/libstdc++.so \
${libdir}/libstdc++.la \
${libdir}/libsupc++.la"
FILES_libstdc++-staticdev = "${libdir}/libstdc++.a ${libdir}/libsupc++.a"
FILES_linux-libc-headers = "${includedir}/asm* \
${includedir}/linux \
${includedir}/mtd \
${includedir}/rdma \
${includedir}/scsi \
${includedir}/sound \
${includedir}/video \
"
FILES_gdbserver = "${bindir}/gdbserver ${libdir}/bin/sysroot-gdbserver"
FILES_gdbserver-dbg = "${bindir}/.debug/gdbserver"
CSL_VER_MAIN ??= ""
python () {
if not d.getVar("CSL_VER_MAIN"):
raise bb.parse.SkipPackage("External CSL toolchain not configured (CSL_VER_MAIN not set).")
}

View File

@ -1,257 +0,0 @@
aa_DJ ISO-8859-1
aa_ER UTF-8
aa_ER@saaho UTF-8
aa_ET UTF-8
af_ZA ISO-8859-1
am_ET UTF-8
an_ES ISO-8859-15
ar_AE ISO-8859-6
ar_BH ISO-8859-6
ar_DZ ISO-8859-6
ar_EG ISO-8859-6
ar_IN UTF-8
ar_IQ ISO-8859-6
ar_JO ISO-8859-6
ar_KW ISO-8859-6
ar_LB ISO-8859-6
ar_LY ISO-8859-6
ar_MA ISO-8859-6
ar_OM ISO-8859-6
ar_QA ISO-8859-6
ar_SA ISO-8859-6
ar_SD ISO-8859-6
ar_SY ISO-8859-6
ar_TN ISO-8859-6
ar_YE ISO-8859-6
ast_ES ISO-8859-15
be_BY CP1251
be_BY@latin UTF-8
ber_DZ UTF-8
ber_MA UTF-8
bg_BG CP1251
bn_BD UTF-8
bn_IN UTF-8
bo_CN UTF-8
bo_IN UTF-8
br_FR ISO-8859-1
br_FR@euro ISO-8859-15
bs_BA ISO-8859-2
byn_ER UTF-8
ca_AD ISO-8859-15
ca_ES ISO-8859-1
ca_ES@euro ISO-8859-15
ca_FR ISO-8859-15
ca_IT ISO-8859-15
crh_UA UTF-8
cs_CZ ISO-8859-2
csb_PL UTF-8
cy_GB ISO-8859-14
da_DK ISO-8859-1
de_AT ISO-8859-1
de_AT@euro ISO-8859-15
de_BE ISO-8859-1
de_BE@euro ISO-8859-15
de_CH ISO-8859-1
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
de_LU ISO-8859-1
de_LU@euro ISO-8859-15
dv_MV UTF-8
dz_BT UTF-8
el_GR ISO-8859-7
el_CY ISO-8859-7
en_AG UTF-8
en_AU ISO-8859-1
en_BW ISO-8859-1
en_CA ISO-8859-1
en_DK ISO-8859-1
en_GB ISO-8859-1
en_HK ISO-8859-1
en_IE ISO-8859-1
en_IE@euro ISO-8859-15
en_IN UTF-8
en_NG UTF-8
en_NZ ISO-8859-1
en_PH ISO-8859-1
en_SG ISO-8859-1
en_US ISO-8859-1
en_ZA ISO-8859-1
en_ZW ISO-8859-1
es_AR ISO-8859-1
es_BO ISO-8859-1
es_CL ISO-8859-1
es_CO ISO-8859-1
es_DO ISO-8859-1
es_EC ISO-8859-1
es_ES ISO-8859-1
es_ES@euro ISO-8859-15
es_GT ISO-8859-1
es_HN ISO-8859-1
es_MX ISO-8859-1
es_NI ISO-8859-1
es_PA ISO-8859-1
es_PE ISO-8859-1
es_PR ISO-8859-1
es_PY ISO-8859-1
es_SV ISO-8859-1
es_US ISO-8859-1
es_UY ISO-8859-1
es_VE ISO-8859-1
et_EE ISO-8859-1
eu_ES ISO-8859-1
eu_ES@euro ISO-8859-15
fa_IR UTF-8
fi_FI ISO-8859-1
fi_FI@euro ISO-8859-15
fil_PH UTF-8
fo_FO ISO-8859-1
fr_BE ISO-8859-1
fr_BE@euro ISO-8859-15
fr_CA ISO-8859-1
fr_CH ISO-8859-1
fr_FR ISO-8859-1
fr_FR@euro ISO-8859-15
fr_LU ISO-8859-1
fr_LU@euro ISO-8859-15
fur_IT UTF-8
fy_NL UTF-8
fy_DE UTF-8
ga_IE ISO-8859-1
ga_IE@euro ISO-8859-15
gd_GB ISO-8859-15
gez_ER UTF-8
gez_ER@abegede UTF-8
gez_ET UTF-8
gez_ET@abegede UTF-8
gl_ES ISO-8859-1
gl_ES@euro ISO-8859-15
gu_IN UTF-8
gv_GB ISO-8859-1
ha_NG UTF-8
he_IL ISO-8859-8
hi_IN UTF-8
hne_IN UTF-8
hr_HR ISO-8859-2
hsb_DE ISO-8859-2
ht_HT UTF-8
hu_HU ISO-8859-2
hy_AM UTF-8
id_ID ISO-8859-1
ig_NG UTF-8
ik_CA UTF-8
is_IS ISO-8859-1
it_CH ISO-8859-1
it_IT ISO-8859-1
it_IT@euro ISO-8859-15
iu_CA UTF-8
iw_IL ISO-8859-8
ka_GE GEORGIAN-PS
kk_KZ PT154
kk_KZ RK1048
kl_GL ISO-8859-1
km_KH UTF-8
kn_IN UTF-8
ks_IN UTF-8
ks_IN@devanagari UTF-8
ku_TR ISO-8859-9
kw_GB ISO-8859-1
ky_KG UTF-8
lg_UG ISO-8859-10
li_BE UTF-8
li_NL UTF-8
lo_LA UTF-8
lt_LT ISO-8859-13
lv_LV ISO-8859-13
mai_IN UTF-8
mg_MG ISO-8859-15
mi_NZ ISO-8859-13
mk_MK ISO-8859-5
ml_IN UTF-8
mn_MN UTF-8
mr_IN UTF-8
ms_MY ISO-8859-1
mt_MT ISO-8859-3
my_MM UTF-8
nan_TW@latin UTF-8
nb_NO ISO-8859-1
nds_DE UTF-8
nds_NL UTF-8
ne_NP UTF-8
nl_AW UTF-8
nl_BE ISO-8859-1
nl_BE@euro ISO-8859-15
nl_NL ISO-8859-1
nl_NL@euro ISO-8859-15
nn_NO ISO-8859-1
nr_ZA UTF-8
nso_ZA UTF-8
oc_FR ISO-8859-1
om_ET UTF-8
om_KE ISO-8859-1
or_IN UTF-8
pa_IN UTF-8
pa_PK UTF-8
pap_AN UTF-8
pl_PL ISO-8859-2
ps_AF UTF-8
pt_BR ISO-8859-1
pt_PT ISO-8859-1
pt_PT@euro ISO-8859-15
ro_RO ISO-8859-2
ru_RU ISO-8859-5
ru_UA KOI8-U
rw_RW UTF-8
sa_IN UTF-8
sc_IT UTF-8
sd_IN UTF-8
sd_IN@devanagari UTF-8
se_NO UTF-8
shs_CA UTF-8
si_LK UTF-8
sid_ET UTF-8
sk_SK ISO-8859-2
sl_SI ISO-8859-2
so_DJ ISO-8859-1
so_ET UTF-8
so_KE ISO-8859-1
so_SO ISO-8859-1
sq_AL ISO-8859-1
sr_ME UTF-8
sr_RS UTF-8
sr_RS@latin UTF-8
ss_ZA UTF-8
st_ZA ISO-8859-1
sv_FI ISO-8859-1
sv_FI@euro ISO-8859-15
sv_SE ISO-8859-1
ta_IN UTF-8
te_IN UTF-8
tg_TJ KOI8-T
th_TH TIS-620
ti_ER UTF-8
ti_ET UTF-8
tig_ER UTF-8
tk_TM UTF-8
tl_PH ISO-8859-1
tn_ZA UTF-8
tr_CY ISO-8859-9
tr_TR ISO-8859-9
ts_ZA UTF-8
ug_CN UTF-8
uk_UA KOI8-U
ur_PK UTF-8
uz_UZ ISO-8859-1
uz_UZ@cyrillic UTF-8
ve_ZA UTF-8
vi_VN UTF-8
wa_BE ISO-8859-1
wa_BE@euro ISO-8859-15
wo_SN UTF-8
xh_ZA ISO-8859-1
yi_US CP1255
yo_NG UTF-8
zh_CN GB2312
zh_HK BIG5-HKSCS
zh_SG GB2312
zh_TW BIG5
zu_ZA ISO-8859-1