diff options
| -rw-r--r-- | meta/classes/distrodata.bbclass | 79 |
1 files changed, 51 insertions, 28 deletions
diff --git a/meta/classes/distrodata.bbclass b/meta/classes/distrodata.bbclass index be95b1ce38..204612c378 100644 --- a/meta/classes/distrodata.bbclass +++ b/meta/classes/distrodata.bbclass | |||
| @@ -663,15 +663,25 @@ python do_checkpkg() { | |||
| 663 | gitproto = parm['protocol'] | 663 | gitproto = parm['protocol'] |
| 664 | else: | 664 | else: |
| 665 | gitproto = "git" | 665 | gitproto = "git" |
| 666 | gitcmd = "git ls-remote %s://%s%s%s *tag* 2>&1" % (gitproto, gituser, host, path) | 666 | |
| 667 | # Get all tags and HEAD | ||
| 668 | if d.getVar('GIT_REGEX', True): | ||
| 669 | gitcmd = "git ls-remote %s://%s%s%s %s 2>&1" % (gitproto, gituser, host, path, d.getVar('GIT_REGEX', True)) | ||
| 670 | else: | ||
| 671 | gitcmd = "git ls-remote %s://%s%s%s *tag* 2>&1" % (gitproto, gituser, host, path) | ||
| 667 | gitcmd2 = "git ls-remote %s://%s%s%s HEAD 2>&1" % (gitproto, gituser, host, path) | 672 | gitcmd2 = "git ls-remote %s://%s%s%s HEAD 2>&1" % (gitproto, gituser, host, path) |
| 673 | |||
| 668 | tmp = os.popen(gitcmd).read() | 674 | tmp = os.popen(gitcmd).read() |
| 675 | if 'unable to connect' in tmp: | ||
| 676 | tmp = None | ||
| 669 | tmp2 = os.popen(gitcmd2).read() | 677 | tmp2 = os.popen(gitcmd2).read() |
| 670 | #This is for those repo have tag like: refs/tags/1.2.2 | 678 | if 'unable to connect' in tmp2: |
| 679 | tmp2 = None | ||
| 680 | #This is for those repos have tag like: refs/tags/1.2.2 | ||
| 681 | phash = pversion.rsplit("+")[-1] | ||
| 671 | if tmp: | 682 | if tmp: |
| 672 | tmpline = tmp.split("\n") | 683 | tmpline = tmp.split("\n") |
| 673 | verflag = 0 | 684 | verflag = 0 |
| 674 | phash = tmpline[0].rsplit("\t")[0] | ||
| 675 | pupver = pversion | 685 | pupver = pversion |
| 676 | for line in tmpline: | 686 | for line in tmpline: |
| 677 | if len(line)==0: | 687 | if len(line)==0: |
| @@ -681,46 +691,52 @@ python do_checkpkg() { | |||
| 681 | if upstr_regex: | 691 | if upstr_regex: |
| 682 | puptag = re.search(upstr_regex, puptag) | 692 | puptag = re.search(upstr_regex, puptag) |
| 683 | else: | 693 | else: |
| 684 | puptag = re.search("([0-9][\.|_]?)+", puptag) | 694 | puptag = re.search("(?P<pver>([0-9][\.|_]?)+)", puptag) |
| 685 | if puptag == None: | 695 | if puptag == None: |
| 686 | continue; | 696 | continue |
| 687 | puptag = puptag.group() | 697 | puptag = puptag.group('pver') |
| 688 | puptag = re.sub("_",".",puptag) | 698 | puptag = re.sub("_",".",puptag) |
| 689 | plocaltag = pupver.split("+git")[0] | 699 | plocaltag = pupver.split("+git")[0] |
| 690 | if "git" in plocaltag: | 700 | if "git" in plocaltag: |
| 691 | plocaltag = plocaltag.split("-")[0] | 701 | plocaltag = plocaltag.split("-")[0] |
| 692 | result = bb.utils.vercmp(("0", puptag, ""), ("0", plocaltag, "")) | 702 | result = bb.utils.vercmp(("0", puptag, ""), ("0", plocaltag, "")) |
| 703 | |||
| 693 | if result > 0: | 704 | if result > 0: |
| 694 | verflag = 1 | 705 | verflag = 1 |
| 695 | pstatus = "UPDATE" | 706 | pupver = puptag |
| 696 | pupver = puptag | ||
| 697 | phash = line.split("\t")[0] | ||
| 698 | elif verflag == 0 : | 707 | elif verflag == 0 : |
| 699 | pupver = plocaltag | 708 | pupver = plocaltag |
| 700 | pstatus = "MATCH" | ||
| 701 | #This is for those no tag repo | 709 | #This is for those no tag repo |
| 702 | elif tmp2: | 710 | elif tmp2: |
| 703 | pupver = tmp2.split("\t")[0] | 711 | pupver = pversion.rsplit("+")[0] |
| 704 | phash = pupver | 712 | phash = pupver |
| 705 | if pupver in pversion: | ||
| 706 | pstatus = "MATCH" | ||
| 707 | else: | ||
| 708 | pstatus = "UPDATE" | ||
| 709 | else: | 713 | else: |
| 710 | pstatus = "ErrGitAccess" | 714 | pstatus = "ErrGitAccess" |
| 711 | 715 | if not ('ErrGitAccess' in pstatus): | |
| 712 | tmp3 = re.search('(?P<git_ver>(\d+[\.-]?)+)(?P<git_prefix>(\+git[r|\-|]?)AUTOINC\+)(?P<head_md5>(.+))', pversion) | 716 | |
| 713 | if tmp3: | 717 | latest_head = tmp2.rsplit("\t")[0][:7] |
| 714 | pversion = tmp3.group('git_ver') + tmp3.group('git_prefix') + tmp3.group('head_md5')[:7] | 718 | tmp3 = re.search('(?P<git_ver>(\d+[\.-]?)+)(?P<git_prefix>(\+git[r|\-|]?)AUTOINC\+)(?P<head_md5>([\w|_]+))', pversion) |
| 715 | git_prefix = tmp3.group('git_prefix') | 719 | tmp4 = re.search('(?P<git_ver>(\d+[\.-]?)+)(?P<git_prefix>(\+git[r|\-|]?)AUTOINC\+)(?P<head_md5>([\w|_]+))', pupver) |
| 716 | if not (git_prefix in pupver): | 720 | if not tmp4: |
| 717 | if len(pupver) < 40: | 721 | tmp4 = re.search('(?P<git_ver>(\d+[\.-]?)+)', pupver) |
| 718 | """This is not the HEAD of the repository""" | 722 | |
| 719 | pupver = pupver + tmp3.group('git_prefix') + phash[:7] | 723 | if tmp3: |
| 724 | # Get status of the package - MATCH/UPDATE | ||
| 725 | result = bb.utils.vercmp(("0", tmp3.group('git_ver'), ""), ("0",tmp3.group('git_ver') , "")) | ||
| 726 | # Get the latest tag | ||
| 727 | pstatus = 'MATCH' | ||
| 728 | if result < 0: | ||
| 729 | latest_pv = tmp3.group('git_ver') | ||
| 720 | else: | 730 | else: |
| 721 | """This is the HEAD of the repository""" | 731 | latest_pv = pupver |
| 722 | pupver = tmp3.group('git_ver') + tmp3.group('git_prefix') + phash[:7] | 732 | if not(tmp3.group('head_md5')[:7] in latest_head) or not(latest_head in tmp3.group('head_md5')[:7]): |
| 733 | pstatus = 'UPDATE' | ||
| 723 | 734 | ||
| 735 | git_prefix = tmp3.group('git_prefix') | ||
| 736 | pupver = latest_pv + tmp3.group('git_prefix') + latest_head | ||
| 737 | else: | ||
| 738 | if not tmp3: | ||
| 739 | bb.plain("#DEBUG# Current version (%s) doesn't match the usual pattern" %pversion) | ||
| 724 | elif type == 'svn': | 740 | elif type == 'svn': |
| 725 | options = [] | 741 | options = [] |
| 726 | if user: | 742 | if user: |
| @@ -750,6 +766,13 @@ python do_checkpkg() { | |||
| 750 | 766 | ||
| 751 | if re.match("Err", pstatus): | 767 | if re.match("Err", pstatus): |
| 752 | pstatus = "ErrSvnAccess" | 768 | pstatus = "ErrSvnAccess" |
| 769 | |||
| 770 | if pstatus != "ErrSvnAccess": | ||
| 771 | tag = pversion.rsplit("+svn")[0] | ||
| 772 | svn_prefix = re.search('(\+svn[r|\-]?)', pversion) | ||
| 773 | if tag and svn_prefix: | ||
| 774 | pupver = tag + svn_prefix.group() + pupver | ||
| 775 | |||
| 753 | elif type == 'cvs': | 776 | elif type == 'cvs': |
| 754 | pupver = "HEAD" | 777 | pupver = "HEAD" |
| 755 | pstatus = "UPDATE" | 778 | pstatus = "UPDATE" |
