diff options
Diffstat (limited to 'meta/classes')
| -rw-r--r-- | meta/classes/distrodata.bbclass | 52 | 
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" | 
