aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/package/ebuild/_parallel_manifest/ManifestProcess.py')
-rw-r--r--lib/portage/package/ebuild/_parallel_manifest/ManifestProcess.py37
1 files changed, 24 insertions, 13 deletions
diff --git a/lib/portage/package/ebuild/_parallel_manifest/ManifestProcess.py b/lib/portage/package/ebuild/_parallel_manifest/ManifestProcess.py
index 7bf5dd141..ec2d5bdfc 100644
--- a/lib/portage/package/ebuild/_parallel_manifest/ManifestProcess.py
+++ b/lib/portage/package/ebuild/_parallel_manifest/ManifestProcess.py
@@ -1,6 +1,8 @@
-# Copyright 2012 Gentoo Foundation
+# Copyright 2012-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
+import functools
+
import portage
from portage import os
from portage.exception import FileNotFound, PermissionDenied, PortagePackageException
@@ -9,16 +11,29 @@ from portage.util._async.ForkProcess import ForkProcess
class ManifestProcess(ForkProcess):
-
__slots__ = ("cp", "distdir", "fetchlist_dict", "repo_config")
MODIFIED = 16
- def _run(self):
- mf = self.repo_config.load_manifest(
- os.path.join(self.repo_config.location, self.cp),
+ def _start(self):
+ self.target = functools.partial(
+ self._target,
+ self.cp,
self.distdir,
- fetchlist_dict=self.fetchlist_dict,
+ self.fetchlist_dict,
+ self.repo_config,
+ )
+ super()._start()
+
+ @staticmethod
+ def _target(cp, distdir, fetchlist_dict, repo_config):
+ """
+ TODO: Make all arguments picklable for the multiprocessing spawn start method.
+ """
+ mf = repo_config.load_manifest(
+ os.path.join(repo_config.location, cp),
+ distdir,
+ fetchlist_dict=fetchlist_dict,
)
try:
@@ -31,22 +46,18 @@ class ManifestProcess(ForkProcess):
return 1
except PortagePackageException as e:
- portage.writemsg(("!!! %s\n") % (e,), noiselevel=-1)
+ portage.writemsg(f"!!! {e}\n", noiselevel=-1)
return 1
try:
modified = mf.write(sign=False)
except PermissionDenied as e:
portage.writemsg(
- "!!! %s: %s\n"
- % (
- _("Permission Denied"),
- e,
- ),
+ f"!!! {_('Permission Denied')}: {e}\n",
noiselevel=-1,
)
return 1
else:
if modified:
- return self.MODIFIED
+ return ManifestProcess.MODIFIED
return os.EX_OK