diff options
| author | Frans Meulenbroeks <fransmeulenbroeks@gmail.com> | 2009-10-26 12:19:54 +0100 |
|---|---|---|
| committer | Frans Meulenbroeks <fransmeulenbroeks@gmail.com> | 2009-10-26 12:19:54 +0100 |
| commit | 4882a87cc59eb6c984a4b95507c4f01fed2f6079 (patch) | |
| tree | d4e13c32297caacf790ea68ba97d56977dd71716 /classes/gitver.bbclass | |
| parent | 8afa9e311db005dc86f23fb0fa6c89b57f7bf474 (diff) | |
| parent | dba8dec4093dc68610b762c8c7ac4e38c31cc8f9 (diff) | |
Merge branch 'org.openembedded.dev' of git.openembedded.org:openembedded into org.openembedded.dev
Diffstat (limited to 'classes/gitver.bbclass')
| -rw-r--r-- | classes/gitver.bbclass | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/classes/gitver.bbclass b/classes/gitver.bbclass index 92c053ae24..5b4ba8d1e1 100644 --- a/classes/gitver.bbclass +++ b/classes/gitver.bbclass @@ -8,20 +8,14 @@ GITVER = "${@get_git_pv('${S}', d)}" -def gitver_mark_dependency(d): - from bb.data import expand - from bb.parse import mark_dependency - from os.path import abspath - - fn = abspath(expand("${S}/.git/HEAD", d)) - mark_dependency(d, fn) - def get_git_pv(path, d, tagadjust=None): from subprocess import Popen, PIPE - from os.path import join + import os from bb import error + from bb.parse import mark_dependency - env = {"GIT_DIR": join(d.getVar("S", True), ".git")} + gitdir = os.path.abspath(os.path.join(d.getVar("S", True), ".git")) + env = { "GIT_DIR": gitdir } def popen(cmd, **kwargs): kwargs["stderr"] = PIPE @@ -39,7 +33,23 @@ def get_git_pv(path, d, tagadjust=None): return return stdout.rstrip() - gitver_mark_dependency(d) + # Force the recipe to be reparsed so the version gets bumped + # if the active branch is switched, or if the branch changes. + mark_dependency(d, os.path.join(gitdir, "HEAD")) + + ref = popen(["git", "symbolic-ref", "HEAD"]) + reffile = os.path.join(gitdir, ref) + if ref and os.path.exists(reffile): + mark_dependency(d, reffile) + else: + # The ref might be hidden in packed-refs. Force a reparse if anything + # in the working copy changes. + mark_dependency(d, os.path.join(gitdir, "index")) + + # Catch new tags. + tagdir = os.path.join(gitdir, "refs", "tags") + if os.path.exists(tagdir): + mark_dependency(d, tagdir) ver = popen(["git", "describe", "--tags"], cwd=path) if not ver: |
