aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-29 19:57:46 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-29 19:57:46 +0000
commit6d3180ac087f169478f9cb650b9f16dca45e758f (patch)
tree47cc9c719b068f88ff9b30c6afbfa55e7c8ac05e /pym/repoman
parentMove the here-document code from the EbuildWhitespace check to the (diff)
downloadportage-6d3180ac087f169478f9cb650b9f16dca45e758f.tar.gz
portage-6d3180ac087f169478f9cb650b9f16dca45e758f.tar.bz2
portage-6d3180ac087f169478f9cb650b9f16dca45e758f.zip
Warn about sed and epatch calls which should be moved from src_unpack to
src_prepare. Thanks to Markus Meier <maekke@g.o> for the initial patch. svn path=/main/trunk/; revision=13413
Diffstat (limited to 'pym/repoman')
-rw-r--r--pym/repoman/checks.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py
index 732f6eb95..78875b4c0 100644
--- a/pym/repoman/checks.py
+++ b/pym/repoman/checks.py
@@ -229,6 +229,38 @@ class EapiDefinition(LineCheck):
elif self.inherit_re.match(line) is not None:
self.inherit_line = line
+class SrcUnpackPatches(LineCheck):
+ repoman_check_name = 'ebuild.minorsyn'
+
+ src_unpack_re = re.compile(r'^src_unpack\(\)')
+ func_end_re = re.compile(r'^\}$')
+ src_prepare_tools_re = re.compile(r'\s(e?patch|sed)\s')
+
+ def new(self, pkg):
+ if pkg.metadata['EAPI'] not in ('0', '1'):
+ self.eapi = pkg.metadata['EAPI']
+ else:
+ self.eapi = None
+ self.in_src_unpack = None
+
+ def check(self, num, line):
+
+ if self.eapi is not None:
+
+ if self.in_src_unpack is None and \
+ self.src_unpack_re.match(line) is not None:
+ self.in_src_unpack = True
+
+ if self.in_src_unpack is True and \
+ self.func_end_re.match(line) is not None:
+ self.in_src_unpack = False
+
+ if self.in_src_unpack:
+ m = self.src_prepare_tools_re.search(line)
+ if m is not None:
+ return ("'%s'" % m.group(1)) + \
+ " call should be moved to src_prepare from line: %d"
+
class EbuildPatches(LineCheck):
"""Ensure ebuilds use bash arrays for PATCHES to ensure white space safety"""
repoman_check_name = 'ebuild.patches'
@@ -368,7 +400,7 @@ _constant_checks = tuple((c() for c in (
EbuildPatches, EbuildQuotedA, EapiDefinition,
IUseUndefined, ImplicitRuntimeDeps, InheritAutotools,
EMakeParallelDisabled, EMakeParallelDisabledViaMAKEOPTS,
- DeprecatedBindnowFlags, WantAutoDefaultValue)))
+ DeprecatedBindnowFlags, SrcUnpackPatches, WantAutoDefaultValue)))
_here_doc_re = re.compile(r'.*\s<<[-]?(\w+)$')