Exemplo n.º 1
0
def setup_repos(namespace, attr):
    # Get repo(s) to operate on.
    if namespace.repo:
        # The store repo machinery handles --raw and --unfiltered for
        # us, thus it being the first check.
        repos = [namespace.repo]
    elif namespace.contents or namespace.size or namespace._owns or namespace._owns_re or namespace.installed:
        repos = namespace.domain.vdb
    elif namespace.unfiltered:
        if namespace.all_repos:
            repos = list(namespace.domain.vdb)
            repos.extend(namespace.domain.repos_configured.itervalues())
        elif namespace.ebuild_repos:
            repos = namespace.domain.ebuild_repos_raw.repos
        elif namespace.binary_repos:
            repos = namespace.domain.binary_repos_raw.repos
        else:
            repos = namespace.domain.repos_configured.values()
    elif namespace.all_repos:
        repos = namespace.domain.repos + namespace.domain.vdb
    elif namespace.ebuild_repos:
        repos = namespace.domain.ebuild_repos.repos
    elif namespace.binary_repos:
        repos = namespace.domain.binary_repos.repos
    else:
        repos = namespace.domain.repos

    if namespace.raw or namespace.virtuals:
        repos = repo_utils.get_raw_repos(repos)
    if namespace.virtuals:
        repos = repo_utils.get_virtual_repos(repos, namespace.virtuals == "only")
    setattr(namespace, attr, repos)
Exemplo n.º 2
0
def check_args(parser, namespace):
    # Get repo(s) to operate on.
    if namespace.repo:
        repos = (namespace.repo,)
    else:
        repos = namespace.domain.repos
    namespace.repos = get_virtual_repos(get_raw_repos(repos), False)
Exemplo n.º 3
0
def _dist_validate_args(parser, namespace):
    distdir = namespace.domain.fetcher.distdir
    repo = multiplex.tree(*get_virtual_repos(namespace.domain.repos, False))
    if not namespace.restrict:
        namespace.restrict = packages.AlwaysTrue

    files = set(os.path.basename(f) for f in listdir_files(distdir))
    pfiles = set()

    for pkg in repo.itermatch(namespace.restrict, sorter=sorted):
        if ((namespace.installed and pkg.versioned_atom in namespace.installed)
                or (namespace.fetch_restricted and 'fetch' in pkg.restrict)):
            continue
        try:
            pfiles.update(fetchable.filename
                          for fetchable in iflatten_instance(
                              pkg.fetchables, fetch.fetchable))
        except errors.MetadataException as e:
            if not namespace.ignore_failures:
                dist.error("got corruption error '%s', with package %s " %
                           (e, pkg.cpvstr))
        except Exception as e:
            dist.error("got error '%s', parsing package %s in repo '%s'" %
                       (e, pkg.cpvstr, pkg.repo))

    distfiles = (pjoin(distdir, f) for f in files.intersection(pfiles))
    removal_func = partial(os.remove)
    namespace.remove = (
        (removal_func, distfile)
        for distfile in ifilter(namespace.filters.run, distfiles))
Exemplo n.º 4
0
def check_args(parser, namespace):
    # Get repo(s) to operate on.
    if namespace.repo:
        repos = (namespace.repo,)
    else:
        repos = namespace.domain.repos
    namespace.repos = get_virtual_repos(get_raw_repos(repos), False)
Exemplo n.º 5
0
def setup_repos(namespace, attr):
    # Get repo(s) to operate on.
    if namespace.repo:
        # The store repo machinery handles --raw and --no-filters for
        # us, thus it being the first check.
        repos = [namespace.repo]
    elif namespace.contents or namespace._owns or namespace._owns_re:
        repos = namespace.domain.vdb
    elif namespace.no_filters:
        if namespace.all_repos:
            repos = list(namespace.domain.vdb)
            repos.extend(namespace.domain.repos_configured.itervalues())
        else:
            repos = namespace.domain.repos_configured.values()
    elif namespace.all_repos:
        repos = namespace.domain.repos + namespace.domain.vdb
    else:
        repos = namespace.domain.repos

    if namespace.raw or namespace.virtuals:
        repos = repo_utils.get_raw_repos(repos)
    if namespace.virtuals:
        repos = repo_utils.get_virtual_repos(
            repos, namespace.virtuals == 'only')
    setattr(namespace, attr, repos)
Exemplo n.º 6
0
def setup_repos(namespace, attr):
    # Get repo(s) to operate on.
    if namespace.repo:
        # The store repo machinery handles --raw and --no-filters for
        # us, thus it being the first check.
        repos = [namespace.repo]
    elif namespace.contents or namespace._owns or namespace._owns_re:
        repos = namespace.domain.vdb
    elif namespace.no_filters:
        if namespace.all_repos:
            repos = list(namespace.domain.vdb)
            repos.extend(namespace.domain.repos_configured.itervalues())
        else:
            repos = namespace.domain.repos_configured.values()
    elif namespace.all_repos:
        repos = namespace.domain.repos + namespace.domain.vdb
    else:
        repos = namespace.domain.repos

    if namespace.raw or namespace.virtuals:
        repos = repo_utils.get_raw_repos(repos)
    if namespace.virtuals:
        repos = repo_utils.get_virtual_repos(repos,
                                             namespace.virtuals == 'only')
    setattr(namespace, attr, repos)
Exemplo n.º 7
0
def _dist_validate_args(parser, namespace):
    distdir = namespace.domain.fetcher.distdir
    repo = multiplex.tree(*get_virtual_repos(namespace.domain.repos, False))
    if not namespace.restrict:
        namespace.restrict = packages.AlwaysTrue

    files = set(os.path.basename(f) for f in listdir_files(distdir))
    pfiles = set()

    for pkg in repo.itermatch(namespace.restrict, sorter=sorted):
        if ((namespace.installed and pkg.versioned_atom in namespace.installed) or
                (namespace.fetch_restricted and 'fetch' in pkg.restrict)):
            continue
        try:
            pfiles.update(
                fetchable.filename for fetchable in
                iflatten_instance(pkg.fetchables, fetch.fetchable))
        except errors.MetadataException as e:
            if not namespace.ignore_failures:
                dist.error(
                    "got corruption error '%s', with package %s " %
                    (e, pkg.cpvstr))
        except Exception as e:
            dist.error(
                "got error '%s', parsing package %s in repo '%s'" %
                (e, pkg.cpvstr, pkg.repo))

    distfiles = (pjoin(distdir, f) for f in files.intersection(pfiles))
    removal_func = partial(os.remove)
    namespace.remove = (
        (removal_func, distfile) for distfile in
        ifilter(namespace.filters.run, distfiles))
 def _get_repos(self):
     repo_dict = {}
     repo_list = []
     repos = get_virtual_repos(get_raw_repos(self._domain.repos), False)
     for repo in repos:
         if isinstance(repo, UnconfiguredTree) or isinstance(repo, SlavedTree):
             repo_dict[repo.repo_id] = repo
             repo_list.append(repo)
     repo_list.reverse()
     self.repo_list = repo_list
     self.repo_dict = repo_dict
Exemplo n.º 9
0
def check_args(parser, namespace):
    domain = namespace.domain
    namespace.vdb = domain.vdb
    namespace.repo = multiplex_tree(*get_virtual_repos(domain.repos, False))
    namespace.distdir = domain.fetcher.distdir
    excludes = namespace.excludes if namespace.excludes is not None else []
    if namespace.exclude_file is not None:
        excludes.extend(namespace.exclude_file.read().split('\n'))
    restrict = commandline.convert_to_restrict(excludes, default=None)
    if restrict != [None]:
        namespace.restrict = OrRestriction(negate=True, *restrict)
    else:
        namespace.restrict = packages.AlwaysTrue
Exemplo n.º 10
0
    def check_values(self, values, args):
        values, args = commandline.OptionParser.check_values(
            self, values, args)

        if args: self.error("This script takes no arguments")

        # Get repo(s) to operate on.
        if values.repo:
            repos = (values.repo,)
        else:
            repos = values.config.get_default('domain').repos
        values.repos = get_virtual_repos(get_raw_repos(repos), False)

        return values, ()
Exemplo n.º 11
0
    def check_values(self, values, args):
        values, args = commandline.OptionParser.check_values(
            self, values, args)

        if args: self.error("This script takes no arguments")

        # Get repo(s) to operate on.
        if values.repo:
            repos = (values.repo, )
        else:
            repos = values.config.get_default('domain').repos
        values.repos = get_virtual_repos(get_raw_repos(repos), False)

        return values, ()
Exemplo n.º 12
0
    def check_values(self, values, args):
        values, args = commandline.OptionParser.check_values(
            self, values, args)

        if args:
            self.error("This script takes no arguments")
        domain = values.config.get_default('domain')
        values.vdb = domain.vdb
        values.repo = multiplex_tree(*get_virtual_repos(domain.repos, False))
        values.distdir = domain.fetcher.distdir
        restrict = commandline.convert_to_restrict(values.excludes, default=None)
        if restrict != [None]:
            values.restrict = OrRestriction(negate=True, *restrict)
        else:
            values.restrict = packages.AlwaysTrue

        return values, ()
Exemplo n.º 13
0
    def check_values(self, values, args):
        values, args = commandline.OptionParser.check_values(
            self, values, args)

        if args:
            self.error("This script takes no arguments")
        domain = values.config.get_default('domain')
        values.vdb = domain.vdb
        values.repo = multiplex_tree(*get_virtual_repos(domain.repos, False))
        values.distdir = domain.fetcher.distdir
        restrict = commandline.convert_to_restrict(values.excludes,
                                                   default=None)
        if restrict != [None]:
            values.restrict = OrRestriction(negate=True, *restrict)
        else:
            values.restrict = packages.AlwaysTrue

        return values, ()