diff options
author | Phil Blundell <philb@gnu.org> | 2004-08-16 11:39:04 +0000 |
---|---|---|
committer | Phil Blundell <philb@gnu.org> | 2004-08-16 11:39:04 +0000 |
commit | 02808cf43da13b267f91fc1817a3e5d577ed6579 (patch) | |
tree | 37759d4fad3fab536cfe9826ace4f78a57c388ab /glibc/glibc-package.oeclass | |
parent | 1daf8ca9a8267680f1c20dbe47003efc62f3c675 (diff) |
fix up locale-base package generation
BKrev: 41209cd8kRFmFwZrnxJNT6z2tvoBjQ
Diffstat (limited to 'glibc/glibc-package.oeclass')
-rw-r--r-- | glibc/glibc-package.oeclass | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/glibc/glibc-package.oeclass b/glibc/glibc-package.oeclass index e69de29bb2..ff484f9189 100644 --- a/glibc/glibc-package.oeclass +++ b/glibc/glibc-package.oeclass @@ -0,0 +1,141 @@ +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" +} + +TMP_LOCALE="/tmp/locale/${libdir}/locale" + +locale_base_postinst() { +#!/bin/sh + +if [ "x$D" != "x" ]; then + exit 1 +fi + +rm -rf ${TMP_LOCALE} +mkdir -p ${TMP_LOCALE} +if [ -f ${libdir}/locale/locale-archive ]; then + cp ${libdir}/locale/locale-archive ${TMP_LOCALE}/ +fi +localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s --prefix=/tmp/locale %s +mv ${TMP_LOCALE}/locale-archive ${libdir}/locale/ +rm -rf ${TMP_LOCALE} +} + +locale_base_postrm() { +#!/bin/sh + +rm -rf ${TMP_LOCALE} +mkdir -p ${TMP_LOCALE} +if [ -f ${libdir}/locale/locale-archive ]; then + cp ${libdir}/locale/locale-archive ${TMP_LOCALE}/ +fi +localedef --delete-from-archive --inputfile=${datadir}/locales/%s --charmap=%s --prefix=/tmp/locale %s +mv ${TMP_LOCALE}/locale-archive ${libdir}/locale/ +rm -rf ${TMP_LOCALE} +} + +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') + + def calc_locale_deps(fn, pkg, file_regex, output_pattern, group): + deps = [] + f = open(fn, "r") + c_re = re.compile('^copy "(.*)"') + for l in f.readlines(): + m = c_re.match(l) + if m: + dp = legitimize_package_name('glibc-localedata-%s' % m.group(1)) + if not dp in deps: + deps.append(dp) + f.close() + if deps != []: + oe.data.setVar('RDEPENDS_%s' % pkg, " ".join(deps), d) + + do_split_packages(d, locales_dir, file_regex='(.*)', output_pattern='glibc-localedata-%s', description='locale definition for %s', hook=calc_locale_deps) + # clobber unwanted self-dependency + oe.data.setVar('RDEPENDS_glibc-localedata-i18n', '', d) + + 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, locale), d) + oe.data.setVar('pkg_postrm_%s' % pkgname, oe.data.getVar('locale_base_postrm', d, 1) % (locale, encoding, locale), 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) +} |