euscanwww: big commit
- fix commands - import DataTables - initial category view Signed-off-by: Corentin Chary <corentincj@iksaif.net>
This commit is contained in:
59
euscan
59
euscan
@ -45,6 +45,8 @@ from gentoolkit.eclean.search import (port_settings)
|
||||
|
||||
QUERY_OPTS = {"include_masked": True}
|
||||
|
||||
SCANDIR_BLACKLIST_URLS = ['mirror://rubygems/(.*)', 'mirror://gentoo/(.*)']
|
||||
|
||||
BRUTEFORCE_BLACKLIST_PACKAGES = ['dev-util/patchelf', 'net-zope/plonepopoll']
|
||||
BRUTEFORCE_BLACKLIST_URLS = ['http://www.dockapps.org/download.php/id/(.*)']
|
||||
|
||||
@ -182,7 +184,9 @@ def tryurl(fileurl, output):
|
||||
else:
|
||||
result = True
|
||||
except urllib2.URLError:
|
||||
retult = False
|
||||
result = False
|
||||
except IOError:
|
||||
result = False
|
||||
|
||||
output.eend(errno.ENOENT if not result else 0)
|
||||
|
||||
@ -242,6 +246,8 @@ def scan_directory_recursive(url, steps, vmin, vmax, output):
|
||||
fp = urllib2.urlopen(url, None, 5)
|
||||
except urllib2.URLError:
|
||||
return []
|
||||
except IOError:
|
||||
return []
|
||||
|
||||
data = fp.read()
|
||||
|
||||
@ -302,7 +308,7 @@ def scan_directory(cpv, fileurl, options, output, limit=None):
|
||||
|
||||
template = template_from_url(fileurl, ver)
|
||||
if '${' not in template:
|
||||
output.ewarn("Url doesn't seems to depend on version: %s not found in %s"
|
||||
output.einfo("Url doesn't seems to depend on version: %s not found in %s"
|
||||
% (ver, fileurl))
|
||||
return []
|
||||
else:
|
||||
@ -321,12 +327,12 @@ def brute_force(cpv, fileurl, options, output, limit=None):
|
||||
|
||||
for bp in BRUTEFORCE_BLACKLIST_PACKAGES:
|
||||
if re.match(bp, catpkg):
|
||||
output.ewarn("%s is blacklisted by rule %s" % (catpkg, bp))
|
||||
output.einfo("%s is blacklisted by rule %s" % (catpkg, bp))
|
||||
return []
|
||||
|
||||
for bp in BRUTEFORCE_BLACKLIST_URLS:
|
||||
if re.match(bp, fileurl):
|
||||
output.ewarn("%s is blacklisted by rule %s" % (catpkg, bp))
|
||||
output.einfo("%s is blacklisted by rule %s" % (catpkg, bp))
|
||||
return []
|
||||
|
||||
components = split_version(ver)
|
||||
@ -335,13 +341,13 @@ def brute_force(cpv, fileurl, options, output, limit=None):
|
||||
output.einfo("Generating version from " + ver)
|
||||
|
||||
if not versions:
|
||||
output.ewarn("Can't generate new versions from " + ver)
|
||||
output.einfo("Can't generate new versions from " + ver)
|
||||
return []
|
||||
|
||||
template = template_from_url(fileurl, ver)
|
||||
|
||||
if '${PV}' not in template:
|
||||
output.ewarn("Url doesn't seems to depend on full version: %s not found in %s"
|
||||
output.einfo("Url doesn't seems to depend on full version: %s not found in %s"
|
||||
% (ver, fileurl))
|
||||
return []
|
||||
else:
|
||||
@ -384,6 +390,8 @@ def brute_force(cpv, fileurl, options, output, limit=None):
|
||||
|
||||
|
||||
def parseMirror(uri, output):
|
||||
from random import shuffle
|
||||
|
||||
mirrors = portage.settings.thirdpartymirrors()
|
||||
|
||||
if not uri.startswith("mirror://"):
|
||||
@ -391,17 +399,19 @@ def parseMirror(uri, output):
|
||||
|
||||
eidx = uri.find("/", 9)
|
||||
if eidx == -1:
|
||||
output.ewarn("Invalid mirror definition in SRC_URI:\n")
|
||||
output.ewarn(" %s\n" % (uri))
|
||||
output.einfo("Invalid mirror definition in SRC_URI:\n")
|
||||
output.einfo(" %s\n" % (uri))
|
||||
return None
|
||||
|
||||
mirrorname = uri[9:eidx]
|
||||
path = uri[eidx+1:]
|
||||
|
||||
if mirrorname in mirrors:
|
||||
uri = mirrors[mirrorname][0].strip("/") + "/" + path
|
||||
mirrors = mirrors[mirrorname]
|
||||
shuffle(mirrors)
|
||||
uri = mirrors[0].strip("/") + "/" + path
|
||||
else:
|
||||
output.ewarn("No known mirror by the name: %s\n" % (mirrorname))
|
||||
output.einfo("No known mirror by the name: %s\n" % (mirrorname))
|
||||
return None
|
||||
|
||||
return uri
|
||||
@ -567,7 +577,11 @@ def scanUpstream(options, package, output):
|
||||
matches = sorted(matches)
|
||||
pkg = matches.pop()
|
||||
if pkg.version == '9999':
|
||||
pkg = matches.pop()
|
||||
if len(matches) == 0:
|
||||
sys.stderr.write(pp.warn("Package '%s' only have a dev version (9999)" % pp.pkgquery(package)))
|
||||
sys.exit(errno.ENOENT)
|
||||
else:
|
||||
pkg = matches.pop()
|
||||
|
||||
pp.uprint(" * %s [%s]" % (pp.cpv(pkg.cpv), pp.section(pkg.repo_name())))
|
||||
pp.uprint()
|
||||
@ -582,7 +596,7 @@ def scanUpstream(options, package, output):
|
||||
pp.uprint()
|
||||
|
||||
cpv = pkg.cpv
|
||||
metadata = {
|
||||
metadata = {
|
||||
"EAPI" : port_settings["EAPI"],
|
||||
"SRC_URI" : pkg.environment("SRC_URI", False),
|
||||
}
|
||||
@ -604,16 +618,29 @@ def scanUpstream(options, package, output):
|
||||
|
||||
for filename in fetchme:
|
||||
for fileurl in fetchme[filename]:
|
||||
fileurl = parseMirror(fileurl, output)
|
||||
skipscan = False
|
||||
|
||||
# Try list dir
|
||||
versions.extend(scan_directory(cpv, fileurl, options, output))
|
||||
if '://' not in fileurl:
|
||||
output.einfo("Invalid url '%s'" % fileurl)
|
||||
continue
|
||||
|
||||
for bp in SCANDIR_BLACKLIST_URLS:
|
||||
if re.match(bp, fileurl):
|
||||
output.einfo("%s is blacklisted by rule %s" % (fileurl, bp))
|
||||
skipscan = True
|
||||
|
||||
url = parseMirror(fileurl, output)
|
||||
|
||||
|
||||
# Try list dir, but not for gentoo mirrors, it's too slow
|
||||
if not skipscan:
|
||||
versions.extend(scan_directory(cpv, url, options, output))
|
||||
|
||||
if versions and options['oneshot']:
|
||||
break
|
||||
|
||||
# Try manual bump
|
||||
versions.extend(brute_force(cpv, fileurl, options, output))
|
||||
versions.extend(brute_force(cpv, url, options, output))
|
||||
|
||||
if versions and options['oneshot']:
|
||||
break
|
||||
|
Reference in New Issue
Block a user