From: Otavio Salvador Date: Tue, 23 Jun 2009 14:55:29 +0000 (-0300) Subject: base.bbclass: add support for machine configuration fallback X-Git-Tag: Release-2010-05/1~2974^2~6^2~4 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6633c4c95a713bc365f5d87acc4a94621ed50034;p=openembedded.git base.bbclass: add support for machine configuration fallback To avoid duplicating a lot of configurations for similar machines we needed to introduce a new concept of machine fallback. It basically means that when a list is set in MACHINE_FALLBACK variable, following is done: - those machines are added to the override list, after the machine itself; - if any of these machines matches, the package is dealt as machine specific one. Signed-off-by: Otavio Salvador --- diff --git a/classes/base.bbclass b/classes/base.bbclass index bc50c67d4b..7f2e81f139 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -1179,10 +1179,11 @@ def base_after_parse(d): override = bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1) 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) + for a in [ "${MACHINE}" ] + bb.data.getVar('MACHINE_FALLBACK', d).split(): + for p in [ "${PF}", "${P}", "${PN}", "files", "" ]: + path = bb.data.expand(os.path.join("${FILE_DIRNAME}", p, a), d) + if os.path.isdir(path): + paths.append(path) if len(paths) != 0: for s in srcuri.split(): if not s.startswith("file://"): diff --git a/conf/bitbake.conf b/conf/bitbake.conf index 8b6956453b..d26efe84f0 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -615,21 +615,6 @@ BUILDCFG_VARS_append_arm = " TARGET_FPU" BUILDCFG_VARS_append_armeb = " TARGET_FPU" BUILDCFG_NEEDEDVARS ?= "TARGET_ARCH TARGET_OS" -### -### Config file processing -### - -# This means that an envionment variable named '_arm' overrides an -# environment variable '' (when ${TARGET_ARCH} is arm). And the same: an -# environment variable '_ramses' overrides both '' and '_arm -# when ${MACHINE} is 'ramses'. And finally '_local' overrides anything. -# -# This works for functions as well, they are really just environment variables. -# Default OVERRIDES to make compilation fail fast in case of build system misconfiguration. -OVERRIDES = "local:${MACHINE}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}" -# Alternative OVERRIDES definition without "fail fast", usually only for native building and Scratchbox toolchains. -#OVERRIDES = "local:${MACHINE}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}" - ################################################################## # Include the rest of the config files. ################################################################## @@ -651,6 +636,28 @@ require conf/sanity.conf require conf/abi_version.conf require conf/enterprise.conf +### +### Config file processing +### + +# A list of machines that ought to be used when looking for +# overrides. For example, geodegx and geodelx machines can have geode +# as a fallback and then avoiding duplicated content between them. +MACHINE_FALLBACK ?= "" + +MACHINE_OVERRIDES = "${@':'.join([bb.data.getVar('MACHINE', d)] + bb.data.getVar('MACHINE_FALLBACK', d).split()) or ':'}" + +# This means that an envionment variable named '_arm' overrides an +# environment variable '' (when ${TARGET_ARCH} is arm). And the same: an +# environment variable '_ramses' overrides both '' and '_arm +# when ${MACHINE} is 'ramses'. And finally '_local' overrides anything. +# +# This works for functions as well, they are really just environment variables. +# Default OVERRIDES to make compilation fail fast in case of build system misconfiguration. +OVERRIDES ?= "local:${MACHINE_OVERRIDES}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}" +# Alternative OVERRIDES definition without "fail fast", usually only for native building and Scratchbox toolchains. +#OVERRIDES ?= "local:${MACHINE_OVERRIDES}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}" + ################################################################## # Weak variables (usually to retain backwards compatibility) ##################################################################