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
This commit is contained in:
parent
45d0dac16a
commit
767d9ca544
|
@ -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
|
||||
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
|
||||
|
||||
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
|
||||
multiarch = pkg_arch
|
||||
|
||||
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
|
||||
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)
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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"
|
||||
|
||||
|
|
@ -91,6 +91,9 @@ PACKAGE_ARCH = "${BASE_PACKAGE_ARCH}"
|
|||
MACHINE_ARCH = "${@[bb.data.getVar('HOST_ARCH', d, 1), bb.data.getVar('MACHINE', d, 1)][bool(bb.data.getVar('MACHINE', d, 1))]}"
|
||||
PACKAGE_ARCHS = "all any noarch ${TARGET_ARCH} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}"
|
||||
|
||||
MULTIMACH_TARGET_SYS = "${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
|
||||
MULTIMACH_HOST_SYS = "${MULTIMACH_ARCH}${HOST_VENDOR}-${HOST_OS}"
|
||||
|
||||
# select proper CPU to get binary locales generated
|
||||
QEMU_OPTIONS = ""
|
||||
QEMU_OPTIONS_iwmmxt = "-cpu pxa270-c5"
|
||||
|
@ -218,8 +221,8 @@ SVNDIR = "${DL_DIR}/svn"
|
|||
GITDIR = "${DL_DIR}/git"
|
||||
BZRDIR = "${DL_DIR}/bzr"
|
||||
|
||||
STAMP = "${TMPDIR}/stamps/${PF}"
|
||||
WORKDIR = "${TMPDIR}/work/${PF}"
|
||||
STAMP = "${TMPDIR}/stamps/${MULTIMACH_TARGET_SYS}/${PF}"
|
||||
WORKDIR = "${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PF}"
|
||||
T = "${WORKDIR}/temp"
|
||||
D = "${WORKDIR}/image"
|
||||
S = "${WORKDIR}/${P}"
|
||||
|
@ -254,7 +257,7 @@ DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
|
|||
DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images"
|
||||
DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
|
||||
|
||||
PKGDATA_DIR = "${STAGING_DIR}/pkgdata"
|
||||
PKGDATA_DIR = "${STAGING_DIR}/pkgdata/${MULTIMACH_TARGET_SYS}"
|
||||
|
||||
SDK_NAME = "${DISTRO}/${TARGET_ARCH}"
|
||||
SDK_PREFIX = "/usr/local/${SDK_NAME}"
|
||||
|
@ -264,7 +267,7 @@ SDK_PREFIX = "/usr/local/${SDK_NAME}"
|
|||
##################################################################
|
||||
|
||||
OLDEST_KERNEL = "2.4.0"
|
||||
STAGING_KERNEL_DIR = "${STAGING_DIR_HOST}/kernel"
|
||||
STAGING_KERNEL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/kernel"
|
||||
|
||||
##################################################################
|
||||
# Specific image creation and rootfs population info.
|
||||
|
|
|
@ -9,7 +9,7 @@ MAINTAINER = "OpenedHand <poky@openedhand.com>"
|
|||
|
||||
PACKAGE_CLASSES ?= "package_ipk"
|
||||
INHERIT_INSANE ?= "insane"
|
||||
INHERIT += "${PACKAGE_CLASSES} debian multimachine poky devshell ${INHERIT_INSANE}"
|
||||
INHERIT += "${PACKAGE_CLASSES} debian poky devshell ${INHERIT_INSANE}"
|
||||
# For some reason, this doesn't work
|
||||
# TARGET_OS ?= "linux"
|
||||
# TARGET_VENDOR ?= "-poky"
|
||||
|
|
Loading…
Reference in New Issue