diff options
Diffstat (limited to 'meta/classes/populate_sdk_ext.bbclass')
-rw-r--r-- | meta/classes/populate_sdk_ext.bbclass | 89 |
1 files changed, 42 insertions, 47 deletions
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass index 4aabafa079..e2019f9bbf 100644 --- a/meta/classes/populate_sdk_ext.bbclass +++ b/meta/classes/populate_sdk_ext.bbclass @@ -2,19 +2,15 @@ inherit populate_sdk_base -# NOTE: normally you cannot use task overrides for this kind of thing - this -# only works because of get_sdk_ext_rdepends() - -TOOLCHAIN_HOST_TASK_task-populate-sdk-ext = " \ +# Used to override TOOLCHAIN_HOST_TASK in the eSDK case +TOOLCHAIN_HOST_TASK_ESDK = " \ meta-environment-extsdk-${MACHINE} \ " -TOOLCHAIN_TARGET_TASK_task-populate-sdk-ext = "" - -SDK_RELOCATE_AFTER_INSTALL_task-populate-sdk-ext = "0" +SDK_RELOCATE_AFTER_INSTALL:task-populate-sdk-ext = "0" SDK_EXT = "" -SDK_EXT_task-populate-sdk-ext = "-ext" +SDK_EXT:task-populate-sdk-ext = "-ext" # Options are full or minimal SDK_EXT_TYPE ?= "full" @@ -26,8 +22,8 @@ SDK_INCLUDE_BUILDTOOLS ?= '1' SDK_RECRDEP_TASKS ?= "" SDK_CUSTOM_TEMPLATECONF ?= "0" -SDK_LOCAL_CONF_WHITELIST ?= "" -SDK_LOCAL_CONF_BLACKLIST ?= "CONF_VERSION \ +ESDK_LOCALCONF_ALLOW ?= "" +ESDK_LOCALCONF_REMOVE ?= "CONF_VERSION \ BB_NUMBER_THREADS \ BB_NUMBER_PARSE_THREADS \ PARALLEL_MAKE \ @@ -38,7 +34,7 @@ SDK_LOCAL_CONF_BLACKLIST ?= "CONF_VERSION \ TMPDIR \ BB_SERVER_TIMEOUT \ " -SDK_INHERIT_BLACKLIST ?= "buildhistory icecc" +ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc" SDK_UPDATE_URL ?= "" SDK_TARGETS ?= "${PN}" @@ -78,10 +74,10 @@ COREBASE_FILES ?= " \ .templateconf \ " -SDK_DIR_task-populate-sdk-ext = "${WORKDIR}/sdk-ext" -B_task-populate-sdk-ext = "${SDK_DIR}" +SDK_DIR:task-populate-sdk-ext = "${WORKDIR}/sdk-ext" +B:task-populate-sdk-ext = "${SDK_DIR}" TOOLCHAINEXT_OUTPUTNAME ?= "${SDK_NAME}-toolchain-ext-${SDK_VERSION}" -TOOLCHAIN_OUTPUTNAME_task-populate-sdk-ext = "${TOOLCHAINEXT_OUTPUTNAME}" +TOOLCHAIN_OUTPUTNAME:task-populate-sdk-ext = "${TOOLCHAINEXT_OUTPUTNAME}" SDK_EXT_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.target.manifest" SDK_EXT_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.host.manifest" @@ -118,9 +114,9 @@ python write_host_sdk_ext_manifest () { f.write("%s %s %s\n" % (info[1], info[2], info[3])) } -SDK_POSTPROCESS_COMMAND_append_task-populate-sdk-ext = "write_target_sdk_ext_manifest; write_host_sdk_ext_manifest; " +SDK_POSTPROCESS_COMMAND:append:task-populate-sdk-ext = "write_target_sdk_ext_manifest; write_host_sdk_ext_manifest; " -SDK_TITLE_task-populate-sdk-ext = "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} Extensible SDK" +SDK_TITLE:task-populate-sdk-ext = "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} Extensible SDK" def clean_esdk_builddir(d, sdkbasepath): """Clean up traces of the fake build for create_filtered_tasklist()""" @@ -147,15 +143,15 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath): try: with open(sdkbasepath + '/conf/local.conf', 'a') as f: # Force the use of sstate from the build system - f.write('\nSSTATE_DIR_forcevariable = "%s"\n' % d.getVar('SSTATE_DIR')) - f.write('SSTATE_MIRRORS_forcevariable = "file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n') + f.write('\nSSTATE_DIR:forcevariable = "%s"\n' % d.getVar('SSTATE_DIR')) + f.write('SSTATE_MIRRORS:forcevariable = "file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n') # Ensure TMPDIR is the default so that clean_esdk_builddir() can delete it - f.write('TMPDIR_forcevariable = "${TOPDIR}/tmp"\n') - f.write('TCLIBCAPPEND_forcevariable = ""\n') + f.write('TMPDIR:forcevariable = "${TOPDIR}/tmp"\n') + f.write('TCLIBCAPPEND:forcevariable = ""\n') # Drop uninative if the build isn't using it (or else NATIVELSBSTRING will # be different and we won't be able to find our native sstate) if not bb.data.inherits_class('uninative', d): - f.write('INHERIT_remove = "uninative"\n') + f.write('INHERIT:remove = "uninative"\n') # Unfortunately the default SDKPATH (or even a custom value) may contain characters that bitbake # will not allow in its COREBASE path, so we need to rename the directory temporarily @@ -286,8 +282,8 @@ python copy_buildsystem () { bb.utils.mkdirhier(uninative_outdir) shutil.copy(uninative_file, uninative_outdir) - env_whitelist = (d.getVar('BB_ENV_EXTRAWHITE') or '').split() - env_whitelist_values = {} + env_passthrough = (d.getVar('BB_ENV_PASSTHROUGH_ADDITIONS') or '').split() + env_passthrough_values = {} # Create local.conf builddir = d.getVar('TOPDIR') @@ -298,15 +294,15 @@ python copy_buildsystem () { if derivative: shutil.copyfile(builddir + '/conf/local.conf', baseoutpath + '/conf/local.conf') else: - local_conf_whitelist = (d.getVar('SDK_LOCAL_CONF_WHITELIST') or '').split() - local_conf_blacklist = (d.getVar('SDK_LOCAL_CONF_BLACKLIST') or '').split() + local_conf_allowed = (d.getVar('ESDK_LOCALCONF_ALLOW') or '').split() + local_conf_remove = (d.getVar('ESDK_LOCALCONF_REMOVE') or '').split() def handle_var(varname, origvalue, op, newlines): - if varname in local_conf_blacklist or (origvalue.strip().startswith('/') and not varname in local_conf_whitelist): + if varname in local_conf_remove or (origvalue.strip().startswith('/') and not varname in local_conf_allowed): newlines.append('# Removed original setting of %s\n' % varname) return None, op, 0, True else: - if varname in env_whitelist: - env_whitelist_values[varname] = origvalue + if varname in env_passthrough: + env_passthrough_values[varname] = origvalue return origvalue, op, 0, True varlist = ['[^#=+ ]*'] oldlines = [] @@ -342,7 +338,7 @@ python copy_buildsystem () { f.write('CONF_VERSION = "%s"\n\n' % d.getVar('CONF_VERSION', False)) # Some classes are not suitable for SDK, remove them from INHERIT - f.write('INHERIT_remove = "%s"\n' % d.getVar('SDK_INHERIT_BLACKLIST', False)) + f.write('INHERIT:remove = "%s"\n' % d.getVar('ESDK_CLASS_INHERIT_DISABLE', False)) # Bypass the default connectivity check if any f.write('CONNECTIVITY_CHECK_URIS = ""\n\n') @@ -358,10 +354,10 @@ python copy_buildsystem () { f.write('SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "warn"\n\n') # We want to be able to set this without a full reparse - f.write('BB_HASHCONFIG_WHITELIST_append = " SIGGEN_UNLOCKED_RECIPES"\n\n') + f.write('BB_HASHCONFIG_IGNORE_VARS:append = " SIGGEN_UNLOCKED_RECIPES"\n\n') - # Set up whitelist for run on install - f.write('BB_SETSCENE_ENFORCE_WHITELIST = "%:* *:do_shared_workdir *:do_rm_work wic-tools:* *:do_addto_recipe_sysroot"\n\n') + # Set up which tasks are ignored for run on install + f.write('BB_SETSCENE_ENFORCE_IGNORE_TASKS = "%:* *:do_shared_workdir *:do_rm_work wic-tools:* *:do_addto_recipe_sysroot"\n\n') # Hide the config information from bitbake output (since it's fixed within the SDK) f.write('BUILDCFG_HEADER = ""\n\n') @@ -440,9 +436,9 @@ python copy_buildsystem () { f.write('meta/conf\n') # Ensure any variables set from the external environment (by way of - # BB_ENV_EXTRAWHITE) are set in the SDK's configuration + # BB_ENV_PASSTHROUGH_ADDITIONS) are set in the SDK's configuration extralines = [] - for name, value in env_whitelist_values.items(): + for name, value in env_passthrough_values.items(): actualvalue = d.getVar(name) or '' if value != actualvalue: extralines.append('%s = "%s"\n' % (name, actualvalue)) @@ -554,7 +550,7 @@ python copy_buildsystem () { # We don't need sstate do_package files for root, dirs, files in os.walk(sstate_out): for name in files: - if name.endswith("_package.tgz"): + if name.endswith("_package.tar.zst"): f = os.path.join(root, name) os.remove(f) @@ -630,7 +626,7 @@ install_tools() { for script in $scripts; do for scriptfn in `find ${SDK_OUTPUT}/${SDKPATH}/${scriptrelpath} -maxdepth 1 -executable -name "$script"`; do targetscriptfn="${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/$(basename $scriptfn)" - test -e ${targetscriptfn} || lnr ${scriptfn} ${targetscriptfn} + test -e ${targetscriptfn} || ln -rs ${scriptfn} ${targetscriptfn} done done # We can't use the same method as above because files in the sysroot won't exist at this point @@ -638,7 +634,7 @@ install_tools() { unfsd_path="${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/unfsd" if [ "${SDK_INCLUDE_TOOLCHAIN}" = "1" -a ! -e $unfsd_path ] ; then binrelpath=${@os.path.relpath(d.getVar('STAGING_BINDIR_NATIVE'), d.getVar('TMPDIR'))} - lnr ${SDK_OUTPUT}/${SDKPATH}/tmp/$binrelpath/unfsd $unfsd_path + ln -rs ${SDK_OUTPUT}/${SDKPATH}/tmp/$binrelpath/unfsd $unfsd_path fi touch ${SDK_OUTPUT}/${SDKPATH}/.devtoolbase @@ -688,7 +684,7 @@ sdk_ext_preinst() { EXTRA_TAR_OPTIONS="$EXTRA_TAR_OPTIONS --exclude=sstate-cache" fi } -SDK_PRE_INSTALL_COMMAND_task-populate-sdk-ext = "${sdk_ext_preinst}" +SDK_PRE_INSTALL_COMMAND:task-populate-sdk-ext = "${sdk_ext_preinst}" # FIXME this preparation should be done as part of the SDK construction sdk_ext_postinst() { @@ -739,9 +735,9 @@ sdk_ext_postinst() { echo done } -SDK_POST_INSTALL_COMMAND_task-populate-sdk-ext = "${sdk_ext_postinst}" +SDK_POST_INSTALL_COMMAND:task-populate-sdk-ext = "${sdk_ext_postinst}" -SDK_POSTPROCESS_COMMAND_prepend_task-populate-sdk-ext = "copy_buildsystem; install_tools; " +SDK_POSTPROCESS_COMMAND:prepend:task-populate-sdk-ext = "copy_buildsystem; install_tools; " SDK_INSTALL_TARGETS = "" fakeroot python do_populate_sdk_ext() { @@ -755,6 +751,10 @@ fakeroot python do_populate_sdk_ext() { if d.getVar('BB_CURRENT_MC') != 'default': bb.fatal('The extensible SDK can currently only be built for the default multiconfig. Currently trying to build for %s.' % d.getVar('BB_CURRENT_MC')) + # eSDK dependencies don't use the traditional variables and things don't work properly if they are set + d.setVar("TOOLCHAIN_HOST_TASK", "${TOOLCHAIN_HOST_TASK_ESDK}") + d.setVar("TOOLCHAIN_TARGET_TASK", "") + d.setVar('SDK_INSTALL_TARGETS', get_sdk_install_targets(d)) if d.getVar('SDK_INCLUDE_BUILDTOOLS') == '1': buildtools_fn = get_current_buildtools(d) @@ -800,12 +800,7 @@ do_sdk_depends[dirs] = "${WORKDIR}" do_sdk_depends[depends] = "${@get_ext_sdk_depends(d)} meta-extsdk-toolchain:do_populate_sysroot" do_sdk_depends[recrdeptask] = "${@d.getVarFlag('do_populate_sdk', 'recrdeptask', False)}" do_sdk_depends[recrdeptask] += "do_populate_lic do_package_qa do_populate_sysroot do_deploy ${SDK_RECRDEP_TASKS}" -do_sdk_depends[rdepends] = "${@get_sdk_ext_rdepends(d)}" - -def get_sdk_ext_rdepends(d): - localdata = d.createCopy() - localdata.appendVar('OVERRIDES', ':task-populate-sdk-ext') - return localdata.getVarFlag('do_populate_sdk', 'rdepends') +do_sdk_depends[rdepends] = "${@' '.join([x + ':do_package_write_${IMAGE_PKGTYPE} ' + x + ':do_packagedata' for x in d.getVar('TOOLCHAIN_HOST_TASK_ESDK').split()])}" do_populate_sdk_ext[dirs] = "${@d.getVarFlag('do_populate_sdk', 'dirs', False)}" @@ -833,7 +828,7 @@ do_populate_sdk_ext[nostamp] = "1" SDKEXTDEPLOYDIR = "${WORKDIR}/deploy-${PN}-populate-sdk-ext" SSTATETASKS += "do_populate_sdk_ext" -SSTATE_SKIP_CREATION_task-populate-sdk-ext = '1' +SSTATE_SKIP_CREATION:task-populate-sdk-ext = '1' do_populate_sdk_ext[cleandirs] = "${SDKEXTDEPLOYDIR}" do_populate_sdk_ext[sstate-inputdirs] = "${SDKEXTDEPLOYDIR}" do_populate_sdk_ext[sstate-outputdirs] = "${SDK_DEPLOY}" |