diff options
| author | Richard Purdie <richard@openedhand.com> | 2008-07-17 20:49:48 +0000 |
|---|---|---|
| committer | Richard Purdie <richard@openedhand.com> | 2008-07-17 20:49:48 +0000 |
| commit | 767d9ca544c9c5bce686d8924619d9ab2385d8e8 (patch) | |
| tree | c68c8b6f810d0c72eb82bf894de42e6d39c369dd /meta/classes | |
| parent | 45d0dac16ad84f9eb0264dfd662238e3913619d6 (diff) | |
| download | poky-767d9ca544c9c5bce686d8924619d9ab2385d8e8.tar.gz | |
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.bbclass | 60 | ||||
| -rw-r--r-- | meta/classes/multimachine.bbclass | 30 | ||||
| -rw-r--r-- | meta/classes/singlemachine.bbclass | 15 |
3 files changed, 52 insertions, 53 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 17935fe9ad..60a69e24f3 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass | |||
| @@ -997,10 +997,12 @@ def base_after_parse(d): | |||
| 997 | depends = depends + " shasum-native:do_populate_staging" | 997 | depends = depends + " shasum-native:do_populate_staging" |
| 998 | bb.data.setVarFlag('do_fetch', 'depends', depends, d) | 998 | bb.data.setVarFlag('do_fetch', 'depends', depends, d) |
| 999 | 999 | ||
| 1000 | # 'multimachine' handling | ||
| 1000 | mach_arch = bb.data.getVar('MACHINE_ARCH', d, 1) | 1001 | mach_arch = bb.data.getVar('MACHINE_ARCH', d, 1) |
| 1001 | old_arch = bb.data.getVar('PACKAGE_ARCH', d, 1) | 1002 | pkg_arch = bb.data.getVar('PACKAGE_ARCH', d, 1) |
| 1002 | if (old_arch == mach_arch): | 1003 | |
| 1003 | # Nothing to do | 1004 | if (pkg_arch == mach_arch): |
| 1005 | # Already machine specific - nothing further to do | ||
| 1004 | return | 1006 | return |
| 1005 | 1007 | ||
| 1006 | # | 1008 | # |
| @@ -1008,26 +1010,38 @@ def base_after_parse(d): | |||
| 1008 | # unless the package sets SRC_URI_OVERRIDES_PACKAGE_ARCH=0 | 1010 | # unless the package sets SRC_URI_OVERRIDES_PACKAGE_ARCH=0 |
| 1009 | # | 1011 | # |
| 1010 | override = bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1) | 1012 | override = bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1) |
| 1011 | if override == '0': | 1013 | if override != '0': |
| 1012 | return | 1014 | paths = [] |
| 1013 | 1015 | for p in [ "${PF}", "${P}", "${PN}", "files", "" ]: | |
| 1014 | paths = [] | 1016 | path = bb.data.expand(os.path.join("${FILE_DIRNAME}", p, "${MACHINE}"), d) |
| 1015 | for p in [ "${PF}", "${P}", "${PN}", "files", "" ]: | 1017 | if os.path.isdir(path): |
| 1016 | path = bb.data.expand(os.path.join("${FILE_DIRNAME}", p, "${MACHINE}"), d) | 1018 | paths.append(path) |
| 1017 | if os.path.isdir(path): | 1019 | if len(paths) != 0: |
| 1018 | paths.append(path) | 1020 | for s in srcuri.split(): |
| 1019 | if len(paths) == 0: | 1021 | if not s.startswith("file://"): |
| 1020 | return | 1022 | continue |
| 1021 | 1023 | local = bb.data.expand(bb.fetch.localpath(s, d), d) | |
| 1022 | for s in srcuri.split(): | 1024 | for mp in paths: |
| 1023 | if not s.startswith("file://"): | 1025 | if local.startswith(mp): |
| 1024 | continue | 1026 | #bb.note("overriding PACKAGE_ARCH from %s to %s" % (pkg_arch, mach_arch)) |
| 1025 | local = bb.data.expand(bb.fetch.localpath(s, d), d) | 1027 | bb.data.setVar('PACKAGE_ARCH', "${MACHINE_ARCH}", d) |
| 1026 | for mp in paths: | 1028 | bb.data.setVar('MULTIMACH_ARCH', mach_arch, d) |
| 1027 | if local.startswith(mp): | 1029 | return |
| 1028 | #bb.note("overriding PACKAGE_ARCH from %s to %s" % (old_arch, mach_arch)) | 1030 | |
| 1029 | bb.data.setVar('PACKAGE_ARCH', "${MACHINE_ARCH}", d) | 1031 | multiarch = pkg_arch |
| 1030 | return | 1032 | |
| 1033 | packages = bb.data.getVar('PACKAGES', d, 1).split() | ||
| 1034 | for pkg in packages: | ||
| 1035 | pkgarch = bb.data.getVar("PACKAGE_ARCH_%s" % pkg, d, 1) | ||
| 1036 | |||
| 1037 | # We could look for != PACKAGE_ARCH here but how to choose | ||
| 1038 | # if multiple differences are present? | ||
| 1039 | # Look through PACKAGE_ARCHS for the priority order? | ||
| 1040 | if pkgarch and pkgarch == mach_arch: | ||
| 1041 | multiarch = mach_arch | ||
| 1042 | break | ||
| 1043 | |||
| 1044 | bb.data.setVar('MULTIMACH_ARCH', multiarch, d) | ||
| 1031 | 1045 | ||
| 1032 | python () { | 1046 | python () { |
| 1033 | base_after_parse(d) | 1047 | base_after_parse(d) |
diff --git a/meta/classes/multimachine.bbclass b/meta/classes/multimachine.bbclass deleted file mode 100644 index 945d22bfe0..0000000000 --- a/meta/classes/multimachine.bbclass +++ /dev/null | |||
| @@ -1,30 +0,0 @@ | |||
| 1 | STAMP = "${TMPDIR}/stamps/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/${PF}" | ||
| 2 | WORKDIR = "${TMPDIR}/work/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/${PF}" | ||
| 3 | STAGING_KERNEL_DIR = "${STAGING_DIR}/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/kernel" | ||
| 4 | PKGDATA_DIR = "${STAGING_DIR}/pkgdata/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}" | ||
| 5 | |||
| 6 | # Find any machine specific sub packages and if present, mark the | ||
| 7 | # whole package as machine specific for multimachine purposes. | ||
| 8 | |||
| 9 | |||
| 10 | def multi_machine_after_parse(d): | ||
| 11 | import bb | ||
| 12 | packages = bb.data.getVar('PACKAGES', d, 1).split() | ||
| 13 | macharch = bb.data.getVar('MACHINE_ARCH', d, 1) | ||
| 14 | multiarch = bb.data.getVar('PACKAGE_ARCH', d, 1) | ||
| 15 | |||
| 16 | for pkg in packages: | ||
| 17 | pkgarch = bb.data.getVar("PACKAGE_ARCH_%s" % pkg, d, 1) | ||
| 18 | |||
| 19 | # We could look for != PACKAGE_ARCH here but how to choose | ||
| 20 | # if multiple differences are present? | ||
| 21 | # Look through PACKAGE_ARCHS for the priority order? | ||
| 22 | if pkgarch and pkgarch == macharch: | ||
| 23 | multiarch = macharch | ||
| 24 | |||
| 25 | bb.data.setVar('MULTIMACH_ARCH', multiarch, d) | ||
| 26 | |||
| 27 | |||
| 28 | python __anonymous () { | ||
| 29 | multi_machine_after_parse(d) | ||
| 30 | } | ||
diff --git a/meta/classes/singlemachine.bbclass b/meta/classes/singlemachine.bbclass new file mode 100644 index 0000000000..c685ce397a --- /dev/null +++ b/meta/classes/singlemachine.bbclass | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | # | ||
| 2 | # Emulates the old mode of OE operation where only one machine can be targetted. | ||
| 3 | # | ||
| 4 | |||
| 5 | MULTIMACH_TARGET_SYS = "${TARGET_SYS}" | ||
| 6 | MULTIMACH_HOST_SYS = "${HOST_SYS}" | ||
| 7 | |||
| 8 | STAMP = "${TMPDIR}/stamps/${PF}" | ||
| 9 | WORKDIR = "${TMPDIR}/work/${PF}" | ||
| 10 | STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}" | ||
| 11 | STAGING_DIR_TARGET = "${STAGING_DIR}/${TARGET_SYS}" | ||
| 12 | PKGDATA_DIR = "${STAGING_DIR}/pkgdata" | ||
| 13 | STAGING_KERNEL_DIR = "${STAGING_DIR_HOST}/kernel" | ||
| 14 | |||
| 15 | |||
