Ejemplo n.º 1
0
	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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
	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
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
	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)