From f9c1858dc7af5833ad4d24c5e25857b3fd39d261 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 14 Jun 2008 07:15:21 +0000 Subject: [PATCH] =?utf8?q?Add=20two=20new=20build=20log=20qa=20checks,=20s?= =?utf8?q?uggested=20by=20Diego=20Petten=C3=B2:?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * Detect automake "maintainer mode". See http://www.gentoo.org/proj/en/qa/autofailure.xml for more information. * Detect "Unrecognized options" messages from configure scripts. svn path=/main/trunk/; revision=10652 --- pym/portage/__init__.py | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 8b0f98d4e..0ca4f2441 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -4162,6 +4162,57 @@ def spawnebuild(mydo,actionmap,mysettings,debug,alwaysdep=0,logfile=None): filemode=060, filemask=0) if phase_retval == os.EX_OK: + if mydo == "install" and logfile: + try: + f = open(logfile, 'rb') + except EnvironmentError: + pass + else: + am_maintainer_mode = [] + configure_opts_warn = [] + configure_opts_warn_re = re.compile( + r'^configure: WARNING: Unrecognized options: .*') + am_maintainer_mode_re = re.compile(r'.*/missing --run .*') + try: + for line in f: + if am_maintainer_mode_re.search(line) is not None: + am_maintainer_mode.append(line.rstrip("\n")) + if configure_opts_warn_re.match(line) is not None: + configure_opts_warn.append(line.rstrip("\n")) + finally: + f.close() + + from portage.elog.messages import eqawarn + def _eqawarn(lines): + for line in lines: + eqawarn(line, phase=mydo, key=mysettings.mycpv) + from textwrap import wrap + wrap_width = 70 + + if am_maintainer_mode: + msg = ["QA Notice: Automake \"maintainer mode\" detected:"] + msg.append("") + msg.extend("\t" + line for line in am_maintainer_mode) + msg.append("") + msg.extend(wrap( + "If you patch Makefile.am, " + \ + "configure.in, or configure.ac then you " + \ + "should use autotools.eclass and " + \ + "eautomake or eautoreconf. Exceptions " + \ + "are limited to system packages " + \ + "for which it is impossible to run " + \ + "autotools during stage building. " + \ + "See http://www.gentoo.org/p" + \ + "roj/en/qa/autofailure.xml for more information.", + wrap_width)) + _eqawarn(msg) + + if configure_opts_warn: + msg = ["QA Notice: Unrecognized configure options:"] + msg.append("") + msg.extend("\t" + line for line in configure_opts_warn) + _eqawarn(msg) + if mydo == "install": # User and group bits that match the "portage" user or group are # automatically mapped to PORTAGE_INST_UID and PORTAGE_INST_GID if -- 2.26.2