aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes/distrodata.bbclass
diff options
context:
space:
mode:
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"