From: Robert Yang <liezhi.yang@windriver.com>
To: Alexander Kanavin <alex.kanavin@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH v2 1/1] classes: Print bitbake branch and revision
Date: Wed, 11 Sep 2024 22:30:42 +0800 [thread overview]
Message-ID: <cbb94a55-956f-43cb-8498-be809dd87058@windriver.com> (raw)
In-Reply-To: <CANNYZj9JE_syrcCA1t=O-AYT=UhZXb=TY+v5Q1cON7oPKQEPRg@mail.gmail.com>
On 9/11/24 22:14, Alexander Kanavin wrote:
> Can you please also add a function that tells if bitbake is in a
> separate repo, or bundled with poky? This would help various tooling
> that is being developed for setting up layers and builds, or creating
> configurations for those tasks out of pre-existing yocto setups.
Yes, I can find the code with "git reflog", V3 is coming:
+def is_bitbake_in_separate_repo(bitbake_dir):
+ """
+ Check whether bitbake is in a separate git repo
+ """
+ bitbake_git_dir = os.path.join(bitbake_dir, '.git')
+ if os.path.exists(bitbake_git_dir):
+ return True
+ else:
+ return False
// Robert
>
> Alex
>
>
> On Wed, 11 Sept 2024 at 15:13, Robert Yang via lists.openembedded.org
> <liezhi.yang=windriver.com@lists.openembedded.org> wrote:
>>
>> From: Robert Yang <liezhi.yang@windriver.com>
>>
>> There is no bitbake revision when it is in a separate repo, then we have no way
>> to know which version of bitbake is used from the log, this patch always prints
>> it.
>>
>> * console-latest.log
>> bitbake = "master:165368bad152a14b32b5216b938aa4b915d72a70"
>> meta
>> meta-poky
>> meta-yocto-bsp = "master:165368bad152a14b32b5216b938aa4b915d72a70"
>>
>> * buildhistory/metadata-revs
>> bitbake = master:165368bad152a14b32b5216b938aa4b915d72a70 -- modified
>> [snip]
>>
>> * buildhistory/metadata-revs
>> -----------------------
>> Build Configuration: |
>> -----------------------
>> DISTRO = poky
>> DISTRO_VERSION = 5.0+snapshot-165368bad152a14b32b5216b938aa4b915d72a70
>> -----------------------
>> Bitbake Revision: |
>> -----------------------
>> bitbake = master:165368bad152a14b32b5216b938aa4b915d72a70 -- modified
>> -----------------------
>> Layer Revisions: |
>> -----------------------
>> [snip]
>>
>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>> ---
>> meta/classes-global/base.bbclass | 10 +++++++---
>> meta/classes/buildhistory.bbclass | 5 +++--
>> meta/classes/image-buildinfo.bbclass | 13 +++++++++++--
>> meta/lib/oe/buildcfg.py | 13 +++++++++++++
>> 4 files changed, 34 insertions(+), 7 deletions(-)
>>
>> diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
>> index b6940bbb6f..85c7cb8c24 100644
>> --- a/meta/classes-global/base.bbclass
>> +++ b/meta/classes-global/base.bbclass
>> @@ -226,9 +226,13 @@ do_unpack[postfuncs] += "create_source_date_epoch_stamp"
>> def get_source_date_epoch_value(d):
>> return oe.reproducible.epochfile_read(d.getVar('SDE_FILE'), d)
>>
>> +def get_bitbake_branch_rev(d):
>> + revisions = oe.buildcfg.get_bitbake_revision()
>> + return oe.buildcfg.get_branch_rev3(revisions)
>> +
>> def get_layers_branch_rev(d):
>> revisions = oe.buildcfg.get_layer_revisions(d)
>> - layers_branch_rev = ["%-20s = \"%s:%s\"" % (r[1], r[2], r[3]) for r in revisions]
>> + layers_branch_rev = oe.buildcfg.get_branch_rev3(revisions)
>> i = len(layers_branch_rev)-1
>> p1 = layers_branch_rev[i].find("=")
>> s1 = layers_branch_rev[i][p1:]
>> @@ -241,11 +245,11 @@ def get_layers_branch_rev(d):
>> else:
>> i -= 1
>> p1 = layers_branch_rev[i].find("=")
>> - s1= layers_branch_rev[i][p1:]
>> + s1 = layers_branch_rev[i][p1:]
>> return layers_branch_rev
>>
>>
>> -BUILDCFG_FUNCS ??= "buildcfg_vars get_layers_branch_rev buildcfg_neededvars"
>> +BUILDCFG_FUNCS ??= "buildcfg_vars get_bitbake_branch_rev get_layers_branch_rev buildcfg_neededvars"
>> BUILDCFG_FUNCS[type] = "list"
>>
>> def buildcfg_vars(d):
>> diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
>> index ce3abaa69d..50516e6533 100644
>> --- a/meta/classes/buildhistory.bbclass
>> +++ b/meta/classes/buildhistory.bbclass
>> @@ -764,8 +764,9 @@ def buildhistory_get_build_id(d):
>>
>> def buildhistory_get_metadata_revs(d):
>> # We want an easily machine-readable format here
>> - revisions = oe.buildcfg.get_layer_revisions(d)
>> - medadata_revs = ["%-17s = %s:%s%s" % (r[1], r[2], r[3], r[4]) for r in revisions]
>> + revisions = oe.buildcfg.get_bitbake_revision()
>> + revisions.extend(oe.buildcfg.get_layer_revisions(d))
>> + medadata_revs = oe.buildcfg.get_branch_rev4(revisions)
>> return '\n'.join(medadata_revs)
>>
>> def outputvars(vars, listvars, d):
>> diff --git a/meta/classes/image-buildinfo.bbclass b/meta/classes/image-buildinfo.bbclass
>> index b83ce650ad..7b5f84854c 100644
>> --- a/meta/classes/image-buildinfo.bbclass
>> +++ b/meta/classes/image-buildinfo.bbclass
>> @@ -27,11 +27,14 @@ def image_buildinfo_outputvars(vars, d):
>> ret += "%s = %s\n" % (var, value)
>> return ret.rstrip('\n')
>>
>> +def get_bitbake_rev(d):
>> + revision = oe.buildcfg.get_bitbake_revision()
>> + return '\n'.join(oe.buildcfg.get_branch_rev4(revision))
>> +
>> # Returns layer revisions along with their respective status
>> def get_layer_revs(d):
>> revisions = oe.buildcfg.get_layer_revisions(d)
>> - medadata_revs = ["%-17s = %s:%s%s" % (r[1], r[2], r[3], r[4]) for r in revisions]
>> - return '\n'.join(medadata_revs)
>> + return '\n'.join(oe.buildcfg.get_branch_rev4(revisions))
>>
>> def buildinfo_target(d):
>> # Get context
>> @@ -55,6 +58,12 @@ Build Configuration: |
>> buildinfo_target(d),
>> '''
>> -----------------------
>> +Bitbake Revision: |
>> +-----------------------
>> +''',
>> + get_bitbake_rev(d),
>> + '''
>> +-----------------------
>> Layer Revisions: |
>> -----------------------
>> ''',
>> diff --git a/meta/lib/oe/buildcfg.py b/meta/lib/oe/buildcfg.py
>> index 4b22f18f36..dab4aa7831 100644
>> --- a/meta/lib/oe/buildcfg.py
>> +++ b/meta/lib/oe/buildcfg.py
>> @@ -71,6 +71,19 @@ def is_layer_modified(path):
>> # output and a 129 return code when a layer isn't a git repo at all.
>> return " -- modified"
>>
>> +def get_branch_rev3(revisions):
>> + # Return 3 items for each revision
>> + return ["%-20s = \"%s:%s\"" % (r[1], r[2], r[3]) for r in revisions]
>> +
>> +def get_branch_rev4(revisions):
>> + # Return 4 items for each revision
>> + return ["%-17s = %s:%s%s" % (r[1], r[2], r[3], r[4]) for r in revisions]
>> +
>> +def get_bitbake_revision():
>> + bbdir = bb.__file__.rsplit('/', 3)[0]
>> + return [(bbdir, os.path.basename(bbdir), get_metadata_git_branch(bbdir).strip(), \
>> + get_metadata_git_revision(bbdir), is_layer_modified(bbdir))]
>> +
>> def get_layer_revisions(d):
>> layers = (d.getVar("BBLAYERS") or "").split()
>> revisions = []
>> --
>> 2.44.1
>>
>>
>>
>>
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#204387): https://lists.openembedded.org/g/openembedded-core/message/204387
>> Mute This Topic: https://lists.openembedded.org/mt/108393122/7304958
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [liezhi.yang@eng.windriver.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
next prev parent reply other threads:[~2024-09-11 14:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-11 13:13 [PATCH v2 0/1] classes: Print bitbake branch and revision liezhi.yang
2024-09-11 13:13 ` [PATCH v2 1/1] " liezhi.yang
2024-09-11 14:14 ` [OE-core] " Alexander Kanavin
2024-09-11 14:30 ` Robert Yang [this message]
2024-09-11 14:37 ` Alexander Kanavin
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=cbb94a55-956f-43cb-8498-be809dd87058@windriver.com \
--to=liezhi.yang@windriver.com \
--cc=alex.kanavin@gmail.com \
--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