Re: [OE-core] [PATCH 1/5] classes/buildcfg: Move git/layer revision code into new OE module buildcfg
On Fri, 2022-06-10 at 16:14 +0200, Luca Ceresoli wrote: > Hello Richard, > > On Thu, 9 Jun 2022 12:37:28 +0100 > "Richard Purdie" wrote: > > > 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. > > s/sesne/sense/ > > > > > 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) > > This causes failures because there still a user of base_detect_branch() > in meta/classes/report-error.bbclass > > NameError: name 'base_detect_branch' is not defined > > https://autobuilder.yoctoproject.org/typhoon/#/builders/113/builds/2527/steps/13/logs/stdio You'
Re: [OE-core] [PATCH 1/5] classes/buildcfg: Move git/layer revision code into new OE module buildcfg
Hello Richard, On Thu, 9 Jun 2022 12:37:28 +0100 "Richard Purdie" wrote: > 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. s/sesne/sense/ > > 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) This causes failures because there still a user of base_detect_branch() in meta/classes/report-error.bbclass NameError: name 'base_detect_branch' is not defined https://autobuilder.yoctoproject.org/typhoon/#/builders/113/builds/2527/steps/13/logs/stdio -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#166806): https://lists.openembedded.org/g/openembedded-core/message/166806 Mute This Topic: https://lists.ope
[OE-core] [PATCH 1/5] classes/buildcfg: Move git/layer revision code into new OE module buildcfg
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', cw