aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/classes
diff options
context:
space:
mode:
authorOtavio Salvador <otavio@ossystems.com.br>2011-09-04 07:05:17 +0000
committerKoen Kooi <koen@dominion.thruhere.net>2011-09-04 09:18:55 +0200
commit9a9bc6e47dbbab9f405299e4331f1f04f72a5697 (patch)
tree171a553ef80087f3e03fee7dcfb5301276f8252c /meta-oe/classes
parenta67f2654a3e65f8edff9dffeb4e2561f4f4e73c3 (diff)
downloadmeta-openembedded-9a9bc6e47dbbab9f405299e4331f1f04f72a5697.tar.gz
gitpkgv: add support SRCREV_FORMAT
In case of multiple GIT repositories are used, SRCREV_FORMAT will be respected while filling it with the proper GIT information to each revision. This new feature needed heavy changes in the code so basically it was a rewrote version that keeps compatibility with previous usage. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Diffstat (limited to 'meta-oe/classes')
-rw-r--r--meta-oe/classes/gitpkgv.bbclass59
1 files changed, 35 insertions, 24 deletions
diff --git a/meta-oe/classes/gitpkgv.bbclass b/meta-oe/classes/gitpkgv.bbclass
index bedceb9d6e..238b0d2ea3 100644
--- a/meta-oe/classes/gitpkgv.bbclass
+++ b/meta-oe/classes/gitpkgv.bbclass
@@ -48,37 +48,48 @@ def gitpkgv_drop_tag_prefix(version):
return version
def get_git_pkgv(d, use_tags):
- import os
- import bb
+ import os
+ import bb
- urls = bb.data.getVar('SRC_URI', d, 1).split()
+ src_uri = bb.data.getVar('SRC_URI', d, 1).split()
+ fetcher = bb.fetch2.Fetch(src_uri, d)
+ ud = fetcher.ud
- for url in urls:
- (type, host, path, user, pswd, parm) = bb.decodeurl(bb.data.expand(url, d))
- if type in ['git']:
+ #
+ # If SRCREV_FORMAT is set respect it for tags
+ #
+ format = bb.data.getVar('SRCREV_FORMAT', d, True)
+ if not format:
+ format = 'default'
- gitsrcname = '%s%s' % (host, path.replace('/', '.'))
- repodir = os.path.join(bb.data.expand('${GITDIR}', d), gitsrcname)
- if not os.path.exists(repodir):
- return None
+ found = False
+ for url in ud.values():
+ if url.type == 'git':
+ for name, rev in url.revisions.items():
+ if not os.path.exists(url.localpath):
+ return None
- rev = bb.fetch.get_srcrev(d).split('+')[1]
+ found = True
- cwd = os.getcwd()
- os.chdir(repodir)
+ cwd = os.getcwd()
+ os.chdir(url.localpath)
- commits = bb.fetch.runfetchcmd("git rev-list %s -- 2> /dev/null | wc -l" % rev, d, quiet=True).strip()
+ commits = bb.fetch2.runfetchcmd("git rev-list %s -- 2> /dev/null | wc -l" % rev, d, quiet=True).strip()
- if use_tags:
- try:
- ver = gitpkgv_drop_tag_prefix(bb.fetch.runfetchcmd("git describe %s 2>/dev/null" % rev, d, quiet=True).strip())
- except Exception:
- ver = "0.0-%s-g%s" % (commits, rev[:7])
- else:
- ver = "%s+%s" % (commits, rev[:7])
+ if use_tags:
+ try:
+ output = bb.fetch2.runfetchcmd("git describe %s 2>/dev/null" % rev, d, quiet=True).strip()
+ ver = gitpkgv_drop_tag_prefix(output)
+ except Exception:
+ ver = "0.0-%s-g%s" % (commits, rev[:7])
+ else:
+ ver = "%s+%s" % (commits, rev[:7])
- os.chdir(cwd)
+ os.chdir(cwd)
- return ver
+ format = format.replace(name, ver)
- return "0+0"
+ if found:
+ return format
+
+ return '0+0'