From patchwork Thu Jun 9 11:37:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 9075 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3E02CC433EF for ; Thu, 9 Jun 2022 11:37:42 +0000 (UTC) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by mx.groups.io with SMTP id smtpd.web09.12049.1654774656113064442 for ; Thu, 09 Jun 2022 04:37:36 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=gah3dQU3; spf=pass (domain: linuxfoundation.org, ip: 209.85.128.51, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wm1-f51.google.com with SMTP id o37-20020a05600c512500b0039c4ba4c64dso6783275wms.2 for ; Thu, 09 Jun 2022 04:37:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=w+FsQcseWrPaKQOrRIBUVhdgV4WY+aHfyl7ckcm5EOI=; b=gah3dQU3P/LEPHd4TsSo3AfGuIHiA28pYYN+dRLVzIuEVrxNVL6Yv6SDR3PpAUKNhE WBxfqO9zosMgaJvp8v+e0rQqH2UYA85ZTs8r/RwZQTPcDVI04CEGc+zm99Lbv+UpOqBZ mHag3aEbe+wINtCTSprw3ig+CdvC+D6VrV6NI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=w+FsQcseWrPaKQOrRIBUVhdgV4WY+aHfyl7ckcm5EOI=; b=i8P7xz3ahWRljVmgE9z3jvxeoxhRGbbgmZxeAe8uVKacJ/yarPxQoLsi52ASX8xeXq N/hLe3JqgehoVuS0OJmvm5GaSTzYwHq//LhQIw/SU6VPhBW5y1btJ5TrP2JBMMCL91je gEWN+9PiQFiZDB6Okhf68VC8omThFa+FGA4T1c3C4kiwROwBM/00ASQjayYN/HaSDAov YD3O1yknWmOkB58V7dODKpdFh+Om2QrJU8wADlsUeeTj4dwdvLcuEIhMMHIQOOgUDMQg lcXmfvAYASzzUwCvAdB2wyKpBczSgeRIygLR7QJ+DxmciFw4mBJtOw0vQbR/G8+dr2Xk cHoA== X-Gm-Message-State: AOAM530bWtntG8Q/o6AFfBhSDafRQEW/jo0nDzn24LIvGIdT7slfDqKa 4BSyAWgxewlED/Uz7ZbALGiiPswJCYQ0pw== X-Google-Smtp-Source: ABdhPJyEZlR/ZhqUtChnVu89tVQhd9Z5489Aj9/OtNfceGbt3wq+Z+lo0zdn3b4c3WlVaSBVFYTnjg== X-Received: by 2002:a05:600c:1d12:b0:39c:4307:8b10 with SMTP id l18-20020a05600c1d1200b0039c43078b10mr2836220wms.103.1654774653804; Thu, 09 Jun 2022 04:37:33 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:2888:8172:672a:5175]) by smtp.gmail.com with ESMTPSA id o5-20020a05600c4fc500b0039c5a765388sm9843899wmq.28.2022.06.09.04.37.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jun 2022 04:37:33 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 1/5] classes/buildcfg: Move git/layer revision code into new OE module buildcfg Date: Thu, 9 Jun 2022 12:37:28 +0100 Message-Id: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 09 Jun 2022 11:37:42 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/166770 There is a load of duplicated git/layer/revision code which makes most sesne as a python library, not bbclass code. Start to refactor as such. Signed-off-by: Richard Purdie --- meta/classes/base.bbclass | 9 +++--- meta/classes/buildhistory.bbclass | 4 +-- meta/classes/image-buildinfo.bbclass | 4 +-- meta/classes/metadata_scm.bbclass | 43 ++-------------------------- meta/lib/oe/buildcfg.py | 40 ++++++++++++++++++++++++++ 5 files changed, 51 insertions(+), 49 deletions(-) create mode 100644 meta/lib/oe/buildcfg.py diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index bdb3ac33c67..f59e95fef06 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -7,12 +7,11 @@ inherit staging inherit mirrors inherit utils inherit utility-tasks -inherit metadata_scm inherit logging OE_EXTRA_IMPORTS ?= "" -OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible oe.rust ${OE_EXTRA_IMPORTS}" +OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible oe.rust oe.buildcfg ${OE_EXTRA_IMPORTS}" OE_IMPORTS[type] = "list" PACKAGECONFIG_CONFARGS ??= "" @@ -35,6 +34,8 @@ def oe_import(d): # We need the oe module name space early (before INHERITs get added) OE_IMPORTED := "${@oe_import(d)}" +inherit metadata_scm + def lsb_distro_identifier(d): adjust = d.getVar('LSB_DISTRO_ADJUST') adjust_func = None @@ -219,8 +220,8 @@ def get_source_date_epoch_value(d): def get_layers_branch_rev(d): layers = (d.getVar("BBLAYERS") or "").split() layers_branch_rev = ["%-20s = \"%s:%s\"" % (os.path.basename(i), \ - base_get_metadata_git_branch(i, None).strip(), \ - base_get_metadata_git_revision(i, None)) \ + oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ + oe.buildcfg.get_metadata_git_revision(i, None)) \ for i in layers] i = len(layers_branch_rev)-1 p1 = layers_branch_rev[i].find("=") diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index 4345ffc6939..f2493b3765a 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -761,8 +761,8 @@ def buildhistory_get_metadata_revs(d): # We want an easily machine-readable format here, so get_layers_branch_rev isn't quite what we want layers = (d.getVar("BBLAYERS") or "").split() medadata_revs = ["%-17s = %s:%s%s" % (os.path.basename(i), \ - base_get_metadata_git_branch(i, None).strip(), \ - base_get_metadata_git_revision(i, None), \ + oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ + oe.buildcfg.get_metadata_git_revision(i, None), \ buildhistory_get_modified(i)) \ for i in layers] return '\n'.join(medadata_revs) diff --git a/meta/classes/image-buildinfo.bbclass b/meta/classes/image-buildinfo.bbclass index 94c585d4cd9..25ca8d8fe6b 100644 --- a/meta/classes/image-buildinfo.bbclass +++ b/meta/classes/image-buildinfo.bbclass @@ -46,8 +46,8 @@ def get_layer_git_status(path): def get_layer_revs(d): layers = (d.getVar("BBLAYERS") or "").split() medadata_revs = ["%-17s = %s:%s %s" % (os.path.basename(i), \ - base_get_metadata_git_branch(i, None).strip(), \ - base_get_metadata_git_revision(i, None), \ + oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ + oe.buildcfg.get_metadata_git_revision(i, None), \ get_layer_git_status(i)) \ for i in layers] return '\n'.join(medadata_revs) diff --git a/meta/classes/metadata_scm.bbclass b/meta/classes/metadata_scm.bbclass index 47cb969b8d8..f646b3159a4 100644 --- a/meta/classes/metadata_scm.bbclass +++ b/meta/classes/metadata_scm.bbclass @@ -1,44 +1,5 @@ -def base_detect_revision(d): - path = base_get_scmbasepath(d) - return base_get_metadata_git_revision(path, d) -def base_detect_branch(d): - path = base_get_scmbasepath(d) - return base_get_metadata_git_branch(path, d) - -def base_get_scmbasepath(d): - return os.path.join(d.getVar('COREBASE'), 'meta') - -def base_get_metadata_svn_revision(path, d): - # This only works with older subversion. For newer versions - # this function will need to be fixed by someone interested - revision = "" - try: - with open("%s/.svn/entries" % path) as f: - revision = f.readlines()[3].strip() - except (IOError, IndexError): - pass - return revision - -def base_get_metadata_git_branch(path, d): - import bb.process - - try: - rev, _ = bb.process.run('git rev-parse --abbrev-ref HEAD', cwd=path) - except bb.process.ExecutionError: - rev = '' - return rev.strip() - -def base_get_metadata_git_revision(path, d): - import bb.process - - try: - rev, _ = bb.process.run('git rev-parse HEAD', cwd=path) - except bb.process.ExecutionError: - rev = '' - return rev.strip() - -METADATA_BRANCH := "${@base_detect_branch(d)}" +METADATA_BRANCH := "${@oe.buildcfg.detect_branch(d)}" METADATA_BRANCH[vardepvalue] = "${METADATA_BRANCH}" -METADATA_REVISION := "${@base_detect_revision(d)}" +METADATA_REVISION := "${@oe.buildcfg.detect_revision(d)}" METADATA_REVISION[vardepvalue] = "${METADATA_REVISION}" diff --git a/meta/lib/oe/buildcfg.py b/meta/lib/oe/buildcfg.py new file mode 100644 index 00000000000..a749fc53039 --- /dev/null +++ b/meta/lib/oe/buildcfg.py @@ -0,0 +1,40 @@ + +import subprocess +import bb.process + +def detect_revision(d): + path = get_scmbasepath(d) + return get_metadata_git_revision(path, d) + +def detect_branch(d): + path = get_scmbasepath(d) + return get_metadata_git_branch(path, d) + +def get_scmbasepath(d): + return os.path.join(d.getVar('COREBASE'), 'meta') + +def get_metadata_svn_revision(path, d): + # This only works with older subversion. For newer versions + # this function will need to be fixed by someone interested + revision = "" + try: + with open("%s/.svn/entries" % path) as f: + revision = f.readlines()[3].strip() + except (IOError, IndexError): + pass + return revision + +def get_metadata_git_branch(path, d): + try: + rev, _ = bb.process.run('git rev-parse --abbrev-ref HEAD', cwd=path) + except bb.process.ExecutionError: + rev = '' + return rev.strip() + +def get_metadata_git_revision(path, d): + try: + rev, _ = bb.process.run('git rev-parse HEAD', cwd=path) + except bb.process.ExecutionError: + rev = '' + return rev.strip() + From patchwork Thu Jun 9 11:37:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 9079 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5813ECCA485 for ; Thu, 9 Jun 2022 11:37:42 +0000 (UTC) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by mx.groups.io with SMTP id smtpd.web12.11844.1654774656878055903 for ; Thu, 09 Jun 2022 04:37:37 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=gdcs3ZpM; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.41, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f41.google.com with SMTP id q26so21638966wra.1 for ; Thu, 09 Jun 2022 04:37:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=EbaR370JcLEL0f79wM/LK3nmbFDAh2OoxOQp6sYTCeo=; b=gdcs3ZpMdiLEuW//KtPBUQhYd6zWh2isq7l7aOngLeSWXFxpImZrrrKTouQptlFJD5 CzIfWQrVhFdPDAX71i/MyHtxKcefaNeBH2UjQCaebSLt+yIQQviBOTGrQzavfswcadvF tdXsJbCfHzwkDSMSeAHbkGSInxGk14k500Hdk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EbaR370JcLEL0f79wM/LK3nmbFDAh2OoxOQp6sYTCeo=; b=dYwDc6ceQJaW9kPCaAwv+TDFRz8ovsPzOfN3IZu3F8X663g8jgal3eHT0/jIrm8a7Z YOSSAlnWnqqgB7IJ9GeOpNws/WnuMVuWr/KK0rfesDhzTi90dynFM669XXTkMFC0ATgm 4WcCNcDZwluOWAbk6Z4XAmlaeqHM5QTwdQRGKxMd4aVoYzjJp0YYRg3UYg5sF0jIRRW7 CH10SqLteTeZUMKLXtA22uepScc9wPFbrkTnGFUXL4blJ9z8N4ma/pjyJOCgKpBgzxv/ VAPWquVxFavxoMOtASHm8nGMbQ82JQM9pK9YHgQysw/gbzQFM7BbSn0uVqf9RuyvlE65 0Zmw== X-Gm-Message-State: AOAM531qUndOj1YV1sedC8gKEoPrcN6LdkPfJ5aA+gokMf53PzJSIiZ5 polV4BVKHHw+dMfnbeBGeZ+0wL0atMie9w== X-Google-Smtp-Source: ABdhPJwkMGpxNsmkGhYcYcI+TeVmYXT15beo91oRX8rSAZetzo4ZTl9y97v2Ir0fgFp39Z6Ofu2tLg== X-Received: by 2002:adf:ea87:0:b0:211:68d:7c93 with SMTP id s7-20020adfea87000000b00211068d7c93mr37472582wrm.412.1654774654574; Thu, 09 Jun 2022 04:37:34 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:2888:8172:672a:5175]) by smtp.gmail.com with ESMTPSA id o5-20020a05600c4fc500b0039c5a765388sm9843899wmq.28.2022.06.09.04.37.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jun 2022 04:37:34 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 2/5] lib/buildcfg: Share common clean/dirty layer function Date: Thu, 9 Jun 2022 12:37:29 +0100 Message-Id: <20220609113732.43566-2-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> References: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 09 Jun 2022 11:37:42 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/166771 The comments even say this was copy/paste code. Move to a shared library function. Signed-off-by: Richard Purdie --- meta/classes/buildhistory.bbclass | 18 +----------------- meta/classes/image-buildinfo.bbclass | 18 +----------------- meta/lib/oe/buildcfg.py | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 35 deletions(-) diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index f2493b3765a..6fffd471896 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -741,29 +741,13 @@ def buildhistory_get_build_id(d): statusheader = d.getVar('BUILDCFG_HEADER') return('\n%s\n%s\n' % (statusheader, '\n'.join(statuslines))) -def buildhistory_get_modified(path): - # copied from get_layer_git_status() in image-buildinfo.bbclass - import subprocess - try: - subprocess.check_output("""cd %s; export PSEUDO_UNLOAD=1; set -e; - git diff --quiet --no-ext-diff - git diff --quiet --no-ext-diff --cached""" % path, - shell=True, - stderr=subprocess.STDOUT) - return "" - except subprocess.CalledProcessError as ex: - # Silently treat errors as "modified", without checking for the - # (expected) return code 1 in a modified git repo. For example, we get - # output and a 129 return code when a layer isn't a git repo at all. - return " -- modified" - def buildhistory_get_metadata_revs(d): # We want an easily machine-readable format here, so get_layers_branch_rev isn't quite what we want layers = (d.getVar("BBLAYERS") or "").split() medadata_revs = ["%-17s = %s:%s%s" % (os.path.basename(i), \ oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ oe.buildcfg.get_metadata_git_revision(i, None), \ - buildhistory_get_modified(i)) \ + oe.buildcfg.is_layer_modified(i)) \ for i in layers] return '\n'.join(medadata_revs) diff --git a/meta/classes/image-buildinfo.bbclass b/meta/classes/image-buildinfo.bbclass index 25ca8d8fe6b..c149660f31a 100644 --- a/meta/classes/image-buildinfo.bbclass +++ b/meta/classes/image-buildinfo.bbclass @@ -26,29 +26,13 @@ def image_buildinfo_outputvars(vars, d): ret += "%s = %s\n" % (var, value) return ret.rstrip('\n') -# Gets git branch's status (clean or dirty) -def get_layer_git_status(path): - import subprocess - try: - subprocess.check_output("""cd %s; export PSEUDO_UNLOAD=1; set -e; - git diff --quiet --no-ext-diff - git diff --quiet --no-ext-diff --cached""" % path, - shell=True, - stderr=subprocess.STDOUT) - return "" - except subprocess.CalledProcessError as ex: - # Silently treat errors as "modified", without checking for the - # (expected) return code 1 in a modified git repo. For example, we get - # output and a 129 return code when a layer isn't a git repo at all. - return "-- modified" - # Returns layer revisions along with their respective status def get_layer_revs(d): layers = (d.getVar("BBLAYERS") or "").split() medadata_revs = ["%-17s = %s:%s %s" % (os.path.basename(i), \ oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ oe.buildcfg.get_metadata_git_revision(i, None), \ - get_layer_git_status(i)) \ + oe.buildcfg.is_layer_modified(i)) \ for i in layers] return '\n'.join(medadata_revs) diff --git a/meta/lib/oe/buildcfg.py b/meta/lib/oe/buildcfg.py index a749fc53039..a7549f1e229 100644 --- a/meta/lib/oe/buildcfg.py +++ b/meta/lib/oe/buildcfg.py @@ -37,4 +37,17 @@ def get_metadata_git_revision(path, d): except bb.process.ExecutionError: rev = '' return rev.strip() - + +def is_layer_modified(path): + try: + subprocess.check_output("""cd %s; export PSEUDO_UNLOAD=1; set -e; + git diff --quiet --no-ext-diff + git diff --quiet --no-ext-diff --cached""" % path, + shell=True, + stderr=subprocess.STDOUT) + return "" + except subprocess.CalledProcessError as ex: + # Silently treat errors as "modified", without checking for the + # (expected) return code 1 in a modified git repo. For example, we get + # output and a 129 return code when a layer isn't a git repo at all. + return " -- modified" From patchwork Thu Jun 9 11:37:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 9078 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51ECFCCA486 for ; Thu, 9 Jun 2022 11:37:42 +0000 (UTC) Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by mx.groups.io with SMTP id smtpd.web12.11845.1654774657202701677 for ; Thu, 09 Jun 2022 04:37:37 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=KlwYDm1t; spf=pass (domain: linuxfoundation.org, ip: 209.85.128.53, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wm1-f53.google.com with SMTP id a10so9754865wmj.5 for ; Thu, 09 Jun 2022 04:37:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=PVgeyY7ty8DdDMk1kYRgja/R8gmuGFxNCIgegjm7Wko=; b=KlwYDm1ttiTaDOwUO7vN1X/Nmxq9rmCs8hPh4e803F8TCsSs8qJcO9WltBvbIRrlqt kt2JGQ0sVL9iWM6oSPQ1D0f8PphCu/mWzIkrCnEfM1hXXSjSrYcehmwaVZgB4Sh6SwUB Uxb/be57gJMKSODBJKJYJ3j5I/2eBQgU50G0U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PVgeyY7ty8DdDMk1kYRgja/R8gmuGFxNCIgegjm7Wko=; b=UyKKkuZrJYzWBFQA0G6FyouS/+fJnp1BtjCnG1Bp8tBGUwlcwplc3JkNawZI2Cd19g vk2IxVqFhLHT09wK1inAXVaj5ZbZNQ+l0slQSlsHq3DhlerH/Z4nuFq2asxP4nWu1YJy A6O+r4Gt5SJrtpoJ7NMXfN3++TK4RCKaRTkq2lj1R1DFPRiAPzcbnyG8tHposYkJu5tG 2d3V5dJ9bIbTKeryaj7TLeeUru2NpeuUep0cbmWVjGDdtq9RtwFhvS7jkiW9xqGc3JGD vs22izfFUSyNLivcOFdxxB/N/lsvZFzNL5F+Ss1iDz1rvz0yl7lwIjWDRr0qJ31xs8fm sZYQ== X-Gm-Message-State: AOAM532VU0obsNWLRUVyjAv5wLATcslkmwCIk8wZM1UjjQsHKHEW+pXT 8VYV6cBCjNd8EUPh/k4ufVdOICUrcPPhDQ== X-Google-Smtp-Source: ABdhPJwm1XSeMLhk6PdcHDDdR7sg4ayiIgqo3NSFcW7miWBdOt5ZFG+HtbMLbVy6jRb6AJsPde1pDw== X-Received: by 2002:a1c:4c12:0:b0:39c:6750:be17 with SMTP id z18-20020a1c4c12000000b0039c6750be17mr2968144wmf.21.1654774655305; Thu, 09 Jun 2022 04:37:35 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:2888:8172:672a:5175]) by smtp.gmail.com with ESMTPSA id o5-20020a05600c4fc500b0039c5a765388sm9843899wmq.28.2022.06.09.04.37.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jun 2022 04:37:34 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 3/5] buildcfg: Drop unused svn revision function Date: Thu, 9 Jun 2022 12:37:30 +0100 Message-Id: <20220609113732.43566-3-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> References: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 09 Jun 2022 11:37:42 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/166772 This isn't used anywhere and everyone is using git now, the functions are now hardcoded as such too. Drop this function. Signed-off-by: Richard Purdie --- meta/lib/oe/buildcfg.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/meta/lib/oe/buildcfg.py b/meta/lib/oe/buildcfg.py index a7549f1e229..364c40a2f02 100644 --- a/meta/lib/oe/buildcfg.py +++ b/meta/lib/oe/buildcfg.py @@ -13,17 +13,6 @@ def detect_branch(d): def get_scmbasepath(d): return os.path.join(d.getVar('COREBASE'), 'meta') -def get_metadata_svn_revision(path, d): - # This only works with older subversion. For newer versions - # this function will need to be fixed by someone interested - revision = "" - try: - with open("%s/.svn/entries" % path) as f: - revision = f.readlines()[3].strip() - except (IOError, IndexError): - pass - return revision - def get_metadata_git_branch(path, d): try: rev, _ = bb.process.run('git rev-parse --abbrev-ref HEAD', cwd=path) From patchwork Thu Jun 9 11:37:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 9077 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 431A2CCA481 for ; Thu, 9 Jun 2022 11:37:42 +0000 (UTC) Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by mx.groups.io with SMTP id smtpd.web08.12159.1654774658096656548 for ; Thu, 09 Jun 2022 04:37:38 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=Umok79cK; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.49, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f49.google.com with SMTP id p10so32004783wrg.12 for ; Thu, 09 Jun 2022 04:37:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=uLurBpkY2hBuBz9IrRrw63N0se8Z72QUdN92LjRuWQo=; b=Umok79cKznOf5DtVtPxQ5NImX/u9QmCcDVkzpblcghXV4IqbeY96aWj4bhjMmkxKQK 7zxGlupW3ZWMW2gkvgkTs38bEbLtzsjwR2H7k4gh1RW3nguB7IY4NHwWqv96vn15v3P+ YXlu3rDSE5EVod5UXQbJj95yAsNy1I/HO3ahQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uLurBpkY2hBuBz9IrRrw63N0se8Z72QUdN92LjRuWQo=; b=nzS7jVvKvovLToDomMm8XnK1gCuvP64lXttN0umEqZiM2AY3ozS2V8CMTKH+IVABkN eL7KwR1bjc3w1qaXnDV64jgmHG01cKXt1eGiIaM2NVQgVTip0Tw8HwEKFHRAc1mj42Hf FnGgtLQ5kwzQg+cjoUD3zJWOyCTk4B8N5a7/r7RrJSQPS5VM7uSXxWBvw3BQPtkOZs6x XvBFtWgm/BDSUu2RPfM0qpGayvTOUitkU/LygV0kS1Tel6IKWYX2/DfQ9rSfyzvepfTB xW+dcWzRsKV0ObtydI8j4yK9K3QOO35Cmf+wsJCv7IfkIDp3k8PTy89c4QIuvNZdKH5g fRog== X-Gm-Message-State: AOAM533U/rh1pC2BGOrnZWuFvhVotASAtnRrANVAKB0GY0gQre4pIQWa EE4vjeltQ/bVqwQw9OivV9wGLZpc0EfeGA== X-Google-Smtp-Source: ABdhPJwbGzEnerYgd8pkfpBFMEwFzujmgj9AezhcX/HLr6UgY8WXPVhINz9U+PAP35SBcX71x29Rdw== X-Received: by 2002:a5d:6a92:0:b0:210:3387:23ec with SMTP id s18-20020a5d6a92000000b00210338723ecmr37674359wru.102.1654774656273; Thu, 09 Jun 2022 04:37:36 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:2888:8172:672a:5175]) by smtp.gmail.com with ESMTPSA id o5-20020a05600c4fc500b0039c5a765388sm9843899wmq.28.2022.06.09.04.37.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jun 2022 04:37:35 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 4/5] base/buildhistory/image-buildinfo: Use common buildcfg function Date: Thu, 9 Jun 2022 12:37:31 +0100 Message-Id: <20220609113732.43566-4-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> References: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 09 Jun 2022 11:37:42 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/166773 Reduce code duplication to a common function in oe.buildcfg. Signed-off-by: Richard Purdie --- meta/classes/base.bbclass | 7 ++----- meta/classes/buildhistory.bbclass | 10 +++------- meta/classes/image-buildinfo.bbclass | 8 ++------ meta/lib/oe/buildcfg.py | 7 +++++++ 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index f59e95fef06..20968a50766 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -218,11 +218,8 @@ def get_source_date_epoch_value(d): return oe.reproducible.epochfile_read(d.getVar('SDE_FILE'), d) def get_layers_branch_rev(d): - layers = (d.getVar("BBLAYERS") or "").split() - layers_branch_rev = ["%-20s = \"%s:%s\"" % (os.path.basename(i), \ - oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ - oe.buildcfg.get_metadata_git_revision(i, None)) \ - for i in layers] + revisions = oe.buildcfg.get_layer_revisions(d) + layers_branch_rev = ["%-20s = \"%s:%s\"" % (r[1], r[2], r[3]) for r in revisions] i = len(layers_branch_rev)-1 p1 = layers_branch_rev[i].find("=") s1 = layers_branch_rev[i][p1:] diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index 6fffd471896..4ba9ec8f25d 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -742,13 +742,9 @@ def buildhistory_get_build_id(d): return('\n%s\n%s\n' % (statusheader, '\n'.join(statuslines))) def buildhistory_get_metadata_revs(d): - # We want an easily machine-readable format here, so get_layers_branch_rev isn't quite what we want - layers = (d.getVar("BBLAYERS") or "").split() - medadata_revs = ["%-17s = %s:%s%s" % (os.path.basename(i), \ - oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ - oe.buildcfg.get_metadata_git_revision(i, None), \ - oe.buildcfg.is_layer_modified(i)) \ - for i in layers] + # 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] 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 c149660f31a..d4a12b5e102 100644 --- a/meta/classes/image-buildinfo.bbclass +++ b/meta/classes/image-buildinfo.bbclass @@ -28,12 +28,8 @@ def image_buildinfo_outputvars(vars, d): # Returns layer revisions along with their respective status def get_layer_revs(d): - layers = (d.getVar("BBLAYERS") or "").split() - medadata_revs = ["%-17s = %s:%s %s" % (os.path.basename(i), \ - oe.buildcfg.get_metadata_git_branch(i, None).strip(), \ - oe.buildcfg.get_metadata_git_revision(i, None), \ - oe.buildcfg.is_layer_modified(i)) \ - for i in layers] + 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) def buildinfo_target(d): diff --git a/meta/lib/oe/buildcfg.py b/meta/lib/oe/buildcfg.py index 364c40a2f02..90f5e057153 100644 --- a/meta/lib/oe/buildcfg.py +++ b/meta/lib/oe/buildcfg.py @@ -40,3 +40,10 @@ def is_layer_modified(path): # (expected) return code 1 in a modified git repo. For example, we get # output and a 129 return code when a layer isn't a git repo at all. return " -- modified" + +def get_layer_revisions(d): + layers = (d.getVar("BBLAYERS") or "").split() + revisions = [] + for i in layers: + revisions.append((i, os.path.basename(i), get_metadata_git_branch(i, None).strip(), get_metadata_git_revision(i, None), is_layer_modified(i))) + return revisions From patchwork Thu Jun 9 11:37:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 9076 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F46ACCA483 for ; Thu, 9 Jun 2022 11:37:42 +0000 (UTC) Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by mx.groups.io with SMTP id smtpd.web09.12052.1654774659067645396 for ; Thu, 09 Jun 2022 04:37:39 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=Q8B1d2NE; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.47, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f47.google.com with SMTP id k19so31996550wrd.8 for ; Thu, 09 Jun 2022 04:37:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=5pnx8T9xRCuVOvbS1YTNAXaiv5KmCXR3B3MsugFnrHI=; b=Q8B1d2NEfIz+yjLgBOmfEPmxG30WmbK0zQJ7cJudAMIoXcnlLPcRTPZwKgcbWiYDTI W8LeQiS4zGCyT3lxTldh2Ln05aJ4Zlj1/3VJgEpe8ZFzQo9n17i1Va7Bb8mlttUSKqMH WB5hJ653Dw7GUuUYLAOVmVMcJRiLmIWvLL6Bs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5pnx8T9xRCuVOvbS1YTNAXaiv5KmCXR3B3MsugFnrHI=; b=crve5wGXVT0Yi3unSU05AY17SzULH80KpOrWrNpzUwPVHsCeQHT0vNtFG7KFIrHsLv nb2+IvBSxl8MjgqLgzicJ1zYHK/lM66D+9lTAg4rd0snAWwYC79v//NkWhtVsMlKvxQR I7zrNJ3noqs6j3IdRxYsRkZMVCK+QPQ6GKGTgudzxsPvlNUcsg1gRpNGBRIud8I4xjvN PBnK8lEqzhAatar4L/DS/IB2Pya+VT8J6ykDA2RSfoESY/jAVwD6yjSCTLbURca7I1yo 6zHGjiJGgXIJpjDVuht+7u+qgHOJ0SOM6Kk/Qie+loKztbX5zPMK+c40P3BchWJGXGGp NeZw== X-Gm-Message-State: AOAM532w4PX2SAqqaLcET49KIeL70NyJbtoRK8xKVIDgJHKRvmVJXluD GUt2bFleqJNS2yI939WUQoGJ9oAy5VBHcw== X-Google-Smtp-Source: ABdhPJytI0aQwvMsRltNCNWvKCIHWVQ048WLsyZDIk0NbECehyw3LX1BG3rSm0Oe+ouUlphh3QGJlg== X-Received: by 2002:a05:6000:1acd:b0:218:54c8:1690 with SMTP id i13-20020a0560001acd00b0021854c81690mr12238108wry.114.1654774657334; Thu, 09 Jun 2022 04:37:37 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:2888:8172:672a:5175]) by smtp.gmail.com with ESMTPSA id o5-20020a05600c4fc500b0039c5a765388sm9843899wmq.28.2022.06.09.04.37.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jun 2022 04:37:36 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 5/5] image-buildinfo: Improve and extend to SDK coverage too Date: Thu, 9 Jun 2022 12:37:32 +0100 Message-Id: <20220609113732.43566-5-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> References: <20220609113732.43566-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 09 Jun 2022 11:37:42 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/166774 Rename the default file from "build" to "buildinfo" since this is more obvious to anyone looking in an image. Add SDK_BUILDINFO_FILE and allow the same information to be written into SDK images. This will be useful for buildtools-tarball and uninative-tarball. Signed-off-by: Richard Purdie --- meta/classes/image-buildinfo.bbclass | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/meta/classes/image-buildinfo.bbclass b/meta/classes/image-buildinfo.bbclass index d4a12b5e102..ef790bb73b4 100644 --- a/meta/classes/image-buildinfo.bbclass +++ b/meta/classes/image-buildinfo.bbclass @@ -1,5 +1,5 @@ # -# Writes build information to target filesystem on /etc/build +# Writes build information to target filesystem on /etc/buildinfo # # Copyright (C) 2014 Intel Corporation # Author: Alejandro Enedino Hernandez Samaniego @@ -13,7 +13,8 @@ IMAGE_BUILDINFO_VARS ?= "DISTRO DISTRO_VERSION" # Desired location of the output file in the image. -IMAGE_BUILDINFO_FILE ??= "${sysconfdir}/build" +IMAGE_BUILDINFO_FILE ??= "${sysconfdir}/buildinfo" +SDK_BUILDINFO_FILE ??= "/buildinfo" # From buildhistory.bbclass def image_buildinfo_outputvars(vars, d): @@ -40,11 +41,12 @@ def buildinfo_target(d): vars = (d.getVar("IMAGE_BUILDINFO_VARS") or "") return image_buildinfo_outputvars(vars, d) -# Write build information to target filesystem -python buildinfo () { +python buildinfo() { if not d.getVar('IMAGE_BUILDINFO_FILE'): return - with open(d.expand('${IMAGE_ROOTFS}${IMAGE_BUILDINFO_FILE}'), 'w') as build: + destfile = d.expand('${BUILDINFODEST}${IMAGE_BUILDINFO_FILE}') + bb.utils.mkdirhier(os.path.dirname(destfile)) + with open(destfile, 'w') as build: build.writelines(( '''----------------------- Build Configuration: | @@ -62,4 +64,18 @@ Layer Revisions: | )) } -IMAGE_PREPROCESS_COMMAND += "buildinfo;" +# Write build information to target filesystem +python buildinfo_image () { + d.setVar("BUILDINFODEST", "${IMAGE_ROOTFS}") + bb.build.exec_func("buildinfo", d) +} + +python buildinfo_sdk () { + d.setVar("BUILDINFODEST", "${SDK_OUTPUT}/${SDKPATH}") + d.setVar("IMAGE_BUILDINFO_FILE", d.getVar("SDK_BUILDINFO_FILE")) + bb.build.exec_func("buildinfo", d) +} + +IMAGE_PREPROCESS_COMMAND += "buildinfo_image;" +POPULATE_SDK_PRE_TARGET_COMMAND += "buildinfo_sdk;" +