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": (

Reply via email to