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: Mon, 6 Nov 2023 16:01:22 +0100 [thread overview]
Message-ID: <20231106150122c42eb7ec@mail.local> (raw)
In-Reply-To: <CANNYZj9C-B-yO+H_hC32tZJMi7Btvh4p8knFr=oGLqkyZ+V+hA@mail.gmail.com>
On 06/11/2023 13:54:16+0100, Alexander Kanavin wrote:
> Thanks, I just sent a corrected patch.
>
Thanks!
> Alex
>
> On Sat, 4 Nov 2023 at 00:50, Alexandre Belloni
> <alexandre.belloni@bootlin.com> wrote:
> >
> > 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
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
prev parent reply other threads:[~2023-11-06 15:01 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 ` [OE-core] " Alexandre Belloni
2023-11-06 12:54 ` Alexander Kanavin
2023-11-06 15:01 ` Alexandre Belloni [this message]
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=20231106150122c42eb7ec@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.