aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/_sets/files.py')
-rw-r--r--lib/portage/_sets/files.py59
1 files changed, 32 insertions, 27 deletions
diff --git a/lib/portage/_sets/files.py b/lib/portage/_sets/files.py
index 30fc80bd4..1b9cc6016 100644
--- a/lib/portage/_sets/files.py
+++ b/lib/portage/_sets/files.py
@@ -1,10 +1,11 @@
-# Copyright 2007-2020 Gentoo Authors
+# Copyright 2007-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
import errno
import re
from itertools import chain
+import portage
from portage import os
from portage import _encodings
from portage import _unicode_decode
@@ -35,10 +36,10 @@ class StaticFileSet(EditablePackageSet):
_repopath_sub = re.compile(r"\$\{repository:(?P<reponame>.+)\}")
def __init__(self, filename, greedy=False, dbapi=None):
- super(StaticFileSet, self).__init__(allow_repo=True)
+ super().__init__(allow_repo=True)
self._filename = filename
self._mtime = None
- self.description = "Package set loaded from file %s" % self._filename
+ self.description = f"Package set loaded from file {self._filename}"
self.loader = ItemFileLoader(self._filename, self._validate)
if greedy and not dbapi:
self.errors.append(
@@ -56,18 +57,18 @@ class StaticFileSet(EditablePackageSet):
value = []
for line in metadata:
line = line.strip()
- if len(line) == 0 and key != None:
+ if len(line) == 0 and key is not None:
setattr(self, key, " ".join(value))
key = None
- elif line[-1] == ":" and key == None:
+ elif line[-1] == ":" and key is None:
key = line[:-1].lower()
value = []
- elif key != None:
+ elif key is not None:
value.append(line)
else:
pass
else:
- if key != None:
+ if key is not None:
setattr(self, key, " ".join(value))
def _validate(self, atom):
@@ -76,15 +77,13 @@ class StaticFileSet(EditablePackageSet):
def write(self):
write_atomic(
self._filename,
- "".join(
- "%s\n" % (atom,) for atom in sorted(chain(self._atoms, self._nonatoms))
- ),
+ "".join(f"{atom}\n" for atom in sorted(chain(self._atoms, self._nonatoms))),
)
def load(self):
try:
mtime = os.stat(self._filename).st_mtime
- except (OSError, IOError):
+ except OSError:
mtime = None
if not self._loaded or self._mtime != mtime:
try:
@@ -92,7 +91,7 @@ class StaticFileSet(EditablePackageSet):
for fname in errors:
for e in errors[fname]:
self.errors.append(fname + ": " + e)
- except EnvironmentError as e:
+ except OSError as e:
if e.errno != errno.ENOENT:
raise
del e
@@ -103,7 +102,7 @@ class StaticFileSet(EditablePackageSet):
matches = self.dbapi.match(a)
for cpv in matches:
pkg = self.dbapi._pkg_str(cpv, None)
- atoms.append("%s:%s" % (pkg.cp, pkg.slot))
+ atoms.append(f"{pkg.cp}:{pkg.slot}")
# In addition to any installed slots, also try to pull
# in the latest new slot that may be available.
atoms.append(a)
@@ -178,6 +177,14 @@ class StaticFileSet(EditablePackageSet):
directory = normalize_path(directory)
for parent, dirs, files in os.walk(directory):
+ if portage.utf8_mode:
+ dirs_orig = dirs
+ omit_dir = lambda d: dirs_orig.remove(os.fsdecode(d))
+ parent = os.fsencode(parent)
+ dirs = [os.fsencode(value) for value in dirs]
+ files = [os.fsencode(value) for value in files]
+ else:
+ omit_dir = lambda d: dirs.remove(d)
try:
parent = _unicode_decode(
parent, encoding=_encodings["fs"], errors="strict"
@@ -186,7 +193,7 @@ class StaticFileSet(EditablePackageSet):
continue
for d in dirs[:]:
if d in vcs_dirs or d.startswith(b".") or d.endswith(b"~"):
- dirs.remove(d)
+ omit_dir(d)
for filename in files:
try:
filename = _unicode_decode(
@@ -213,9 +220,9 @@ class StaticFileSet(EditablePackageSet):
class ConfigFileSet(PackageSet):
def __init__(self, filename):
- super(ConfigFileSet, self).__init__()
+ super().__init__()
self._filename = filename
- self.description = "Package set generated from %s" % self._filename
+ self.description = f"Package set generated from {self._filename}"
self.loader = KeyListFileLoader(self._filename, ValidAtomValidator)
def load(self):
@@ -250,7 +257,7 @@ class WorldSelectedSet(EditablePackageSet):
description = "Set of packages and subsets that were directly installed by the user"
def __init__(self, eroot):
- super(WorldSelectedSet, self).__init__(allow_repo=True)
+ super().__init__(allow_repo=True)
self._pkgset = WorldSelectedPackagesSet(eroot)
self._setset = WorldSelectedSetsSet(eroot)
@@ -288,7 +295,7 @@ class WorldSelectedPackagesSet(EditablePackageSet):
description = "Set of packages that were directly installed by the user"
def __init__(self, eroot):
- super(WorldSelectedPackagesSet, self).__init__(allow_repo=True)
+ super().__init__(allow_repo=True)
self._lock = None
self._filename = os.path.join(eroot, WORLD_FILE)
self.loader = ItemFileLoader(self._filename, self._validate)
@@ -298,14 +305,14 @@ class WorldSelectedPackagesSet(EditablePackageSet):
return ValidAtomValidator(atom, allow_repo=True)
def write(self):
- write_atomic(self._filename, "".join(sorted("%s\n" % x for x in self._atoms)))
+ write_atomic(self._filename, "".join(sorted(f"{x}\n" for x in self._atoms)))
def load(self):
atoms = []
atoms_changed = False
try:
mtime = os.stat(self._filename).st_mtime
- except (OSError, IOError):
+ except OSError:
mtime = None
if not self._loaded or self._mtime != mtime:
try:
@@ -313,7 +320,7 @@ class WorldSelectedPackagesSet(EditablePackageSet):
for fname in errors:
for e in errors[fname]:
self.errors.append(fname + ": " + e)
- except EnvironmentError as e:
+ except OSError as e:
if e.errno != errno.ENOENT:
raise
del e
@@ -384,7 +391,7 @@ class WorldSelectedSetsSet(EditablePackageSet):
description = "Set of sets that were directly installed by the user"
def __init__(self, eroot):
- super(WorldSelectedSetsSet, self).__init__(allow_repo=True)
+ super().__init__(allow_repo=True)
self._lock = None
self._filename = os.path.join(eroot, WORLD_SETS_FILE)
self.loader = ItemFileLoader(self._filename, self._validate)
@@ -394,15 +401,13 @@ class WorldSelectedSetsSet(EditablePackageSet):
return setname.startswith(SETPREFIX)
def write(self):
- write_atomic(
- self._filename, "".join(sorted("%s\n" % x for x in self._nonatoms))
- )
+ write_atomic(self._filename, "".join(sorted(f"{x}\n" for x in self._nonatoms)))
def load(self):
atoms_changed = False
try:
mtime = os.stat(self._filename).st_mtime
- except (OSError, IOError):
+ except OSError:
mtime = None
if not self._loaded or self._mtime != mtime:
try:
@@ -410,7 +415,7 @@ class WorldSelectedSetsSet(EditablePackageSet):
for fname in errors:
for e in errors[fname]:
self.errors.append(fname + ": " + e)
- except EnvironmentError as e:
+ except OSError as e:
if e.errno != errno.ENOENT:
raise
del e