summaryrefslogtreecommitdiffstats
path: root/meta-oe/classes/gitpkgv.bbclass
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/gitpkgv.bbclass
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/gitpkgv.bbclass')
-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 bedceb9d6..238b0d2ea 100644
--- a/meta-oe/classes/gitpkgv.bbclass
+++ b/meta-oe/classes/gitpkgv.bbclass
@@ -48,37 +48,48 @@ def gitpkgv_drop_tag_prefix(version):
48 return version 48 return version
49 49
50def get_git_pkgv(d, use_tags): 50def get_git_pkgv(d, use_tags):
51 import os 51 import os
52 import bb 52 import bb
53 53
54 urls = bb.data.getVar('SRC_URI', d, 1).split() 54 src_uri = bb.data.getVar('SRC_URI', d, 1).split()
55 fetcher = bb.fetch2.Fetch(src_uri, d)
56 ud = fetcher.ud
55 57
56 for url in urls: 58 #
57 (type, host, path, user, pswd, parm) = bb.decodeurl(bb.data.expand(url, d)) 59 # If SRCREV_FORMAT is set respect it for tags
58 if type in ['git']: 60 #
61 format = bb.data.getVar('SRCREV_FORMAT', d, True)
62 if not format:
63 format = 'default'
59 64
60 gitsrcname = '%s%s' % (host, path.replace('/', '.')) 65 found = False
61 repodir = os.path.join(bb.data.expand('${GITDIR}', d), gitsrcname) 66 for url in ud.values():
62 if not os.path.exists(repodir): 67 if url.type == 'git':
63 return None 68 for name, rev in url.revisions.items():
69 if not os.path.exists(url.localpath):
70 return None
64 71
65 rev = bb.fetch.get_srcrev(d).split('+')[1] 72 found = True
66 73
67 cwd = os.getcwd() 74 cwd = os.getcwd()
68 os.chdir(repodir) 75 os.chdir(url.localpath)
69 76
70 commits = bb.fetch.runfetchcmd("git rev-list %s -- 2> /dev/null | wc -l" % rev, d, quiet=True).strip() 77 commits = bb.fetch2.runfetchcmd("git rev-list %s -- 2> /dev/null | wc -l" % rev, d, quiet=True).strip()
71 78
72 if use_tags: 79 if use_tags:
73 try: 80 try:
74 ver = gitpkgv_drop_tag_prefix(bb.fetch.runfetchcmd("git describe %s 2>/dev/null" % rev, d, quiet=True).strip()) 81 output = bb.fetch2.runfetchcmd("git describe %s 2>/dev/null" % rev, d, quiet=True).strip()
75 except Exception: 82 ver = gitpkgv_drop_tag_prefix(output)
76 ver = "0.0-%s-g%s" % (commits, rev[:7]) 83 except Exception:
77 else: 84 ver = "0.0-%s-g%s" % (commits, rev[:7])
78 ver = "%s+%s" % (commits, rev[:7]) 85 else:
86 ver = "%s+%s" % (commits, rev[:7])
79 87
80 os.chdir(cwd) 88 os.chdir(cwd)
81 89
82 return ver 90 format = format.replace(name, ver)
83 91
84 return "0+0" 92 if found:
93 return format
94
95 return '0+0'