blob: 848dfb9f0c8e5780b5cf37831e87daa8f095f29c [file] [log] [blame]
# -*- coding:utf-8 -*-
# import our initialized portage instance
from repoman._portage import portage
class ThirdPartyMirrors(object):
def __init__(self, repoman_settings, qatracker):
# TODO: Build a regex instead here, for the SRC_URI.mirror check.
self.thirdpartymirrors = {}
profile_thirdpartymirrors = repoman_settings.thirdpartymirrors().items()
for mirror_alias, mirrors in profile_thirdpartymirrors:
for mirror in mirrors:
if not mirror.endswith("/"):
mirror += "/"
self.thirdpartymirrors[mirror] = mirror_alias
self.qatracker = qatracker
def check(self, myaux, relative_path):
# Check that URIs don't reference a server from thirdpartymirrors.
for uri in portage.dep.use_reduce(
myaux["SRC_URI"], matchall=True, is_src_uri=True,
eapi=myaux["EAPI"], flat=True):
contains_mirror = False
for mirror, mirror_alias in self.thirdpartymirrors.items():
if uri.startswith(mirror):
contains_mirror = True
break
if not contains_mirror:
continue
new_uri = "mirror://%s/%s" % (mirror_alias, uri[len(mirror):])
self.qatracker.add_error(
"SRC_URI.mirror",
"%s: '%s' found in thirdpartymirrors, use '%s'" % (
relative_path, mirror, new_uri))
return