[OE-core] [PATCH v3] eglibc: Move perl- and bash-using scripts to separate recipes

Saul Wold sgw at linux.intel.com
Fri Oct 12 17:44:55 UTC 2012


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 at 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"
>




More information about the Openembedded-core mailing list