From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Alexander Kanavin <alex.kanavin@gmail.com>
Cc: openembedded-core@lists.openembedded.org,
Alexander Kanavin <alex@linutronix.de>
Subject: Re: [OE-core] [PATCH 4/4] populate_sdk_ext: split copy_buildsystem() into logical steps defined as functions
Date: Sat, 4 Nov 2023 00:50:37 +0100 [thread overview]
Message-ID: <2023110323503770e4813e@mail.local> (raw)
In-Reply-To: <20231103102806.2332746-4-alex@linutronix.de>
https://autobuilder.yoctoproject.org/typhoon/#/builders/97/builds/7419/steps/16/logs/stdio
On 03/11/2023 11:28:06+0100, Alexander Kanavin wrote:
> copy_buildsystem() has become far too large and needs to be split
> into shorter and more understandable pieces; some of those
> pieces will be reused for the purpose of providing esdk mode
> directly from a plain yocto build.
>
> Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> ---
> meta/classes-recipe/populate_sdk_ext.bbclass | 59 ++++++++++++++++----
> 1 file changed, 47 insertions(+), 12 deletions(-)
>
> diff --git a/meta/classes-recipe/populate_sdk_ext.bbclass b/meta/classes-recipe/populate_sdk_ext.bbclass
> index 53adc868d47..a20f38fb210 100644
> --- a/meta/classes-recipe/populate_sdk_ext.bbclass
> +++ b/meta/classes-recipe/populate_sdk_ext.bbclass
> @@ -186,12 +186,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath):
> if os.path.exists(localconf + '.bak'):
> os.replace(localconf + '.bak', localconf)
>
> -python copy_buildsystem () {
> - import re
> - import shutil
> - import glob
> - import oe.copy_buildsystem
> -
> +def copy_bitbake_and_layers(d, baseoutpath, derivative):
> oe_init_env_script = d.getVar('OE_INIT_ENV_SCRIPT')
>
> conf_bbpath = ''
> @@ -200,13 +195,7 @@ python copy_buildsystem () {
>
> # Copy in all metadata layers + bitbake (as repositories)
> buildsystem = oe.copy_buildsystem.BuildSystem('extensible SDK', d)
> - baseoutpath = d.getVar('SDK_OUTPUT') + '/' + d.getVar('SDKPATH')
>
> - #check if custome templateconf path is set
> - use_custom_templateconf = d.getVar('SDK_CUSTOM_TEMPLATECONF')
> -
> - # Determine if we're building a derivative extensible SDK (from devtool build-sdk)
> - derivative = (d.getVar('SDK_DERIVATIVE') or '') == '1'
> if derivative:
> workspace_name = 'orig-workspace'
> else:
> @@ -231,6 +220,9 @@ python copy_buildsystem () {
> d.setVar('oe_init_build_env_path', conf_initpath)
> d.setVar('esdk_tools_path', esdk_tools_path)
>
> + return (conf_initpath, conf_bbpath, core_meta_subdir, sdkbblayers)
> +
> +def write_devtool_config(d, baseoutpath, conf_bbpath, conf_initpath, core_meta_subdir):
> # Write out config file for devtool
> import configparser
> config = configparser.ConfigParser()
> @@ -247,10 +239,12 @@ python copy_buildsystem () {
> with open(os.path.join(baseoutpath, 'conf', 'devtool.conf'), 'w') as f:
> config.write(f)
>
> +def write_unlocked_sigs(d, baseoutpath):
> unlockedsigs = os.path.join(baseoutpath, 'conf', 'unlocked-sigs.inc')
> with open(unlockedsigs, 'w') as f:
> pass
>
> +def write_bblayers_conf(d, baseoutpath, sdkbblayers):
> # Create a layer for new recipes / appends
> bbpath = d.getVar('BBPATH')
> env = os.environ.copy()
> @@ -279,6 +273,9 @@ python copy_buildsystem () {
> f.write(' $' + '{SDKBASEMETAPATH}/workspace \\\n')
> f.write(' "\n')
>
> +def copy_uninative(d, baseoutpath):
> + import shutil
> +
> # Copy uninative tarball
> # For now this is where uninative.bbclass expects the tarball
> if bb.data.inherits_class('uninative', d):
> @@ -288,6 +285,12 @@ python copy_buildsystem () {
> bb.utils.mkdirhier(uninative_outdir)
> shutil.copy(uninative_file, uninative_outdir)
>
> + return uninative_checksum
> +
> +def write_local_conf(d, baseoutpath, derivative, core_meta_subdir, uninative_checksum):
> + #check if custome templateconf path is set
> + use_custom_templateconf = d.getVar('SDK_CUSTOM_TEMPLATECONF')
> +
> env_passthrough = (d.getVar('BB_ENV_PASSTHROUGH_ADDITIONS') or '').split()
> env_passthrough_values = {}
>
> @@ -457,6 +460,9 @@ python copy_buildsystem () {
> f.write(line)
> f.write('\n')
>
> +def prepare_locked_cache(d, baseoutpath, conf_initpath):
> + import shutil
> +
> # Filter the locked signatures file to just the sstate tasks we are interested in
> excluded_targets = get_sdk_install_targets(d, images_only=True)
> sigfile = d.getVar('WORKDIR') + '/locked-sigs.inc'
> @@ -560,6 +566,9 @@ python copy_buildsystem () {
> f = os.path.join(root, name)
> os.remove(f)
>
> +def write_manifest(d, baseoutpath):
> + import glob
> +
> # Write manifest file
> # Note: at the moment we cannot include the env setup script here to keep
> # it updated, since it gets modified during SDK installation (see
> @@ -583,6 +592,32 @@ python copy_buildsystem () {
> continue
> chksum = bb.utils.sha256_file(fn)
> f.write('%s\t%s\n' % (chksum, os.path.relpath(fn, baseoutpath)))
> +
> +
> +python copy_buildsystem () {
> + import oe.copy_buildsystem
> +
> + baseoutpath = d.getVar('SDK_OUTPUT') + '/' + d.getVar('SDKPATH')
> +
> + # Determine if we're building a derivative extensible SDK (from devtool build-sdk)
> + derivative = (d.getVar('SDK_DERIVATIVE') or '') == '1'
> +
> + conf_initpath, conf_bbpath, core_meta_subdir, sdkbblayers = copy_bitbake_and_layers(d, baseoutpath, derivative)
> +
> + write_devtool_config(d, baseoutpath, conf_bbpath, conf_initpath, core_meta_subdir)
> +
> + write_unlocked_sigs(d, baseoutpath)
> +
> + write_bblayers_conf(d, baseoutpath, sdkbblayers)
> +
> + uninative_checksum = copy_uninative(d, baseoutpath)
> +
> + write_local_conf(d, baseoutpath, derivative, core_meta_subdir, uninative_checksum)
> +
> + prepare_locked_cache(d, baseoutpath, conf_initpath)
> +
> + write_manifest(d, baseoutpath)
> +
> }
>
> def get_current_buildtools(d):
> --
> 2.39.2
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#190151): https://lists.openembedded.org/g/openembedded-core/message/190151
> Mute This Topic: https://lists.openembedded.org/mt/102361115/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2023-11-03 23:51 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-03 10:28 [PATCH 1/4] populate_sdk_ext.bbclass: do not symlink unfsd from sdk image sysroot into eSDK tools path Alexander Kanavin
2023-11-03 10:28 ` [PATCH 2/4] meta/lib/oe/copy_buildsystem.py: do not derefence symlinks Alexander Kanavin
2023-11-03 10:28 ` [PATCH 3/4] scripts/esdk-tools: use a dedicated, static directory for esdk tools Alexander Kanavin
2023-11-03 10:28 ` [PATCH 4/4] populate_sdk_ext: split copy_buildsystem() into logical steps defined as functions Alexander Kanavin
2023-11-03 23:50 ` Alexandre Belloni [this message]
2023-11-06 12:54 ` [OE-core] " Alexander Kanavin
2023-11-06 15:01 ` Alexandre Belloni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2023110323503770e4813e@mail.local \
--to=alexandre.belloni@bootlin.com \
--cc=alex.kanavin@gmail.com \
--cc=alex@linutronix.de \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox