* [PATCH 0/1 v2][PULL] libc locale split @ 2011-06-22 9:01 Dongxiao Xu 2011-06-22 9:01 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 0 siblings, 1 reply; 12+ messages in thread From: Dongxiao Xu @ 2011-06-22 9:01 UTC (permalink / raw) To: openembedded-core Hi Richard and Saul, This pull request is the second version of libc locale split, please help to review and pull. This version reflects the comments from Phil Blundell <pb@pbcl.net> that keep the eglibc locale package name unchanged. Thanks, Dongxiao The following changes since commit 2163461ec94528ecf046a04edc5db3d2dd3a6b8b: systemtap: remove non-core COMPATIBLE_MACHINES (2011-06-16 22:14:06 +0100) are available in the git repository at: git://git.pokylinux.org/poky-contrib dxu4/libc-locale-v2 http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dxu4/libc-locale-v2 Dongxiao Xu (1): libc-locale: split locale handling from libc recipe. meta/classes/libc-common.bbclass | 23 ++++++++ meta/classes/libc-package.bbclass | 24 -------- meta/conf/distro/include/tclibc-eglibc.inc | 2 +- meta/conf/distro/include/tclibc-glibc.inc | 2 +- meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 58 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- meta/recipes-core/eglibc/eglibc.inc | 4 +- meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++ meta/recipes-core/glibc/glibc-initial_2.10.1.bb | 4 ++ meta/recipes-core/glibc/glibc-locale_2.10.1.bb | 50 +++++++++++++++++ meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- meta/recipes-core/glibc/glibc.inc | 2 +- meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ .../meta/external-csl-toolchain_2008q3-72.bb | 1 + 15 files changed, 176 insertions(+), 83 deletions(-) create mode 100644 meta/classes/libc-common.bbclass create mode 100644 meta/recipes-core/eglibc/eglibc-locale_2.13.bb create mode 100644 meta/recipes-core/glibc/glibc-locale_2.10.1.bb ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-22 9:01 [PATCH 0/1 v2][PULL] libc locale split Dongxiao Xu @ 2011-06-22 9:01 ` Dongxiao Xu 2011-06-22 11:44 ` Phil Blundell 2011-06-22 14:44 ` Khem Raj 0 siblings, 2 replies; 12+ messages in thread From: Dongxiao Xu @ 2011-06-22 9:01 UTC (permalink / raw) To: openembedded-core *libc's do_package will cost a lot of time due to the locale handing, which may delay the other recipe's do_package task and affect the build performance. This commit moves locale handling into a separate recipe *libc-locale. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> --- meta/classes/libc-common.bbclass | 23 ++++++++ meta/classes/libc-package.bbclass | 24 -------- meta/conf/distro/include/tclibc-eglibc.inc | 2 +- meta/conf/distro/include/tclibc-glibc.inc | 2 +- meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 58 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- meta/recipes-core/eglibc/eglibc.inc | 4 +- meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++ meta/recipes-core/glibc/glibc-initial_2.10.1.bb | 4 ++ meta/recipes-core/glibc/glibc-locale_2.10.1.bb | 50 +++++++++++++++++ meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- meta/recipes-core/glibc/glibc.inc | 2 +- meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ .../meta/external-csl-toolchain_2008q3-72.bb | 1 + 15 files changed, 176 insertions(+), 83 deletions(-) create mode 100644 meta/classes/libc-common.bbclass create mode 100644 meta/recipes-core/eglibc/eglibc-locale_2.13.bb create mode 100644 meta/recipes-core/glibc/glibc-locale_2.10.1.bb diff --git a/meta/classes/libc-common.bbclass b/meta/classes/libc-common.bbclass new file mode 100644 index 0000000..bae0ace --- /dev/null +++ b/meta/classes/libc-common.bbclass @@ -0,0 +1,23 @@ +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" + # get rid of some broken files... + for i in ${GLIBC_BROKEN_LOCALES}; do + grep -v $i ${WORKDIR}/SUPPORTED > ${WORKDIR}/SUPPORTED.tmp + mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED + done + rm -f ${D}{sysconfdir}/rpc + rm -rf ${D}${datadir}/zoneinfo + rm -rf ${D}${libexecdir}/getconf +} + +def get_libc_fpu_setting(bb, d): + if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: + return "--without-fp" + return "" diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass index 55e3d48..5737af4 100644 --- a/meta/classes/libc-package.bbclass +++ b/meta/classes/libc-package.bbclass @@ -37,11 +37,6 @@ python __anonymous () { break } -def get_libc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--without-fp" - return "" - OVERRIDES_append = ":${TARGET_ARCH}-${TARGET_OS}" do_configure_prepend() { @@ -84,25 +79,6 @@ rm -rf ${TMP_LOCALE} } -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" - # get rid of some broken files... - for i in ${GLIBC_BROKEN_LOCALES}; do - grep -v $i ${WORKDIR}/SUPPORTED > ${WORKDIR}/SUPPORTED.tmp - mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED - done - rm -f ${D}${sysconfdir}/rpc - rm -rf ${D}${datadir}/zoneinfo - rm -rf ${D}${libexecdir}/getconf -} - TMP_LOCALE="/tmp/locale${libdir}/locale" do_prep_locale_tree() { diff --git a/meta/conf/distro/include/tclibc-eglibc.inc b/meta/conf/distro/include/tclibc-eglibc.inc index a4c648e..90de04f 100644 --- a/meta/conf/distro/include/tclibc-eglibc.inc +++ b/meta/conf/distro/include/tclibc-eglibc.inc @@ -10,7 +10,7 @@ TARGET_OS_powerpc = "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d # Add glibc overrides to the overrides for eglibc. OVERRIDES .= ":libc-glibc" -PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc" +PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc-locale" PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "eglibc-nativesdk" PREFERRED_PROVIDER_virtual/libintl ?= "eglibc" PREFERRED_PROVIDER_virtual/libc ?= "eglibc" diff --git a/meta/conf/distro/include/tclibc-glibc.inc b/meta/conf/distro/include/tclibc-glibc.inc index e5843b0..748c23f 100644 --- a/meta/conf/distro/include/tclibc-glibc.inc +++ b/meta/conf/distro/include/tclibc-glibc.inc @@ -10,7 +10,7 @@ TARGET_OS_powerpc = "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d # Add glibc to the overrides. OVERRIDES =. "libc-glibc:" -PREFERRED_PROVIDER_virtual/libiconv ?= "glibc" +PREFERRED_PROVIDER_virtual/libiconv ?= "glibc-locale" PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "glibc-nativesdk" PREFERRED_PROVIDER_virtual/libintl ?= "glibc" PREFERRED_PROVIDER_virtual/libc ?= "glibc" diff --git a/meta/recipes-core/eglibc/eglibc-initial_2.13.bb b/meta/recipes-core/eglibc/eglibc-initial_2.13.bb index 787c762..b934f5b 100644 --- a/meta/recipes-core/eglibc/eglibc-initial_2.13.bb +++ b/meta/recipes-core/eglibc/eglibc-initial_2.13.bb @@ -1,6 +1,10 @@ require eglibc_${PV}.bb require eglibc-initial.inc +do_install_locale() { + : +} + do_configure_prepend () { unset CFLAGS } diff --git a/meta/recipes-core/eglibc/eglibc-locale_2.13.bb b/meta/recipes-core/eglibc/eglibc-locale_2.13.bb new file mode 100644 index 0000000..5faa509 --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-locale_2.13.bb @@ -0,0 +1,58 @@ +INHIBIT_DEFAULT_DEPS = "1" +LICENSE = "LGPL" + +BPN = "eglibc" + +do_fetch[noexec] = "1" +do_unpack[noexec] = "1" +do_patch[noexec] = "1" +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION +# is set. The idea is to avoid running localedef on the target (at first boot) +# to decrease initial boot time and avoid localedef being killed by the OOM +# killer which used to effectively break i18n on machines with < 128MB RAM. + +# default to disabled +ENABLE_BINARY_LOCALE_GENERATION ?= "0" +ENABLE_BINARY_LOCALE_GENERATION_pn-eglibc-locale-nativesdk = "0" + +#enable locale generation on these arches +# BINARY_LOCALE_ARCHES is a space separated list of regular expressions +BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" + +# set "1" to use cross-localedef for locale generation +# set "0" for qemu emulation of native localedef for locale generation +LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" + +PR = "r0" + +PKGSUFFIX = "" +PKGSUFFIX_virtclass-nativesdk = "-nativesdk" + +PACKAGES = "eglibc-locale localedef${PKGSUFFIX}" + +PACKAGES_DYNAMIC = "locale-base-* \ + eglibc-gconv-* eglibc-charmap-* eglibc-localedata-* eglibc-binary-localedata-* \ + glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-*" + +PROVIDES = "virtual/libiconv" + +RPROVIDES_eglibc-locale = "glibc-locale" + +FILES_eglibc-gconv = "${libdir}/gconv/*" +FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" + +do_install () { + cp -fpPR ${STAGING_INCDIR}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}/* ${D} + cp -fpPR ${D}/SUPPORTED ${WORKDIR} +} + +DESCRIPTION_localedef = "eglibc: compile locale definition files" + +inherit libc-package + +do_install[depends] += "virtual/libc${PKGSUFFIX}:do_populate_sysroot" + +BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc index 76ebdc3..63a1de9 100644 --- a/meta/recipes-core/eglibc/eglibc-package.inc +++ b/meta/recipes-core/eglibc/eglibc-package.inc @@ -14,35 +14,13 @@ python __anonymous () { bb.data.getVar('TARGET_OS', d, 1)) } -# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION -# is set. The idea is to avoid running localedef on the target (at first boot) -# to decrease initial boot time and avoid localedef being killed by the OOM -# killer which used to effectively break i18n on machines with < 128MB RAM. - -# default to disabled -ENABLE_BINARY_LOCALE_GENERATION ?= "0" -ENABLE_BINARY_LOCALE_GENERATION_pn-eglibc-nativesdk = "0" - -#enable locale generation on these arches -# BINARY_LOCALE_ARCHES is a space separated list of regular expressions -BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" - -# set "1" to use cross-localedef for locale generation -# set "0" for qemu emulation of native localedef for locale generation -LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" - # Set this to zero if you don't want ldconfig in the output package USE_LDCONFIG ?= "1" PKGSUFFIX = "" PKGSUFFIX_virtclass-nativesdk = "-nativesdk" -PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} localedef${PKGSUFFIX} libcidn ${PN}-utils ${PN}-pic ${PN}-dev eglibc-doc eglibc-locale libmemusage libsegfault${PKGSUFFIX} eglibc-extra-nss eglibc-thread-db${PKGSUFFIX} eglibc-pcprofile" - -PACKAGES_DYNAMIC = " \ - glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-* \ - eglibc-gconv-* eglibc-charmap-* eglibc-localedata-* eglibc-binary-localedata-* \ - locale-base-*${PKGSUFFIX}" +PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} ${PN}-utils ${PN}-pic ${PN}-dev eglibc-doc libcidn libmemusage libsegfault${PKGSUFFIX} eglibc-extra-nss eglibc-thread-db${PKGSUFFIX} eglibc-pcprofile" # Create a eglibc-binaries ALLOW_EMPTY_${PN}-binaries = "1" @@ -69,7 +47,6 @@ RPROVIDES_eglibc-utils = "glibc-utils" RPROVIDES_eglibc-pic = "glibc-pic" RPROVIDES_eglibc-dev = "glibc-dev" RPROVIDES_eglibc-doc = "glibc-doc" -RPROVIDES_eglibc-locale = "glibc-locale" RPROVIDES_eglibc-extra-nss = "glibc-extra-nss" RPROVIDES_eglibc-thread-db = "glibc-thread-db" RPROVIDES_eglibc-pcprofile = "glibc-pcprofile" @@ -88,13 +65,11 @@ FILES_eglibc-dev_append += "${bindir}/rpcgen ${libdir}/*.a \ ${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal" FILES_nscd${PKGSUFFIX} = "${sbindir}/nscd*" FILES_eglibc-utils = "${bindir}/* ${sbindir}/*" -FILES_eglibc-gconv = "${libdir}/gconv/*" -FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/gconv/.debug" +FILES_${PN}-dbg += "${libexecdir}/*/.debug" FILES_catchsegv${PKGSUFFIX} = "${bindir}/catchsegv" RDEPENDS_catchsegv${PKGSUFFIX} = "libsegfault" FILES_eglibc-pcprofile = "${base_libdir}/libpcprofile.so" FILES_eglibc-thread-db${PKGSUFFIX} = "${base_libdir}/libthread_db*" -FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" RPROVIDES_eglibc-dev += "libc-dev" SUMMARY_sln = "The static ln." @@ -105,9 +80,8 @@ SUMMARY_eglibc-extra-nss = "hesiod, NIS and NIS+ nss libraries" DESCRIPTION_eglibc-extra-nss = "eglibc: nis, nisplus and hesiod search services." SUMMARY_ldd = "print shared library dependencies" DESCRIPTION_ldd = "/usr/bin/ldd prints shared library dependencies for each program or shared library specified on the command line." -DESCRIPTION_localedef = "eglibc: compile locale definition files" SUMMARY_eglibc-utils = "Miscellaneous utilities provided by eglibc" DESCRIPTION_eglibc-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..." -inherit libc-package +inherit libc-common diff --git a/meta/recipes-core/eglibc/eglibc.inc b/meta/recipes-core/eglibc/eglibc.inc index 616f1af..d00392a 100644 --- a/meta/recipes-core/eglibc/eglibc.inc +++ b/meta/recipes-core/eglibc/eglibc.inc @@ -26,7 +26,7 @@ DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers" # nptl needs libgcc but dlopens it, so our shlibs code doesn't detect this #RDEPENDS_${PN} += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}" PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc" -PROVIDES += "virtual/libintl virtual/libiconv" +PROVIDES += "virtual/libintl" inherit autotools require eglibc-options.inc @@ -43,7 +43,7 @@ EGLIBCPARALLELISM := "PARALLELMFLAGS="${PARALLEL_MAKE}"" EXTRA_OEMAKE += ${EGLIBCPARALLELISM} PARALLEL_MAKE = "" -PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile" +PACKAGES = "glibc catchsegv sln nscd ldd glibc-utils glibc-dev glibc-doc libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile" OE_FEATURES = "${@features_to_eglibc_settings(d)}" do_configure_prepend() { diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb b/meta/recipes-core/eglibc/eglibc_2.13.bb index 3490d2d..603d9cd 100644 --- a/meta/recipes-core/eglibc/eglibc_2.13.bb +++ b/meta/recipes-core/eglibc/eglibc_2.13.bb @@ -110,6 +110,18 @@ do_compile () { ) } +do_install_locale () { + dest=${D}/${includedir}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS} + install -d ${dest} ${dest}${bindir} + cp -fpPR ${D}${base_libdir} ${dest}${base_prefix} + cp -fpPR ${D}${libdir} ${dest}${exec_prefix} + cp -fpPR ${D}${datadir} ${dest}${exec_prefix} + cp -fpPR ${D}${bindir}/localedef ${dest}${bindir} + cp -fpPR ${WORKDIR}/SUPPORTED ${dest} +} + +addtask do_install_locale after do_install before do_populate_sysroot + require eglibc-package.inc BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-core/glibc/glibc-initial_2.10.1.bb b/meta/recipes-core/glibc/glibc-initial_2.10.1.bb index d662970..bc3d7e4 100644 --- a/meta/recipes-core/glibc/glibc-initial_2.10.1.bb +++ b/meta/recipes-core/glibc/glibc-initial_2.10.1.bb @@ -1,6 +1,10 @@ require glibc_${PV}.bb require glibc-initial.inc +do_install_locale() { + : +} + do_configure_prepend () { unset CFLAGS } diff --git a/meta/recipes-core/glibc/glibc-locale_2.10.1.bb b/meta/recipes-core/glibc/glibc-locale_2.10.1.bb new file mode 100644 index 0000000..10751bf --- /dev/null +++ b/meta/recipes-core/glibc/glibc-locale_2.10.1.bb @@ -0,0 +1,50 @@ +#INHIBIT_DEFAULT_DEPS = "1" +LICENSE = "LGPL" + +BPN = "glibc" + +do_fetch[noexec] = "1" +do_unpack[noexec] = "1" +do_patch[noexec] = "1" +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION +# is set. The idea is to avoid running localedef on the target (at first boot) +# to decrease initial boot time and avoid localedef being killed by the OOM +# killer which used to effectively break i18n on machines with < 128MB RAM. + +# default to disabled +ENABLE_BINARY_LOCALE_GENERATION ?= "0" +ENABLE_BINARY_LOCALE_GENERATION_pn-glibc-locale-nativesdk = "0" + +#enable locale generation on these arches +# BINARY_LOCALE_ARCHES is a space separated list of regular expressions +BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" + +# set "1" to use cross-localedef for locale generation +# set "0" for qemu emulation of native localedef for locale generation +LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" + +PR = "r0" + +PKGSUFFIX = "" +PKGSUFFIX_virtclass-nativesdk = "-nativesdk" + +PACKAGES = "glibc-locale localedef${PKGSUFFIX}" + +PACKAGES_DYNAMIC = "locale-base-* \ + glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-*" + + +PROVIDES = "virtual/libiconv" + +FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" + +do_install () { + cp -fpPR ${STAGING_INCDIR}/glibc-locale-internal-${MULTIMACH_TARGET_SYS}/* ${D} + cp -fpPR ${D}/SUPPORTED ${WORKDIR} +} + +do_install[depends] += "virtual/libc:do_populate_sysroot" +do_install_virtclass-nativesdk[depends] += "virtual/libc-nativesdk:do_populate_sysroot" diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc index 27dc427..5373d56 100644 --- a/meta/recipes-core/glibc/glibc-package.inc +++ b/meta/recipes-core/glibc/glibc-package.inc @@ -14,34 +14,14 @@ python __anonymous () { bb.data.getVar('TARGET_OS', d, 1)) } - -# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION -# is set. The idea is to avoid running localedef on the target (at first boot) -# to decrease initial boot time and avoid localedef being killed by the OOM -# killer which used to effectively break i18n on machines with < 128MB RAM. - -# default to disabled until qemu works for everyone -ENABLE_BINARY_LOCALE_GENERATION ?= "0" -ENABLE_BINARY_LOCALE_GENERATION_pn-glibc-nativesdk = "0" - -# BINARY_LOCALE_ARCHES is a space separated list of regular expressions -BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" - -# set "1" to use cross-localedef for locale generation -# set "0" for qemu emulation of native localedef for locale generation -LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" - PKGSUFFIX = "" PKGSUFFIX_virtclass-nativesdk = "-nativesdk" PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} \ - ldd${PKGSUFFIX} localedef${PKGSUFFIX} ${PN}-utils ${PN}-dev ${PN}-doc \ - ${PN}-locale libsegfault${PKGSUFFIX} ${PN}-extra-nss ${PN}-thread-db \ + ldd${PKGSUFFIX} ${PN}-utils ${PN}-dev ${PN}-doc \ + libsegfault${PKGSUFFIX} ${PN}-extra-nss ${PN}-thread-db \ ${PN}-pcprofile" -PACKAGES_DYNAMIC = "glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* locale-base-* \ - glibc-binary-localedata-*" - libc_baselibs = "${base_libdir}/libc* ${base_libdir}/libm* ${base_libdir}/ld* \ ${base_libdir}/libpthread* ${base_libdir}/libresolv* ${base_libdir}/librt* \ ${base_libdir}/libutil* ${base_libdir}/libnsl* ${base_libdir}/libnss_files* \ @@ -77,7 +57,6 @@ FILES_catchsegv${PKGSUFFIX} = "${bindir}/catchsegv" RDEPENDS_catchsegv${PKGSUFFIX} = "libsegfault" FILES_glibc-pcprofile = "${base_libdir}/libpcprofile.so" FILES_glibc-thread-db = "${base_libdir}/libthread_db*" -FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" RPROVIDES_glibc-dev += "libc-dev" SUMMARY_sln = "The static ln." @@ -88,10 +67,10 @@ SUMMARY_glibc-extra-nss = "hesiod, NIS and NIS+ nss libraries" DESCRIPTION_glibc-extra-nss = "glibc: nis, nisplus and hesiod search services. SUMMARY_ldd = "print shared library dependencies" DESCRIPTION_ldd = "/usr/bin/ldd prints shared library dependencies for each program or shared library specified on the command line." -DESCRIPTION_localedef = "glibc: compile locale definition files" SUMMARY_glibc-utils = "Miscellaneous utilities provided by glibc" DESCRIPTION_glibc-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..." EXTRA_OEMAKE += "rootsbindir=${base_sbindir}" -inherit libc-package +inherit libc-common + diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc index 127ae23..a051161 100644 --- a/meta/recipes-core/glibc/glibc.inc +++ b/meta/recipes-core/glibc/glibc.inc @@ -15,7 +15,7 @@ RDEPENDS_${PN}-dev = "linux-libc-headers-dev" #RDEPENDS_ldd += " bash" #RDEPENDS_${PN} += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}" PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc" -PROVIDES += "virtual/libintl virtual/libiconv" +PROVIDES += "virtual/libintl" STAGINGCC = "gcc-cross-intermediate" STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate" diff --git a/meta/recipes-core/glibc/glibc_2.10.1.bb b/meta/recipes-core/glibc/glibc_2.10.1.bb index 33ebe24..a2e7b83 100644 --- a/meta/recipes-core/glibc/glibc_2.10.1.bb +++ b/meta/recipes-core/glibc/glibc_2.10.1.bb @@ -154,6 +154,18 @@ do_compile () { ) } +do_install_locale () { + dest=${D}/${includedir}/glibc-locale-internal-${MULTIMACH_TARGET_SYS} + install -d ${dest} ${dest}${bindir} + cp -fpPR ${D}${base_libdir} ${dest}${base_prefix} + cp -fpPR ${D}${libdir} ${dest}${exec_prefix} + cp -fpPR ${D}${datadir} ${dest}${exec_prefix} + cp -fpPR ${D}${bindir}/localedef ${dest}${bindir} + cp -fpPR ${WORKDIR}/SUPPORTED ${dest} +} + +addtask do_install_locale after do_install before do_populate_sysroot + require glibc-stage.inc require glibc-package.inc diff --git a/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb b/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb index f714928..a874c8b 100644 --- a/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb +++ b/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb @@ -40,6 +40,7 @@ do_install() { GLIBC_INTERNAL_USE_BINARY_LOCALE ?= "compile" +inherit libc-common inherit libc-package PACKAGES += "libgcc libgcc-dev libstdc++ libstdc++-dev linux-libc-headers" -- 1.7.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-22 9:01 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu @ 2011-06-22 11:44 ` Phil Blundell 2011-06-23 4:08 ` Xu, Dongxiao 2011-06-22 14:44 ` Khem Raj 1 sibling, 1 reply; 12+ messages in thread From: Phil Blundell @ 2011-06-22 11:44 UTC (permalink / raw) To: Patches and discussions about the oe-core layer I still don't quite understand why the virtual/libiconv provider has moved from eglibc to eglibc-locale. Can you explain what's going on there? p. On Wed, 2011-06-22 at 17:01 +0800, Dongxiao Xu wrote: > *libc's do_package will cost a lot of time due to the locale handing, > which may delay the other recipe's do_package task and affect the build > performance. > > This commit moves locale handling into a separate recipe *libc-locale. > > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> > --- > meta/classes/libc-common.bbclass | 23 ++++++++ > meta/classes/libc-package.bbclass | 24 -------- > meta/conf/distro/include/tclibc-eglibc.inc | 2 +- > meta/conf/distro/include/tclibc-glibc.inc | 2 +- > meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ > meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 58 ++++++++++++++++++++ > meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- > meta/recipes-core/eglibc/eglibc.inc | 4 +- > meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++ > meta/recipes-core/glibc/glibc-initial_2.10.1.bb | 4 ++ > meta/recipes-core/glibc/glibc-locale_2.10.1.bb | 50 +++++++++++++++++ > meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- > meta/recipes-core/glibc/glibc.inc | 2 +- > meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ > .../meta/external-csl-toolchain_2008q3-72.bb | 1 + > 15 files changed, 176 insertions(+), 83 deletions(-) > create mode 100644 meta/classes/libc-common.bbclass > create mode 100644 meta/recipes-core/eglibc/eglibc-locale_2.13.bb > create mode 100644 meta/recipes-core/glibc/glibc-locale_2.10.1.bb > > diff --git a/meta/conf/distro/include/tclibc-eglibc.inc b/meta/conf/distro/include/tclibc-eglibc.inc > index a4c648e..90de04f 100644 > --- a/meta/conf/distro/include/tclibc-eglibc.inc > +++ b/meta/conf/distro/include/tclibc-eglibc.inc > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > # Add glibc overrides to the overrides for eglibc. > OVERRIDES .= ":libc-glibc" > > -PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc" > +PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc-locale" > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "eglibc-nativesdk" > PREFERRED_PROVIDER_virtual/libintl ?= "eglibc" > PREFERRED_PROVIDER_virtual/libc ?= "eglibc" > diff --git a/meta/conf/distro/include/tclibc-glibc.inc b/meta/conf/distro/include/tclibc-glibc.inc > index e5843b0..748c23f 100644 > --- a/meta/conf/distro/include/tclibc-glibc.inc > +++ b/meta/conf/distro/include/tclibc-glibc.inc > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > # Add glibc to the overrides. > OVERRIDES =. "libc-glibc:" > > -PREFERRED_PROVIDER_virtual/libiconv ?= "glibc" > +PREFERRED_PROVIDER_virtual/libiconv ?= "glibc-locale" > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "glibc-nativesdk" > PREFERRED_PROVIDER_virtual/libintl ?= "glibc" > PREFERRED_PROVIDER_virtual/libc ?= "glibc" ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-22 11:44 ` Phil Blundell @ 2011-06-23 4:08 ` Xu, Dongxiao 2011-06-23 9:40 ` Phil Blundell 0 siblings, 1 reply; 12+ messages in thread From: Xu, Dongxiao @ 2011-06-23 4:08 UTC (permalink / raw) To: Patches and discussions about the oe-core layer > -----Original Message----- > From: openembedded-core-bounces@lists.openembedded.org > [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of > Phil Blundell > Sent: Wednesday, June 22, 2011 7:45 PM > To: Patches and discussions about the oe-core layer > Subject: Re: [OE-core] [PATCH 1/1] libc-locale: split locale handling from libc > recipe. > > I still don't quite understand why the virtual/libiconv provider has moved from > eglibc to eglibc-locale. Can you explain what's going on there? Generally, the purpose of this patch is to reduce eglibc's do_package time. Since many other recipes' do_package have dependency on eglibc's do_package, thus the sooner eglibc could finish its do_package, the ealier can other do_packages be executed, which improves the parallelism. From our study, we found most of eglibc's do_package time is used to handle locale. Therefore we split all the locale related stuffs into a separately recipe eglibc-locale. Thanks, Dongxiao > > p. > > On Wed, 2011-06-22 at 17:01 +0800, Dongxiao Xu wrote: > > *libc's do_package will cost a lot of time due to the locale handing, > > which may delay the other recipe's do_package task and affect the > > build performance. > > > > This commit moves locale handling into a separate recipe *libc-locale. > > > > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> > > --- > > meta/classes/libc-common.bbclass | 23 ++++++++ > > meta/classes/libc-package.bbclass | 24 -------- > > meta/conf/distro/include/tclibc-eglibc.inc | 2 +- > > meta/conf/distro/include/tclibc-glibc.inc | 2 +- > > meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ > > meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 58 > ++++++++++++++++++++ > > meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- > > meta/recipes-core/eglibc/eglibc.inc | 4 +- > > meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++ > > meta/recipes-core/glibc/glibc-initial_2.10.1.bb | 4 ++ > > meta/recipes-core/glibc/glibc-locale_2.10.1.bb | 50 > +++++++++++++++++ > > meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- > > meta/recipes-core/glibc/glibc.inc | 2 +- > > meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ > > .../meta/external-csl-toolchain_2008q3-72.bb | 1 + > > 15 files changed, 176 insertions(+), 83 deletions(-) create mode > > 100644 meta/classes/libc-common.bbclass create mode 100644 > > meta/recipes-core/eglibc/eglibc-locale_2.13.bb > > create mode 100644 meta/recipes-core/glibc/glibc-locale_2.10.1.bb > > > > diff --git a/meta/conf/distro/include/tclibc-eglibc.inc > > b/meta/conf/distro/include/tclibc-eglibc.inc > > index a4c648e..90de04f 100644 > > --- a/meta/conf/distro/include/tclibc-eglibc.inc > > +++ b/meta/conf/distro/include/tclibc-eglibc.inc > > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = > > "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > > # Add glibc overrides to the overrides for eglibc. > > OVERRIDES .= ":libc-glibc" > > > > -PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc" > > +PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc-locale" > > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "eglibc-nativesdk" > > PREFERRED_PROVIDER_virtual/libintl ?= "eglibc" > > PREFERRED_PROVIDER_virtual/libc ?= "eglibc" > > diff --git a/meta/conf/distro/include/tclibc-glibc.inc > > b/meta/conf/distro/include/tclibc-glibc.inc > > index e5843b0..748c23f 100644 > > --- a/meta/conf/distro/include/tclibc-glibc.inc > > +++ b/meta/conf/distro/include/tclibc-glibc.inc > > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = > > "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > > # Add glibc to the overrides. > > OVERRIDES =. "libc-glibc:" > > > > -PREFERRED_PROVIDER_virtual/libiconv ?= "glibc" > > +PREFERRED_PROVIDER_virtual/libiconv ?= "glibc-locale" > > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "glibc-nativesdk" > > PREFERRED_PROVIDER_virtual/libintl ?= "glibc" > > PREFERRED_PROVIDER_virtual/libc ?= "glibc" > > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-23 4:08 ` Xu, Dongxiao @ 2011-06-23 9:40 ` Phil Blundell 2011-06-23 10:14 ` Richard Purdie 0 siblings, 1 reply; 12+ messages in thread From: Phil Blundell @ 2011-06-23 9:40 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Thu, 2011-06-23 at 12:08 +0800, Xu, Dongxiao wrote: > > -----Original Message----- > > From: openembedded-core-bounces@lists.openembedded.org > > [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of > > Phil Blundell > > Sent: Wednesday, June 22, 2011 7:45 PM > > To: Patches and discussions about the oe-core layer > > Subject: Re: [OE-core] [PATCH 1/1] libc-locale: split locale handling from libc > > recipe. > > > > I still don't quite understand why the virtual/libiconv provider has moved from > > eglibc to eglibc-locale. Can you explain what's going on there? > > Generally, the purpose of this patch is to reduce eglibc's do_package time. > > Since many other recipes' do_package have dependency on eglibc's do_package, thus the sooner eglibc could finish its do_package, the ealier can other do_packages be executed, which improves the parallelism. > > From our study, we found most of eglibc's do_package time is used to handle locale. Therefore we split all the locale related stuffs into a separately recipe eglibc-locale. Yes, I understand that. But I don't think this answers the question about why, specifically, glibc-locale is now PROVIDEing virtual/libiconv. Does that recipe, in fact, implement libiconv? p. > > Thanks, > Dongxiao > > > > > p. > > > > On Wed, 2011-06-22 at 17:01 +0800, Dongxiao Xu wrote: > > > *libc's do_package will cost a lot of time due to the locale handing, > > > which may delay the other recipe's do_package task and affect the > > > build performance. > > > > > > This commit moves locale handling into a separate recipe *libc-locale. > > > > > > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> > > > --- > > > meta/classes/libc-common.bbclass | 23 ++++++++ > > > meta/classes/libc-package.bbclass | 24 -------- > > > meta/conf/distro/include/tclibc-eglibc.inc | 2 +- > > > meta/conf/distro/include/tclibc-glibc.inc | 2 +- > > > meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ > > > meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 58 > > ++++++++++++++++++++ > > > meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- > > > meta/recipes-core/eglibc/eglibc.inc | 4 +- > > > meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++ > > > meta/recipes-core/glibc/glibc-initial_2.10.1.bb | 4 ++ > > > meta/recipes-core/glibc/glibc-locale_2.10.1.bb | 50 > > +++++++++++++++++ > > > meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- > > > meta/recipes-core/glibc/glibc.inc | 2 +- > > > meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ > > > .../meta/external-csl-toolchain_2008q3-72.bb | 1 + > > > 15 files changed, 176 insertions(+), 83 deletions(-) create mode > > > 100644 meta/classes/libc-common.bbclass create mode 100644 > > > meta/recipes-core/eglibc/eglibc-locale_2.13.bb > > > create mode 100644 meta/recipes-core/glibc/glibc-locale_2.10.1.bb > > > > > > diff --git a/meta/conf/distro/include/tclibc-eglibc.inc > > > b/meta/conf/distro/include/tclibc-eglibc.inc > > > index a4c648e..90de04f 100644 > > > --- a/meta/conf/distro/include/tclibc-eglibc.inc > > > +++ b/meta/conf/distro/include/tclibc-eglibc.inc > > > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = > > > "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > > > # Add glibc overrides to the overrides for eglibc. > > > OVERRIDES .= ":libc-glibc" > > > > > > -PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc" > > > +PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc-locale" > > > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "eglibc-nativesdk" > > > PREFERRED_PROVIDER_virtual/libintl ?= "eglibc" > > > PREFERRED_PROVIDER_virtual/libc ?= "eglibc" > > > diff --git a/meta/conf/distro/include/tclibc-glibc.inc > > > b/meta/conf/distro/include/tclibc-glibc.inc > > > index e5843b0..748c23f 100644 > > > --- a/meta/conf/distro/include/tclibc-glibc.inc > > > +++ b/meta/conf/distro/include/tclibc-glibc.inc > > > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = > > > "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > > > # Add glibc to the overrides. > > > OVERRIDES =. "libc-glibc:" > > > > > > -PREFERRED_PROVIDER_virtual/libiconv ?= "glibc" > > > +PREFERRED_PROVIDER_virtual/libiconv ?= "glibc-locale" > > > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "glibc-nativesdk" > > > PREFERRED_PROVIDER_virtual/libintl ?= "glibc" > > > PREFERRED_PROVIDER_virtual/libc ?= "glibc" > > > > > > > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-23 9:40 ` Phil Blundell @ 2011-06-23 10:14 ` Richard Purdie 2011-06-23 23:42 ` Khem Raj 0 siblings, 1 reply; 12+ messages in thread From: Richard Purdie @ 2011-06-23 10:14 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Thu, 2011-06-23 at 10:40 +0100, Phil Blundell wrote: > On Thu, 2011-06-23 at 12:08 +0800, Xu, Dongxiao wrote: > > > -----Original Message----- > > > From: openembedded-core-bounces@lists.openembedded.org > > > [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of > > > Phil Blundell > > > Sent: Wednesday, June 22, 2011 7:45 PM > > > To: Patches and discussions about the oe-core layer > > > Subject: Re: [OE-core] [PATCH 1/1] libc-locale: split locale handling from libc > > > recipe. > > > > > > I still don't quite understand why the virtual/libiconv provider has moved from > > > eglibc to eglibc-locale. Can you explain what's going on there? > > > > Generally, the purpose of this patch is to reduce eglibc's do_package time. > > > > Since many other recipes' do_package have dependency on eglibc's do_package, thus the sooner eglibc could finish its do_package, the ealier can other do_packages be executed, which improves the parallelism. > > > > From our study, we found most of eglibc's do_package time is used to handle locale. Therefore we split all the locale related stuffs into a separately recipe eglibc-locale. > > Yes, I understand that. But I don't think this answers the question > about why, specifically, glibc-locale is now PROVIDEing > virtual/libiconv. Does that recipe, in fact, implement libiconv? I must admit I was wondering about this too. Isn't the libiconv functionality still packaged as part of the libc recipe, not the locale part? Cheers, Richard ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-23 10:14 ` Richard Purdie @ 2011-06-23 23:42 ` Khem Raj 2011-06-27 5:49 ` Xu, Dongxiao 0 siblings, 1 reply; 12+ messages in thread From: Khem Raj @ 2011-06-23 23:42 UTC (permalink / raw) To: openembedded-core On 06/23/2011 03:14 AM, Richard Purdie wrote: > On Thu, 2011-06-23 at 10:40 +0100, Phil Blundell wrote: >> On Thu, 2011-06-23 at 12:08 +0800, Xu, Dongxiao wrote: >>>> -----Original Message----- >>>> From: openembedded-core-bounces@lists.openembedded.org >>>> [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of >>>> Phil Blundell >>>> Sent: Wednesday, June 22, 2011 7:45 PM >>>> To: Patches and discussions about the oe-core layer >>>> Subject: Re: [OE-core] [PATCH 1/1] libc-locale: split locale handling from libc >>>> recipe. >>>> >>>> I still don't quite understand why the virtual/libiconv provider has moved from >>>> eglibc to eglibc-locale. Can you explain what's going on there? >>> >>> Generally, the purpose of this patch is to reduce eglibc's do_package time. >>> >>> Since many other recipes' do_package have dependency on eglibc's do_package, thus the sooner eglibc could finish its do_package, the ealier can other do_packages be executed, which improves the parallelism. >>> >>> From our study, we found most of eglibc's do_package time is used to handle locale. Therefore we split all the locale related stuffs into a separately recipe eglibc-locale. >> >> Yes, I understand that. But I don't think this answers the question >> about why, specifically, glibc-locale is now PROVIDEing >> virtual/libiconv. Does that recipe, in fact, implement libiconv? > > I must admit I was wondering about this too. Isn't the libiconv > functionality still packaged as part of the libc recipe, not the locale > part? > yes it should be in libc > Cheers, > > Richard > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-23 23:42 ` Khem Raj @ 2011-06-27 5:49 ` Xu, Dongxiao 0 siblings, 0 replies; 12+ messages in thread From: Xu, Dongxiao @ 2011-06-27 5:49 UTC (permalink / raw) To: Patches and discussions about the oe-core layer > -----Original Message----- > From: openembedded-core-bounces@lists.openembedded.org > [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of > Khem Raj > Sent: Friday, June 24, 2011 7:43 AM > To: openembedded-core@lists.openembedded.org > Subject: Re: [OE-core] [PATCH 1/1] libc-locale: split locale handling from libc > recipe. > > On 06/23/2011 03:14 AM, Richard Purdie wrote: > > On Thu, 2011-06-23 at 10:40 +0100, Phil Blundell wrote: > >> On Thu, 2011-06-23 at 12:08 +0800, Xu, Dongxiao wrote: > >>>> -----Original Message----- > >>>> From: openembedded-core-bounces@lists.openembedded.org > >>>> [mailto:openembedded-core-bounces@lists.openembedded.org] On > Behalf > >>>> Of Phil Blundell > >>>> Sent: Wednesday, June 22, 2011 7:45 PM > >>>> To: Patches and discussions about the oe-core layer > >>>> Subject: Re: [OE-core] [PATCH 1/1] libc-locale: split locale > >>>> handling from libc recipe. > >>>> > >>>> I still don't quite understand why the virtual/libiconv provider > >>>> has moved from eglibc to eglibc-locale. Can you explain what's going on > there? > >>> > >>> Generally, the purpose of this patch is to reduce eglibc's do_package time. > >>> > >>> Since many other recipes' do_package have dependency on eglibc's > do_package, thus the sooner eglibc could finish its do_package, the ealier can > other do_packages be executed, which improves the parallelism. > >>> > >>> From our study, we found most of eglibc's do_package time is used to > handle locale. Therefore we split all the locale related stuffs into a separately > recipe eglibc-locale. > >> > >> Yes, I understand that. But I don't think this answers the question > >> about why, specifically, glibc-locale is now PROVIDEing > >> virtual/libiconv. Does that recipe, in fact, implement libiconv? > > > > I must admit I was wondering about this too. Isn't the libiconv > > functionality still packaged as part of the libc recipe, not the > > locale part? > > > yes it should be in libc Oh, it should be a mistake. I have changed that in my patch and doing test for it now. Thanks, Dongxiao > > > Cheers, > > > > Richard > > > > > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-22 9:01 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 2011-06-22 11:44 ` Phil Blundell @ 2011-06-22 14:44 ` Khem Raj 2011-06-22 14:47 ` Phil Blundell 1 sibling, 1 reply; 12+ messages in thread From: Khem Raj @ 2011-06-22 14:44 UTC (permalink / raw) To: openembedded-core On 06/22/2011 02:01 AM, Dongxiao Xu wrote: > *libc's do_package will cost a lot of time due to the locale handing, > which may delay the other recipe's do_package task and affect the build > performance. you could also move the locale generation into a task of its own instead of new recipe > > This commit moves locale handling into a separate recipe *libc-locale. > > Signed-off-by: Dongxiao Xu<dongxiao.xu@intel.com> > --- > meta/classes/libc-common.bbclass | 23 ++++++++ > meta/classes/libc-package.bbclass | 24 -------- > meta/conf/distro/include/tclibc-eglibc.inc | 2 +- > meta/conf/distro/include/tclibc-glibc.inc | 2 +- > meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ > meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 58 ++++++++++++++++++++ > meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- > meta/recipes-core/eglibc/eglibc.inc | 4 +- > meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++ > meta/recipes-core/glibc/glibc-initial_2.10.1.bb | 4 ++ > meta/recipes-core/glibc/glibc-locale_2.10.1.bb | 50 +++++++++++++++++ > meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- > meta/recipes-core/glibc/glibc.inc | 2 +- > meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ > .../meta/external-csl-toolchain_2008q3-72.bb | 1 + > 15 files changed, 176 insertions(+), 83 deletions(-) > create mode 100644 meta/classes/libc-common.bbclass > create mode 100644 meta/recipes-core/eglibc/eglibc-locale_2.13.bb > create mode 100644 meta/recipes-core/glibc/glibc-locale_2.10.1.bb > > diff --git a/meta/classes/libc-common.bbclass b/meta/classes/libc-common.bbclass > new file mode 100644 > index 0000000..bae0ace > --- /dev/null > +++ b/meta/classes/libc-common.bbclass > @@ -0,0 +1,23 @@ > +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" > + # get rid of some broken files... > + for i in ${GLIBC_BROKEN_LOCALES}; do > + grep -v $i ${WORKDIR}/SUPPORTED> ${WORKDIR}/SUPPORTED.tmp > + mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED > + done > + rm -f ${D}{sysconfdir}/rpc > + rm -rf ${D}${datadir}/zoneinfo > + rm -rf ${D}${libexecdir}/getconf > +} > + > +def get_libc_fpu_setting(bb, d): > + if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: > + return "--without-fp" > + return "" > diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass > index 55e3d48..5737af4 100644 > --- a/meta/classes/libc-package.bbclass > +++ b/meta/classes/libc-package.bbclass > @@ -37,11 +37,6 @@ python __anonymous () { > break > } > > -def get_libc_fpu_setting(bb, d): > - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: > - return "--without-fp" > - return "" > - > OVERRIDES_append = ":${TARGET_ARCH}-${TARGET_OS}" > > do_configure_prepend() { > @@ -84,25 +79,6 @@ rm -rf ${TMP_LOCALE} > } > > > -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" > - # get rid of some broken files... > - for i in ${GLIBC_BROKEN_LOCALES}; do > - grep -v $i ${WORKDIR}/SUPPORTED> ${WORKDIR}/SUPPORTED.tmp > - mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED > - done > - rm -f ${D}${sysconfdir}/rpc > - rm -rf ${D}${datadir}/zoneinfo > - rm -rf ${D}${libexecdir}/getconf > -} > - > TMP_LOCALE="/tmp/locale${libdir}/locale" > > do_prep_locale_tree() { > diff --git a/meta/conf/distro/include/tclibc-eglibc.inc b/meta/conf/distro/include/tclibc-eglibc.inc > index a4c648e..90de04f 100644 > --- a/meta/conf/distro/include/tclibc-eglibc.inc > +++ b/meta/conf/distro/include/tclibc-eglibc.inc > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > # Add glibc overrides to the overrides for eglibc. > OVERRIDES .= ":libc-glibc" > > -PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc" > +PREFERRED_PROVIDER_virtual/libiconv ?= "eglibc-locale" > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "eglibc-nativesdk" > PREFERRED_PROVIDER_virtual/libintl ?= "eglibc" > PREFERRED_PROVIDER_virtual/libc ?= "eglibc" > diff --git a/meta/conf/distro/include/tclibc-glibc.inc b/meta/conf/distro/include/tclibc-glibc.inc > index e5843b0..748c23f 100644 > --- a/meta/conf/distro/include/tclibc-glibc.inc > +++ b/meta/conf/distro/include/tclibc-glibc.inc > @@ -10,7 +10,7 @@ TARGET_OS_powerpc = "linux${@['','-gnuspe'][bb.data.getVar('BASE_PACKAGE_ARCH',d > # Add glibc to the overrides. > OVERRIDES =. "libc-glibc:" > > -PREFERRED_PROVIDER_virtual/libiconv ?= "glibc" > +PREFERRED_PROVIDER_virtual/libiconv ?= "glibc-locale" > PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "glibc-nativesdk" > PREFERRED_PROVIDER_virtual/libintl ?= "glibc" > PREFERRED_PROVIDER_virtual/libc ?= "glibc" > diff --git a/meta/recipes-core/eglibc/eglibc-initial_2.13.bb b/meta/recipes-core/eglibc/eglibc-initial_2.13.bb > index 787c762..b934f5b 100644 > --- a/meta/recipes-core/eglibc/eglibc-initial_2.13.bb > +++ b/meta/recipes-core/eglibc/eglibc-initial_2.13.bb > @@ -1,6 +1,10 @@ > require eglibc_${PV}.bb > require eglibc-initial.inc > > +do_install_locale() { > + : > +} > + > do_configure_prepend () { > unset CFLAGS > } > diff --git a/meta/recipes-core/eglibc/eglibc-locale_2.13.bb b/meta/recipes-core/eglibc/eglibc-locale_2.13.bb > new file mode 100644 > index 0000000..5faa509 > --- /dev/null > +++ b/meta/recipes-core/eglibc/eglibc-locale_2.13.bb > @@ -0,0 +1,58 @@ > +INHIBIT_DEFAULT_DEPS = "1" > +LICENSE = "LGPL" > + > +BPN = "eglibc" > + > +do_fetch[noexec] = "1" > +do_unpack[noexec] = "1" > +do_patch[noexec] = "1" > +do_configure[noexec] = "1" > +do_compile[noexec] = "1" > + > +# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION > +# is set. The idea is to avoid running localedef on the target (at first boot) > +# to decrease initial boot time and avoid localedef being killed by the OOM > +# killer which used to effectively break i18n on machines with< 128MB RAM. > + > +# default to disabled > +ENABLE_BINARY_LOCALE_GENERATION ?= "0" > +ENABLE_BINARY_LOCALE_GENERATION_pn-eglibc-locale-nativesdk = "0" > + > +#enable locale generation on these arches > +# BINARY_LOCALE_ARCHES is a space separated list of regular expressions > +BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" > + > +# set "1" to use cross-localedef for locale generation > +# set "0" for qemu emulation of native localedef for locale generation > +LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" > + > +PR = "r0" > + > +PKGSUFFIX = "" > +PKGSUFFIX_virtclass-nativesdk = "-nativesdk" > + > +PACKAGES = "eglibc-locale localedef${PKGSUFFIX}" > + > +PACKAGES_DYNAMIC = "locale-base-* \ > + eglibc-gconv-* eglibc-charmap-* eglibc-localedata-* eglibc-binary-localedata-* \ > + glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-*" > + > +PROVIDES = "virtual/libiconv" > + > +RPROVIDES_eglibc-locale = "glibc-locale" > + > +FILES_eglibc-gconv = "${libdir}/gconv/*" > +FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" > + > +do_install () { > + cp -fpPR ${STAGING_INCDIR}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}/* ${D} > + cp -fpPR ${D}/SUPPORTED ${WORKDIR} > +} > + > +DESCRIPTION_localedef = "eglibc: compile locale definition files" > + > +inherit libc-package > + > +do_install[depends] += "virtual/libc${PKGSUFFIX}:do_populate_sysroot" > + > +BBCLASSEXTEND = "nativesdk" > diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc > index 76ebdc3..63a1de9 100644 > --- a/meta/recipes-core/eglibc/eglibc-package.inc > +++ b/meta/recipes-core/eglibc/eglibc-package.inc > @@ -14,35 +14,13 @@ python __anonymous () { > bb.data.getVar('TARGET_OS', d, 1)) > } > > -# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION > -# is set. The idea is to avoid running localedef on the target (at first boot) > -# to decrease initial boot time and avoid localedef being killed by the OOM > -# killer which used to effectively break i18n on machines with< 128MB RAM. > - > -# default to disabled > -ENABLE_BINARY_LOCALE_GENERATION ?= "0" > -ENABLE_BINARY_LOCALE_GENERATION_pn-eglibc-nativesdk = "0" > - > -#enable locale generation on these arches > -# BINARY_LOCALE_ARCHES is a space separated list of regular expressions > -BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" > - > -# set "1" to use cross-localedef for locale generation > -# set "0" for qemu emulation of native localedef for locale generation > -LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" > - > # Set this to zero if you don't want ldconfig in the output package > USE_LDCONFIG ?= "1" > > PKGSUFFIX = "" > PKGSUFFIX_virtclass-nativesdk = "-nativesdk" > > -PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} localedef${PKGSUFFIX} libcidn ${PN}-utils ${PN}-pic ${PN}-dev eglibc-doc eglibc-locale libmemusage libsegfault${PKGSUFFIX} eglibc-extra-nss eglibc-thread-db${PKGSUFFIX} eglibc-pcprofile" > - > -PACKAGES_DYNAMIC = " \ > - glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-* \ > - eglibc-gconv-* eglibc-charmap-* eglibc-localedata-* eglibc-binary-localedata-* \ > - locale-base-*${PKGSUFFIX}" > +PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} ${PN}-utils ${PN}-pic ${PN}-dev eglibc-doc libcidn libmemusage libsegfault${PKGSUFFIX} eglibc-extra-nss eglibc-thread-db${PKGSUFFIX} eglibc-pcprofile" > > # Create a eglibc-binaries > ALLOW_EMPTY_${PN}-binaries = "1" > @@ -69,7 +47,6 @@ RPROVIDES_eglibc-utils = "glibc-utils" > RPROVIDES_eglibc-pic = "glibc-pic" > RPROVIDES_eglibc-dev = "glibc-dev" > RPROVIDES_eglibc-doc = "glibc-doc" > -RPROVIDES_eglibc-locale = "glibc-locale" > RPROVIDES_eglibc-extra-nss = "glibc-extra-nss" > RPROVIDES_eglibc-thread-db = "glibc-thread-db" > RPROVIDES_eglibc-pcprofile = "glibc-pcprofile" > @@ -88,13 +65,11 @@ FILES_eglibc-dev_append += "${bindir}/rpcgen ${libdir}/*.a \ > ${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal" > FILES_nscd${PKGSUFFIX} = "${sbindir}/nscd*" > FILES_eglibc-utils = "${bindir}/* ${sbindir}/*" > -FILES_eglibc-gconv = "${libdir}/gconv/*" > -FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/gconv/.debug" > +FILES_${PN}-dbg += "${libexecdir}/*/.debug" > FILES_catchsegv${PKGSUFFIX} = "${bindir}/catchsegv" > RDEPENDS_catchsegv${PKGSUFFIX} = "libsegfault" > FILES_eglibc-pcprofile = "${base_libdir}/libpcprofile.so" > FILES_eglibc-thread-db${PKGSUFFIX} = "${base_libdir}/libthread_db*" > -FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" > RPROVIDES_eglibc-dev += "libc-dev" > > SUMMARY_sln = "The static ln." > @@ -105,9 +80,8 @@ SUMMARY_eglibc-extra-nss = "hesiod, NIS and NIS+ nss libraries" > DESCRIPTION_eglibc-extra-nss = "eglibc: nis, nisplus and hesiod search services." > SUMMARY_ldd = "print shared library dependencies" > DESCRIPTION_ldd = "/usr/bin/ldd prints shared library dependencies for each program or shared library specified on the command line." > -DESCRIPTION_localedef = "eglibc: compile locale definition files" > SUMMARY_eglibc-utils = "Miscellaneous utilities provided by eglibc" > DESCRIPTION_eglibc-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..." > > -inherit libc-package > +inherit libc-common > > diff --git a/meta/recipes-core/eglibc/eglibc.inc b/meta/recipes-core/eglibc/eglibc.inc > index 616f1af..d00392a 100644 > --- a/meta/recipes-core/eglibc/eglibc.inc > +++ b/meta/recipes-core/eglibc/eglibc.inc > @@ -26,7 +26,7 @@ DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers" > # nptl needs libgcc but dlopens it, so our shlibs code doesn't detect this > #RDEPENDS_${PN} += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}" > PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc" > -PROVIDES += "virtual/libintl virtual/libiconv" > +PROVIDES += "virtual/libintl" > inherit autotools > require eglibc-options.inc > > @@ -43,7 +43,7 @@ EGLIBCPARALLELISM := "PARALLELMFLAGS="${PARALLEL_MAKE}"" > EXTRA_OEMAKE += ${EGLIBCPARALLELISM} > PARALLEL_MAKE = "" > > -PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile" > +PACKAGES = "glibc catchsegv sln nscd ldd glibc-utils glibc-dev glibc-doc libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile" > > OE_FEATURES = "${@features_to_eglibc_settings(d)}" > do_configure_prepend() { > diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb b/meta/recipes-core/eglibc/eglibc_2.13.bb > index 3490d2d..603d9cd 100644 > --- a/meta/recipes-core/eglibc/eglibc_2.13.bb > +++ b/meta/recipes-core/eglibc/eglibc_2.13.bb > @@ -110,6 +110,18 @@ do_compile () { > ) > } > > +do_install_locale () { > + dest=${D}/${includedir}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS} > + install -d ${dest} ${dest}${bindir} > + cp -fpPR ${D}${base_libdir} ${dest}${base_prefix} > + cp -fpPR ${D}${libdir} ${dest}${exec_prefix} > + cp -fpPR ${D}${datadir} ${dest}${exec_prefix} > + cp -fpPR ${D}${bindir}/localedef ${dest}${bindir} > + cp -fpPR ${WORKDIR}/SUPPORTED ${dest} > +} > + > +addtask do_install_locale after do_install before do_populate_sysroot > + > require eglibc-package.inc > > BBCLASSEXTEND = "nativesdk" > diff --git a/meta/recipes-core/glibc/glibc-initial_2.10.1.bb b/meta/recipes-core/glibc/glibc-initial_2.10.1.bb > index d662970..bc3d7e4 100644 > --- a/meta/recipes-core/glibc/glibc-initial_2.10.1.bb > +++ b/meta/recipes-core/glibc/glibc-initial_2.10.1.bb > @@ -1,6 +1,10 @@ > require glibc_${PV}.bb > require glibc-initial.inc > > +do_install_locale() { > + : > +} > + > do_configure_prepend () { > unset CFLAGS > } > diff --git a/meta/recipes-core/glibc/glibc-locale_2.10.1.bb b/meta/recipes-core/glibc/glibc-locale_2.10.1.bb > new file mode 100644 > index 0000000..10751bf > --- /dev/null > +++ b/meta/recipes-core/glibc/glibc-locale_2.10.1.bb > @@ -0,0 +1,50 @@ > +#INHIBIT_DEFAULT_DEPS = "1" > +LICENSE = "LGPL" > + > +BPN = "glibc" > + > +do_fetch[noexec] = "1" > +do_unpack[noexec] = "1" > +do_patch[noexec] = "1" > +do_configure[noexec] = "1" > +do_compile[noexec] = "1" > + > +# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION > +# is set. The idea is to avoid running localedef on the target (at first boot) > +# to decrease initial boot time and avoid localedef being killed by the OOM > +# killer which used to effectively break i18n on machines with< 128MB RAM. > + > +# default to disabled > +ENABLE_BINARY_LOCALE_GENERATION ?= "0" > +ENABLE_BINARY_LOCALE_GENERATION_pn-glibc-locale-nativesdk = "0" > + > +#enable locale generation on these arches > +# BINARY_LOCALE_ARCHES is a space separated list of regular expressions > +BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" > + > +# set "1" to use cross-localedef for locale generation > +# set "0" for qemu emulation of native localedef for locale generation > +LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" > + > +PR = "r0" > + > +PKGSUFFIX = "" > +PKGSUFFIX_virtclass-nativesdk = "-nativesdk" > + > +PACKAGES = "glibc-locale localedef${PKGSUFFIX}" > + > +PACKAGES_DYNAMIC = "locale-base-* \ > + glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-*" > + > + > +PROVIDES = "virtual/libiconv" > + > +FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" > + > +do_install () { > + cp -fpPR ${STAGING_INCDIR}/glibc-locale-internal-${MULTIMACH_TARGET_SYS}/* ${D} > + cp -fpPR ${D}/SUPPORTED ${WORKDIR} > +} > + > +do_install[depends] += "virtual/libc:do_populate_sysroot" > +do_install_virtclass-nativesdk[depends] += "virtual/libc-nativesdk:do_populate_sysroot" > diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc > index 27dc427..5373d56 100644 > --- a/meta/recipes-core/glibc/glibc-package.inc > +++ b/meta/recipes-core/glibc/glibc-package.inc > @@ -14,34 +14,14 @@ python __anonymous () { > bb.data.getVar('TARGET_OS', d, 1)) > } > > - > -# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION > -# is set. The idea is to avoid running localedef on the target (at first boot) > -# to decrease initial boot time and avoid localedef being killed by the OOM > -# killer which used to effectively break i18n on machines with< 128MB RAM. > - > -# default to disabled until qemu works for everyone > -ENABLE_BINARY_LOCALE_GENERATION ?= "0" > -ENABLE_BINARY_LOCALE_GENERATION_pn-glibc-nativesdk = "0" > - > -# BINARY_LOCALE_ARCHES is a space separated list of regular expressions > -BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc mips" > - > -# set "1" to use cross-localedef for locale generation > -# set "0" for qemu emulation of native localedef for locale generation > -LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1" > - > PKGSUFFIX = "" > PKGSUFFIX_virtclass-nativesdk = "-nativesdk" > > PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} \ > - ldd${PKGSUFFIX} localedef${PKGSUFFIX} ${PN}-utils ${PN}-dev ${PN}-doc \ > - ${PN}-locale libsegfault${PKGSUFFIX} ${PN}-extra-nss ${PN}-thread-db \ > + ldd${PKGSUFFIX} ${PN}-utils ${PN}-dev ${PN}-doc \ > + libsegfault${PKGSUFFIX} ${PN}-extra-nss ${PN}-thread-db \ > ${PN}-pcprofile" > > -PACKAGES_DYNAMIC = "glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* locale-base-* \ > - glibc-binary-localedata-*" > - > libc_baselibs = "${base_libdir}/libc* ${base_libdir}/libm* ${base_libdir}/ld* \ > ${base_libdir}/libpthread* ${base_libdir}/libresolv* ${base_libdir}/librt* \ > ${base_libdir}/libutil* ${base_libdir}/libnsl* ${base_libdir}/libnss_files* \ > @@ -77,7 +57,6 @@ FILES_catchsegv${PKGSUFFIX} = "${bindir}/catchsegv" > RDEPENDS_catchsegv${PKGSUFFIX} = "libsegfault" > FILES_glibc-pcprofile = "${base_libdir}/libpcprofile.so" > FILES_glibc-thread-db = "${base_libdir}/libthread_db*" > -FILES_localedef${PKGSUFFIX} = "${bindir}/localedef" > RPROVIDES_glibc-dev += "libc-dev" > > SUMMARY_sln = "The static ln." > @@ -88,10 +67,10 @@ SUMMARY_glibc-extra-nss = "hesiod, NIS and NIS+ nss libraries" > DESCRIPTION_glibc-extra-nss = "glibc: nis, nisplus and hesiod search services. > SUMMARY_ldd = "print shared library dependencies" > DESCRIPTION_ldd = "/usr/bin/ldd prints shared library dependencies for each program or shared library specified on the command line." > -DESCRIPTION_localedef = "glibc: compile locale definition files" > SUMMARY_glibc-utils = "Miscellaneous utilities provided by glibc" > DESCRIPTION_glibc-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..." > > EXTRA_OEMAKE += "rootsbindir=${base_sbindir}" > > -inherit libc-package > +inherit libc-common > + > diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc > index 127ae23..a051161 100644 > --- a/meta/recipes-core/glibc/glibc.inc > +++ b/meta/recipes-core/glibc/glibc.inc > @@ -15,7 +15,7 @@ RDEPENDS_${PN}-dev = "linux-libc-headers-dev" > #RDEPENDS_ldd += " bash" > #RDEPENDS_${PN} += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}" > PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc" > -PROVIDES += "virtual/libintl virtual/libiconv" > +PROVIDES += "virtual/libintl" > > STAGINGCC = "gcc-cross-intermediate" > STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate" > diff --git a/meta/recipes-core/glibc/glibc_2.10.1.bb b/meta/recipes-core/glibc/glibc_2.10.1.bb > index 33ebe24..a2e7b83 100644 > --- a/meta/recipes-core/glibc/glibc_2.10.1.bb > +++ b/meta/recipes-core/glibc/glibc_2.10.1.bb > @@ -154,6 +154,18 @@ do_compile () { > ) > } > > +do_install_locale () { > + dest=${D}/${includedir}/glibc-locale-internal-${MULTIMACH_TARGET_SYS} > + install -d ${dest} ${dest}${bindir} > + cp -fpPR ${D}${base_libdir} ${dest}${base_prefix} > + cp -fpPR ${D}${libdir} ${dest}${exec_prefix} > + cp -fpPR ${D}${datadir} ${dest}${exec_prefix} > + cp -fpPR ${D}${bindir}/localedef ${dest}${bindir} > + cp -fpPR ${WORKDIR}/SUPPORTED ${dest} > +} > + > +addtask do_install_locale after do_install before do_populate_sysroot > + > require glibc-stage.inc > > require glibc-package.inc > diff --git a/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb b/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb > index f714928..a874c8b 100644 > --- a/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb > +++ b/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb > @@ -40,6 +40,7 @@ do_install() { > > GLIBC_INTERNAL_USE_BINARY_LOCALE ?= "compile" > > +inherit libc-common > inherit libc-package > > PACKAGES += "libgcc libgcc-dev libstdc++ libstdc++-dev linux-libc-headers" ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-22 14:44 ` Khem Raj @ 2011-06-22 14:47 ` Phil Blundell 2011-06-22 15:17 ` Mark Hatle 0 siblings, 1 reply; 12+ messages in thread From: Phil Blundell @ 2011-06-22 14:47 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Wed, 2011-06-22 at 07:44 -0700, Khem Raj wrote: > On 06/22/2011 02:01 AM, Dongxiao Xu wrote: > > *libc's do_package will cost a lot of time due to the locale handing, > > which may delay the other recipe's do_package task and affect the build > > performance. > > you could also move the locale generation into a task of its own instead > of new recipe It'd be hard to get the dependencies to work out right if you did that, though. I think a new recipe probably is the right answer. p. [ .... 100000 quoted lines snipped ... ] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-22 14:47 ` Phil Blundell @ 2011-06-22 15:17 ` Mark Hatle 2011-06-22 15:43 ` Khem Raj 0 siblings, 1 reply; 12+ messages in thread From: Mark Hatle @ 2011-06-22 15:17 UTC (permalink / raw) To: openembedded-core On 6/22/11 9:47 AM, Phil Blundell wrote: > On Wed, 2011-06-22 at 07:44 -0700, Khem Raj wrote: >> On 06/22/2011 02:01 AM, Dongxiao Xu wrote: >>> *libc's do_package will cost a lot of time due to the locale handing, >>> which may delay the other recipe's do_package task and affect the build >>> performance. >> >> you could also move the locale generation into a task of its own instead >> of new recipe > > It'd be hard to get the dependencies to work out right if you did that, > though. I think a new recipe probably is the right answer. And in the case of libc, the locales need to be done -after- the populate_sysroot, or we don't get the parallelism improvement. --Mark > p. > > [ .... 100000 quoted lines snipped ... ] > > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-22 15:17 ` Mark Hatle @ 2011-06-22 15:43 ` Khem Raj 0 siblings, 0 replies; 12+ messages in thread From: Khem Raj @ 2011-06-22 15:43 UTC (permalink / raw) To: openembedded-core On 06/22/2011 08:17 AM, Mark Hatle wrote: > On 6/22/11 9:47 AM, Phil Blundell wrote: >> On Wed, 2011-06-22 at 07:44 -0700, Khem Raj wrote: >>> On 06/22/2011 02:01 AM, Dongxiao Xu wrote: >>>> *libc's do_package will cost a lot of time due to the locale handing, >>>> which may delay the other recipe's do_package task and affect the build >>>> performance. >>> >>> you could also move the locale generation into a task of its own instead >>> of new recipe >> >> It'd be hard to get the dependencies to work out right if you did that, >> though. I think a new recipe probably is the right answer. > > And in the case of libc, the locales need to be done -after- the > populate_sysroot, or we don't get the parallelism improvement. ofcourse thats why I was suggesting a new task. > > --Mark > >> p. >> >> [ .... 100000 quoted lines snipped ... ] >> >> >> >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2011-06-27 5:53 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-06-22 9:01 [PATCH 0/1 v2][PULL] libc locale split Dongxiao Xu 2011-06-22 9:01 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 2011-06-22 11:44 ` Phil Blundell 2011-06-23 4:08 ` Xu, Dongxiao 2011-06-23 9:40 ` Phil Blundell 2011-06-23 10:14 ` Richard Purdie 2011-06-23 23:42 ` Khem Raj 2011-06-27 5:49 ` Xu, Dongxiao 2011-06-22 14:44 ` Khem Raj 2011-06-22 14:47 ` Phil Blundell 2011-06-22 15:17 ` Mark Hatle 2011-06-22 15:43 ` Khem Raj
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox