aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes/distrodata.bbclass
diff options
context:
space:
mode:
authorMei Lei <lei.mei@intel.com>2011-03-04 17:17:05 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-03-04 22:26:35 +0000
commit8af386867081791aa5ccc6eaf56f5532d81025a8 (patch)
treef7138722c4a6c3cf2145226f7a50d2db3f5e95cf /meta/classes/distrodata.bbclass
parent4e1ba86c5a6c51ed1186c2778661c006f121ce70 (diff)
downloadopenembedded-core-contrib-8af386867081791aa5ccc6eaf56f5532d81025a8.tar.gz
distrodata.bbclass: Get git repo tag information
For those recipes which use git repo and have tag information, we can use tag to trace the version change. For other no tag recipes, we still use their commit checksum to trace their version change. (From OE-Core rev: 30343a72b89167b46ff4cc33be6ada2fd4b13a59) Signed-off-by: Mei Lei <lei.mei@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/distrodata.bbclass')
-rw-r--r--meta/classes/distrodata.bbclass52
1 files changed, 43 insertions, 9 deletions
diff --git a/meta/classes/distrodata.bbclass b/meta/classes/distrodata.bbclass
index d84b306226..e2cc8fa049 100644
--- a/meta/classes/distrodata.bbclass
+++ b/meta/classes/distrodata.bbclass
@@ -347,7 +347,6 @@ python do_checkpkg() {
f = tempfile.NamedTemporaryFile(delete=False, prefix="%s-1-" % pn)
status = internal_fetch_wget(url, d, f)
fhtml = f.read()
-
if status == "SUCC" and len(fhtml):
newver = parse_inter(curver)
@@ -436,6 +435,10 @@ python do_checkpkg() {
else:
"""newver still contains a full package name string"""
status = re.search("(\d+[\.\-_])*(\d+[0-9a-zA-Z]*)", newver[1]).group()
+ if "_" in status:
+ status = re.sub("_",".",status)
+ elif "-" in status:
+ status = re.sub("-",".",status)
elif not len(fhtml):
status = "ErrHostNoDir"
@@ -531,6 +534,12 @@ python do_checkpkg() {
alturi = bb.encodeurl([type, host, altpath, user, pswd, {}])
newver = check_new_version(alturi, curname, d)
+ while(newver == "ErrHostNoDir"):
+ if alturi == "/download":
+ break
+ else:
+ alturi = "/".join(alturi.split("/")[0:-2]) + "/download"
+ newver = check_new_version(alturi, curname, d)
if not re.match("Err", newver):
pupver = newver
if pupver != pcurver:
@@ -550,13 +559,38 @@ python do_checkpkg() {
gitproto = parm['protocol']
else:
gitproto = "rsync"
-
- gitcmd = "git ls-remote %s://%s%s%s HEAD 2>&1" % (gitproto, gituser, host, path)
- print gitcmd
- ver = os.popen(gitcmd).read()
- if ver and re.search("HEAD", ver):
- pupver = ver.split("\t")[0]
- if pcurver == pupver:
+ gitcmd = "git ls-remote %s://%s%s%s *tag* 2>&1" % (gitproto, gituser, host, path)
+ gitcmd2 = "git ls-remote %s://%s%s%s HEAD 2>&1" % (gitproto, gituser, host, path)
+ tmp = os.popen(gitcmd).read()
+ tmp2 = os.popen(gitcmd2).read()
+ #This is for those repo have tag like: refs/tags/1.2.2
+ if tmp:
+ tmpline = tmp.split("\n")
+ verflag = 0
+ for line in tmpline:
+ if len(line)==0:
+ break;
+ puptag = line.split("/")[-1]
+ puptag = re.search("[0-9][0-9|\.|_]+[0-9]", puptag)
+ if puptag == None:
+ continue;
+ puptag = puptag.group()
+ puptag = re.sub("_",".",puptag)
+ plocaltag = pversion.split("+")[0]
+ if "git" in plocaltag:
+ plocaltag = plocaltag.split("-")[0]
+ result = bb.utils.vercmp(("0", puptag, ""), ("0", plocaltag, ""))
+ if result > 0:
+ verflag = 1
+ pstatus = "UPADTE"
+ pupver = puptag
+ elif verflag == 0 :
+ pupver = plocaltag
+ pstatus = "MATCH"
+ #This is for those no tag repo
+ elif tmp2:
+ pupver = tmp2.split("\t")[0]
+ if pupver in pversion:
pstatus = "MATCH"
else:
pstatus = "UPDATE"
@@ -580,7 +614,7 @@ python do_checkpkg() {
for line in svninfo.split("\n"):
if re.search("^Last Changed Rev:", line):
pupver = line.split(" ")[-1]
- if pcurver == pupver:
+ if pupver in pversion:
pstatus = "MATCH"
else:
pstatus = "UPDATE"