From cfdb9ae992bf4e218a9b8410205c46d4da749170 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sat, 19 Jul 2008 14:07:55 +0000 Subject: 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 --- classes/base.bbclass | 60 +++++++++++++++++++++++++--------------- classes/multimachine.bbclass | 30 -------------------- classes/packaged-staging.bbclass | 3 -- classes/singlemachine.bbclass | 12 ++++++++ conf/bitbake.conf | 12 +++++--- conf/distro/celinux-test.conf | 3 -- conf/distro/include/angstrom.inc | 3 -- conf/distro/include/oplinux.inc | 3 -- conf/distro/include/slugos.inc | 2 +- conf/distro/jlime-donkey.conf | 2 +- conf/distro/jlime-henchman.conf | 2 +- conf/distro/jlime-mongo.conf | 2 +- conf/distro/minimal.conf | 2 +- conf/distro/openprotium.conf | 2 +- 14 files changed, 63 insertions(+), 75 deletions(-) delete mode 100644 classes/multimachine.bbclass create mode 100644 classes/singlemachine.bbclass diff --git a/classes/base.bbclass b/classes/base.bbclass index 3c6f5a15a1..540b891669 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -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,26 +1012,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 () { import bb diff --git a/classes/multimachine.bbclass b/classes/multimachine.bbclass deleted file mode 100644 index 945d22bfe0..0000000000 --- a/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/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass index 5de5970880..77fd8a92c3 100644 --- a/classes/packaged-staging.bbclass +++ b/classes/packaged-staging.bbclass @@ -19,9 +19,6 @@ PSTAGE_PKGPN = "${@bb.data.expand('staging-${PN}-${MULTIMACH_ARCH}${TARGET_ 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 \ diff --git a/classes/singlemachine.bbclass b/classes/singlemachine.bbclass new file mode 100644 index 0000000000..e4b2b6f7b3 --- /dev/null +++ b/classes/singlemachine.bbclass @@ -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" + diff --git a/conf/bitbake.conf b/conf/bitbake.conf index 8ee1cc6838..1e385f1394 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -91,6 +91,10 @@ 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_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 @@ SVNDIR = "${CO_DIR}/svn" 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_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}" @@ -258,7 +262,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. diff --git a/conf/distro/celinux-test.conf b/conf/distro/celinux-test.conf index 03dcd22d79..ad7a34d97c 100644 --- a/conf/distro/celinux-test.conf +++ b/conf/distro/celinux-test.conf @@ -11,9 +11,6 @@ # 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" diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc index bbdbe7f80b..4ada4a89d4 100644 --- a/conf/distro/include/angstrom.inc +++ b/conf/distro/include/angstrom.inc @@ -35,9 +35,6 @@ MAINTAINER = "Angstrom Developers " #use debian style naming INHERIT += "debian" -#use multimachine buildrules -INHERIT += "multimachine" - #activate config checker INHERIT += "sanity" diff --git a/conf/distro/include/oplinux.inc b/conf/distro/include/oplinux.inc index a7eac524bc..36eca58241 100644 --- a/conf/distro/include/oplinux.inc +++ b/conf/distro/include/oplinux.inc @@ -9,9 +9,6 @@ BB_MIN_VERSION = "1.8.10" #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" diff --git a/conf/distro/include/slugos.inc b/conf/distro/include/slugos.inc index 8661e5b065..b149f65f11 100644 --- a/conf/distro/include/slugos.inc +++ b/conf/distro/include/slugos.inc @@ -42,7 +42,7 @@ TARGET_FPU = "soft" # 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. diff --git a/conf/distro/jlime-donkey.conf b/conf/distro/jlime-donkey.conf index b8c7dae22e..d5b994c55c 100644 --- a/conf/distro/jlime-donkey.conf +++ b/conf/distro/jlime-donkey.conf @@ -81,7 +81,7 @@ PREFERRED_VERSION_busybox = "1.9.1" #<>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" diff --git a/conf/distro/jlime-henchman.conf b/conf/distro/jlime-henchman.conf index 68353b0bd9..646d335390 100644 --- a/conf/distro/jlime-henchman.conf +++ b/conf/distro/jlime-henchman.conf @@ -32,7 +32,7 @@ IMAGE_NAME = "${IMAGE_BASENAME}-Henchman-${MACHINE}" # # Naming schemes # -INHERIT += "debian multimachine" +INHERIT += "debian" # # Packaging and output format diff --git a/conf/distro/jlime-mongo.conf b/conf/distro/jlime-mongo.conf index 6fb00f1452..e2b2e8b7db 100644 --- a/conf/distro/jlime-mongo.conf +++ b/conf/distro/jlime-mongo.conf @@ -32,7 +32,7 @@ IMAGE_NAME = "${IMAGE_BASENAME}-Mongo-${MACHINE}" # # Naming schemes # -INHERIT += "debian multimachine" +INHERIT += "debian" # # Packaging and output format diff --git a/conf/distro/minimal.conf b/conf/distro/minimal.conf index b54b0c8c8b..e86cf5cd4f 100644 --- a/conf/distro/minimal.conf +++ b/conf/distro/minimal.conf @@ -19,7 +19,7 @@ DISTRO_TYPE = "debug" # # Naming schemes # -INHERIT += "debian multimachine" +INHERIT += "debian" # # Packaging and output format diff --git a/conf/distro/openprotium.conf b/conf/distro/openprotium.conf index 533b41526b..4b620fe6be 100644 --- a/conf/distro/openprotium.conf +++ b/conf/distro/openprotium.conf @@ -17,7 +17,7 @@ MACHINE_TASK_PROVIDER = "task-openprotium" # # Naming schemes # -INHERIT += "debian multimachine" +INHERIT += "debian" # # Packaging and output format -- cgit v1.2.3