public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Brian Dolbec" <dolsen@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:repoman commit in: pym/repoman/, pym/repoman/modules/scan/keywords/
Date: Fri, 29 Jan 2016 05:01:05 +0000 (UTC)	[thread overview]
Message-ID: <1454043176.6ef51774706f1cf02ff3b4c38c8be2d79a0edde3.dolsen@gentoo> (raw)

commit:     6ef51774706f1cf02ff3b4c38c8be2d79a0edde3
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  3 18:28:58 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Fri Jan 29 04:52:56 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=6ef51774

repoman: Complete KeywordChecks migration

 pym/repoman/modules/scan/keywords/keywords.py | 47 ++++++++++++---------------
 pym/repoman/scanner.py                        |  3 +-
 2 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/pym/repoman/modules/scan/keywords/keywords.py b/pym/repoman/modules/scan/keywords/keywords.py
index 484d7d5..e34c891 100644
--- a/pym/repoman/modules/scan/keywords/keywords.py
+++ b/pym/repoman/modules/scan/keywords/keywords.py
@@ -19,6 +19,8 @@ class KeywordChecks(ScanBase):
 		super(KeywordChecks, self).__init__(**kwargs)
 		self.qatracker = kwargs.get('qatracker')
 		self.options = kwargs.get('options')
+		self.repo_metadata = kwargs.get('repo_metadata')
+		self.profiles = kwargs.get('profiles')
 		self.slot_keywords = {}
 
 	def prepare(self, **kwargs):
@@ -45,21 +47,19 @@ class KeywordChecks(ScanBase):
 		live_ebuild = kwargs.get('live_ebuild')
 		if not self.options.straight_to_stable:
 			self._checkAddedWithStableKeywords(
-				package, ebuild, y_ebuild, keywords, changed)
+				xpkg, ebuild, y_ebuild, ebuild.keywords, changed)
 
-		self._checkForDroppedKeywords(
-			pkg, ebuild, ebuild_archs, live_ebuild)
+		self._checkForDroppedKeywords(pkg, ebuild, ebuild.archs, live_ebuild)
 
-		self._checkForInvalidKeywords(
-			pkg, package, y_ebuild, kwlist, profiles)
+		self._checkForInvalidKeywords(ebuild, xpkg, y_ebuild)
 
-		self._checkForMaskLikeKeywords(
-			package, y_ebuild, keywords, kwlist)
+		self._checkForMaskLikeKeywords(xpkg, y_ebuild, ebuild.keywords)
 
-		self.slot_keywords[pkg.slot].update(ebuild_archs)
+		self.slot_keywords[pkg.slot].update(ebuild.archs)
 		return {'continue': False}
 
-	def _isKeywordStable(self, keyword):
+	@staticmethod
+	def _isKeywordStable(keyword):
 		return not keyword.startswith("~") and not keyword.startswith("-")
 
 	def _checkAddedWithStableKeywords(
@@ -88,9 +88,8 @@ class KeywordChecks(ScanBase):
 						ebuild.relative_path,
 						" ".join(sorted(dropped_keywords))))
 
-	def _checkForInvalidKeywords(
-		self, pkg, package, y_ebuild, kwlist, profiles):
-		myuse = pkg._metadata["KEYWORDS"].split()
+	def _checkForInvalidKeywords(self, ebuild, xpkg, y_ebuild):
+		myuse = ebuild.keywords
 
 		for mykey in myuse:
 			if mykey not in ("-*", "*", "~*"):
@@ -99,20 +98,16 @@ class KeywordChecks(ScanBase):
 				if not self._isKeywordStable(myskey[:1]):
 					myskey = myskey[1:]
 
-				if myskey not in kwlist:
+				if myskey not in self.repo_metadata['kwlist']:
+					self.qatracker.add_error("KEYWORDS.invalid",
+						"%s/%s.ebuild: %s" % (xpkg, y_ebuild, mykey))
+				elif myskey not in self.profiles:
 					self.qatracker.add_error(
 						"KEYWORDS.invalid",
-						"%s/%s.ebuild: %s" % (
-							package, y_ebuild, mykey))
-				elif myskey not in profiles:
-					self.qatracker.add_error(
-						"KEYWORDS.invalid",
-						"%s/%s.ebuild: %s (profile invalid)" % (
-							package, y_ebuild, mykey))
-
-	def _checkForMaskLikeKeywords(
-		self, package, y_ebuild, keywords, kwlist):
+						"%s/%s.ebuild: %s (profile invalid)"
+							% (xpkg, y_ebuild, mykey))
 
+	def _checkForMaskLikeKeywords(self, xpkg, y_ebuild, keywords):
 		# KEYWORDS="-*" is a stupid replacement for package.mask
 		# and screws general KEYWORDS semantics
 		if "-*" in keywords:
@@ -121,12 +116,12 @@ class KeywordChecks(ScanBase):
 			for kw in keywords:
 				if kw[0] == "~":
 					kw = kw[1:]
-				if kw in kwlist:
+				if kw in self.repo_metadata['kwlist']:
 					haskeyword = True
 
 			if not haskeyword:
-				self.qatracker.add_error(
-					"KEYWORDS.stupid", package + "/" + y_ebuild + ".ebuild")
+				self.qatracker.add_error("KEYWORDS.stupid",
+					"%s/%s.ebuild" % (xpkg, y_ebuild))
 
 	@property
 	def runInPkgs(self):

diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
index b9e80ff..6996f38 100644
--- a/pym/repoman/scanner.py
+++ b/pym/repoman/scanner.py
@@ -206,6 +206,7 @@ class Scanner(object):
 			"uselist": uselist,
 			"checks": self.checks,
 			"repo_metadata": self.repo_metadata,
+			"profiles": self.profiles,
 		}
 		# initialize the plugin checks here
 		self.modules = {}
@@ -302,7 +303,7 @@ class Scanner(object):
 			for mod in [('ebuild', 'Ebuild'), ('live', 'LiveEclassChecks'),
 				('eapi', 'EAPIChecks'), ('ebuild_metadata', 'EbuildMetadata'),
 				('thirdpartymirrors', 'ThirdPartyMirrors'),
-				('description', 'DescriptionChecks'),
+				('description', 'DescriptionChecks'), (None, 'KeywordChecks'),
 				]:
 				if mod[0]:
 					mod_class = MODULE_CONTROLLER.get_class(mod[0])


             reply	other threads:[~2016-01-29  5:01 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-29  5:01 Brian Dolbec [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-01-30  8:00 [gentoo-commits] proj/portage:repoman commit in: pym/repoman/, pym/repoman/modules/scan/keywords/ Brian Dolbec
2016-01-27 23:15 Brian Dolbec
2016-01-23  1:42 Brian Dolbec
2016-01-22 20:55 Brian Dolbec
2016-01-21 18:30 Brian Dolbec
2016-01-18 19:23 Brian Dolbec
2016-01-11  8:01 Brian Dolbec
2016-01-11  6:31 Brian Dolbec
2016-01-06  4:21 Brian Dolbec

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1454043176.6ef51774706f1cf02ff3b4c38c8be2d79a0edde3.dolsen@gentoo \
    --to=dolsen@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox