[oe] [PATCH] handle PACKAGE_ARCH change in an amend.inc

Khem Raj raj.khem at gmail.com
Sun Nov 21 16:28:24 UTC 2010


2010/11/21 Eric Bénard <eric at eukrea.com>:
> * setting PACKAGE_ARCH = "${MACHINE_ARCH}" in an amend.inc actually
> leads to a package with the correct machine arch but the
> work/stage/stamp dirs are not correct because MULTIMACH_ARCH is not
> updated after amend.inc is parsed.
>
> * this patch :
> - factorizes the code which compute MULTIMACH_ARCH in base.bbclass
> - updates MULTIMACH_ARCH if required by an amend.inc
>
> Signed-off-by: Eric Bénard <eric at eukrea.com>

Acked-by: Khem Raj <raj.khem at gmail.com>


> ---
>  classes/amend.bbclass |    2 +
>  classes/base.bbclass  |   53 ++++++++++++++++++++++++++----------------------
>  2 files changed, 31 insertions(+), 24 deletions(-)
>
> diff --git a/classes/amend.bbclass b/classes/amend.bbclass
> index a03de64..048a8f3 100644
> --- a/classes/amend.bbclass
> +++ b/classes/amend.bbclass
> @@ -42,4 +42,6 @@ python () {
>             depends = set()
>         depends |= set(newdata)
>     d.setVar("__depends", depends)
> +
> +    set_multimach_arch(d)
>  }
> diff --git a/classes/base.bbclass b/classes/base.bbclass
> index 308498f..90a481b 100644
> --- a/classes/base.bbclass
> +++ b/classes/base.bbclass
> @@ -288,6 +288,34 @@ addtask build
>  do_build = ""
>  do_build[func] = "1"
>
> +def set_multimach_arch(d):
> +    # 'multimachine' handling
> +    mach_arch = bb.data.getVar('MACHINE_ARCH', d, 1)
> +    pkg_arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
> +
> +    #
> +    # We always try to scan SRC_URI for urls with machine overrides
> +    # unless the package sets SRC_URI_OVERRIDES_PACKAGE_ARCH=0
> +    #
> +    override = bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1)
> +    if override != '0' and is_machine_specific(d):
> +        bb.data.setVar('PACKAGE_ARCH', "${MACHINE_ARCH}", d)
> +        bb.data.setVar('MULTIMACH_ARCH', mach_arch, d)
> +        return
> +
> +    multiarch = pkg_arch
> +
> +    packages = bb.data.getVar('PACKAGES', d, 1).split()
> +    for pkg in packages:
> +        pkgarch = bb.data.getVar("PACKAGE_ARCH_%s" % pkg, d, 1)
> +
> +        # We could look for != PACKAGE_ARCH here but how to choose
> +        # if multiple differences are present?
> +        # Look through PACKAGE_ARCHS for the priority order?
> +        if pkgarch and pkgarch == mach_arch:
> +            multiarch = mach_arch
> +            break
> +
>  python () {
>     import exceptions
>
> @@ -363,30 +391,7 @@ python () {
>         # Already machine specific - nothing further to do
>         return
>
> -    #
> -    # We always try to scan SRC_URI for urls with machine overrides
> -    # unless the package sets SRC_URI_OVERRIDES_PACKAGE_ARCH=0
> -    #
> -    override = bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1)
> -    if override != '0' and is_machine_specific(d):
> -        bb.data.setVar('PACKAGE_ARCH', "${MACHINE_ARCH}", d)
> -        bb.data.setVar('MULTIMACH_ARCH', mach_arch, d)
> -        return
> -
> -    multiarch = pkg_arch
> -
> -    packages = bb.data.getVar('PACKAGES', d, 1).split()
> -    for pkg in packages:
> -        pkgarch = bb.data.getVar("PACKAGE_ARCH_%s" % pkg, d, 1)
> -
> -        # We could look for != PACKAGE_ARCH here but how to choose
> -        # if multiple differences are present?
> -        # Look through PACKAGE_ARCHS for the priority order?
> -        if pkgarch and pkgarch == mach_arch:
> -            multiarch = mach_arch
> -            break
> -
> -    bb.data.setVar('MULTIMACH_ARCH', multiarch, d)
> +    set_multimach_arch(d)
>  }
>
>  EXPORT_FUNCTIONS do_setscene do_fetch do_unpack do_configure do_compile do_install do_package
> --
> 1.6.3.3
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>




More information about the Openembedded-devel mailing list