Improve how to determine METADATA_REVISION
PATCH 1/1 metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo
In reply to Peter KjellerstedtThe 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
@@ -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
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
Re: [PATCH 1/1] metadata_scm.bbclass: Do not assume ${COREBASE} is a Git repo
In reply to Peter KjellerstedtQuoted 19 lines · Peter Kjellerstedt
The functions
base_detect_revision()andbase_detect_branch()try to extract SCM meta information from the path returned bybase_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.Signed-off-by Peter Kjellerstedt <[email protected]>--- meta/classes/metadata_scm.bbclass | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)meta/classes/metadata_scm.bbclass +0
-0
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
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 bybase_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
@@ -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
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
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