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)
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)
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 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)
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)
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
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
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, ()
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, ()
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, ()