* [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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ 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; 33+ 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] 33+ messages in thread
* [PATCH 0/1 v3][PULL] libc locale split @ 2011-06-27 8:37 Dongxiao Xu 2011-06-27 8:37 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 0 siblings, 1 reply; 33+ messages in thread From: Dongxiao Xu @ 2011-06-27 8:37 UTC (permalink / raw) To: openembedded-core Hi Richard and Saul, This pull request is the third version of libc locale split, please help to review and pull. Changes from v2: Fixed a mistake that virtual/libiconv should be in libc but not libc-locale. Thanks, Dongxiao The following changes since commit a1f79a7896b6411669b3ccada6204d2695e80fc5: runqueue.py: Add umask task control (2011-06-24 12:23:12 +0100) are available in the git repository at: git://git.pokylinux.org/poky-contrib dxu4/libc-locale-v3 http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dxu4/libc-locale-v3 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 | 1 + meta/conf/distro/include/tclibc-glibc.inc | 1 + meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 56 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- meta/recipes-core/eglibc/eglibc.inc | 2 +- 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 | 49 +++++++++++++++++ meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ .../meta/external-csl-toolchain_2008q3-72.bb | 1 + 14 files changed, 171 insertions(+), 79 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] 33+ messages in thread
* [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-27 8:37 [PATCH 0/1 v3][PULL] libc locale split Dongxiao Xu @ 2011-06-27 8:37 ` Dongxiao Xu 2011-06-27 8:58 ` Phil Blundell 2011-07-08 14:55 ` Phil Blundell 0 siblings, 2 replies; 33+ messages in thread From: Dongxiao Xu @ 2011-06-27 8:37 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 | 1 + meta/conf/distro/include/tclibc-glibc.inc | 1 + meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 56 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- meta/recipes-core/eglibc/eglibc.inc | 2 +- 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 | 49 +++++++++++++++++ meta/recipes-core/glibc/glibc-package.inc | 29 ++--------- meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ .../meta/external-csl-toolchain_2008q3-72.bb | 1 + 14 files changed, 171 insertions(+), 79 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..e070aad 100644 --- a/meta/conf/distro/include/tclibc-eglibc.inc +++ b/meta/conf/distro/include/tclibc-eglibc.inc @@ -15,6 +15,7 @@ PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "eglibc-nativesdk" PREFERRED_PROVIDER_virtual/libintl ?= "eglibc" PREFERRED_PROVIDER_virtual/libc ?= "eglibc" PREFERRED_PROVIDER_virtual/libc-nativesdk ?= "eglibc-nativesdk" +PREFERRED_PROVIDER_virtual/libc-locale ?= "eglibc-locale" CXXFLAGS += "-fvisibility-inlines-hidden" diff --git a/meta/conf/distro/include/tclibc-glibc.inc b/meta/conf/distro/include/tclibc-glibc.inc index e5843b0..5e7afc1 100644 --- a/meta/conf/distro/include/tclibc-glibc.inc +++ b/meta/conf/distro/include/tclibc-glibc.inc @@ -15,6 +15,7 @@ PREFERRED_PROVIDER_virtual/libiconv-nativesdk ?= "glibc-nativesdk" PREFERRED_PROVIDER_virtual/libintl ?= "glibc" PREFERRED_PROVIDER_virtual/libc ?= "glibc" PREFERRED_PROVIDER_virtual/libc-nativesdk ?= "glibc-nativesdk" +PREFERRED_PROVIDER_virtual/libc-locale ?= "glibc-locale" CXXFLAGS += "-fvisibility-inlines-hidden" 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..ac91a5e --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-locale_2.13.bb @@ -0,0 +1,56 @@ +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/libc-locale" + +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" diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc index b5531ab..c7c3992 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 libsotruss${PKGSUFFIX}" - -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" @@ -89,14 +66,12 @@ 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 ${libdir}/audit/.debug" +FILES_${PN}-dbg += "${libexecdir}/*/.debug" FILES_catchsegv${PKGSUFFIX} = "${bindir}/catchsegv" RDEPENDS_catchsegv${PKGSUFFIX} = "libsegfault" EDEPENDS_eglibc-utils = "libsotruss" 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." @@ -107,10 +82,9 @@ 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, ..." DESCRIPTION_libsotruss = "Library to support sotruss which traces calls through PLTs" -inherit libc-package +inherit libc-common diff --git a/meta/recipes-core/eglibc/eglibc.inc b/meta/recipes-core/eglibc/eglibc.inc index 616f1af..74afb9d 100644 --- a/meta/recipes-core/eglibc/eglibc.inc +++ b/meta/recipes-core/eglibc/eglibc.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..357722f --- /dev/null +++ b/meta/recipes-core/glibc/glibc-locale_2.10.1.bb @@ -0,0 +1,49 @@ +#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" + +PROVIDES = "virtual/libc-locale" + +PACKAGES = "glibc-locale localedef${PKGSUFFIX}" + +PACKAGES_DYNAMIC = "locale-base-* \ + glibc-gconv-*${PKGSUFFIX} glibc-charmap-* glibc-localedata-* glibc-binary-localedata-*" + +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_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] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-27 8:37 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu @ 2011-06-27 8:58 ` Phil Blundell 2011-06-28 0:51 ` Xu, Dongxiao 2011-06-28 4:12 ` Xu, Dongxiao 2011-07-08 14:55 ` Phil Blundell 1 sibling, 2 replies; 33+ messages in thread From: Phil Blundell @ 2011-06-27 8:58 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Mon, 2011-06-27 at 16:37 +0800, Dongxiao Xu wrote: > -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 libsotruss${PKGSUFFIX}" > - > -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" You seem to have made a bunch of changes here that are not related to locales. What are those about? > -FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/gconv/.debug ${libdir}/audit/.debug" > +FILES_${PN}-dbg += "${libexecdir}/*/.debug" Likewise. Also, why is localedef getting packaged by libc-locale? Not that I think it's necessarily a problem but it seems a little bit strange. p. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-27 8:58 ` Phil Blundell @ 2011-06-28 0:51 ` Xu, Dongxiao 2011-06-28 9:07 ` Phil Blundell 2011-06-28 4:12 ` Xu, Dongxiao 1 sibling, 1 reply; 33+ messages in thread From: Xu, Dongxiao @ 2011-06-28 0:51 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: Monday, June 27, 2011 4:58 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. > > On Mon, 2011-06-27 at 16:37 +0800, Dongxiao Xu wrote: > > -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 libsotruss${PKGSUFFIX}" > > - > > -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" > > You seem to have made a bunch of changes here that are not related to locales. > What are those about? They are locale related changes. Locale related stuffs in the above PACKAGES and PACKAGES_DYNAMIC are moved to eglibc-locale recipe. > > > -FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/gconv/.debug > ${libdir}/audit/.debug" > > +FILES_${PN}-dbg += "${libexecdir}/*/.debug" > > Likewise. > > Also, why is localedef getting packaged by libc-locale? Not that I think it's > necessarily a problem but it seems a little bit strange. Originally I thought of putting all locale related things to eglibc-locale. Now actually virtual/libiconv belongs to eglibc. Thus I am OK to move localedef from eglibc-locale to eglibc, and will include this in my next pull request. Thanks, Dongxiao > > p. > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-28 0:51 ` Xu, Dongxiao @ 2011-06-28 9:07 ` Phil Blundell 2011-06-28 11:07 ` Richard Purdie 0 siblings, 1 reply; 33+ messages in thread From: Phil Blundell @ 2011-06-28 9:07 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Tue, 2011-06-28 at 08:51 +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: Monday, June 27, 2011 4:58 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. > > > > On Mon, 2011-06-27 at 16:37 +0800, Dongxiao Xu wrote: > > > -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 libsotruss${PKGSUFFIX}" > > > - > > > -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" > > > > You seem to have made a bunch of changes here that are not related to locales. > > What are those about? > > They are locale related changes. > Locale related stuffs in the above PACKAGES and PACKAGES_DYNAMIC are moved to eglibc-locale recipe. Is libsotruss${PKGSUFFIX} (for example) really a "locale related stuff"? It's not obvious to me what the connection is. p. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-28 9:07 ` Phil Blundell @ 2011-06-28 11:07 ` Richard Purdie 2011-06-28 12:17 ` Koen Kooi 0 siblings, 1 reply; 33+ messages in thread From: Richard Purdie @ 2011-06-28 11:07 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Tue, 2011-06-28 at 10:07 +0100, Phil Blundell wrote: > On Tue, 2011-06-28 at 08:51 +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: Monday, June 27, 2011 4:58 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. > > > > > > On Mon, 2011-06-27 at 16:37 +0800, Dongxiao Xu wrote: > > > > -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 libsotruss${PKGSUFFIX}" > > > > - > > > > -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" > > > > > > You seem to have made a bunch of changes here that are not related to locales. > > > What are those about? > > > > They are locale related changes. > > Locale related stuffs in the above PACKAGES and PACKAGES_DYNAMIC are moved to eglibc-locale recipe. > > Is libsotruss${PKGSUFFIX} (for example) really a "locale related stuff"? > It's not obvious to me what the connection is. Dongxiao: What Phil is referring to here is that libsotruss${PKGSUFFIX} disappeared from PACKAGES and that also "${libdir}/audit/.debug" disappeared from FILES_${PN}-dbg. Specifically these changes came in as part of: http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=77c2dd944db42e40cc8467e6bc5a175fed90c251 which I don't think your patch accounted for. Since this patch has been around for a while and it otherwise looks good, I've fixed up these couple of issues and merged it though. Cheers, Richard ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-28 11:07 ` Richard Purdie @ 2011-06-28 12:17 ` Koen Kooi 2011-06-28 14:00 ` Richard Purdie 0 siblings, 1 reply; 33+ messages in thread From: Koen Kooi @ 2011-06-28 12:17 UTC (permalink / raw) To: Patches and discussions about the oe-core layer Op 28 jun 2011, om 13:07 heeft Richard Purdie het volgende geschreven: > On Tue, 2011-06-28 at 10:07 +0100, Phil Blundell wrote: >> On Tue, 2011-06-28 at 08:51 +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: Monday, June 27, 2011 4:58 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. >>>> >>>> On Mon, 2011-06-27 at 16:37 +0800, Dongxiao Xu wrote: >>>>> -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 libsotruss${PKGSUFFIX}" >>>>> - >>>>> -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" >>>> >>>> You seem to have made a bunch of changes here that are not related to locales. >>>> What are those about? >>> >>> They are locale related changes. >>> Locale related stuffs in the above PACKAGES and PACKAGES_DYNAMIC are moved to eglibc-locale recipe. >> >> Is libsotruss${PKGSUFFIX} (for example) really a "locale related stuff"? >> It's not obvious to me what the connection is. > > Dongxiao: What Phil is referring to here is that libsotruss${PKGSUFFIX} > disappeared from PACKAGES and that also "${libdir}/audit/.debug" > disappeared from FILES_${PN}-dbg. > > Specifically these changes came in as part of: > > http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=77c2dd944db42e40cc8467e6bc5a175fed90c251 > > which I don't think your patch accounted for. > > Since this patch has been around for a while and it otherwise looks > good, I've fixed up these couple of issues and merged it though. This breaks when using eglibc 2.12 :( ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-28 12:17 ` Koen Kooi @ 2011-06-28 14:00 ` Richard Purdie 2011-06-28 19:37 ` Koen Kooi 0 siblings, 1 reply; 33+ messages in thread From: Richard Purdie @ 2011-06-28 14:00 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Tue, 2011-06-28 at 14:17 +0200, Koen Kooi wrote: > Op 28 jun 2011, om 13:07 heeft Richard Purdie het volgende geschreven: > > On Tue, 2011-06-28 at 10:07 +0100, Phil Blundell wrote: > > > > Dongxiao: What Phil is referring to here is that libsotruss${PKGSUFFIX} > > disappeared from PACKAGES and that also "${libdir}/audit/.debug" > > disappeared from FILES_${PN}-dbg. > > > > Specifically these changes came in as part of: > > > > http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=77c2dd944db42e40cc8467e6bc5a175fed90c251 > > > > which I don't think your patch accounted for. > > > > Since this patch has been around for a while and it otherwise looks > > good, I've fixed up these couple of issues and merged it though. > > This breaks when using eglibc 2.12 :( Sorry, I've pushed some cleanup to resolve that. Cheers, Richard ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-28 14:00 ` Richard Purdie @ 2011-06-28 19:37 ` Koen Kooi 2011-06-28 20:15 ` Koen Kooi 0 siblings, 1 reply; 33+ messages in thread From: Koen Kooi @ 2011-06-28 19:37 UTC (permalink / raw) To: Patches and discussions about the oe-core layer Op 28 jun 2011, om 16:00 heeft Richard Purdie het volgende geschreven: > On Tue, 2011-06-28 at 14:17 +0200, Koen Kooi wrote: >> Op 28 jun 2011, om 13:07 heeft Richard Purdie het volgende geschreven: >>> On Tue, 2011-06-28 at 10:07 +0100, Phil Blundell wrote: > >>> >>> Dongxiao: What Phil is referring to here is that libsotruss${PKGSUFFIX} >>> disappeared from PACKAGES and that also "${libdir}/audit/.debug" >>> disappeared from FILES_${PN}-dbg. >>> >>> Specifically these changes came in as part of: >>> >>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=77c2dd944db42e40cc8467e6bc5a175fed90c251 >>> >>> which I don't think your patch accounted for. >>> >>> Since this patch has been around for a while and it otherwise looks >>> good, I've fixed up these couple of issues and merged it though. >> >> This breaks when using eglibc 2.12 :( > > Sorry, I've pushed some cleanup to resolve that. So after my shlib renaming patch I still can't build any image, since locale-base-* has disappeared. Is there anything related to libc and libc-locales this patch *didn't* break? ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-28 19:37 ` Koen Kooi @ 2011-06-28 20:15 ` Koen Kooi 0 siblings, 0 replies; 33+ messages in thread From: Koen Kooi @ 2011-06-28 20:15 UTC (permalink / raw) To: Patches and discussions about the oe-core layer Op 28 jun 2011, om 21:37 heeft Koen Kooi het volgende geschreven: > > Op 28 jun 2011, om 16:00 heeft Richard Purdie het volgende geschreven: > >> On Tue, 2011-06-28 at 14:17 +0200, Koen Kooi wrote: >>> Op 28 jun 2011, om 13:07 heeft Richard Purdie het volgende geschreven: >>>> On Tue, 2011-06-28 at 10:07 +0100, Phil Blundell wrote: >> >>>> >>>> Dongxiao: What Phil is referring to here is that libsotruss${PKGSUFFIX} >>>> disappeared from PACKAGES and that also "${libdir}/audit/.debug" >>>> disappeared from FILES_${PN}-dbg. >>>> >>>> Specifically these changes came in as part of: >>>> >>>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=77c2dd944db42e40cc8467e6bc5a175fed90c251 >>>> >>>> which I don't think your patch accounted for. >>>> >>>> Since this patch has been around for a while and it otherwise looks >>>> good, I've fixed up these couple of issues and merged it though. >>> >>> This breaks when using eglibc 2.12 :( >> >> Sorry, I've pushed some cleanup to resolve that. > > So after my shlib renaming patch I still can't build any image, since locale-base-* has disappeared. Is there anything related to libc and libc-locales this patch *didn't* break? Actually, I'm a moron. Stay tuned for v2 of the shlib patch ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-27 8:58 ` Phil Blundell 2011-06-28 0:51 ` Xu, Dongxiao @ 2011-06-28 4:12 ` Xu, Dongxiao 1 sibling, 0 replies; 33+ messages in thread From: Xu, Dongxiao @ 2011-06-28 4:12 UTC (permalink / raw) To: Patches and discussions about the oe-core layer > -----Original Message----- > From: Xu, Dongxiao > Sent: Tuesday, June 28, 2011 8:52 AM > To: Patches and discussions about the oe-core layer > Subject: RE: [OE-core] [PATCH 1/1] libc-locale: split locale handling from libc > recipe. > > > > > -----Original Message----- > > From: openembedded-core-bounces@lists.openembedded.org > > [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf > Of > > Phil Blundell > > Sent: Monday, June 27, 2011 4:58 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. > > > > On Mon, 2011-06-27 at 16:37 +0800, Dongxiao Xu wrote: > > > -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 libsotruss${PKGSUFFIX}" > > > - > > > -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" > > > > You seem to have made a bunch of changes here that are not related to > locales. > > What are those about? > > They are locale related changes. > Locale related stuffs in the above PACKAGES and PACKAGES_DYNAMIC are > moved to eglibc-locale recipe. > > > > > > -FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/gconv/.debug > > ${libdir}/audit/.debug" > > > +FILES_${PN}-dbg += "${libexecdir}/*/.debug" > > > > Likewise. > > > > Also, why is localedef getting packaged by libc-locale? Not that I > > think it's necessarily a problem but it seems a little bit strange. > > Originally I thought of putting all locale related things to eglibc-locale. > Now actually virtual/libiconv belongs to eglibc. > Thus I am OK to move localedef from eglibc-locale to eglibc, and will include this > in my next pull request. Just did an experiment to move "localedef" in eglibc instead of eglibc-locale, however eglibc-locale's do_package met errors since it needs "localedef" to generate locales, see libc-packages.inc. Therefore localedef still needs to be packaged in eglibc-locale recipe. Thanks, Dongxiao > > Thanks, > Dongxiao > > > > > p. > > > > > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-27 8:37 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 2011-06-27 8:58 ` Phil Blundell @ 2011-07-08 14:55 ` Phil Blundell 1 sibling, 0 replies; 33+ messages in thread From: Phil Blundell @ 2011-07-08 14:55 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Mon, 2011-06-27 at 16:37 +0800, Dongxiao Xu wrote: > +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} > +} This turns out to lose if you don't have libc-locale-code in DISTRO_FEATURES, since then localedef isn't installed and it blows up trying to copy that file. p. ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 0/1][RFC] libc locale split @ 2011-06-08 9:08 Dongxiao Xu 2011-06-08 9:08 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 0 siblings, 1 reply; 33+ messages in thread From: Dongxiao Xu @ 2011-06-08 9:08 UTC (permalink / raw) To: openembedded-core Hi Richard and Saul, This pull request split the libc-locale from libc recipe, which can improve the build performance. Please help to review and pull. Some test results: CPU: Intel i7 870 CPU. Memory: 4G. Image: core-image-sato. Machine: qemux86. W/o the patch: real 111m52.954s user 367m56.610s sys 49m20.770s W/ the patch: real 105m25.436s user 372m48.040s sys 51m23.950s There are about 6% performance gain. Thanks, Dongxiao The following changes since commit 5af197b55a4b779f1ec93186f0723026949ba2b5: cache: Implement multiple extra cache fields request support (2011-06-07 22:40:01 +0100) are available in the git repository at: git://git.pokylinux.org/poky-contrib dxu4/libc-locale http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dxu4/libc-locale 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 | 12 ++-- meta/conf/distro/include/tclibc-glibc.inc | 12 ++-- meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 56 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- meta/recipes-core/eglibc/eglibc.inc | 5 +- 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 | 48 +++++++++++++++++ meta/recipes-core/glibc/glibc-package.inc | 31 ++--------- meta/recipes-core/glibc/glibc.inc | 2 +- meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ .../meta/external-csl-toolchain_2008q3-72.bb | 3 +- meta/recipes-core/meta/external-poky-toolchain.bb | 2 +- meta/recipes-gnome/gtk+/gtk+.inc | 2 +- 17 files changed, 187 insertions(+), 97 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] 33+ messages in thread
* [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-08 9:08 [PATCH 0/1][RFC] libc locale split Dongxiao Xu @ 2011-06-08 9:08 ` Dongxiao Xu 2011-06-08 9:36 ` Phil Blundell 0 siblings, 1 reply; 33+ messages in thread From: Dongxiao Xu @ 2011-06-08 9:08 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 | 12 ++-- meta/conf/distro/include/tclibc-glibc.inc | 12 ++-- meta/recipes-core/eglibc/eglibc-initial_2.13.bb | 4 ++ meta/recipes-core/eglibc/eglibc-locale_2.13.bb | 56 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc-package.inc | 32 +---------- meta/recipes-core/eglibc/eglibc.inc | 5 +- 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 | 48 +++++++++++++++++ meta/recipes-core/glibc/glibc-package.inc | 31 ++--------- meta/recipes-core/glibc/glibc.inc | 2 +- meta/recipes-core/glibc/glibc_2.10.1.bb | 12 ++++ .../meta/external-csl-toolchain_2008q3-72.bb | 3 +- meta/recipes-core/meta/external-poky-toolchain.bb | 2 +- meta/recipes-gnome/gtk+/gtk+.inc | 2 +- 17 files changed, 187 insertions(+), 97 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..8997d9e 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" @@ -24,10 +24,10 @@ LIBC_DEPENDENCIES = "libsegfault \ eglibc-dev \ eglibc-utils \ eglibc-thread-db \ - eglibc-localedata-i18n \ - eglibc-gconv-ibm850 \ - eglibc-gconv-cp1252 \ - eglibc-gconv-iso8859-1 \ - eglibc-gconv-iso8859-15 \ + eglibc-locale-localedata-i18n \ + eglibc-locale-gconv-ibm850 \ + eglibc-locale-gconv-cp1252 \ + eglibc-locale-gconv-iso8859-1 \ + eglibc-locale-gconv-iso8859-15 \ locale-base-en-us \ locale-base-en-gb " diff --git a/meta/conf/distro/include/tclibc-glibc.inc b/meta/conf/distro/include/tclibc-glibc.inc index e5843b0..56516b4 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" @@ -25,10 +25,10 @@ LIBC_DEPENDENCIES = "\ glibc-dev \ glibc-utils \ glibc-thread-db \ - glibc-localedata-i18n \ - glibc-gconv-ibm850 \ - glibc-gconv-cp1252 \ - glibc-gconv-iso8859-1 \ - glibc-gconv-iso8859-15 \ + glibc-locale-localedata-i18n \ + glibc-locale-gconv-ibm850 \ + glibc-locale-gconv-cp1252 \ + glibc-locale-gconv-iso8859-1 \ + glibc-locale-gconv-iso8859-15 \ locale-base-en-gb \ " 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..64eb9e7 --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-locale_2.13.bb @@ -0,0 +1,56 @@ +INHIBIT_DEFAULT_DEPS = "1" +LICENSE = "LGPL" + +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-locale-gconv-* eglibc-locale-charmap-* eglibc-locale-localedata-* eglibc-locale-binary-localedata-* \ + glibc-locale-gconv-*${PKGSUFFIX} glibc-locale-charmap-* glibc-locale-localedata-* glibc-locale-binary-localedata-*" + +PROVIDES = "virtual/libiconv" + +RPROVIDES_eglibc-locale = "glibc-locale" + +FILES_eglibc-locale-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 46ffa82..0f5721d 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 LEAD_SONAME = "libc.so" @@ -42,4 +42,5 @@ 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" + diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb b/meta/recipes-core/eglibc/eglibc_2.13.bb index c77bf3c..4d43044 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..719cd3b --- /dev/null +++ b/meta/recipes-core/glibc/glibc-locale_2.10.1.bb @@ -0,0 +1,48 @@ +#INHIBIT_DEFAULT_DEPS = "1" +LICENSE = "LGPL" + +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-locale-gconv-*${PKGSUFFIX} glibc-locale-charmap-* glibc-locale-localedata-* glibc-locale-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..4ea601c 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* \ @@ -72,12 +52,11 @@ FILES_glibc-dbg = "${glibcdbgfiles}" FILES_${PN}-dbg = "${glibcdbgfiles}" FILES_nscd${PKGSUFFIX} = "${sbindir}/nscd* ${sysconfdir}/nscd* ${sysconfdir}/init.d/nscd*" FILES_glibc-utils = "${bindir}/* ${sbindir}/*" -FILES_glibc-gconv = "${libdir}/gconv/*" +FILES_glibc-locale-gconv = "${libdir}/gconv/*" 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..8630467 100644 --- a/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb +++ b/meta/recipes-core/meta/external-csl-toolchain_2008q3-72.bb @@ -17,7 +17,7 @@ PROVIDES = "\ glibc-thread-db \ virtual/linux-libc-headers " RPROVIDES = "glibc-utils libsegfault glibc-thread-db" -PACKAGES_DYNAMIC = "glibc-gconv-*" +PACKAGES_DYNAMIC = "glibc-locale-gconv-*" PR = "r1" #SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-${PV}-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2" @@ -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" diff --git a/meta/recipes-core/meta/external-poky-toolchain.bb b/meta/recipes-core/meta/external-poky-toolchain.bb index 5507746..e812209 100644 --- a/meta/recipes-core/meta/external-poky-toolchain.bb +++ b/meta/recipes-core/meta/external-poky-toolchain.bb @@ -10,7 +10,7 @@ PROVIDES = "\ virtual/libiconv \ virtual/linux-libc-headers " RPROVIDES = "glibc-utils libsegfault glibc-thread-db libgcc-dev libstdc++-dev libstdc++" -PACKAGES_DYNAMIC = "glibc-gconv-*" +PACKAGES_DYNAMIC = "glibc-locale-gconv-*" INHIBIT_DEFAULT_DEPS = "1" PR = "r1" diff --git a/meta/recipes-gnome/gtk+/gtk+.inc b/meta/recipes-gnome/gtk+/gtk+.inc index 9e2523a..22d36b7 100644 --- a/meta/recipes-gnome/gtk+/gtk+.inc +++ b/meta/recipes-gnome/gtk+/gtk+.inc @@ -37,7 +37,7 @@ FILES_${PN}-dbg += " \ ${libdir}/gtk-2.0/${LIBV}/printbackends/.debug/*" GTKBASE_RRECOMMENDS ?= "liberation-fonts gdk-pixbuf-loader-png gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-gif gdk-pixbuf-loader-xpm shared-mime-info" -GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1" +GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-locale-gconv-iso8859-1" RRECOMMENDS_${PN} = "${GTKBASE_RRECOMMENDS}" RRECOMMENDS_${PN}_libc-glibc = "${GTKGLIBC_RRECOMMENDS}" -- 1.7.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-08 9:08 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu @ 2011-06-08 9:36 ` Phil Blundell 2011-06-08 15:35 ` Richard Purdie 0 siblings, 1 reply; 33+ messages in thread From: Phil Blundell @ 2011-06-08 9:36 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Wed, 2011-06-08 at 17:08 +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. Can you quantify the effect on build performance a bit? If I understand correctly, you're basically saying that the goal is to increase parallelism. Does that cause reduced performance for people running with few threads? For example, it would be interesting to know what the before and after times are for some representative image build using (say) BB_NUMBER_THREADS=1 and BB_NUMBER_THREADS=16. Also, see below. > diff --git a/meta/conf/distro/include/tclibc-eglibc.inc b/meta/conf/distro/include/tclibc-eglibc.inc > index a4c648e..8997d9e 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" That looks a bit strange. Is this really correct? > - eglibc-localedata-i18n \ > - eglibc-gconv-ibm850 \ > - eglibc-gconv-cp1252 \ > - eglibc-gconv-iso8859-1 \ > - eglibc-gconv-iso8859-15 \ > + eglibc-locale-localedata-i18n \ > + eglibc-locale-gconv-ibm850 \ > + eglibc-locale-gconv-cp1252 \ > + eglibc-locale-gconv-iso8859-1 \ > + eglibc-locale-gconv-iso8859-15 \ This kind of thing is definitely not very desirable. Can you find a way to keep the output package names the same? p. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-08 9:36 ` Phil Blundell @ 2011-06-08 15:35 ` Richard Purdie 2011-06-09 11:14 ` Phil Blundell 0 siblings, 1 reply; 33+ messages in thread From: Richard Purdie @ 2011-06-08 15:35 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Wed, 2011-06-08 at 10:36 +0100, Phil Blundell wrote: > On Wed, 2011-06-08 at 17:08 +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. > > Can you quantify the effect on build performance a bit? If I understand > correctly, you're basically saying that the goal is to increase > parallelism. Does that cause reduced performance for people running > with few threads? One of the side effects of debian.bbclass is that it requires all dependencies to do_package before any package itself can do_package so any renaming of dependencies can be accounted for. There is an issue if do_package for libc takes an age as it holds up any other tasks from writing out packages. Pretty much most things depend on libc. This patch therefore splits it into two stages and means that packaging of things depending on libc can happen sooner thereby increasing the potential parallelism of the packaging stages of builds. There is a very clear step on the "bootchart" graphs of builds I made showing this. I'm not sure how this would reduce performance of builds of a few threads, it should just make better use of any available "spare" processing capacity throughout the build. Cheers, Richard ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-08 15:35 ` Richard Purdie @ 2011-06-09 11:14 ` Phil Blundell 2011-06-09 11:29 ` Richard Purdie 0 siblings, 1 reply; 33+ messages in thread From: Phil Blundell @ 2011-06-09 11:14 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Wed, 2011-06-08 at 16:35 +0100, Richard Purdie wrote: > I'm not sure how this would reduce performance of builds of a few > threads, it should just make better use of any available "spare" > processing capacity throughout the build. If I'm reading the patch right, it does involve a certain amount of extra copying around of the locale-related files since they need to be stashed away in some place where libc-locale.bb can find them later. I don't think these files are especially big, but there are quite a few of them (which is the whole reason that libc's do_package was slow in the first place). I must admit that I'm slightly surprised that libc's packaging stage is becoming a bottleneck for anything other than the very smallest builds. If there's any substantial amount of other material being compiled then I would expect that there would be enough do_compile() work to keep the other threads busy until libc was done packaging. That's not to say that I think this change is a bad idea, but I would be interested to know what the actual impact is for real-world workloads. And, just on a point of principle, any time we're making a chance for performance-related reasons I think we should always have measurements to back it up. p. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-09 11:14 ` Phil Blundell @ 2011-06-09 11:29 ` Richard Purdie 2011-06-09 11:43 ` Phil Blundell 0 siblings, 1 reply; 33+ messages in thread From: Richard Purdie @ 2011-06-09 11:29 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Thu, 2011-06-09 at 12:14 +0100, Phil Blundell wrote: > On Wed, 2011-06-08 at 16:35 +0100, Richard Purdie wrote: > > I'm not sure how this would reduce performance of builds of a few > > threads, it should just make better use of any available "spare" > > processing capacity throughout the build. > > If I'm reading the patch right, it does involve a certain amount of > extra copying around of the locale-related files since they need to be > stashed away in some place where libc-locale.bb can find them later. I > don't think these files are especially big, but there are quite a few of > them (which is the whole reason that libc's do_package was slow in the > first place). > > I must admit that I'm slightly surprised that libc's packaging stage is > becoming a bottleneck for anything other than the very smallest builds. > If there's any substantial amount of other material being compiled then > I would expect that there would be enough do_compile() work to keep the > other threads busy until libc was done packaging. That's not to say > that I think this change is a bad idea, but I would be interested to > know what the actual impact is for real-world workloads. > > And, just on a point of principle, any time we're making a chance for > performance-related reasons I think we should always have measurements > to back it up. Totally agreed and this decision is being made on real world data even if its perhaps not clearly being presented here. $ cat buildstats/core-image-sato-qemux86/201106030912/eglibc-2.13-r1+svnr13356/do_package | grep time eglibc-2.13-r1+svnr13356: do_package: Elapsed time: 828.01 seconds As you can see, eglibc do_package takes about 14 minutes which is about 14% of our build time. That is a long time to block pretty much all packaging activity, particularly if you have access to something with several cores. When it does complete, even on my 4 core system you see a "stampeding herd" of packaging happening on the build charts suggesting a backlog does build up. For those reasons I do think its a reasonable change. Cheers, Richard ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-09 11:29 ` Richard Purdie @ 2011-06-09 11:43 ` Phil Blundell 2011-06-09 13:15 ` Richard Purdie 0 siblings, 1 reply; 33+ messages in thread From: Phil Blundell @ 2011-06-09 11:43 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Thu, 2011-06-09 at 12:29 +0100, Richard Purdie wrote: > As you can see, eglibc do_package takes about 14 minutes which is about > 14% of our build time. That is a long time to block pretty much all > packaging activity, particularly if you have access to something with > several cores. When it does complete, even on my 4 core system you see a > "stampeding herd" of packaging happening on the build charts suggesting > a backlog does build up. Yeah, I can imagine that a backlog of packaging activity does build up. The thing I'm not entirely clear on is whether this is actually causing some threads to get starved of work (and hence the total build time to be longer than it needs to be) or whether we're really just shifting things around in the timeline without making much/any difference to the overall build duration. (I'm not familiar enough with bitbake's scheduler to know whether it will schedule tasks as early as possible, or as late as possible, or something else.) Just as a matter of interest, are you using qemu-based locale generation or the cross localedef for your measurement? 14 minutes does sound like an awfully long time and I wonder whether there is anything we could do in absolute terms to just speed that process up. p. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-09 11:43 ` Phil Blundell @ 2011-06-09 13:15 ` Richard Purdie 2011-06-09 13:51 ` Richard Purdie 2011-06-09 13:53 ` Koen Kooi 0 siblings, 2 replies; 33+ messages in thread From: Richard Purdie @ 2011-06-09 13:15 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Thu, 2011-06-09 at 12:43 +0100, Phil Blundell wrote: > On Thu, 2011-06-09 at 12:29 +0100, Richard Purdie wrote: > > As you can see, eglibc do_package takes about 14 minutes which is about > > 14% of our build time. That is a long time to block pretty much all > > packaging activity, particularly if you have access to something with > > several cores. When it does complete, even on my 4 core system you see a > > "stampeding herd" of packaging happening on the build charts suggesting > > a backlog does build up. > > Yeah, I can imagine that a backlog of packaging activity does build up. > The thing I'm not entirely clear on is whether this is actually causing > some threads to get starved of work (and hence the total build time to > be longer than it needs to be) or whether we're really just shifting > things around in the timeline without making much/any difference to the > overall build duration. It will certainly be a net win on large core systems which I know of people running builds on as task starvation happens there. Last time I tested this on a 4 core I think we saw a couple of minutes improvement in build time so it appears beneficial there too. > (I'm not familiar enough with bitbake's > scheduler to know whether it will schedule tasks as early as possible, > or as late as possible, or something else.) Roughly speaking, the default scheduler runs tasks with the most things depending upon them first. This means it will fill any "spare" threads with lower priority tasks such as packaging. > Just as a matter of interest, are you using qemu-based locale generation > or the cross localedef for your measurement? 14 minutes does sound like > an awfully long time and I wonder whether there is anything we could do > in absolute terms to just speed that process up. I'm using cross localedef. Its faster than with qemu but still slow. I'm very open to suggestions on how to speed it up as it does take an age. Cheers, Richard ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-09 13:15 ` Richard Purdie @ 2011-06-09 13:51 ` Richard Purdie 2011-06-09 13:53 ` Koen Kooi 1 sibling, 0 replies; 33+ messages in thread From: Richard Purdie @ 2011-06-09 13:51 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Thu, 2011-06-09 at 14:15 +0100, Richard Purdie wrote: > On Thu, 2011-06-09 at 12:43 +0100, Phil Blundell wrote: > > On Thu, 2011-06-09 at 12:29 +0100, Richard Purdie wrote: > > > As you can see, eglibc do_package takes about 14 minutes which is about > > > 14% of our build time. That is a long time to block pretty much all > > > packaging activity, particularly if you have access to something with > > > several cores. When it does complete, even on my 4 core system you see a > > > "stampeding herd" of packaging happening on the build charts suggesting > > > a backlog does build up. > > > > Yeah, I can imagine that a backlog of packaging activity does build up. > > The thing I'm not entirely clear on is whether this is actually causing > > some threads to get starved of work (and hence the total build time to > > be longer than it needs to be) or whether we're really just shifting > > things around in the timeline without making much/any difference to the > > overall build duration. > > It will certainly be a net win on large core systems which I know of > people running builds on as task starvation happens there. Last time I > tested this on a 4 core I think we saw a couple of minutes improvement > in build time so it appears beneficial there too. Just as another data point, I'm running builds on my 4 core machine here and it is scheduling many do_package tasks including long running ones such as perl's in parallel with eglibc-locale's do_package task. It would appear the bitbake scheduler believes there is benefit in splitting these out at least. Cheers, Richard ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-09 13:15 ` Richard Purdie 2011-06-09 13:51 ` Richard Purdie @ 2011-06-09 13:53 ` Koen Kooi 2011-06-09 13:55 ` Phil Blundell 1 sibling, 1 reply; 33+ messages in thread From: Koen Kooi @ 2011-06-09 13:53 UTC (permalink / raw) To: Patches and discussions about the oe-core layer Op 9 jun 2011, om 15:15 heeft Richard Purdie het volgende geschreven: > On Thu, 2011-06-09 at 12:43 +0100, Phil Blundell wrote: >> On Thu, 2011-06-09 at 12:29 +0100, Richard Purdie wrote: >>> As you can see, eglibc do_package takes about 14 minutes which is about >>> 14% of our build time. That is a long time to block pretty much all >>> packaging activity, particularly if you have access to something with >>> several cores. When it does complete, even on my 4 core system you see a >>> "stampeding herd" of packaging happening on the build charts suggesting >>> a backlog does build up. >> >> Yeah, I can imagine that a backlog of packaging activity does build up. >> The thing I'm not entirely clear on is whether this is actually causing >> some threads to get starved of work (and hence the total build time to >> be longer than it needs to be) or whether we're really just shifting >> things around in the timeline without making much/any difference to the >> overall build duration. > > It will certainly be a net win on large core systems which I know of > people running builds on as task starvation happens there. Last time I > tested this on a 4 core I think we saw a couple of minutes improvement > in build time so it appears beneficial there too. > >> (I'm not familiar enough with bitbake's >> scheduler to know whether it will schedule tasks as early as possible, >> or as late as possible, or something else.) > > Roughly speaking, the default scheduler runs tasks with the most things > depending upon them first. This means it will fill any "spare" threads > with lower priority tasks such as packaging. > >> Just as a matter of interest, are you using qemu-based locale generation >> or the cross localedef for your measurement? 14 minutes does sound like >> an awfully long time and I wonder whether there is anything we could do >> in absolute terms to just speed that process up. > > I'm using cross localedef. Its faster than with qemu but still slow. I'm > very open to suggestions on how to speed it up as it does take an age. Does cross localegen obey parallel make or does it only do a single locale at a time? regards, Koen ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/1] libc-locale: split locale handling from libc recipe. 2011-06-09 13:53 ` Koen Kooi @ 2011-06-09 13:55 ` Phil Blundell 0 siblings, 0 replies; 33+ messages in thread From: Phil Blundell @ 2011-06-09 13:55 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Thu, 2011-06-09 at 15:53 +0200, Koen Kooi wrote: > Does cross localegen obey parallel make or does it only do a single locale at a time? Just one at a time. It's run out of Python code in libc-package, not by make, so there is no completely straightforward way to get it to respect PARALLEL_MAKE. I guess you could teach libc-package how to generate a makefile and then run it; that'd probably be the easiest way to parallelize that particular process. p. ^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2011-07-08 14:59 UTC | newest] Thread overview: 33+ 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 -- strict thread matches above, loose matches on Subject: below -- 2011-06-27 8:37 [PATCH 0/1 v3][PULL] libc locale split Dongxiao Xu 2011-06-27 8:37 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 2011-06-27 8:58 ` Phil Blundell 2011-06-28 0:51 ` Xu, Dongxiao 2011-06-28 9:07 ` Phil Blundell 2011-06-28 11:07 ` Richard Purdie 2011-06-28 12:17 ` Koen Kooi 2011-06-28 14:00 ` Richard Purdie 2011-06-28 19:37 ` Koen Kooi 2011-06-28 20:15 ` Koen Kooi 2011-06-28 4:12 ` Xu, Dongxiao 2011-07-08 14:55 ` Phil Blundell 2011-06-08 9:08 [PATCH 0/1][RFC] libc locale split Dongxiao Xu 2011-06-08 9:08 ` [PATCH 1/1] libc-locale: split locale handling from libc recipe Dongxiao Xu 2011-06-08 9:36 ` Phil Blundell 2011-06-08 15:35 ` Richard Purdie 2011-06-09 11:14 ` Phil Blundell 2011-06-09 11:29 ` Richard Purdie 2011-06-09 11:43 ` Phil Blundell 2011-06-09 13:15 ` Richard Purdie 2011-06-09 13:51 ` Richard Purdie 2011-06-09 13:53 ` Koen Kooi 2011-06-09 13:55 ` Phil Blundell
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.