commit: 55dedaa865334543e51693838700dcf5e72754d2 Author: Wim Muskee <wimmuskee <AT> gmail <DOT> com> AuthorDate: Sat Jan 7 11:02:41 2017 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Fri Jan 13 17:25:39 2017 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=55dedaa8
repoman: add HOMEPAGE.missingurischeme check (bug 533554) X-Gentoo-Bug: 533554 X-Gentoo-Bug-URL: https://bugs.gentoo.org/533554 repoman/man/repoman.1 | 3 +++ .../repoman/modules/scan/metadata/ebuild_metadata.py | 17 +++++++++++++++-- repoman/pym/repoman/qa_data.py | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/repoman/man/repoman.1 b/repoman/man/repoman.1 index f99197b..3b3aec2 100644 --- a/repoman/man/repoman.1 +++ b/repoman/man/repoman.1 @@ -170,6 +170,9 @@ Ebuilds that have an unsupported EAPI version (you must upgrade portage) .B HOMEPAGE.missing Ebuilds that have a missing or empty HOMEPAGE variable .TP +.B HOMEPAGE.missingurischeme +HOMEPAGE is missing an URI scheme +.TP .B HOMEPAGE.virtual Virtuals that have a non-empty HOMEPAGE variable .TP diff --git a/repoman/pym/repoman/modules/scan/metadata/ebuild_metadata.py b/repoman/pym/repoman/modules/scan/metadata/ebuild_metadata.py index e991a30..cba8ec5 100644 --- a/repoman/pym/repoman/modules/scan/metadata/ebuild_metadata.py +++ b/repoman/pym/repoman/modules/scan/metadata/ebuild_metadata.py @@ -11,8 +11,10 @@ if sys.hexversion >= 0x3000000: from repoman.modules.scan.scanbase import ScanBase from repoman.qa_data import missingvars -NON_ASCII_RE = re.compile(r'[^\x00-\x7f]') +from portage.dep import use_reduce +NON_ASCII_RE = re.compile(r'[^\x00-\x7f]') +URISCHEME_RE = re.compile(r'^[a-z][0-9a-z\-\.\+]+://') class EbuildMetadata(ScanBase): @@ -62,10 +64,21 @@ class EbuildMetadata(ScanBase): self.qatracker.add_error(myqakey, ebuild.relative_path) return False + def homepage_urischeme(self, **kwargs): + ebuild = kwargs.get('ebuild').get() + if kwargs.get('catdir') != "virtual": + for homepage in use_reduce(ebuild.metadata["HOMEPAGE"], + matchall=True,flat=True): + if URISCHEME_RE.match(homepage) is None: + self.qatracker.add_error( + "HOMEPAGE.missingurischeme", ebuild.relative_path) + return False + @property def runInPkgs(self): return (False, []) @property def runInEbuilds(self): - return (True, [self.invalidchar, self.missing, self.old_virtual, self.virtual]) + return (True, [self.invalidchar, self.missing, self.old_virtual, + self.virtual, self.homepage_urischeme]) diff --git a/repoman/pym/repoman/qa_data.py b/repoman/pym/repoman/qa_data.py index c3f4207..29a95ab 100644 --- a/repoman/pym/repoman/qa_data.py +++ b/repoman/pym/repoman/qa_data.py @@ -115,6 +115,8 @@ qahelp = { "Ebuilds that have a missing or empty HOMEPAGE variable"), "HOMEPAGE.virtual": ( "Virtuals that have a non-empty HOMEPAGE variable"), + "HOMEPAGE.missingurischeme": ( + "HOMEPAGE is missing an URI scheme"), "PDEPEND.suspect": ( "PDEPEND contains a package that usually only belongs in DEPEND."), "LICENSE.syntax": (