aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Muskee <wimmuskee@gmail.com>2017-01-07 12:02:41 +0100
committerZac Medico <zmedico@gentoo.org>2017-01-13 09:25:39 -0800
commit55dedaa865334543e51693838700dcf5e72754d2 (patch)
treedc1b9e21ecbeba686a514d7244ec513f610c4a05
parentrepoman: define long for python3 (diff)
downloadportage-55dedaa865334543e51693838700dcf5e72754d2.tar.gz
portage-55dedaa865334543e51693838700dcf5e72754d2.tar.bz2
portage-55dedaa865334543e51693838700dcf5e72754d2.zip
repoman: add HOMEPAGE.missingurischeme check (bug 533554)
X-Gentoo-Bug: 533554 X-Gentoo-Bug-URL: https://bugs.gentoo.org/533554
-rw-r--r--repoman/man/repoman.13
-rw-r--r--repoman/pym/repoman/modules/scan/metadata/ebuild_metadata.py17
-rw-r--r--repoman/pym/repoman/qa_data.py2
3 files changed, 20 insertions, 2 deletions
diff --git a/repoman/man/repoman.1 b/repoman/man/repoman.1
index f99197bea..3b3aec27e 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 e991a30b3..cba8ec5e2 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 c3f42072e..29a95abf6 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": (