diff options
| author | Otavio Salvador <otavio@ossystems.com.br> | 2011-09-04 07:05:17 +0000 |
|---|---|---|
| committer | Koen Kooi <koen@dominion.thruhere.net> | 2011-09-04 09:18:55 +0200 |
| commit | 9a9bc6e47dbbab9f405299e4331f1f04f72a5697 (patch) | |
| tree | 171a553ef80087f3e03fee7dcfb5301276f8252c /meta-oe/classes/gitpkgv.bbclass | |
| parent | a67f2654a3e65f8edff9dffeb4e2561f4f4e73c3 (diff) | |
| download | meta-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.bbclass | 59 |
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): | |||
| 48 | return version | 48 | return version |
| 49 | 49 | ||
| 50 | def get_git_pkgv(d, use_tags): | 50 | def 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' | ||
