Patchwork [v3] eglibc: Move perl- and bash-using scripts to separate recipes

login
register
mail settings
Submitter Phil Blundell
Date Sept. 25, 2012, 12:56 p.m.
Message ID <1348577801.31293.71.camel@phil-desktop>
Download mbox | patch
Permalink /patch/37187/
State New
Headers show

Comments

Phil Blundell - Sept. 25, 2012, 12:56 p.m.
This removes the dependency of eglibc.bb itself on perl and bash
which, in turn, eliminates the need to build those two recipes if the
scripts which need them are not going to be installed.

Signed-off-by: Phil Blundell <pb@pbcl.net>
---
v3: rebased on top of localedir changes

 meta/recipes-core/eglibc/eglibc-collateral.inc  |   11 +++++++++
 meta/recipes-core/eglibc/eglibc-locale.inc      |   11 +--------
 meta/recipes-core/eglibc/eglibc-mtrace.inc      |   12 ++++++++++
 meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb  |    1 +
 meta/recipes-core/eglibc/eglibc-package.inc     |   28 ++++++++++++++++++-----
 meta/recipes-core/eglibc/eglibc-scripts.inc     |   17 ++++++++++++++
 meta/recipes-core/eglibc/eglibc-scripts_2.16.bb |    1 +
 meta/recipes-core/eglibc/eglibc_2.16.bb         |    2 +-
 8 files changed, 66 insertions(+), 17 deletions(-)
 create mode 100644 meta/recipes-core/eglibc/eglibc-collateral.inc
 create mode 100644 meta/recipes-core/eglibc/eglibc-mtrace.inc
 create mode 100644 meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
 create mode 100644 meta/recipes-core/eglibc/eglibc-scripts.inc
 create mode 100644 meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
Saul Wold - Oct. 12, 2012, 5:44 p.m.
On 09/25/2012 05:56 AM, Phil Blundell wrote:
> This removes the dependency of eglibc.bb itself on perl and bash
> which, in turn, eliminates the need to build those two recipes if the
> scripts which need them are not going to be installed.
>

I think you missed dealing with an RPOVIDES someplace as I am getting 
the following error during build:

> ERROR: Nothing RPROVIDES 'libc-mtrace' (but /intel/poky/distro/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb RDEPENDS on or otherwise requires it)
> NOTE: Runtime target 'libc-mtrace' is unbuildable, removing...
> Missing or unbuildable dependency chain was: ['libc-mtrace']
> ERROR: Required build target 'packagegroup-core-tools-debug' has no buildable providers.
> Missing or unbuildable dependency chain was: ['packagegroup-core-tools-debug', 'libc-mtrace']


Thanks
	Sau!


> Signed-off-by: Phil Blundell <pb@pbcl.net>
> ---
> v3: rebased on top of localedir changes
>
>   meta/recipes-core/eglibc/eglibc-collateral.inc  |   11 +++++++++
>   meta/recipes-core/eglibc/eglibc-locale.inc      |   11 +--------
>   meta/recipes-core/eglibc/eglibc-mtrace.inc      |   12 ++++++++++
>   meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb  |    1 +
>   meta/recipes-core/eglibc/eglibc-package.inc     |   28 ++++++++++++++++++-----
>   meta/recipes-core/eglibc/eglibc-scripts.inc     |   17 ++++++++++++++
>   meta/recipes-core/eglibc/eglibc-scripts_2.16.bb |    1 +
>   meta/recipes-core/eglibc/eglibc_2.16.bb         |    2 +-
>   8 files changed, 66 insertions(+), 17 deletions(-)
>   create mode 100644 meta/recipes-core/eglibc/eglibc-collateral.inc
>   create mode 100644 meta/recipes-core/eglibc/eglibc-mtrace.inc
>   create mode 100644 meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
>   create mode 100644 meta/recipes-core/eglibc/eglibc-scripts.inc
>   create mode 100644 meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
>
> diff --git a/meta/recipes-core/eglibc/eglibc-collateral.inc b/meta/recipes-core/eglibc/eglibc-collateral.inc
> new file mode 100644
> index 0000000..b770bb0
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-collateral.inc
> @@ -0,0 +1,11 @@
> +INHIBIT_DEFAULT_DEPS = "1"
> +LICENSE = "GPLv2 & LGPLv2.1"
> +
> +do_fetch[noexec] = "1"
> +do_unpack[noexec] = "1"
> +do_patch[noexec] = "1"
> +do_configure[noexec] = "1"
> +do_compile[noexec] = "1"
> +
> +do_install[depends] += "virtual/${MLPREFIX}libc:do_populate_sysroot"
> +
> diff --git a/meta/recipes-core/eglibc/eglibc-locale.inc b/meta/recipes-core/eglibc/eglibc-locale.inc
> index 105cf2e..16a357a 100644
> --- a/meta/recipes-core/eglibc/eglibc-locale.inc
> +++ b/meta/recipes-core/eglibc/eglibc-locale.inc
> @@ -1,15 +1,8 @@
> -INHIBIT_DEFAULT_DEPS = "1"
> -LICENSE = "GPLv2 & LGPLv2.1"
> +include eglibc-collateral.inc
>
>   BPN = "eglibc"
>   LOCALEBASEPN = "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
> @@ -90,6 +83,4 @@ do_install () {
>
>   inherit libc-package
>
> -do_install[depends] += "virtual/${MLPREFIX}libc:do_populate_sysroot"
> -
>   BBCLASSEXTEND = "nativesdk"
> diff --git a/meta/recipes-core/eglibc/eglibc-mtrace.inc b/meta/recipes-core/eglibc/eglibc-mtrace.inc
> new file mode 100644
> index 0000000..321de7b
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-mtrace.inc
> @@ -0,0 +1,12 @@
> +include eglibc-collateral.inc
> +
> +SUMMARY = "mtrace utility provided by eglibc"
> +DESCRIPTION = "mtrace utility provided by eglibc"
> +RDEPENDS_${PN} = "perl"
> +
> +SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
> +
> +do_install() {
> +	install -d -m 0755 ${D}${bindir}
> +	install -m 0755 ${SRC}/mtrace ${D}${bindir}/
> +}
> diff --git a/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb b/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
> new file mode 100644
> index 0000000..6fa2be9
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
> @@ -0,0 +1 @@
> +require eglibc-mtrace.inc
> diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc
> index 0059bcf..6da9615 100644
> --- a/meta/recipes-core/eglibc/eglibc-package.inc
> +++ b/meta/recipes-core/eglibc/eglibc-package.inc
> @@ -17,7 +17,7 @@ python __anonymous () {
>   # Set this to zero if you don't want ldconfig in the output package
>   USE_LDCONFIG ?= "1"
>
> -PACKAGES = "${PN}-dbg catchsegv sln nscd ldd ${PN}-mtrace ${PN}-utils eglibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} eglibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
> +PACKAGES = "${PN}-dbg catchsegv sln nscd ldd ${PN}-utils eglibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} eglibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
>
>   # The ld.so in this eglibc supports the GNU_HASH
>   RPROVIDES_${PN} = "glibc rtld(GNU_HASH)"
> @@ -51,8 +51,6 @@ FILES_${PN}-utils = "${bindir}/* ${sbindir}/*"
>   FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/audit/.debug"
>   FILES_catchsegv = "${bindir}/catchsegv"
>   RDEPENDS_catchsegv = "libsegfault"
> -RDEPENDS_${PN}-utils += "bash"
> -RDEPENDS_${PN}-mtrace += "perl"
>   FILES_${PN}-pcprofile = "${base_libdir}/libpcprofile.so"
>   FILES_eglibc-thread-db = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
>   RPROVIDES_${PN}-dev += "libc-dev"
> @@ -65,11 +63,9 @@ DESCRIPTION_nscd = "nscd, name service cache daemon, caches name service lookups
>   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_ldd = "${bindir}/ldd prints shared library dependencies for each program or shared library specified on the command line."
>   SUMMARY_${PN}-utils = "Miscellaneous utilities provided by eglibc"
>   DESCRIPTION_${PN}-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..."
> -SUMMARY_${PN}-mtrace = "mtrace utility provided by eglibc"
> -DESCRIPTION_${PN}-mtrace = "mtrace utility provided by eglibc"
>   DESCRIPTION_libsotruss = "Library to support sotruss which traces calls through PLTs"
>
>   inherit libc-common multilib_header
> @@ -111,10 +107,30 @@ do_install_locale () {
>
>   addtask do_install_locale after do_install before do_populate_sysroot do_package
>
> +bashscripts = "mtrace sotruss xtrace"
> +
> +do_evacuate_scripts () {
> +	target=${D}${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
> +	mkdir -p $target
> +	for i in ${bashscripts}; do
> +		cp ${D}${bindir}/$i $target/
> +	done
> +}
> +
> +do_evacuate_scripts_pn-eglibc-initial () {
> +	:
> +}
> +
> +addtask evacuate_scripts after do_install before do_populate_sysroot do_package
> +
>   PACKAGE_PREPROCESS_FUNCS += "eglibc_package_preprocess"
>
>   eglibc_package_preprocess () {
>   	rm -rf ${PKGD}/${includedir}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}
> +	rm -rf ${PKGD}/${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
> +	for i in ${bashscripts}; do
> +	    rm -f ${PKGD}${bindir}/$i
> +	done
>   	rm -rf ${PKGD}/${localedir}
>   	if [ "${libdir}" != "${exec_prefix}/lib" ]; then
>   		# This dir only exists to hold locales
> diff --git a/meta/recipes-core/eglibc/eglibc-scripts.inc b/meta/recipes-core/eglibc/eglibc-scripts.inc
> new file mode 100644
> index 0000000..a020961
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-scripts.inc
> @@ -0,0 +1,17 @@
> +include eglibc-collateral.inc
> +
> +SUMMARY = "utility scripts provided by eglibc"
> +DESCRIPTION = "utility scripts provided by eglibc"
> +RDEPENDS_${PN} = "bash"
> +RDEPENDS_ldd = "bash"
> +
> +SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
> +
> +bashscripts = "mtrace sotruss xtrace"
> +
> +do_install() {
> +	install -d -m 0755 ${D}${bindir}
> +	for i in ${bashscripts}; do
> +		install -m 0755 ${SRC}/$i ${D}${bindir}/
> +	done
> +}
> diff --git a/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb b/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
> new file mode 100644
> index 0000000..3113362
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
> @@ -0,0 +1 @@
> +require eglibc-scripts.inc
> diff --git a/meta/recipes-core/eglibc/eglibc_2.16.bb b/meta/recipes-core/eglibc/eglibc_2.16.bb
> index 72d134a..3a7ae50 100644
> --- a/meta/recipes-core/eglibc/eglibc_2.16.bb
> +++ b/meta/recipes-core/eglibc/eglibc_2.16.bb
> @@ -3,7 +3,7 @@ require eglibc.inc
>   SRCREV = "20393"
>
>   DEPENDS += "gperf-native kconfig-frontends-native"
> -PR = "r10"
> +PR = "r11"
>   PR_append = "+svnr${SRCPV}"
>
>   EGLIBC_BRANCH="eglibc-2_16"
>
Saul Wold - Oct. 24, 2012, 4 p.m.
On 09/25/2012 05:56 AM, Phil Blundell wrote:
> This removes the dependency of eglibc.bb itself on perl and bash
> which, in turn, eliminates the need to build those two recipes if the
> scripts which need them are not going to be installed.
>
> Signed-off-by: Phil Blundell <pb@pbcl.net>
> ---
> v3: rebased on top of localedir changes
>
>   meta/recipes-core/eglibc/eglibc-collateral.inc  |   11 +++++++++
>   meta/recipes-core/eglibc/eglibc-locale.inc      |   11 +--------
>   meta/recipes-core/eglibc/eglibc-mtrace.inc      |   12 ++++++++++
>   meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb  |    1 +
>   meta/recipes-core/eglibc/eglibc-package.inc     |   28 ++++++++++++++++++-----
>   meta/recipes-core/eglibc/eglibc-scripts.inc     |   17 ++++++++++++++
>   meta/recipes-core/eglibc/eglibc-scripts_2.16.bb |    1 +
>   meta/recipes-core/eglibc/eglibc_2.16.bb         |    2 +-
>   8 files changed, 66 insertions(+), 17 deletions(-)
>   create mode 100644 meta/recipes-core/eglibc/eglibc-collateral.inc
>   create mode 100644 meta/recipes-core/eglibc/eglibc-mtrace.inc
>   create mode 100644 meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
>   create mode 100644 meta/recipes-core/eglibc/eglibc-scripts.inc
>   create mode 100644 meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
>

Merged the updated version of this to OE-Core

Thanks
	Sau!

> diff --git a/meta/recipes-core/eglibc/eglibc-collateral.inc b/meta/recipes-core/eglibc/eglibc-collateral.inc
> new file mode 100644
> index 0000000..b770bb0
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-collateral.inc
> @@ -0,0 +1,11 @@
> +INHIBIT_DEFAULT_DEPS = "1"
> +LICENSE = "GPLv2 & LGPLv2.1"
> +
> +do_fetch[noexec] = "1"
> +do_unpack[noexec] = "1"
> +do_patch[noexec] = "1"
> +do_configure[noexec] = "1"
> +do_compile[noexec] = "1"
> +
> +do_install[depends] += "virtual/${MLPREFIX}libc:do_populate_sysroot"
> +
> diff --git a/meta/recipes-core/eglibc/eglibc-locale.inc b/meta/recipes-core/eglibc/eglibc-locale.inc
> index 105cf2e..16a357a 100644
> --- a/meta/recipes-core/eglibc/eglibc-locale.inc
> +++ b/meta/recipes-core/eglibc/eglibc-locale.inc
> @@ -1,15 +1,8 @@
> -INHIBIT_DEFAULT_DEPS = "1"
> -LICENSE = "GPLv2 & LGPLv2.1"
> +include eglibc-collateral.inc
>
>   BPN = "eglibc"
>   LOCALEBASEPN = "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
> @@ -90,6 +83,4 @@ do_install () {
>
>   inherit libc-package
>
> -do_install[depends] += "virtual/${MLPREFIX}libc:do_populate_sysroot"
> -
>   BBCLASSEXTEND = "nativesdk"
> diff --git a/meta/recipes-core/eglibc/eglibc-mtrace.inc b/meta/recipes-core/eglibc/eglibc-mtrace.inc
> new file mode 100644
> index 0000000..321de7b
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-mtrace.inc
> @@ -0,0 +1,12 @@
> +include eglibc-collateral.inc
> +
> +SUMMARY = "mtrace utility provided by eglibc"
> +DESCRIPTION = "mtrace utility provided by eglibc"
> +RDEPENDS_${PN} = "perl"
> +
> +SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
> +
> +do_install() {
> +	install -d -m 0755 ${D}${bindir}
> +	install -m 0755 ${SRC}/mtrace ${D}${bindir}/
> +}
> diff --git a/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb b/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
> new file mode 100644
> index 0000000..6fa2be9
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
> @@ -0,0 +1 @@
> +require eglibc-mtrace.inc
> diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc
> index 0059bcf..6da9615 100644
> --- a/meta/recipes-core/eglibc/eglibc-package.inc
> +++ b/meta/recipes-core/eglibc/eglibc-package.inc
> @@ -17,7 +17,7 @@ python __anonymous () {
>   # Set this to zero if you don't want ldconfig in the output package
>   USE_LDCONFIG ?= "1"
>
> -PACKAGES = "${PN}-dbg catchsegv sln nscd ldd ${PN}-mtrace ${PN}-utils eglibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} eglibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
> +PACKAGES = "${PN}-dbg catchsegv sln nscd ldd ${PN}-utils eglibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} eglibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
>
>   # The ld.so in this eglibc supports the GNU_HASH
>   RPROVIDES_${PN} = "glibc rtld(GNU_HASH)"
> @@ -51,8 +51,6 @@ FILES_${PN}-utils = "${bindir}/* ${sbindir}/*"
>   FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/audit/.debug"
>   FILES_catchsegv = "${bindir}/catchsegv"
>   RDEPENDS_catchsegv = "libsegfault"
> -RDEPENDS_${PN}-utils += "bash"
> -RDEPENDS_${PN}-mtrace += "perl"
>   FILES_${PN}-pcprofile = "${base_libdir}/libpcprofile.so"
>   FILES_eglibc-thread-db = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
>   RPROVIDES_${PN}-dev += "libc-dev"
> @@ -65,11 +63,9 @@ DESCRIPTION_nscd = "nscd, name service cache daemon, caches name service lookups
>   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_ldd = "${bindir}/ldd prints shared library dependencies for each program or shared library specified on the command line."
>   SUMMARY_${PN}-utils = "Miscellaneous utilities provided by eglibc"
>   DESCRIPTION_${PN}-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..."
> -SUMMARY_${PN}-mtrace = "mtrace utility provided by eglibc"
> -DESCRIPTION_${PN}-mtrace = "mtrace utility provided by eglibc"
>   DESCRIPTION_libsotruss = "Library to support sotruss which traces calls through PLTs"
>
>   inherit libc-common multilib_header
> @@ -111,10 +107,30 @@ do_install_locale () {
>
>   addtask do_install_locale after do_install before do_populate_sysroot do_package
>
> +bashscripts = "mtrace sotruss xtrace"
> +
> +do_evacuate_scripts () {
> +	target=${D}${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
> +	mkdir -p $target
> +	for i in ${bashscripts}; do
> +		cp ${D}${bindir}/$i $target/
> +	done
> +}
> +
> +do_evacuate_scripts_pn-eglibc-initial () {
> +	:
> +}
> +
> +addtask evacuate_scripts after do_install before do_populate_sysroot do_package
> +
>   PACKAGE_PREPROCESS_FUNCS += "eglibc_package_preprocess"
>
>   eglibc_package_preprocess () {
>   	rm -rf ${PKGD}/${includedir}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}
> +	rm -rf ${PKGD}/${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
> +	for i in ${bashscripts}; do
> +	    rm -f ${PKGD}${bindir}/$i
> +	done
>   	rm -rf ${PKGD}/${localedir}
>   	if [ "${libdir}" != "${exec_prefix}/lib" ]; then
>   		# This dir only exists to hold locales
> diff --git a/meta/recipes-core/eglibc/eglibc-scripts.inc b/meta/recipes-core/eglibc/eglibc-scripts.inc
> new file mode 100644
> index 0000000..a020961
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-scripts.inc
> @@ -0,0 +1,17 @@
> +include eglibc-collateral.inc
> +
> +SUMMARY = "utility scripts provided by eglibc"
> +DESCRIPTION = "utility scripts provided by eglibc"
> +RDEPENDS_${PN} = "bash"
> +RDEPENDS_ldd = "bash"
> +
> +SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
> +
> +bashscripts = "mtrace sotruss xtrace"
> +
> +do_install() {
> +	install -d -m 0755 ${D}${bindir}
> +	for i in ${bashscripts}; do
> +		install -m 0755 ${SRC}/$i ${D}${bindir}/
> +	done
> +}
> diff --git a/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb b/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
> new file mode 100644
> index 0000000..3113362
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
> @@ -0,0 +1 @@
> +require eglibc-scripts.inc
> diff --git a/meta/recipes-core/eglibc/eglibc_2.16.bb b/meta/recipes-core/eglibc/eglibc_2.16.bb
> index 72d134a..3a7ae50 100644
> --- a/meta/recipes-core/eglibc/eglibc_2.16.bb
> +++ b/meta/recipes-core/eglibc/eglibc_2.16.bb
> @@ -3,7 +3,7 @@ require eglibc.inc
>   SRCREV = "20393"
>
>   DEPENDS += "gperf-native kconfig-frontends-native"
> -PR = "r10"
> +PR = "r11"
>   PR_append = "+svnr${SRCPV}"
>
>   EGLIBC_BRANCH="eglibc-2_16"
>

Patch

diff --git a/meta/recipes-core/eglibc/eglibc-collateral.inc b/meta/recipes-core/eglibc/eglibc-collateral.inc
new file mode 100644
index 0000000..b770bb0
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-collateral.inc
@@ -0,0 +1,11 @@ 
+INHIBIT_DEFAULT_DEPS = "1"
+LICENSE = "GPLv2 & LGPLv2.1"
+
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install[depends] += "virtual/${MLPREFIX}libc:do_populate_sysroot"
+
diff --git a/meta/recipes-core/eglibc/eglibc-locale.inc b/meta/recipes-core/eglibc/eglibc-locale.inc
index 105cf2e..16a357a 100644
--- a/meta/recipes-core/eglibc/eglibc-locale.inc
+++ b/meta/recipes-core/eglibc/eglibc-locale.inc
@@ -1,15 +1,8 @@ 
-INHIBIT_DEFAULT_DEPS = "1"
-LICENSE = "GPLv2 & LGPLv2.1"
+include eglibc-collateral.inc
 
 BPN = "eglibc"
 LOCALEBASEPN = "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
@@ -90,6 +83,4 @@  do_install () {
 
 inherit libc-package
 
-do_install[depends] += "virtual/${MLPREFIX}libc:do_populate_sysroot"
-
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-core/eglibc/eglibc-mtrace.inc b/meta/recipes-core/eglibc/eglibc-mtrace.inc
new file mode 100644
index 0000000..321de7b
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-mtrace.inc
@@ -0,0 +1,12 @@ 
+include eglibc-collateral.inc
+
+SUMMARY = "mtrace utility provided by eglibc"
+DESCRIPTION = "mtrace utility provided by eglibc"
+RDEPENDS_${PN} = "perl"
+
+SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
+
+do_install() {
+	install -d -m 0755 ${D}${bindir}
+	install -m 0755 ${SRC}/mtrace ${D}${bindir}/
+}
diff --git a/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb b/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
new file mode 100644
index 0000000..6fa2be9
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-mtrace_2.16.bb
@@ -0,0 +1 @@ 
+require eglibc-mtrace.inc
diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc
index 0059bcf..6da9615 100644
--- a/meta/recipes-core/eglibc/eglibc-package.inc
+++ b/meta/recipes-core/eglibc/eglibc-package.inc
@@ -17,7 +17,7 @@  python __anonymous () {
 # Set this to zero if you don't want ldconfig in the output package
 USE_LDCONFIG ?= "1"
 
-PACKAGES = "${PN}-dbg catchsegv sln nscd ldd ${PN}-mtrace ${PN}-utils eglibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} eglibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
+PACKAGES = "${PN}-dbg catchsegv sln nscd ldd ${PN}-utils eglibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} eglibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
 
 # The ld.so in this eglibc supports the GNU_HASH
 RPROVIDES_${PN} = "glibc rtld(GNU_HASH)"
@@ -51,8 +51,6 @@  FILES_${PN}-utils = "${bindir}/* ${sbindir}/*"
 FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/audit/.debug"
 FILES_catchsegv = "${bindir}/catchsegv"
 RDEPENDS_catchsegv = "libsegfault"
-RDEPENDS_${PN}-utils += "bash"
-RDEPENDS_${PN}-mtrace += "perl"
 FILES_${PN}-pcprofile = "${base_libdir}/libpcprofile.so"
 FILES_eglibc-thread-db = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
 RPROVIDES_${PN}-dev += "libc-dev"
@@ -65,11 +63,9 @@  DESCRIPTION_nscd = "nscd, name service cache daemon, caches name service lookups
 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_ldd = "${bindir}/ldd prints shared library dependencies for each program or shared library specified on the command line."
 SUMMARY_${PN}-utils = "Miscellaneous utilities provided by eglibc"
 DESCRIPTION_${PN}-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..."
-SUMMARY_${PN}-mtrace = "mtrace utility provided by eglibc"
-DESCRIPTION_${PN}-mtrace = "mtrace utility provided by eglibc"
 DESCRIPTION_libsotruss = "Library to support sotruss which traces calls through PLTs"
 
 inherit libc-common multilib_header
@@ -111,10 +107,30 @@  do_install_locale () {
 
 addtask do_install_locale after do_install before do_populate_sysroot do_package
 
+bashscripts = "mtrace sotruss xtrace"
+
+do_evacuate_scripts () {
+	target=${D}${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
+	mkdir -p $target
+	for i in ${bashscripts}; do
+		cp ${D}${bindir}/$i $target/
+	done
+}
+
+do_evacuate_scripts_pn-eglibc-initial () {
+	:
+}
+
+addtask evacuate_scripts after do_install before do_populate_sysroot do_package
+
 PACKAGE_PREPROCESS_FUNCS += "eglibc_package_preprocess"
 
 eglibc_package_preprocess () {
 	rm -rf ${PKGD}/${includedir}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}
+	rm -rf ${PKGD}/${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
+	for i in ${bashscripts}; do
+	    rm -f ${PKGD}${bindir}/$i
+	done
 	rm -rf ${PKGD}/${localedir}
 	if [ "${libdir}" != "${exec_prefix}/lib" ]; then
 		# This dir only exists to hold locales
diff --git a/meta/recipes-core/eglibc/eglibc-scripts.inc b/meta/recipes-core/eglibc/eglibc-scripts.inc
new file mode 100644
index 0000000..a020961
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-scripts.inc
@@ -0,0 +1,17 @@ 
+include eglibc-collateral.inc
+
+SUMMARY = "utility scripts provided by eglibc"
+DESCRIPTION = "utility scripts provided by eglibc"
+RDEPENDS_${PN} = "bash"
+RDEPENDS_ldd = "bash"
+
+SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
+
+bashscripts = "mtrace sotruss xtrace"
+
+do_install() {
+	install -d -m 0755 ${D}${bindir}
+	for i in ${bashscripts}; do
+		install -m 0755 ${SRC}/$i ${D}${bindir}/
+	done
+}
diff --git a/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb b/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
new file mode 100644
index 0000000..3113362
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-scripts_2.16.bb
@@ -0,0 +1 @@ 
+require eglibc-scripts.inc
diff --git a/meta/recipes-core/eglibc/eglibc_2.16.bb b/meta/recipes-core/eglibc/eglibc_2.16.bb
index 72d134a..3a7ae50 100644
--- a/meta/recipes-core/eglibc/eglibc_2.16.bb
+++ b/meta/recipes-core/eglibc/eglibc_2.16.bb
@@ -3,7 +3,7 @@  require eglibc.inc
 SRCREV = "20393"
 
 DEPENDS += "gperf-native kconfig-frontends-native"
-PR = "r10"
+PR = "r11"
 PR_append = "+svnr${SRCPV}"
 
 EGLIBC_BRANCH="eglibc-2_16"