Re: [OE-core] [PATCH 1/5] classes/buildcfg: Move git/layer revision code into new OE module buildcfg

2022-06-10 Thread Richard Purdie
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

2022-06-10 Thread Luca Ceresoli via lists.openembedded.org
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

2022-06-09 Thread Richard Purdie
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