summaryrefslogtreecommitdiff
path: root/glibc
diff options
context:
space:
mode:
authorPhil Blundell <philb@gnu.org>2004-08-01 23:35:36 +0000
committerPhil Blundell <philb@gnu.org>2004-08-01 23:35:36 +0000
commitc171a36102eae73b7c6306a2292ec92f2414d764 (patch)
tree2ad2197485a4cee44776d22f068a025ca88e3a49 /glibc
parentddb152cb0ff4388e98818d9586856005590a4534 (diff)
Merge bk://openembedded@openembedded.bkbits.net/packages
into stealth.(none):/home/pb/oe/oe-packages 2004/08/02 00:35:23+01:00 (none)!pb create ${libdir}/locale BKrev: 410d7e48EyJljphD675FuST0BcqlAg
Diffstat (limited to 'glibc')
-rw-r--r--glibc/glibc-package.oe105
1 files changed, 105 insertions, 0 deletions
diff --git a/glibc/glibc-package.oe b/glibc/glibc-package.oe
index e69de29bb2..041ba028cd 100644
--- a/glibc/glibc-package.oe
+++ b/glibc/glibc-package.oe
@@ -0,0 +1,105 @@
+do_install() {
+ oe_runmake install_root=${D} install
+ for r in ${rpcsvc}; do
+ h=`echo $r|sed -e's,\.x$,.h,'`
+ install -m 0644 ${S}/sunrpc/rpcsvc/$h ${D}/${includedir}/rpcsvc/
+ done
+ install -m 0644 ${WORKDIR}/etc/ld.so.conf ${D}/${sysconfdir}/
+ install -d ${D}${libdir}/locale
+ make -f ${WORKDIR}/generate-supported.mk IN="${S}/localedata/SUPPORTED" OUT="${WORKDIR}/SUPPORTED"
+}
+
+locale_base_postinst() {
+#!/bin/sh
+
+localedef --add-to-archive --inputfile=${datadir}/locales/%s --charmap=${datadir}/charmaps/%s.gz
+}
+
+locale_base_postrm() {
+#!/bin/sh
+
+localedef --delete-from-archive --inputfile=${datadir}/locales/%s --charmap=${datadir}/charmaps/%s.gz
+}
+
+python package_do_split_gconvs () {
+ import os, re
+ if (oe.data.getVar('PACKAGE_NO_GCONV', d, 1) == '1'):
+ oe.note("package requested not splitting gconvs")
+ return
+
+ if not oe.data.getVar('PACKAGES', d, 1):
+ return
+
+ libdir = oe.data.getVar('libdir', d, 1)
+ if not libdir:
+ oe.error("libdir not defined")
+ return
+ datadir = oe.data.getVar('datadir', d, 1)
+ if not datadir:
+ oe.error("datadir not defined")
+ return
+
+ gconv_libdir = os.path.join(libdir, "gconv")
+ charmap_dir = os.path.join(datadir, "i18n", "charmaps")
+ locales_dir = os.path.join(datadir, "i18n", "locales")
+
+ do_split_packages(d, gconv_libdir, file_regex='^(.*)\.so$', output_pattern='glibc-gconv-%s', description='gconv module for character set %s')
+
+ do_split_packages(d, charmap_dir, file_regex='^(.*)\.gz$', output_pattern='glibc-charmap-%s', description='character map for %s encoding')
+
+ do_split_packages(d, locales_dir, file_regex='(.*)', output_pattern='glibc-localedata-%s', description='locale definition for %s')
+
+ oe.data.setVar('PACKAGES', oe.data.getVar('PACKAGES', d) + ' glibc-gconv', d)
+
+ f = open(os.path.join(oe.data.getVar('WORKDIR', d, 1), "SUPPORTED"), "r")
+ supported = f.readlines()
+ f.close()
+
+ dot_re = re.compile("(.*)\.(.*)")
+
+ # Collate the locales by base and encoding
+ encodings = {}
+ for l in supported:
+ l = l[:-1]
+ (locale, charset) = l.split(" ")
+ m = dot_re.match(locale)
+ if m:
+ locale = m.group(1)
+ if not encodings.has_key(locale):
+ encodings[locale] = []
+ encodings[locale].append(charset)
+
+ def output_locale(name, locale, encoding):
+ pkgname = 'locale-base-' + legitimize_package_name(name)
+
+ oe.data.setVar('RDEPENDS_%s' % pkgname, 'localedef glibc-localedata-%s glibc-charmap-%s' % (legitimize_package_name(locale), legitimize_package_name(encoding)), d)
+ rprovides = 'virtual-locale-%s' % legitimize_package_name(name)
+ m = re.match("(.*)_(.*)", name)
+ if m:
+ rprovides += ' virtual-locale-%s' % m.group(1)
+ oe.data.setVar('RPROVIDES_%s' % pkgname, rprovides, d)
+ oe.data.setVar('PACKAGES', '%s %s' % (pkgname, oe.data.getVar('PACKAGES', d, 1)), d)
+ oe.data.setVar('ALLOW_EMPTY_%s' % pkgname, '1', d)
+ oe.data.setVar('pkg_postinst_%s' % pkgname, oe.data.getVar('locale_base_postinst', d, 1) % (locale, encoding), d)
+ oe.data.setVar('pkg_postrm_%s' % pkgname, oe.data.getVar('locale_base_postrm', d, 1) % (locale, encoding), d)
+
+ # Reshuffle names so that UTF-8 is preferred over other encodings
+ for l in encodings.keys():
+ if len(encodings[l]) == 1:
+ output_locale(l, l, encodings[l][0])
+ else:
+ if "UTF-8" in encodings[l]:
+ output_locale(l, l, "UTF-8")
+ encodings[l].remove("UTF-8")
+ for e in encodings[l]:
+ output_locale('%s-%s' % (l, e), l, e)
+}
+
+# We want to do this indirection so that we can safely 'return'
+# from the called function even though we're prepending
+python populate_packages_prepend () {
+ if oe.data.getVar('DEBIAN_NAMES', d, 1):
+ oe.data.setVar('PKG_glibc', 'libc6', d)
+ oe.data.setVar('PKG_glibc-dev', 'libc6-dev', d)
+ oe.build.exec_func('package_do_split_gconvs', d)
+}