| # Copyright 2012 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| import textwrap |
| |
| import portage |
| from portage.dep import _repo_separator |
| from portage.elog import elog_process |
| from portage.elog.messages import eerror |
| |
| 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) |