aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/_sets/dbapi.py')
-rw-r--r--lib/portage/_sets/dbapi.py74
1 files changed, 40 insertions, 34 deletions
diff --git a/lib/portage/_sets/dbapi.py b/lib/portage/_sets/dbapi.py
index 4a837522f..9c5b979a9 100644
--- a/lib/portage/_sets/dbapi.py
+++ b/lib/portage/_sets/dbapi.py
@@ -33,7 +33,7 @@ class EverythingSet(PackageSet):
_filter = None
def __init__(self, vdbapi, **kwargs):
- super(EverythingSet, self).__init__()
+ super().__init__()
self._db = vdbapi
def load(self):
@@ -47,7 +47,7 @@ class EverythingSet(PackageSet):
# SLOT installed, in order to avoid the possibility
# of unwanted upgrades as reported in bug #338959.
pkg = pkg_str(cpv, None)
- atom = Atom("%s:%s" % (pkg.cp, pkg.slot))
+ atom = Atom(f"{pkg.cp}:{pkg.slot}")
if self._filter:
if self._filter(atom):
myatoms.append(atom)
@@ -63,7 +63,6 @@ class EverythingSet(PackageSet):
class OwnerSet(PackageSet):
-
_operations = ["merge", "unmerge"]
description = (
@@ -71,7 +70,7 @@ class OwnerSet(PackageSet):
)
def __init__(self, vardb=None, exclude_files=None, files=None):
- super(OwnerSet, self).__init__()
+ super().__init__()
self._db = vardb
self._exclude_files = exclude_files
self._files = files
@@ -105,7 +104,7 @@ class OwnerSet(PackageSet):
if not exclude_paths:
for link, p in vardb._owners.iter_owners(paths):
pkg = pkg_str(link.mycpv, None)
- rValue.add("%s:%s" % (pkg.cp, pkg.slot))
+ rValue.add(f"{pkg.cp}:{pkg.slot}")
else:
all_paths = set()
all_paths.update(paths)
@@ -113,7 +112,7 @@ class OwnerSet(PackageSet):
exclude_atoms = set()
for link, p in vardb._owners.iter_owners(all_paths):
pkg = pkg_str(link.mycpv, None)
- atom = "%s:%s" % (pkg.cp, pkg.slot)
+ atom = f"{pkg.cp}:{pkg.slot}"
rValue.add(atom)
# Returned paths are relative to ROOT and do not have
# a leading slash.
@@ -145,7 +144,6 @@ class OwnerSet(PackageSet):
class VariableSet(EverythingSet):
-
_operations = ["merge", "unmerge"]
description = (
@@ -156,7 +154,7 @@ class VariableSet(EverythingSet):
def __init__(
self, vardb, metadatadb=None, variable=None, includes=None, excludes=None
):
- super(VariableSet, self).__init__(vardb)
+ super().__init__(vardb)
self._metadatadb = metadatadb
self._variable = variable
self._includes = includes
@@ -167,15 +165,32 @@ class VariableSet(EverythingSet):
if not ebuild:
return False
(values,) = self._metadatadb.aux_get(ebuild, [self._variable])
- values = values.split()
- if self._includes and not self._includes.intersection(values):
+ values_list = values.split()
+
+ if "DEPEND" in self._variable:
+ include_atoms = []
+ for include in self._includes:
+ include_atoms.append(Atom(include))
+
+ for x in use_reduce(values, token_class=Atom, flat=True):
+ if not isinstance(x, Atom):
+ continue
+
+ for include_atom in include_atoms:
+ if include_atom.match(x):
+ return True
+
return False
- if self._excludes and self._excludes.intersection(values):
+
+ if self._includes and not self._includes.intersection(values_list):
return False
+
+ if self._excludes and self._excludes.intersection(values_list):
+ return False
+
return True
def singleBuilder(cls, options, settings, trees):
-
variable = options.get("variable")
if variable is None:
raise SetConfigError(_("missing required attribute: 'variable'"))
@@ -204,7 +219,6 @@ class VariableSet(EverythingSet):
class SubslotChangedSet(PackageSet):
-
_operations = ["merge", "unmerge"]
description = (
@@ -214,7 +228,7 @@ class SubslotChangedSet(PackageSet):
)
def __init__(self, portdb=None, vardb=None):
- super(SubslotChangedSet, self).__init__()
+ super().__init__()
self._portdb = portdb
self._vardb = vardb
@@ -225,7 +239,7 @@ class SubslotChangedSet(PackageSet):
cp_list = self._vardb.cp_list
for cp in self._vardb.cp_all():
for pkg in cp_list(cp):
- slot_atom = "%s:%s" % (pkg.cp, pkg.slot)
+ slot_atom = f"{pkg.cp}:{pkg.slot}"
ebuild = xmatch(xmatch_level, slot_atom)
if not ebuild:
continue
@@ -241,7 +255,6 @@ class SubslotChangedSet(PackageSet):
class DowngradeSet(PackageSet):
-
_operations = ["merge", "unmerge"]
description = (
@@ -251,7 +264,7 @@ class DowngradeSet(PackageSet):
)
def __init__(self, portdb=None, vardb=None):
- super(DowngradeSet, self).__init__()
+ super().__init__()
self._portdb = portdb
self._vardb = vardb
@@ -264,7 +277,7 @@ class DowngradeSet(PackageSet):
for cp in self._vardb.cp_all():
for cpv in cp_list(cp):
pkg = pkg_str(cpv, None)
- slot_atom = "%s:%s" % (pkg.cp, pkg.slot)
+ slot_atom = f"{pkg.cp}:{pkg.slot}"
ebuild = xmatch(xmatch_level, slot_atom)
if not ebuild:
continue
@@ -280,7 +293,6 @@ class DowngradeSet(PackageSet):
class UnavailableSet(EverythingSet):
-
_operations = ["unmerge"]
description = (
@@ -290,14 +302,13 @@ class UnavailableSet(EverythingSet):
)
def __init__(self, vardb, metadatadb=None):
- super(UnavailableSet, self).__init__(vardb)
+ super().__init__(vardb)
self._metadatadb = metadatadb
def _filter(self, atom):
return not self._metadatadb.match(atom)
def singleBuilder(cls, options, settings, trees):
-
metadatadb = options.get("metadata-source", "porttree")
if not metadatadb in trees:
raise SetConfigError(
@@ -310,7 +321,6 @@ class UnavailableSet(EverythingSet):
class UnavailableBinaries(EverythingSet):
-
_operations = (
"merge",
"unmerge",
@@ -323,7 +333,7 @@ class UnavailableBinaries(EverythingSet):
)
def __init__(self, vardb, metadatadb=None):
- super(UnavailableBinaries, self).__init__(vardb)
+ super().__init__(vardb)
self._metadatadb = metadatadb
def _filter(self, atom):
@@ -334,7 +344,6 @@ class UnavailableBinaries(EverythingSet):
return not self._metadatadb.cpv_exists(inst_cpv)
def singleBuilder(cls, options, settings, trees):
-
metadatadb = options.get("metadata-source", "bintree")
if not metadatadb in trees:
raise SetConfigError(
@@ -350,7 +359,7 @@ class CategorySet(PackageSet):
_operations = ["merge", "unmerge"]
def __init__(self, category, dbapi, only_visible=True):
- super(CategorySet, self).__init__()
+ super().__init__()
self._db = dbapi
self._category = category
self._check = only_visible
@@ -358,7 +367,7 @@ class CategorySet(PackageSet):
s = "visible"
else:
s = "all"
- self.description = "Package set containing %s packages of category %s" % (
+ self.description = "Package set containing {} packages of category {}".format(
s,
self._category,
)
@@ -438,12 +447,11 @@ class AgeSet(EverythingSet):
_aux_keys = ("BUILD_TIME",)
def __init__(self, vardb, mode="older", age=7):
- super(AgeSet, self).__init__(vardb)
+ super().__init__(vardb)
self._mode = mode
self._age = age
def _filter(self, atom):
-
cpv = self._db.match(atom)[0]
try:
(date,) = self._db.aux_get(cpv, self._aux_keys)
@@ -477,12 +485,11 @@ class DateSet(EverythingSet):
_aux_keys = ("BUILD_TIME",)
def __init__(self, vardb, date, mode="older"):
- super(DateSet, self).__init__(vardb)
+ super().__init__(vardb)
self._mode = mode
self._date = date
def _filter(self, atom):
-
cpv = self._db.match(atom)[0]
try:
(date,) = self._db.aux_get(cpv, self._aux_keys)
@@ -572,7 +579,7 @@ class RebuiltBinaries(EverythingSet):
_aux_keys = ("BUILD_TIME",)
def __init__(self, vardb, bindb=None):
- super(RebuiltBinaries, self).__init__(vardb, bindb=bindb)
+ super().__init__(vardb, bindb=bindb)
self._bindb = bindb
def _filter(self, atom):
@@ -591,7 +598,6 @@ class RebuiltBinaries(EverythingSet):
class ChangedDepsSet(PackageSet):
-
_operations = ["merge", "unmerge"]
description = (
@@ -601,7 +607,7 @@ class ChangedDepsSet(PackageSet):
)
def __init__(self, portdb=None, vardb=None):
- super(ChangedDepsSet, self).__init__()
+ super().__init__()
self._portdb = portdb
self._vardb = vardb
@@ -655,7 +661,7 @@ class ChangedDepsSet(PackageSet):
# if dependencies don't match, trigger the rebuild.
if vdbvars != pdbvars:
- atoms.append("=%s" % cpv)
+ atoms.append(f"={cpv}")
self._setAtoms(atoms)