diff options
author | Eric Bénard <eric@eukrea.com> | 2010-11-19 21:29:37 +0100 |
---|---|---|
committer | Eric Bénard <eric@eukrea.com> | 2010-11-22 20:27:43 +0100 |
commit | 8d1542c4bfd0fe41c2c942938018a2729f0d9bd5 (patch) | |
tree | f38e1da176a4deeb07910892174d825630abcc9c /classes | |
parent | 3ec3c40e42ec7a9a2869e363d79b67cbc5ed71ad (diff) | |
download | openembedded-8d1542c4bfd0fe41c2c942938018a2729f0d9bd5.tar.gz |
handle PACKAGE_ARCH change in an amend.inc
* 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@eukrea.com>
Acked-by: Chris Larson <chris_larson@mentor.com>
Acked-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Denys Dmytriyenko <denis@denix.org>
Diffstat (limited to 'classes')
-rw-r--r-- | classes/amend.bbclass | 2 | ||||
-rw-r--r-- | classes/base.bbclass | 55 |
2 files changed, 33 insertions, 24 deletions
diff --git a/classes/amend.bbclass b/classes/amend.bbclass index a03de640f1..048a8f377c 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 308498f462..7f58b179e0 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -288,6 +288,36 @@ 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 + + bb.data.setVar('MULTIMACH_ARCH', multiarch, d) + python () { import exceptions @@ -363,30 +393,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 |