summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorMike Looijmans <milo-software@users.sourceforge.net>2015-05-22 08:29:03 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-24 07:20:56 +0100
commitf03e108fb15aae76d4b6258658e6d540540214f2 (patch)
tree07637020cbce70184d2c8e5a8095bd7524143079 /bitbake
parent2db5dd7a262ada91da6f31da01cce7afdc136935 (diff)
downloadpoky-f03e108fb15aae76d4b6258658e6d540540214f2.tar.gz
bitbake: fetch2/__init__.py: Make get_srcrev output configurable
The idea here is to support package version numbering similar to gitpkgv in meta-openembedded. This commit is the first step towards such functionality. The original plan was to add a "get_pretty_srcrev" method to the fetcher, as per Richard's suggestion [1]. While writing this, I noticed that it would become a copy of get_srcrev with only two lines changed. So to create something more Pythonic than a boolean argument and conditionals around the calls to the fetcher's sortable_revision, I just made the method to be called on the fetcher an argument to the method. Defaulting to 'sortable_revision' prevents affecting existing code. Now if the git fetcher were to implement, say 'gitpkgv_revision' one could set the following in a recipe: PKGV="1.2+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" and this would yield the same result as gitpkgv's GITPKGV variable. See for the discussion leading to this change: [1] http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html (Bitbake rev: 2f1f4483493cc290f5d2c07f9906e90eaea2f4c1) Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/fetch2/__init__.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index 31d9f01c21..958469db62 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -720,7 +720,7 @@ def get_autorev(d):
720 d.setVar('__BB_DONT_CACHE', '1') 720 d.setVar('__BB_DONT_CACHE', '1')
721 return "AUTOINC" 721 return "AUTOINC"
722 722
723def get_srcrev(d): 723def get_srcrev(d, method_name='sortable_revision'):
724 """ 724 """
725 Return the revsion string, usually for use in the version string (PV) of the current package 725 Return the revsion string, usually for use in the version string (PV) of the current package
726 Most packages usually only have one SCM so we just pass on the call. 726 Most packages usually only have one SCM so we just pass on the call.
@@ -729,6 +729,9 @@ def get_srcrev(d):
729 729
730 The idea here is that we put the string "AUTOINC+" into return value if the revisions are not 730 The idea here is that we put the string "AUTOINC+" into return value if the revisions are not
731 incremental, other code is then responsible for turning that into an increasing value (if needed) 731 incremental, other code is then responsible for turning that into an increasing value (if needed)
732
733 A method_name can be supplied to retrieve an alternatively formatted revision from a fetcher, if
734 that fetcher provides a method with the given name and the same signature as sortable_revision.
732 """ 735 """
733 736
734 scms = [] 737 scms = []
@@ -742,7 +745,7 @@ def get_srcrev(d):
742 raise FetchError("SRCREV was used yet no valid SCM was found in SRC_URI") 745 raise FetchError("SRCREV was used yet no valid SCM was found in SRC_URI")
743 746
744 if len(scms) == 1 and len(urldata[scms[0]].names) == 1: 747 if len(scms) == 1 and len(urldata[scms[0]].names) == 1:
745 autoinc, rev = urldata[scms[0]].method.sortable_revision(urldata[scms[0]], d, urldata[scms[0]].names[0]) 748 autoinc, rev = getattr(urldata[scms[0]].method, method_name)(urldata[scms[0]], d, urldata[scms[0]].names[0])
746 if len(rev) > 10: 749 if len(rev) > 10:
747 rev = rev[:10] 750 rev = rev[:10]
748 if autoinc: 751 if autoinc:
@@ -760,7 +763,7 @@ def get_srcrev(d):
760 for scm in scms: 763 for scm in scms:
761 ud = urldata[scm] 764 ud = urldata[scm]
762 for name in ud.names: 765 for name in ud.names:
763 autoinc, rev = ud.method.sortable_revision(ud, d, name) 766 autoinc, rev = getattr(ud.method, method_name)(ud, d, name)
764 seenautoinc = seenautoinc or autoinc 767 seenautoinc = seenautoinc or autoinc
765 if len(rev) > 10: 768 if len(rev) > 10:
766 rev = rev[:10] 769 rev = rev[:10]