Skip to contentSkip to conversation

Improve how to determine METADATA_REVISION

PATCH Superseded Peter Kjellerstedt 2 participants 6 messages Apr 26, 2016 – Apr 29, 2016

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#1 lore raw

PATCH 1/1 metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

In reply to Peter Kjellerstedt

The functions base_detect_revision() and base_detect_branch() try to extract SCM meta information from the path returned by base_get_scmbasepath(), which currently returns ${COREBASE}. However, making the assumption that ${COREBASE} contains SCM meta information can be false. It is true for Poky, but not necessarily other environments. A better option is to look for the SCM meta information based on the meta layer.

---
 meta/classes/metadata_scm.bbclass | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
meta/classes/metadata_scm.bbclass +2 -3
index 0f7f423..2e6fac2 100644
@@ -4,8 +4,7 @@ METADATA_REVISION ?= "${@base_detect_revision(d)}"
 def base_detect_revision(d):
     path = base_get_scmbasepath(d)
 
-    scms = [base_get_metadata_git_revision, \
-            base_get_metadata_svn_revision]
+    scms = [base_get_metadata_git_revision]
 
     for scm in scms:
         rev = scm(path, d)
@@ -27,7 +26,7 @@ def base_detect_branch(d):
     return "<unknown>"
 
 def base_get_scmbasepath(d):
-    return d.getVar( 'COREBASE', True)
+    return os.path.join(d.getVar('COREBASE', True), 'meta')
 
 def base_get_metadata_monotone_branch(path, d):
     monotone_branch = "<unknown>"
Signature · 1 line
2.1.0
#0 lore raw

cover Improve how to determine METADATA_REVISION

We noticed that METADATA_REVISION was always set to '<unknown>' in our builds. It turned out that this was because the code in metadata_scm.bbclass that sets it assumed that ${COREBASE} contains a repository. This may be true when working with Poky, but is not necessarily true for other setups. E.g., in our setup we clone Poky, OpenEmbedded and other repositories using the repo tool and then create symbolic links from the base directory to the parts that we want. Since ${COREBASE} is defined based on the path to the meta layer, it should be a better option to use ${COREBASE}/meta when looking for the SCM meta information.

Since this works as expected for Git but not SVN, I removed the option to call base_get_metadata_svn_revision() from base_detect_revision(). I doubt this should affect anyone (partly based on the comment in base_get_metadata_svn_revision()), but if this is not acceptable, it should be trivial to change the code so the meta directory is only used when looking for Git meta information. However, since it would require the introduction of two functions to wrap the Git functions, I refrained from this option until requested otherwise.

//Peter

The following changes since commit a9b503b268e94d311f892fa00c5d6bd9ffdb228e:

license.bbclass: make sure that image manifest dir exists (2016-04-22 16:28:57 +0100)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib pkj/metadata_scm
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=pkj/metadata_scm

Peter Kjellerstedt (1):
metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

 meta/classes/metadata_scm.bbclass | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
Signature · 1 line
2.1.0
#2 lore raw

Re: [PATCH 1/1] metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

In reply to Peter Kjellerstedt
Quoted 19 lines · Peter Kjellerstedt

The functions base_detect_revision() and base_detect_branch() try to extract SCM meta information from the path returned by base_get_scmbasepath(), which currently returns ${COREBASE}. However, making the assumption that ${COREBASE} contains SCM meta information can be false. It is true for Poky, but not necessarily other environments. A better option is to look for the SCM meta information based on the meta layer.

---
 meta/classes/metadata_scm.bbclass | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
meta/classes/metadata_scm.bbclass +0 -0
index 0f7f423..2e6fac2 100644

meta/classes/metadata_scm.bbclass METADATA_REVISION ?= "${@base_detect_revision(d)}" · line 8

Quoted 7 lines
meta/classes/metadata_scm.bbclass +1 -2
@@ -4,8 +4,7 @@ METADATA_REVISION ?= "${@base_detect_revision(d)}"
 def base_detect_revision(d):
     path = base_get_scmbasepath(d)
 
-    scms = [base_get_metadata_git_revision, \
-            base_get_metadata_svn_revision]
+    scms = [base_get_metadata_git_revision]
 

Was this change intended? Because it doesn't match up with the commit message, as far as I can see.

Signature · 5 lines
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics
#3 lore raw

Re: [PATCH 1/1] metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

Yes, it was intentional. I mentioned this in the cover letter. I can of course add something about it to the commit message as well if you like.

//Peter

From: [email protected] [mailto:[email protected]] On Behalf Of Christopher Larson
Sent: den 27 april 2016 22:27
To: Peter Kjellerstedt
Cc: Patches and discussions about the oe-core layer
Subject: Re: [OE-core] [PATCH 1/1] metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

On Tue, Apr 26, 2016 at 12:49 PM, Peter Kjellerstedt <[email protected]<mailto:[email protected]>> wrote:
The functions base_detect_revision() and base_detect_branch() try to
extract SCM meta information from the path returned by
base_get_scmbasepath(), which currently returns ${COREBASE}. However,
making the assumption that ${COREBASE} contains SCM meta information
can be false. It is true for Poky, but not necessarily other
environments. A better option is to look for the SCM meta information
based on the meta layer.

---
 meta/classes/metadata_scm.bbclass | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
meta/classes/metadata_scm.bbclass +1 -2
index 0f7f423..2e6fac2 100644
@@ -4,8 +4,7 @@ METADATA_REVISION ?= "${@base_detect_revision(d)}"
 def base_detect_revision(d):
     path = base_get_scmbasepath(d)
 
-    scms = [base_get_metadata_git_revision, \
-            base_get_metadata_svn_revision]
+    scms = [base_get_metadata_git_revision]
 

Was this change intended? Because it doesn't match up with the commit message, as far as I can see. --
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics

#4 lore raw

Re: [PATCH 1/1] metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

Quoted 3 lines · Peter Kjellerstedt

Yes, it was intentional. I mentioned this in the cover letter. I can of course add something about it to the commit message as well if you like.

That's what a commit message is for, yes, to describe why something is being changed. The cover letter isn't going to end up in the git history. If it hasn't yet been merged, I think it'd be nice to get it improved, so someone looking at the logs later understands the intention. Thanks.

Quoted 10 lines
meta/classes/metadata_scm.bbclass +1 -2
-    scms = [base_get_metadata_git_revision, \
-            base_get_metadata_svn_revision]
+    scms = [base_get_metadata_git_revision]

Was this change intended? Because it doesn't match up with the commit message, as far as I can see.

Signature · 5 lines
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics
#5 lore raw

Re: [PATCH 1/1] metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

I have sent an updated patch now with the commit message amended.

//Peter

From: [email protected] [mailto:[email protected]] On Behalf Of Christopher Larson
Sent: den 28 april 2016 18:11
To: Peter Kjellerstedt
Cc: Patches and discussions about the oe-core layer
Subject: Re: [OE-core] [PATCH 1/1] metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo

On Thu, Apr 28, 2016 at 7:34 AM, Peter Kjellerstedt <[email protected]<mailto:[email protected]>> wrote:
Yes, it was intentional. I mentioned this in the cover letter. I can of course add something about it to the commit message as well if you like.

That's what a commit message is for, yes, to describe why something is being changed. The cover letter isn't going to end up in the git history. If it hasn't yet been merged, I think it'd be nice to get it improved, so someone looking at the logs later understands the intention. Thanks.

- scms = [base_get_metadata_git_revision, \
- base_get_metadata_svn_revision]
+ scms = [base_get_metadata_git_revision]

Was this change intended? Because it doesn't match up with the commit message, as far as I can see. --
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics