summaryrefslogtreecommitdiff
path: root/meta/classes
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2008-07-17 20:49:48 +0000
committerRichard Purdie <richard@openedhand.com>2008-07-17 20:49:48 +0000
commit767d9ca544c9c5bce686d8924619d9ab2385d8e8 (patch)
treec68c8b6f810d0c72eb82bf894de42e6d39c369dd /meta/classes
parent45d0dac16ad84f9eb0264dfd662238e3913619d6 (diff)
downloadopenembedded-core-767d9ca544c9c5bce686d8924619d9ab2385d8e8.tar.gz
openembedded-core-767d9ca544c9c5bce686d8924619d9ab2385d8e8.tar.bz2
openembedded-core-767d9ca544c9c5bce686d8924619d9ab2385d8e8.tar.xz
openembedded-core-767d9ca544c9c5bce686d8924619d9ab2385d8e8.zip
Merge multimachine class into bitbake.conf and create singlemachine.bbclass as a backwards compatibility option
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4858 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/base.bbclass60
-rw-r--r--meta/classes/multimachine.bbclass30
-rw-r--r--meta/classes/singlemachine.bbclass15
3 files changed, 52 insertions, 53 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 17935fe9a..60a69e24f 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -997,10 +997,12 @@ def base_after_parse(d):
depends = depends + " shasum-native:do_populate_staging"
bb.data.setVarFlag('do_fetch', 'depends', depends, d)
+ # 'multimachine' handling
mach_arch = bb.data.getVar('MACHINE_ARCH', d, 1)
- old_arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
- if (old_arch == mach_arch):
- # Nothing to do
+ pkg_arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
+
+ if (pkg_arch == mach_arch):
+ # Already machine specific - nothing further to do
return
#
@@ -1008,26 +1010,38 @@ def base_after_parse(d):
# unless the package sets SRC_URI_OVERRIDES_PACKAGE_ARCH=0
#
override = bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1)
- if override == '0':
- return
-
- paths = []
- for p in [ "${PF}", "${P}", "${PN}", "files", "" ]:
- path = bb.data.expand(os.path.join("${FILE_DIRNAME}", p, "${MACHINE}"), d)
- if os.path.isdir(path):
- paths.append(path)
- if len(paths) == 0:
- return
-
- for s in srcuri.split():
- if not s.startswith("file://"):
- continue
- local = bb.data.expand(bb.fetch.localpath(s, d), d)
- for mp in paths:
- if local.startswith(mp):
- #bb.note("overriding PACKAGE_ARCH from %s to %s" % (old_arch, mach_arch))
- bb.data.setVar('PACKAGE_ARCH', "${MACHINE_ARCH}", d)
- return
+ if override != '0':
+ paths = []
+ for p in [ "${PF}", "${P}", "${PN}", "files", "" ]:
+ path = bb.data.expand(os.path.join("${FILE_DIRNAME}", p, "${MACHINE}"), d)
+ if os.path.isdir(path):
+ paths.append(path)
+ if len(paths) != 0:
+ for s in srcuri.split():
+ if not s.startswith("file://"):
+ continue
+ local = bb.data.expand(bb.fetch.localpath(s, d), d)
+ for mp in paths:
+ if local.startswith(mp):
+ #bb.note("overriding PACKAGE_ARCH from %s to %s" % (pkg_arch, mach_arch))
+ 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 () {
base_after_parse(d)
diff --git a/meta/classes/multimachine.bbclass b/meta/classes/multimachine.bbclass
deleted file mode 100644
index 945d22bfe..000000000
--- a/meta/classes/multimachine.bbclass
+++ /dev/null
@@ -1,30 +0,0 @@
-STAMP = "${TMPDIR}/stamps/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/${PF}"
-WORKDIR = "${TMPDIR}/work/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/${PF}"
-STAGING_KERNEL_DIR = "${STAGING_DIR}/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/kernel"
-PKGDATA_DIR = "${STAGING_DIR}/pkgdata/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-
-# Find any machine specific sub packages and if present, mark the
-# whole package as machine specific for multimachine purposes.
-
-
-def multi_machine_after_parse(d):
- import bb
- packages = bb.data.getVar('PACKAGES', d, 1).split()
- macharch = bb.data.getVar('MACHINE_ARCH', d, 1)
- multiarch = bb.data.getVar('PACKAGE_ARCH', d, 1)
-
- 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 == macharch:
- multiarch = macharch
-
- bb.data.setVar('MULTIMACH_ARCH', multiarch, d)
-
-
-python __anonymous () {
- multi_machine_after_parse(d)
-}
diff --git a/meta/classes/singlemachine.bbclass b/meta/classes/singlemachine.bbclass
new file mode 100644
index 000000000..c685ce397
--- /dev/null
+++ b/meta/classes/singlemachine.bbclass
@@ -0,0 +1,15 @@
+#
+# Emulates the old mode of OE operation where only one machine can be targetted.
+#
+
+MULTIMACH_TARGET_SYS = "${TARGET_SYS}"
+MULTIMACH_HOST_SYS = "${HOST_SYS}"
+
+STAMP = "${TMPDIR}/stamps/${PF}"
+WORKDIR = "${TMPDIR}/work/${PF}"
+STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}"
+STAGING_DIR_TARGET = "${STAGING_DIR}/${TARGET_SYS}"
+PKGDATA_DIR = "${STAGING_DIR}/pkgdata"
+STAGING_KERNEL_DIR = "${STAGING_DIR_HOST}/kernel"
+
+