| |
| from repoman.modules.linechecks.base import LineCheck |
| from repoman._portage import portage |
| |
| |
| class EapiDefinition(LineCheck): |
| """ |
| Check that EAPI assignment conforms to PMS section 7.3.1 |
| (first non-comment, non-blank line). |
| """ |
| repoman_check_name = 'EAPI.definition' |
| ignore_comment = True |
| _eapi_re = portage._pms_eapi_re |
| |
| def new(self, pkg): |
| self._cached_eapi = pkg.eapi |
| self._parsed_eapi = None |
| self._eapi_line_num = None |
| |
| def check(self, num, line): |
| if self._eapi_line_num is None and line.strip(): |
| self._eapi_line_num = num + 1 |
| m = self._eapi_re.match(line) |
| if m is not None: |
| self._parsed_eapi = m.group(2) |
| |
| def end(self): |
| if self._parsed_eapi is None: |
| if self._cached_eapi != "0": |
| yield "valid EAPI assignment must occur on or before line: %s" % \ |
| self._eapi_line_num |
| elif self._parsed_eapi != self._cached_eapi: |
| yield ( |
| "bash returned EAPI '%s' which does not match " |
| "assignment on line: %s" % |
| (self._cached_eapi, self._eapi_line_num)) |