diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/classes/base.bbclass')
-rw-r--r-- | import-layers/yocto-poky/meta/classes/base.bbclass | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/import-layers/yocto-poky/meta/classes/base.bbclass b/import-layers/yocto-poky/meta/classes/base.bbclass index bd0d6e3ca..bb1f4b753 100644 --- a/import-layers/yocto-poky/meta/classes/base.bbclass +++ b/import-layers/yocto-poky/meta/classes/base.bbclass @@ -152,12 +152,8 @@ python base_do_fetch() { addtask unpack after do_fetch do_unpack[dirs] = "${WORKDIR}" -python () { - if d.getVar('S') != d.getVar('WORKDIR'): - d.setVarFlag('do_unpack', 'cleandirs', '${S}') - else: - d.setVarFlag('do_unpack', 'cleandirs', os.path.join('${S}', 'patches')) -} +do_unpack[cleandirs] = "${@d.getVar('S') if d.getVar('S') != d.getVar('WORKDIR') else os.path.join('${S}', 'patches')}" + python base_do_unpack() { src_uri = (d.getVar('SRC_URI') or "").split() if len(src_uri) == 0: @@ -170,12 +166,6 @@ python base_do_unpack() { bb.fatal(str(e)) } -def pkgarch_mapping(d): - # Compatibility mappings of TUNE_PKGARCH (opt in) - if d.getVar("PKGARCHCOMPAT_ARMV7A"): - if d.getVar("TUNE_PKGARCH") == "armv7a-vfp-neon": - d.setVar("TUNE_PKGARCH", "armv7a") - def get_layers_branch_rev(d): layers = (d.getVar("BBLAYERS") or "").split() layers_branch_rev = ["%-20s = \"%s:%s\"" % (os.path.basename(i), \ @@ -225,12 +215,9 @@ python base_eventhandler() { import bb.runqueue if isinstance(e, bb.event.ConfigParsed): - if not e.data.getVar("NATIVELSBSTRING", False): - e.data.setVar("NATIVELSBSTRING", lsb_distro_identifier(e.data)) - e.data.setVar('BB_VERSION', bb.__version__) - pkgarch_mapping(e.data) - oe.utils.features_backfill("DISTRO_FEATURES", e.data) - oe.utils.features_backfill("MACHINE_FEATURES", e.data) + if not d.getVar("NATIVELSBSTRING", False): + d.setVar("NATIVELSBSTRING", lsb_distro_identifier(d)) + d.setVar('BB_VERSION', bb.__version__) # Works with the line in layer.conf which changes PATH to point here setup_hosttools_dir(d.getVar('HOSTTOOLS_DIR'), 'HOSTTOOLS', d) setup_hosttools_dir(d.getVar('HOSTTOOLS_DIR'), 'HOSTTOOLS_NONFATAL', d, fatal=False) @@ -246,7 +233,7 @@ python base_eventhandler() { e.mcdata[''].setVar("SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS", deps) if isinstance(e, bb.event.BuildStarted): - localdata = bb.data.createCopy(e.data) + localdata = bb.data.createCopy(d) statuslines = [] for func in oe.data.typed_value('BUILDCFG_FUNCS', localdata): g = globals() @@ -257,7 +244,7 @@ python base_eventhandler() { if flines: statuslines.extend(flines) - statusheader = e.data.getVar('BUILDCFG_HEADER') + statusheader = d.getVar('BUILDCFG_HEADER') if statusheader: bb.plain('\n%s\n%s\n' % (statusheader, '\n'.join(statuslines))) @@ -265,23 +252,23 @@ python base_eventhandler() { # target ones and we'd see dulpicate key names overwriting each other # for various PREFERRED_PROVIDERS if isinstance(e, bb.event.RecipePreFinalise): - if e.data.getVar("TARGET_PREFIX") == e.data.getVar("SDK_PREFIX"): - e.data.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils") - e.data.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial") - e.data.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc") - e.data.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++") - e.data.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs") + if d.getVar("TARGET_PREFIX") == d.getVar("SDK_PREFIX"): + d.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils") + d.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial") + d.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc") + d.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++") + d.delVar("PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs") if isinstance(e, bb.runqueue.sceneQueueComplete): - completions = e.data.expand("${STAGING_DIR}/sstatecompletions") + completions = d.expand("${STAGING_DIR}/sstatecompletions") if os.path.exists(completions): cmds = set() with open(completions, "r") as f: cmds = set(f) - e.data.setVar("completion_function", "\n".join(cmds)) - e.data.setVarFlag("completion_function", "func", "1") + d.setVar("completion_function", "\n".join(cmds)) + d.setVarFlag("completion_function", "func", "1") bb.debug(1, "Executing SceneQueue Completion commands: %s" % "\n".join(cmds)) - bb.build.exec_func("completion_function", e.data) + bb.build.exec_func("completion_function", d) os.remove(completions) if isinstance(e, bb.event.RecipeParsed): @@ -300,7 +287,7 @@ python base_eventhandler() { if p.startswith("virtual/") and p not in multiwhitelist: profprov = d.getVar("PREFERRED_PROVIDER_" + p) if profprov and pn != profprov: - raise bb.parse.SkipPackage("PREFERRED_PROVIDER_%s set to %s, not %s" % (p, profprov, pn)) + raise bb.parse.SkipRecipe("PREFERRED_PROVIDER_%s set to %s, not %s" % (p, profprov, pn)) } CONFIGURESTAMPFILE = "${WORKDIR}/configure.sstate" @@ -389,6 +376,10 @@ def set_packagetriplet(d): python () { import string, re + # Handle backfilling + oe.utils.features_backfill("DISTRO_FEATURES", d) + oe.utils.features_backfill("MACHINE_FEATURES", d) + # Handle PACKAGECONFIG # # These take the form: @@ -463,7 +454,7 @@ python () { pn = d.getVar('PN') license = d.getVar('LICENSE') - if license == "INVALID": + if license == "INVALID" and pn != "defaultpkgname": bb.fatal('This recipe does not have the LICENSE field set (%s)' % pn) if bb.data.inherits_class('license', d): @@ -472,7 +463,7 @@ python () { if unmatched_license_flag: bb.debug(1, "Skipping %s because it has a restricted license not" " whitelisted in LICENSE_FLAGS_WHITELIST" % pn) - raise bb.parse.SkipPackage("because it has a restricted license not" + raise bb.parse.SkipRecipe("because it has a restricted license not" " whitelisted in LICENSE_FLAGS_WHITELIST") # If we're building a target package we need to use fakeroot (pseudo) @@ -500,7 +491,7 @@ python () { if re.match(need_machine, m): break else: - raise bb.parse.SkipPackage("incompatible with machine %s (not in COMPATIBLE_MACHINE)" % d.getVar('MACHINE')) + raise bb.parse.SkipRecipe("incompatible with machine %s (not in COMPATIBLE_MACHINE)" % d.getVar('MACHINE')) source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', False) if not source_mirror_fetch: @@ -509,7 +500,7 @@ python () { import re this_host = d.getVar('HOST_SYS') if not re.match(need_host, this_host): - raise bb.parse.SkipPackage("incompatible with host %s (not in COMPATIBLE_HOST)" % this_host) + raise bb.parse.SkipRecipe("incompatible with host %s (not in COMPATIBLE_HOST)" % this_host) bad_licenses = (d.getVar('INCOMPATIBLE_LICENSE') or "").split() @@ -562,7 +553,7 @@ python () { bb.debug(1, "INCLUDING the package " + pkg) elif all_skipped or incompatible_license(d, bad_licenses): bb.debug(1, "SKIPPING recipe %s because it's %s" % (pn, license)) - raise bb.parse.SkipPackage("it has an incompatible license: %s" % license) + raise bb.parse.SkipRecipe("it has an incompatible license: %s" % license) elif pn in whitelist: if pn in incompatwl: bb.note("INCLUDING " + pn + " as buildable despite INCOMPATIBLE_LICENSE because it has been whitelisted") @@ -635,6 +626,10 @@ python () { elif path.endswith('.rpm'): d.appendVarFlag('do_unpack', 'depends', ' xz-native:do_populate_sysroot') + # *.deb should DEPEND on xz-native for unpacking + elif path.endswith('.deb'): + d.appendVarFlag('do_unpack', 'depends', ' xz-native:do_populate_sysroot') + if needsrcrev: d.setVar("SRCPV", "${@bb.fetch2.get_srcrev(d)}") |