def run(self, checkdir, portdb): self.generated_manifest = False self.digest_only = self.options.mode != 'manifest-check' \ and self.options.digest == 'y' if self.options.pretend: return False if self.options.mode in ("manifest", 'commit', 'fix') or self.digest_only: failed = False self.auto_assumed = set() fetchlist_dict = portage.FetchlistDict( checkdir, self.repoman_settings, portdb) if self.options.mode == 'manifest' and self.options.force: portage._doebuild_manifest_exempt_depend += 1 self.create_manifest(checkdir, fetchlist_dict) self.repoman_settings["O"] = checkdir try: self.generated_manifest = digestgen( mysettings=self.repoman_settings, myportdb=portdb) except portage.exception.PermissionDenied as e: self.generated_manifest = False writemsg_level( "!!! Permission denied: '%s'\n" % (e,), level=logging.ERROR, noiselevel=-1) if not self.generated_manifest: writemsg_level( "Unable to generate manifest.", level=logging.ERROR, noiselevel=-1) failed = True if self.options.mode == "manifest": if not failed and self.options.force and self.auto_assumed and \ 'assume-digests' in self.repoman_settings.features: # Show which digests were assumed despite the --force option # being given. This output will already have been shown by # digestgen() if assume-digests is not enabled, so only show # it here if assume-digests is enabled. pkgs = list(fetchlist_dict) pkgs.sort() portage.writemsg_stdout( " digest.assumed %s" % portage.output.colorize( "WARN", str(len(self.auto_assumed)).rjust(18)) + "\n") for cpv in pkgs: fetchmap = fetchlist_dict[cpv] pf = portage.catsplit(cpv)[1] for distfile in sorted(fetchmap): if distfile in self.auto_assumed: portage.writemsg_stdout( " %s::%s\n" % (pf, distfile)) # continue, skip remaining main loop code return True elif failed: sys.exit(1) return False
def update_manifest(self, checkdir): """Perform a manifest generation for the pkg @param checkdir: the current package directory @rtype: bool @return: True if successful, False otherwise """ self.generated_manifest = False failed = False self.auto_assumed = set() fetchlist_dict = portage.FetchlistDict(checkdir, self.repoman_settings, self.portdb) if self.options.mode == "manifest" and self.options.force: self._discard_dist_digests(checkdir, fetchlist_dict) self.repoman_settings["O"] = checkdir try: self.generated_manifest = digestgen( mysettings=self.repoman_settings, myportdb=self.portdb) except portage.exception.PermissionDenied as e: self.generated_manifest = False writemsg_level( "!!! Permission denied: '%s'\n" % (e, ), level=logging.ERROR, noiselevel=-1, ) if not self.generated_manifest: writemsg_level( "!!! Unable to generate manifest for '%s'.\n" % (checkdir, ), level=logging.ERROR, noiselevel=-1, ) failed = True if self.options.mode == "manifest": if (not failed and self.options.force and self.auto_assumed and "assume-digests" in self.repoman_settings.features): # Show which digests were assumed despite the --force option # being given. This output will already have been shown by # digestgen() if assume-digests is not enabled, so only show # it here if assume-digests is enabled. pkgs = list(fetchlist_dict) pkgs.sort() portage.writemsg_stdout( " digest.assumed %s" % portage.output.colorize( "WARN", str(len(self.auto_assumed)).rjust(18)) + "\n") for cpv in pkgs: fetchmap = fetchlist_dict[cpv] pf = portage.catsplit(cpv)[1] for distfile in sorted(fetchmap): if distfile in self.auto_assumed: portage.writemsg_stdout(" %s::%s\n" % (pf, distfile)) return not failed
def update_manifest(self, checkdir): '''Perform a manifest generation for the pkg @param checkdir: the current package directory @returns: dictionary ''' self.generated_manifest = False failed = False self.auto_assumed = set() fetchlist_dict = portage.FetchlistDict( checkdir, self.repoman_settings, self.portdb) if self.options.mode == 'manifest' and self.options.force: self._discard_dist_digests(checkdir, fetchlist_dict) self.repoman_settings["O"] = checkdir try: self.generated_manifest = digestgen( mysettings=self.repoman_settings, myportdb=self.portdb) except portage.exception.PermissionDenied as e: self.generated_manifest = False writemsg_level( "!!! Permission denied: '%s'\n" % (e,), level=logging.ERROR, noiselevel=-1) if not self.generated_manifest: writemsg_level( "Unable to generate manifest.", level=logging.ERROR, noiselevel=-1) failed = True if self.options.mode == "manifest": if not failed and self.options.force and self.auto_assumed and \ 'assume-digests' in self.repoman_settings.features: # Show which digests were assumed despite the --force option # being given. This output will already have been shown by # digestgen() if assume-digests is not enabled, so only show # it here if assume-digests is enabled. pkgs = list(fetchlist_dict) pkgs.sort() portage.writemsg_stdout( " digest.assumed %s" % portage.output.colorize( "WARN", str(len(self.auto_assumed)).rjust(18)) + "\n") for cpv in pkgs: fetchmap = fetchlist_dict[cpv] pf = portage.catsplit(cpv)[1] for distfile in sorted(fetchmap): if distfile in self.auto_assumed: portage.writemsg_stdout( " %s::%s\n" % (pf, distfile)) # continue, skip remaining main loop code return True elif failed: sys.exit(1) return False
def add_items(self, autoadd): '''Add files to the vcs's modified or new index @param autoadd: the files to add to the vcs modified index''' add_cmd = [self.vcs, "add"] add_cmd += autoadd if self.options.pretend: portage.writemsg_stdout("(%s)\n" % " ".join(add_cmd), noiselevel=-1) else: add_cmd = [_unicode_encode(arg) for arg in add_cmd] retcode = subprocess.call(add_cmd) if retcode != os.EX_OK: logging.error("Exiting on %s error code: %s\n", self.vcs_settings.vcs, retcode) sys.exit(retcode)
def add_items(self, autoadd): '''Add files to the vcs's modified or new index @param autoadd: the files to add to the vcs modified index''' add_cmd = [self.vcs, "add"] add_cmd += autoadd if self.options.pretend: portage.writemsg_stdout( "(%s)\n" % " ".join(add_cmd), noiselevel=-1) else: add_cmd = [_unicode_encode(arg) for arg in add_cmd] retcode = subprocess.call(add_cmd) if retcode != os.EX_OK: logging.error( "Exiting on %s error code: %s\n", self.vcs_settings.vcs, retcode) sys.exit(retcode)