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)
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)
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
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)
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 _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
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