def get_best_selector(self, sack, forms=None): # :api sltr = dnf.selector.Selector(sack) if is_glob_pattern(self.pattern): s = sltr.set(provides__glob=self.pattern) if len(s.matches()) > 0: return s reldep = first(self.subj.reldep_possibilities_real(sack)) if reldep: dep = str(reldep) s = sltr.set(provides=dep) if len(s.matches()) > 0: return s if forms: kwargs['form'] = forms nevra = first(self.subj.nevra_possibilities_real(sack, **kwargs)) if nevra: s = self._nevra_to_selector(sltr, nevra) if len(s.matches()) > 0: return s kwargs = {'allow_globs': True} if self.filename_pattern: key = "file__glob" if is_glob_pattern(self.pattern) else "file" return sltr.set(**{key: self.pattern}) return sltr
def get_best_selector(self, sack, forms=None): # :api kwargs = {'allow_globs': True} if forms: kwargs['form'] = forms nevra = first(self.subj.nevra_possibilities_real(sack, **kwargs)) if nevra: sltr = dnf.selector.Selector(sack) s = self._nevra_to_selector(sltr, nevra) if len(s.matches()) > 0: return s reldep = first(self.subj.reldep_possibilities_real(sack)) if reldep: sltr = dnf.selector.Selector(sack) dep = str(reldep) s = sltr.set(provides=dep) if len(s.matches()) > 0: return s if self.filename_pattern: sltr = dnf.selector.Selector(sack) key = "file__glob" if is_glob_pattern(self.pattern) else "file" return sltr.set(**{key: self.pattern}) sltr = dnf.selector.Selector(sack) return sltr
def _is_arch_specified(self, sack): for nevra in self.subj.nevra_possibilities(): if nevra: q = self._nevra_to_filters(sack.query(), nevra) if q: if nevra.arch: return is_glob_pattern(nevra.arch) return False
def _is_arch_specified(self, sack): for nevra in self.get_nevra_possibilities(): if nevra: q = self._nevra_to_filters(sack.query(), nevra) if q: if nevra.arch: return is_glob_pattern(nevra.arch) return False
def _get_best_selectors(self, base, forms=None, obsoletes=True, reponame=None, reports=False, solution=None): if solution is None: solution = self._get_nevra_solution(base.sack, forms=forms) q = solution['query'] q = q.filter(arch__neq="src") if len(q) == 0: if reports and not self.icase: base._report_icase_hint(self._pattern) return [] q = self._apply_security_filters(q, base) if not q: return [] if not self._filename_pattern and is_glob_pattern(self._pattern) \ or solution['nevra'] and solution['nevra'].name is None: with_obsoletes = False if obsoletes and solution['nevra'] and solution[ 'nevra'].has_just_name(): with_obsoletes = True installed_query = q.installed() if reponame: q = q.filter(reponame=reponame) available_query = q.available() installed_relevant_query = installed_query.filter( name=[pkg.name for pkg in available_query]) if reports: self._report_installed(installed_relevant_query) q = available_query.union(installed_relevant_query) sltrs = [] for name, pkgs_list in q._name_dict().items(): if with_obsoletes: pkgs_list = pkgs_list + base.sack.query().filter( obsoletes=pkgs_list).run() sltrs.append( self._list_or_query_to_selector(base.sack, pkgs_list)) return sltrs else: if obsoletes and solution['nevra'] and solution[ 'nevra'].has_just_name(): q = q.union(base.sack.query().filter(obsoletes=q)) installed_query = q.installed() if reports: self._report_installed(installed_query) if reponame: q = q.filter(reponame=reponame).union(installed_query) if not q: return [] return [self._list_or_query_to_selector(base.sack, q)]
def _nevra_to_filters(self, query, nevra): if nevra.name is not None: if is_glob_pattern(nevra.name): query.filterm(*self._query_flags, name__glob=nevra.name) else: query.filterm(*self._query_flags, name=nevra.name) if nevra.arch is not None: query.filterm(arch=nevra.arch) if nevra.epoch is not None: query.filterm(epoch=nevra.epoch) if nevra.version is not None: version = nevra.version if is_glob_pattern(version): query.filterm(version__glob=version) else: query.filterm(version=version) if nevra.release is not None: query.filterm(release=nevra.release) return query
def get_best_selectors(self, sack, forms=None): if not self.filename_pattern and is_glob_pattern(self.pattern): nevras = self.subj.nevra_possibilities_real(sack, allow_globs=True) nevra = first(nevras) if nevra and nevra.name: sltrs = [] pkgs = self._nevra_to_filters(sack.query(), nevra) for pkg_name in {pkg.name for pkg in pkgs}: exp_name = self.pattern.replace(nevra.name, pkg_name, 1) sltrs.append(Subject(exp_name).get_best_selector(sack, forms)) return sltrs return [self.get_best_selector(sack, forms)]
def _get_best_selectors(self, base, forms=None, obsoletes=True, reponame=None, reports=False, solution=None): if solution is None: solution = self._get_nevra_solution(base.sack, forms=forms) q = solution['query'] q = q.filter(arch__neq="src") if len(q) == 0: if reports and not self.icase: base._report_icase_hint(self._pattern) return [] q = self._apply_security_filters(q, base) if not q: return [] if not self._filename_pattern and is_glob_pattern(self._pattern) \ or solution['nevra'] and solution['nevra'].name is None: with_obsoletes = False if obsoletes and solution['nevra'] and solution['nevra'].has_just_name(): with_obsoletes = True installed_query = q.installed() if reponame: q = q.filter(reponame=reponame) available_query = q.available() installed_relevant_query = installed_query.filter( name=[pkg.name for pkg in available_query]) if reports: self._report_installed(installed_relevant_query) q = available_query.union(installed_relevant_query) sltrs = [] for name, pkgs_list in q._name_dict().items(): if with_obsoletes: pkgs_list = pkgs_list + base.sack.query().filter( obsoletes=pkgs_list).run() sltrs.append(self._list_or_query_to_selector(base.sack, pkgs_list)) return sltrs else: if obsoletes and solution['nevra'] and solution['nevra'].has_just_name(): q = q.union(base.sack.query().filter(obsoletes=q)) installed_query = q.installed() if reports: self._report_installed(installed_query) if reponame: q = q.filter(reponame=reponame).union(installed_query) if not q: return [] return [self._list_or_query_to_selector(base.sack, q)]
def _get_best_selectors(self, sack, forms=None, obsoletes=True): if not self._filename_pattern and is_glob_pattern(self._pattern): with_obsoletes = False if obsoletes and self._has_nevra_just_name(sack, forms=forms): with_obsoletes = True q = self.get_best_query(sack, forms=forms).filter(arch__neq="src") sltrs = [] for name, pkgs_list in q._name_dict().items(): sltr = dnf.selector.Selector(sack) if with_obsoletes: pkgs_list = pkgs_list + sack.query().filter( obsoletes=pkgs_list).run() sltr.set(pkg=pkgs_list) sltrs.append(sltr) return sltrs return [self.get_best_selector(sack, forms, obsoletes)]
def _get_best_selectors(self, sack, forms=None): if not self._filename_pattern and is_glob_pattern(self._pattern): with_obsoletes = False if self._has_nevra_just_name(sack, forms=forms): with_obsoletes = True q = self.get_best_query(sack, forms=forms) sltrs = [] for name, pkgs_list in q._name_dict().items(): sltr = dnf.selector.Selector(sack) if with_obsoletes: pkgs_list = pkgs_list + sack.query().filter( obsoletes=pkgs_list).run() sltr.set(pkg=pkgs_list) sltrs.append(sltr) return sltrs return [self.get_best_selector(sack, forms)]
def _get_best_selectors(self, sack, forms=None, obsoletes=True): if not self._filename_pattern and is_glob_pattern(self._pattern): with_obsoletes = False solution = self._get_nevra_solution(sack, forms=forms) q = solution['query'] if obsoletes and solution['nevra'] and solution['nevra']._has_just_name(): with_obsoletes = True q = q.filter(arch__neq="src") sltrs = [] for name, pkgs_list in q._name_dict().items(): sltr = dnf.selector.Selector(sack) if with_obsoletes: pkgs_list = pkgs_list + sack.query().filter( obsoletes=pkgs_list).run() sltr.set(pkg=pkgs_list) sltrs.append(sltr) return sltrs return [self.get_best_selector(sack, forms, obsoletes)]
def _get_best_selectors(self, sack, forms=None, obsoletes=True, reponame=None, reports=False): if not self._filename_pattern and is_glob_pattern(self._pattern): with_obsoletes = False solution = self._get_nevra_solution(sack, forms=forms) q = solution['query'] q = q.filter(arch__neq="src") if obsoletes and solution['nevra'] and solution[ 'nevra']._has_just_name(): with_obsoletes = True installed_query = q.installed() if reponame: q = q.filter(reponame=reponame) available_query = q.available() installed_relevant_query = installed_query.filter( name=[pkg.name for pkg in available_query]) if reports: for pkg in installed_relevant_query: dnf.base._msg_installed(pkg) q = available_query.union(installed_relevant_query) sltrs = [] for name, pkgs_list in q._name_dict().items(): sltr = dnf.selector.Selector(sack) if with_obsoletes: pkgs_list = pkgs_list + sack.query().filter( obsoletes=pkgs_list).run() sltr.set(pkg=pkgs_list) sltrs.append(sltr) return sltrs return [ self.get_best_selector(sack, forms, obsoletes, reponame=reponame, reports=reports) ]
def is_arch_specified(self, sack): nevra = first( self.subj.nevra_possibilities_real(sack, allow_globs=True)) if nevra and nevra.arch: return is_glob_pattern(nevra.arch) return False
def is_arch_specified(self, sack): nevra = first(self.subj.nevra_possibilities_real(sack, allow_globs=True)) if nevra and nevra.arch: return is_glob_pattern(nevra.arch) return False
def _is_arch_specified(self, solution): if solution['nevra'] and solution['nevra'].arch: return is_glob_pattern(solution['nevra'].arch) return False