# Copyright 2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 import portage from portage import os from portage.exception import (FileNotFound, PermissionDenied, PortagePackageException) from portage.localization import _ 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), self.distdir, fetchlist_dict=self.fetchlist_dict) try: mf.create(assumeDistHashesAlways=True) except FileNotFound as e: portage.writemsg(_("!!! File %s doesn't exist, can't update " "Manifest\n") % e, noiselevel=-1) return 1 except PortagePackageException as e: portage.writemsg(("!!! %s\n") % (e,), noiselevel=-1) return 1 try: modified = mf.write(sign=False) except PermissionDenied as e: portage.writemsg("!!! %s: %s\n" % (_("Permission Denied"), e,), noiselevel=-1) return 1 else: if modified: return self.MODIFIED return os.EX_OK