public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
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]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>


  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