def _eerror(self, lines):
		out = io.StringIO()
		for line in lines:
			eerror(line, phase="unpack", key=self.pkg.cpv, out=out)
		msg = out.getvalue()
		if msg:
			self.scheduler.output(msg, log_path=self.logfile)
Exemple #2
0
	def _eerror(self, lines):
		out = io.StringIO()
		for line in lines:
			eerror(line, phase="unpack", key=self.pkg.cpv, out=out)
		msg = out.getvalue()
		if msg:
			self.scheduler.output(msg, log_path=self.logfile)
Exemple #3
0
    def execute(self):
        settings = self.settings
        pkg = self.pkg
        portdb = pkg.root_config.trees["porttree"].dbapi
        ebuild_path = portdb.findname(pkg.cpv)
        if ebuild_path is None:
            raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
        settings.setcpv(pkg)
        debug = settings.get("PORTAGE_DEBUG") == "1"

        if 'fetch' in pkg.metadata.restrict:
            rval = self._execute_with_builddir()
        else:
            rval = portage.doebuild(ebuild_path,
                                    "fetch",
                                    settings["ROOT"],
                                    settings,
                                    debug=debug,
                                    listonly=self.pretend,
                                    fetchonly=1,
                                    fetchall=self.fetch_all,
                                    mydbapi=portdb,
                                    tree="porttree")

            if rval != os.EX_OK:
                msg = "Fetch failed for '%s'" % (pkg.cpv, )
                eerror(msg, phase="unpack", key=pkg.cpv)

        return rval
def eapi_invalid(self, cpv, repo_name, settings, eapi_var, eapi_parsed,
                 eapi_lineno):

    msg = []
    msg.extend(
        textwrap.wrap(
            ("EAPI assignment in ebuild '%s%s%s' does not"
             " conform with PMS section 7.3.1 (see bug #402167):") %
            (cpv, _repo_separator, repo_name),
            70,
        ))

    if not eapi_parsed:
        # None means the assignment was not found, while an
        # empty string indicates an (invalid) empty assingment.
        msg.append("\tvalid EAPI assignment must"
                   " occur on or before line: %s" % eapi_lineno)
    else:
        msg.append(("\tbash returned EAPI '%s' which does not match "
                    "assignment on line: %s") % (eapi_var, eapi_lineno))

    if portage.data.secpass >= 2:
        # TODO: improve elog permission error handling (bug #416231)
        for line in msg:
            eerror(line, phase="other", key=cpv)
        elog_process(cpv, settings, phasefilter=("other", ))

    else:
        out = portage.output.EOutput()
        for line in msg:
            out.eerror(line)
def eapi_invalid(self, cpv, repo_name, settings,
	eapi_var, eapi_parsed, eapi_lineno):

	msg = []
	msg.extend(textwrap.wrap(("EAPI assignment in ebuild '%s%s%s' does not"
		" conform with PMS section 7.3.1 (see bug #402167):") %
		(cpv, _repo_separator, repo_name), 70))

	if not eapi_parsed:
		# None means the assignment was not found, while an
		# empty string indicates an (invalid) empty assingment.
		msg.append(
			"\tvalid EAPI assignment must"
			" occur on or before line: %s" %
			eapi_lineno)
	else:
		msg.append(("\tbash returned EAPI '%s' which does not match "
			"assignment on line: %s") %
			(eapi_var, eapi_lineno))

	if portage.data.secpass >= 2:
		# TODO: improve elog permission error handling (bug #416231)
		for line in msg:
			eerror(line, phase="other", key=cpv)
		elog_process(cpv, settings,
			phasefilter=("other",))

	else:
		out = portage.output.EOutput()
		for line in msg:
			out.eerror(line)
Exemple #6
0
    def _execute(self):
        settings = self.settings
        pkg = self.pkg
        root_config = pkg.root_config
        portdb = root_config.trees["porttree"].dbapi
        ebuild_path = portdb.findname(pkg.cpv)
        if ebuild_path is None:
            raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
        debug = settings.get("PORTAGE_DEBUG") == "1"
        retval = portage.doebuild(ebuild_path,
                                  "fetch",
                                  self.settings["ROOT"],
                                  self.settings,
                                  debug=debug,
                                  listonly=self.pretend,
                                  fetchonly=1,
                                  fetchall=self.fetch_all,
                                  mydbapi=portdb,
                                  tree="porttree")

        if retval != os.EX_OK:
            msg = "Fetch failed for '%s'" % (pkg.cpv, )
            eerror(msg, phase="unpack", key=pkg.cpv)

        portage.elog.elog_process(self.pkg.cpv, self.settings)
        return retval
	def _set_returncode(self, wait_retval):
		SpawnProcess._set_returncode(self, wait_retval)
		# Collect elog messages that might have been
		# created by the pkg_nofetch phase.
		if self._build_dir is not None:
			# Skip elog messages for prefetch, in order to avoid duplicates.
			if not self.prefetch and self.returncode != os.EX_OK:
				elog_out = None
				if self.logfile is not None:
					if self.background:
						elog_out = codecs.open(_unicode_encode(self.logfile,
							encoding=_encodings['fs'], errors='strict'),
							mode='a', encoding=_encodings['content'], errors='replace')
				msg = "Fetch failed for '%s'" % (self.pkg.cpv,)
				if self.logfile is not None:
					msg += ", Log file:"
				eerror(msg, phase="unpack", key=self.pkg.cpv, out=elog_out)
				if self.logfile is not None:
					eerror(" '%s'" % (self.logfile,),
						phase="unpack", key=self.pkg.cpv, out=elog_out)
				if elog_out is not None:
					elog_out.close()
			if not self.prefetch:
				portage.elog.elog_process(self.pkg.cpv, self._build_dir.settings)
			features = self._build_dir.settings.features
			if self.returncode == os.EX_OK:
				self._build_dir.clean_log()
			self._build_dir.unlock()
			self.config_pool.deallocate(self._build_dir.settings)
			self._build_dir = None
Exemple #8
0
	def _set_returncode(self, wait_retval):
		SpawnProcess._set_returncode(self, wait_retval)
		# Collect elog messages that might have been
		# created by the pkg_nofetch phase.
		if self._build_dir is not None:
			# Skip elog messages for prefetch, in order to avoid duplicates.
			if not self.prefetch and self.returncode != os.EX_OK:
				elog_out = None
				if self.logfile is not None:
					if self.background:
						elog_out = codecs.open(_unicode_encode(self.logfile,
							encoding=_encodings['fs'], errors='strict'),
							mode='a', encoding=_encodings['content'], errors='replace')
				msg = "Fetch failed for '%s'" % (self.pkg.cpv,)
				if self.logfile is not None:
					msg += ", Log file:"
				eerror(msg, phase="unpack", key=self.pkg.cpv, out=elog_out)
				if self.logfile is not None:
					eerror(" '%s'" % (self.logfile,),
						phase="unpack", key=self.pkg.cpv, out=elog_out)
				if elog_out is not None:
					elog_out.close()
			if not self.prefetch:
				portage.elog.elog_process(self.pkg.cpv, self._build_dir.settings)
			features = self._build_dir.settings.features
			if self.returncode == os.EX_OK:
				self._build_dir.clean_log()
			self._build_dir.unlock()
			self.config_pool.deallocate(self._build_dir.settings)
			self._build_dir = None
    def execute(self):
        settings = self.settings
        pkg = self.pkg
        portdb = pkg.root_config.trees["porttree"].dbapi
        ebuild_path = portdb.findname(pkg.cpv, myrepo=pkg.repo)
        if ebuild_path is None:
            raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
        settings.setcpv(pkg)
        debug = settings.get("PORTAGE_DEBUG") == "1"

        rval = portage.doebuild(
            ebuild_path,
            "fetch",
            settings=settings,
            debug=debug,
            listonly=self.pretend,
            fetchonly=1,
            fetchall=self.fetch_all,
            mydbapi=portdb,
            tree="porttree",
        )

        # For pretend mode, this error message is suppressed,
        # and the unsuccessful return value is used to trigger
        # a call to the pkg_nofetch phase.
        if rval != os.EX_OK and not self.pretend:
            msg = "Fetch failed for '%s'" % (pkg.cpv,)
            eerror(msg, phase="unpack", key=pkg.cpv)

        return rval
	def _eerror(self, lines):
		out = portage.StringIO()
		for line in lines:
			eerror(line, phase="unpack", key=self.pkg.cpv, out=out)
		msg = _unicode_decode(out.getvalue(),
			encoding=_encodings['content'], errors='replace')
		if msg:
			self.scheduler.output(msg, log_path=self.logfile)
Exemple #11
0
 def _eerror(self, lines):
     out = portage.StringIO()
     for line in lines:
         eerror(line, phase="unpack", key=self.pkg.cpv, out=out)
     msg = _unicode_decode(out.getvalue(),
                           encoding=_encodings['content'],
                           errors='replace')
     if msg:
         self.scheduler.output(msg, log_path=self.logfile)
	def _eerror(self, lines):
		out = StringIO()
		phase = self.phase
		for line in lines:
			eerror(line, phase=phase, key=self.settings.mycpv, out=out)
		msg = _unicode_decode(out.getvalue(),
			encoding=_encodings['content'], errors='replace')
		if msg:
			self.scheduler.output(msg,
				log_path=self.settings.get("PORTAGE_LOG_FILE"))
Exemple #13
0
 def _eerror(self, lines):
     out = StringIO()
     phase = self.phase
     for line in lines:
         eerror(line, phase=phase, key=self.settings.mycpv, out=out)
     msg = _unicode_decode(out.getvalue(),
                           encoding=_encodings['content'],
                           errors='replace')
     if msg:
         self.scheduler.output(
             msg, log_path=self.settings.get("PORTAGE_LOG_FILE"))
	def execute(self):
		settings = self.settings
		pkg = self.pkg
		portdb = pkg.root_config.trees["porttree"].dbapi
		ebuild_path = portdb.findname(pkg.cpv, myrepo=pkg.repo)
		if ebuild_path is None:
			raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
		settings.setcpv(pkg)
		debug = settings.get("PORTAGE_DEBUG") == "1"

		rval = portage.doebuild(ebuild_path, "fetch",
			settings=settings, debug=debug,
			listonly=self.pretend, fetchonly=1, fetchall=self.fetch_all,
			mydbapi=portdb, tree="porttree")

		if rval != os.EX_OK:
			msg = "Fetch failed for '%s'" % (pkg.cpv,)
			eerror(msg, phase="unpack", key=pkg.cpv)

		return rval
Exemple #15
0
	def execute(self):
		settings = self.settings
		pkg = self.pkg
		portdb = pkg.root_config.trees["porttree"].dbapi
		ebuild_path = portdb.findname(pkg.cpv, myrepo=pkg.repo)
		if ebuild_path is None:
			raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
		settings.setcpv(pkg)
		debug = settings.get("PORTAGE_DEBUG") == "1"

		rval = portage.doebuild(ebuild_path, "fetch",
			settings=settings, debug=debug,
			listonly=self.pretend, fetchonly=1, fetchall=self.fetch_all,
			mydbapi=portdb, tree="porttree")

		# For pretend mode, this error message is suppressed,
		# and the unsuccessful return value is used to trigger
		# a call to the pkg_nofetch phase.
		if rval != os.EX_OK and not self.pretend:
			msg = "Fetch failed for '%s'" % (pkg.cpv,)
			eerror(msg, phase="unpack", key=pkg.cpv)

		return rval