euscan: add a quick /_rc/-rc/ hack
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
This commit is contained in:
		@@ -40,11 +40,10 @@ def scan_ftp(data, url, pattern):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return results
 | 
					    return results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def scan_directory_recursive(cpv, url, steps):
 | 
					def scan_directory_recursive(cp, ver, rev, url, steps):
 | 
				
			||||||
    if not steps:
 | 
					    if not steps:
 | 
				
			||||||
        return []
 | 
					        return []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cp, ver, rev = portage.pkgsplit(cpv)
 | 
					 | 
				
			||||||
    url += steps[0][0]
 | 
					    url += steps[0][0]
 | 
				
			||||||
    pattern = steps[0][1]
 | 
					    pattern = steps[0][1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -85,7 +84,7 @@ def scan_directory_recursive(cpv, url, steps):
 | 
				
			|||||||
        versions.append((path, version))
 | 
					        versions.append((path, version))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if steps:
 | 
					        if steps:
 | 
				
			||||||
            ret = scan_directory_recursive(cpv, path, steps)
 | 
					            ret = scan_directory_recursive(cp, ver, rev, path, steps)
 | 
				
			||||||
            versions.extend(ret)
 | 
					            versions.extend(ret)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return versions
 | 
					    return versions
 | 
				
			||||||
@@ -102,6 +101,13 @@ def scan(cpv, url):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    cp, ver, rev = portage.pkgsplit(cpv)
 | 
					    cp, ver, rev = portage.pkgsplit(cpv)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # 'Hack' for _beta/_rc versions where _ is used instead of -
 | 
				
			||||||
 | 
					    if ver not in resolved_url:
 | 
				
			||||||
 | 
					        newver = helpers.version_change_end_sep(ver)
 | 
				
			||||||
 | 
					        if newver and newver in resolved_url:
 | 
				
			||||||
 | 
					            euscan.output.einfo("Version: using %s instead of %s" % (newver, ver))
 | 
				
			||||||
 | 
					            ver = newver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template = helpers.template_from_url(resolved_url, ver)
 | 
					    template = helpers.template_from_url(resolved_url, ver)
 | 
				
			||||||
    if '${' not in template:
 | 
					    if '${' not in template:
 | 
				
			||||||
        euscan.output.einfo("Url doesn't seems to depend on version: %s not found in %s"
 | 
					        euscan.output.einfo("Url doesn't seems to depend on version: %s not found in %s"
 | 
				
			||||||
@@ -111,7 +117,7 @@ def scan(cpv, url):
 | 
				
			|||||||
        euscan.output.einfo("Scanning: %s" % template)
 | 
					        euscan.output.einfo("Scanning: %s" % template)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps = helpers.generate_scan_paths(template)
 | 
					    steps = helpers.generate_scan_paths(template)
 | 
				
			||||||
    return scan_directory_recursive(cpv, "", steps)
 | 
					    return scan_directory_recursive(cp, ver, rev, "", steps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def brute_force(cpv, url):
 | 
					def brute_force(cpv, url):
 | 
				
			||||||
    cp, ver, rev = portage.pkgsplit(cpv)
 | 
					    cp, ver, rev = portage.pkgsplit(cpv)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,8 @@ VERSION_CMP_PACKAGE_QUIRKS = {
 | 
				
			|||||||
    'sys-process/htop' : htop_vercmp
 | 
					    'sys-process/htop' : htop_vercmp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_v = r'((\d+)((\.\d+)*)([a-zA-Z]*?)(((-|_)(pre|p|beta|b|alpha|a|rc|r)\d*)*))'
 | 
					_v_end = '((-|_)(pre|p|beta|b|alpha|a|rc|r)\d*)'
 | 
				
			||||||
 | 
					_v = r'((\d+)((\.\d+)*)([a-zA-Z]*?)(' + _v_end + '*))'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def cast_int_components(version):
 | 
					def cast_int_components(version):
 | 
				
			||||||
    for i, obj in enumerate(version):
 | 
					    for i, obj in enumerate(version):
 | 
				
			||||||
@@ -91,6 +92,19 @@ def version_blacklisted(cp, version):
 | 
				
			|||||||
        euscan.output.einfo("%s is blacklisted by rule %s" % (cpv, bv))
 | 
					        euscan.output.einfo("%s is blacklisted by rule %s" % (cpv, bv))
 | 
				
			||||||
    return rule is not None
 | 
					    return rule is not None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def version_change_end_sep(version):
 | 
				
			||||||
 | 
					    match = re.match('.*' + _v_end, version)
 | 
				
			||||||
 | 
					    if not match:
 | 
				
			||||||
 | 
					        return None
 | 
				
			||||||
 | 
					    end = match.group(1)
 | 
				
			||||||
 | 
					    if end[0] == '_':
 | 
				
			||||||
 | 
					        newend = end.replace('_', '-')
 | 
				
			||||||
 | 
					    elif end[0] == '-':
 | 
				
			||||||
 | 
					        newend = end.replace('-', '_')
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        return None
 | 
				
			||||||
 | 
					    return version.replace(end, newend)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def version_filtered(cp, base, version):
 | 
					def version_filtered(cp, base, version):
 | 
				
			||||||
    if vercmp(cp, base, version) >= 0:
 | 
					    if vercmp(cp, base, version) >= 0:
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user