aboutsummaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorEric Bénard <eric@eukrea.com>2010-11-19 21:29:37 +0100
committerEric Bénard <eric@eukrea.com>2010-11-22 20:27:43 +0100
commit8d1542c4bfd0fe41c2c942938018a2729f0d9bd5 (patch)
treef38e1da176a4deeb07910892174d825630abcc9c /classes
parent3ec3c40e42ec7a9a2869e363d79b67cbc5ed71ad (diff)
downloadopenembedded-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.bbclass2
-rw-r--r--classes/base.bbclass55
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