[oe-commits] org.oe.dev conf/bitbake.conf: Merge in multimachine making it the standard layout as discussed on the mailing list. Anyone wanting the previous layout can INHERIT the new singlemachine class

rpurdie commit oe at amethyst.openembedded.net
Sat Jul 19 14:14:49 UTC 2008


conf/bitbake.conf: Merge in multimachine making it the standard layout as discussed on the mailing list. Anyone wanting the previous layout can INHERIT the new singlemachine class

Author: rpurdie at openembedded.org
Branch: org.openembedded.dev
Revision: dbfd81341b052fc67b6c2ee88ae6ecafd1d986fb
ViewMTN: http://monotone.openembedded.org/revision/info/dbfd81341b052fc67b6c2ee88ae6ecafd1d986fb
Files:
1
classes/multimachine.bbclass
classes/singlemachine.bbclass
classes/base.bbclass
classes/packaged-staging.bbclass
conf/bitbake.conf
conf/distro/celinux-test.conf
conf/distro/include/angstrom.inc
conf/distro/include/oplinux.inc
conf/distro/include/slugos.inc
conf/distro/jlime-donkey.conf
conf/distro/jlime-henchman.conf
conf/distro/jlime-mongo.conf
conf/distro/minimal.conf
conf/distro/openprotium.conf
Diffs:

#
# mt diff -rf3ac5a85359b5afd8e975af40c079c9e9befef63 -rdbfd81341b052fc67b6c2ee88ae6ecafd1d986fb
#
#
#
# delete "classes/multimachine.bbclass"
# 
# add_file "classes/singlemachine.bbclass"
#  content [4223b7e3b30ce8af7f6ec008db68daca5c99ffa8]
# 
# patch "classes/base.bbclass"
#  from [d846aa59ec39d60c1f61a21e2b483cb0350bff34]
#    to [42c3339379745f02de17747ffc6c264a4598e5a7]
# 
# patch "classes/packaged-staging.bbclass"
#  from [14d20073d82ebc1e8020080f2d3a644fa37ca552]
#    to [d7e2bb166e10ab78e17adc253c90ba732da71f2f]
# 
# patch "conf/bitbake.conf"
#  from [287e3cad95f04e47a69434591772c958ef52287a]
#    to [52e8bbd6daaaa29d39edcede9709daace7de495c]
# 
# patch "conf/distro/celinux-test.conf"
#  from [beca92fe305476a03cc17be4ecf3f9b8a0b134c9]
#    to [89d7e451fc9af9bf40690f40acee9b8634d4239f]
# 
# patch "conf/distro/include/angstrom.inc"
#  from [ace0abffaabc05f77898354b019af4e5cf579d14]
#    to [1bf6a51462a70af6b60b8a47191a55e1627b96da]
# 
# patch "conf/distro/include/oplinux.inc"
#  from [5af0f3e555c3da25b2089272a44d317e776103c4]
#    to [c4b652ddcd2e123967ad2e0eac25c8379b75139e]
# 
# patch "conf/distro/include/slugos.inc"
#  from [00976339770c45e02a1ecc25cf9066a2c866eeea]
#    to [9b41afe5f573c4ce71c88ddf2bcda240c4dae42c]
# 
# patch "conf/distro/jlime-donkey.conf"
#  from [50f90b05f62918f1b8efc4d5f311a7d80b424ad9]
#    to [fb7ea51917dde4bafa36f1b4a43be01e96610ad6]
# 
# patch "conf/distro/jlime-henchman.conf"
#  from [c5c0029ec6fcea5daaf00874e1a20e1d514d7586]
#    to [40b971ca62e022ba5da642d0dd65e9472369efc9]
# 
# patch "conf/distro/jlime-mongo.conf"
#  from [649596799adddbe974beb9a95120de0c9db17b28]
#    to [239a9bf19ee598d83ee84d5958a12b71bd7bef47]
# 
# patch "conf/distro/minimal.conf"
#  from [bd599ccea87a555d1025fc9d422556bb405c21d9]
#    to [3659ec6bf90d9eac32c48e7ac2207b2a8c100d28]
# 
# patch "conf/distro/openprotium.conf"
#  from [c91df50d1b1b24f6a52eba1264c1e195813952dd]
#    to [fa9e89af0f2d1321bd93fb2c08dfc7fa720a7d51]
#
============================================================
--- classes/singlemachine.bbclass	4223b7e3b30ce8af7f6ec008db68daca5c99ffa8
+++ classes/singlemachine.bbclass	4223b7e3b30ce8af7f6ec008db68daca5c99ffa8
@@ -0,0 +1,12 @@
+#
+# 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}"
+PKGDATA_DIR = "${STAGING_DIR}/pkgdata"
+STAGING_KERNEL_DIR = "${STAGING_DIR_HOST}/kernel"
+
============================================================
--- classes/base.bbclass	d846aa59ec39d60c1f61a21e2b483cb0350bff34
+++ classes/base.bbclass	42c3339379745f02de17747ffc6c264a4598e5a7
@@ -999,10 +999,12 @@ def base_after_parse(d):
         depends = depends + " git-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
 
     #
@@ -1010,27 +1012,39 @@ 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 () {
     import bb
     from bb import __version__
============================================================
--- classes/packaged-staging.bbclass	14d20073d82ebc1e8020080f2d3a644fa37ca552
+++ classes/packaged-staging.bbclass	d7e2bb166e10ab78e17adc253c90ba732da71f2f
@@ -19,9 +19,6 @@ PSTAGE_PKG        = "${DEPLOY_DIR_PSTAGE
 PSTAGE_PKGNAME    = "${PSTAGE_PKGPN}_${PSTAGE_PKGVERSION}_${PSTAGE_PKGARCH}.ipk"
 PSTAGE_PKG        = "${DEPLOY_DIR_PSTAGE}/${PSTAGE_PKGPATH}/${PSTAGE_PKGNAME}"
 
-# multimachine.bbclass will override this but add a default in case we're not using it
-MULTIMACH_ARCH ?= "${PACKAGE_ARCH}"
-
 PSTAGE_NATIVEDEPENDS = "\
     shasum-native \
     stagemanager-native \
============================================================
--- conf/bitbake.conf	287e3cad95f04e47a69434591772c958ef52287a
+++ conf/bitbake.conf	52e8bbd6daaaa29d39edcede9709daace7de495c
@@ -91,6 +91,10 @@ PACKAGE_ARCHS = "all any noarch ${TARGET
 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_ARCH = "${PACKAGE_ARCH}"
+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"
@@ -211,8 +215,8 @@ BZRDIR = "${CO_DIR}/bzr"
 GITDIR = "${CO_DIR}/git"
 BZRDIR = "${CO_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}"
@@ -248,7 +252,7 @@ DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
 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}"
@@ -258,7 +262,7 @@ OLDEST_KERNEL = "2.4.0"
 ##################################################################
 
 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.
============================================================
--- conf/distro/celinux-test.conf	beca92fe305476a03cc17be4ecf3f9b8a0b134c9
+++ conf/distro/celinux-test.conf	89d7e451fc9af9bf40690f40acee9b8634d4239f
@@ -11,9 +11,6 @@ INHERIT += " package_ipk debian"
 # we want IPKG packages and Debian style naming
 INHERIT += " package_ipk debian"
 
-# enable if build for many machines
-#INHERIT += " multimachine"
-
 # we want images supporting the following features (for task-base)
 DISTRO_FEATURES = "nfs pcmcia usbhost"
 
============================================================
--- conf/distro/include/angstrom.inc	ace0abffaabc05f77898354b019af4e5cf579d14
+++ conf/distro/include/angstrom.inc	1bf6a51462a70af6b60b8a47191a55e1627b96da
@@ -35,9 +35,6 @@ INHERIT += "debian"
 #use debian style naming
 INHERIT += "debian"
 
-#use multimachine buildrules 
-INHERIT += "multimachine"
-
 #activate config checker
 INHERIT += "sanity" 
 
============================================================
--- conf/distro/include/oplinux.inc	5af0f3e555c3da25b2089272a44d317e776103c4
+++ conf/distro/include/oplinux.inc	c4b652ddcd2e123967ad2e0eac25c8379b75139e
@@ -9,9 +9,6 @@ INHERIT += "oplinux-mirrors"
 #OPLinux and OPLinux-uclibc source mirrors
 INHERIT += "oplinux-mirrors"
 
-#oplinux is a multimachine distro
-INHERIT += "multimachine"
-
 # check for required tools and minimal BitBake version
 INHERIT += "sanity"
 
============================================================
--- conf/distro/include/slugos.inc	00976339770c45e02a1ecc25cf9066a2c866eeea
+++ conf/distro/include/slugos.inc	9b41afe5f573c4ce71c88ddf2bcda240c4dae42c
@@ -42,7 +42,7 @@ USE_NLS_glib-2.0 = "yes"
 # glib-2.0 builds require USE_NLS to be overridden
 USE_NLS_glib-2.0 = "yes"
 
-INHERIT += "package_ipk debian multimachine"
+INHERIT += "package_ipk debian"
 
 # FULL_OPTIMIZATION
 #    Optimization settings.  Os works fine and is significantly better than O2.
============================================================
--- conf/distro/jlime-donkey.conf	50f90b05f62918f1b8efc4d5f311a7d80b424ad9
+++ conf/distro/jlime-donkey.conf	fb7ea51917dde4bafa36f1b4a43be01e96610ad6
@@ -81,7 +81,7 @@ SRC_DIST_LOCAL = "copy"
 #<>It will use different folders depending on Arch (set in local.conf)
 #<>------------------------------------------------------------------<
 SRC_DIST_LOCAL = "copy"
-INHERIT += "package_ipk package_tar multimachine src_distribute_local"
+INHERIT += "package_ipk package_tar src_distribute_local"
 BBINCLUDELOGS = "yes"
 IMAGE_FSTYPES = "tar.bz2"
 TARGET_OS = "linux"
============================================================
--- conf/distro/jlime-henchman.conf	c5c0029ec6fcea5daaf00874e1a20e1d514d7586
+++ conf/distro/jlime-henchman.conf	40b971ca62e022ba5da642d0dd65e9472369efc9
@@ -32,7 +32,7 @@ IMAGE_NAME = "${IMAGE_BASENAME}-Henchman
 #
 # Naming schemes
 #
-INHERIT += "debian multimachine"
+INHERIT += "debian"
 
 #
 # Packaging and output format
============================================================
--- conf/distro/jlime-mongo.conf	649596799adddbe974beb9a95120de0c9db17b28
+++ conf/distro/jlime-mongo.conf	239a9bf19ee598d83ee84d5958a12b71bd7bef47
@@ -32,7 +32,7 @@ IMAGE_NAME = "${IMAGE_BASENAME}-Mongo-${
 #
 # Naming schemes
 #
-INHERIT += "debian multimachine"
+INHERIT += "debian"
 
 #
 # Packaging and output format
============================================================
--- conf/distro/minimal.conf	bd599ccea87a555d1025fc9d422556bb405c21d9
+++ conf/distro/minimal.conf	3659ec6bf90d9eac32c48e7ac2207b2a8c100d28
@@ -19,7 +19,7 @@ DISTRO_TYPE = "debug"
 #
 # Naming schemes
 #
-INHERIT += "debian multimachine"
+INHERIT += "debian"
 
 #
 # Packaging and output format
============================================================
--- conf/distro/openprotium.conf	c91df50d1b1b24f6a52eba1264c1e195813952dd
+++ conf/distro/openprotium.conf	fa9e89af0f2d1321bd93fb2c08dfc7fa720a7d51
@@ -17,7 +17,7 @@ MACHINE_TASK_PROVIDER = "task-openprotiu
 #
 # Naming schemes
 #
-INHERIT += "debian multimachine"
+INHERIT += "debian"
 
 #
 # Packaging and output format






More information about the Openembedded-commits mailing list