From c6d3242f7642f537b02870bb4eb650f0e2094b85 Mon Sep 17 00:00:00 2001 From: Dongxiao Xu Date: Tue, 28 Jun 2011 14:58:15 +0800 Subject: libc-locale: split locale handling from libc recipe. *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. [RP: Add fixup with recent eglibc commit conflict for FILES_pn-dbg and PACKAGES] Signed-off-by: Dongxiao Xu Signed-off-by: Richard Purdie --- 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 | 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 | 52 +++++++++++++++++++ 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 + 10 files changed, 151 insertions(+), 55 deletions(-) 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 (limited to 'meta/recipes-core') diff --git a/meta/recipes-core/eglibc/eglibc-initial_2.13.bb b/meta/recipes-core/eglibc/eglibc-initial_2.13.bb index 787c762609..b934f5b1bb 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 0000000000..ed6c099c6c --- /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/libc-locale${PKGSUFFIX}" + +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 b5531ab01d..fd8fee8031 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 libsotruss${PKGSUFFIX}" # 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 ${libdir}/audit/.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 616f1aff6d..74afb9d2b0 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 3490d2db9f..603d9cdc62 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 d66297090f..bc3d7e4192 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 0000000000..d8ff12d274 --- /dev/null +++ b/meta/recipes-core/glibc/glibc-locale_2.10.1.bb @@ -0,0 +1,52 @@ +#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" + +DESCRIPTION_localedef = "glibc: compile locale definition files" + +do_install () { + cp -fpPR ${STAGING_INCDIR}/glibc-locale-internal-${MULTIMACH_TARGET_SYS}/* ${D} + cp -fpPR ${D}/SUPPORTED ${WORKDIR} +} + +do_install[depends] += "virtual/libc${PKGSUFFIX}:do_populate_sysroot" + +BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc index 27dc4271c3..5373d56d57 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 33ebe24b03..a2e7b834f5 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 f7149289d7..a874c8b15a 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" -- cgit v1.2.3