Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
84
sources/poky/meta/lib/bblayers/buildconf.py
Normal file
84
sources/poky/meta/lib/bblayers/buildconf.py
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
# Copyright OpenEmbedded Contributors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
from bblayers.common import LayerPlugin
|
||||
|
||||
logger = logging.getLogger('bitbake-layers')
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
|
||||
|
||||
import oe.buildcfg
|
||||
|
||||
def plugin_init(plugins):
|
||||
return BuildConfPlugin()
|
||||
|
||||
class BuildConfPlugin(LayerPlugin):
|
||||
notes_fixme = """FIXME: Please place here the detailed instructions for using this build configuration.
|
||||
They will be shown to the users when they set up their builds via TEMPLATECONF.
|
||||
"""
|
||||
summary_fixme = """FIXME: Please place here the short summary of what this build configuration is for.
|
||||
It will be shown to the users when they set up their builds via TEMPLATECONF.
|
||||
"""
|
||||
|
||||
def _save_conf(self, templatename, templatepath, oecorepath, relpaths_to_oecore):
|
||||
confdir = os.path.join(os.environ["BBPATH"], "conf")
|
||||
destdir = os.path.join(templatepath, "conf", "templates", templatename)
|
||||
os.makedirs(destdir, exist_ok=True)
|
||||
|
||||
with open(os.path.join(confdir, "local.conf")) as src:
|
||||
with open(os.path.join(destdir, "local.conf.sample"), 'w') as dest:
|
||||
dest.write(src.read())
|
||||
|
||||
with open(os.path.join(confdir, "bblayers.conf")) as src:
|
||||
with open(os.path.join(destdir, "bblayers.conf.sample"), 'w') as dest:
|
||||
bblayers_data = src.read()
|
||||
|
||||
for (abspath, relpath) in relpaths_to_oecore:
|
||||
bblayers_data = bblayers_data.replace(abspath, "##OEROOT##/" + relpath)
|
||||
dest.write(bblayers_data)
|
||||
|
||||
with open(os.path.join(destdir, "conf-summary.txt"), 'w') as dest:
|
||||
dest.write(self.summary_fixme)
|
||||
with open(os.path.join(destdir, "conf-notes.txt"), 'w') as dest:
|
||||
dest.write(self.notes_fixme)
|
||||
|
||||
logger.info("""Configuration template placed into {}
|
||||
Please review the files in there, and particularly provide a configuration summary in {}
|
||||
and notes in {}
|
||||
You can try out the configuration with
|
||||
TEMPLATECONF={} . {}/oe-init-build-env build-try-{}"""
|
||||
.format(destdir, os.path.join(destdir, "conf-summary.txt"), os.path.join(destdir, "conf-notes.txt"), destdir, oecorepath, templatename))
|
||||
|
||||
def do_save_build_conf(self, args):
|
||||
""" Save the currently active build configuration (conf/local.conf, conf/bblayers.conf) as a template into a layer.\n This template can later be used for setting up builds via TEMPLATECONF. """
|
||||
layers = oe.buildcfg.get_layer_revisions(self.tinfoil.config_data)
|
||||
targetlayer = None
|
||||
oecore = None
|
||||
|
||||
for l in layers:
|
||||
if os.path.abspath(l[0]) == os.path.abspath(args.layerpath):
|
||||
targetlayer = l[0]
|
||||
if l[1] == 'meta':
|
||||
oecore = os.path.dirname(l[0])
|
||||
|
||||
if not targetlayer:
|
||||
logger.error("Layer {} not in one of the currently enabled layers:\n{}".format(args.layerpath, "\n".join([l[0] for l in layers])))
|
||||
elif not oecore:
|
||||
logger.error("Openembedded-core not in one of the currently enabled layers:\n{}".format("\n".join([l[0] for l in layers])))
|
||||
else:
|
||||
relpaths_to_oecore = [(l[0], os.path.relpath(l[0], start=oecore)) for l in layers]
|
||||
self._save_conf(args.templatename, targetlayer, oecore, relpaths_to_oecore)
|
||||
|
||||
def register_commands(self, sp):
|
||||
parser_build_conf = self.add_command(sp, 'save-build-conf', self.do_save_build_conf, parserecipes=False)
|
||||
parser_build_conf.add_argument('layerpath',
|
||||
help='The path to the layer where the configuration template should be saved.')
|
||||
parser_build_conf.add_argument('templatename',
|
||||
help='The name of the configuration template.')
|
||||
Reference in New Issue
Block a user