public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/tatt:master commit in: scripts/, tatt/
@ 2020-09-11 16:00 Sam James
  0 siblings, 0 replies; only message in thread
From: Sam James @ 2020-09-11 16:00 UTC (permalink / raw
  To: gentoo-commits

commit:     f36367445c64e28200a3fbb8ef7be4295cabeba9
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat May  2 05:25:35 2020 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Sep 10 19:07:29 2020 +0000
URL:        https://gitweb.gentoo.org/proj/tatt.git/commit/?id=f3636744

package lists: Use nattka to parse keywording bugs

NATTkA is now used for most of the package lists on Bugzilla.
Use it to parse the lists because currently we cannot handle
package atoms with no version in keywording bugs.

Closes: https://github.com/gentoo/tatt/issues/66
Closes: https://github.com/gentoo/tatt/issues/65
Signed-off-by: Sam James <sam <AT> gentoo.org>

 scripts/tatt          |  7 ++++---
 tatt/packageFinder.py | 17 ++++++++++++++---
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/scripts/tatt b/scripts/tatt
index b08adfd..9936006 100755
--- a/scripts/tatt
+++ b/scripts/tatt
@@ -166,9 +166,9 @@ if options.bugnum:
         sys.exit(1)
     if myJob.packageList==None:
         if response["cf_stabilisation_atoms"]:
-            myJob.packageList = packageFinder.findPackages(response["cf_stabilisation_atoms"], config['arch'])
+            myJob.packageList = packageFinder.findPackages(response["cf_stabilisation_atoms"], config['arch'], config['repodir'], options.bugnum)
             if len(myJob.packageList) == 0 and ("KEYWORDREQ" in response["keywords"] or response["component"] == "Keywording"):
-                myJob.packageList = packageFinder.findPackages(response["cf_stabilisation_atoms"], '~' + config['arch'])
+                myJob.packageList = packageFinder.findPackages(response["cf_stabilisation_atoms"], '~' + config['arch'], config['repodir'], options.bugnum)
         else:
             response = session.get(config["bugzilla-url"] + "/rest/bug/{}/attachment".format(options.bugnum), params=params).json()["bugs"][str(options.bugnum)]
             for attachment in response:
@@ -176,7 +176,7 @@ if options.bugnum:
                     continue
                 for flag in attachment['flags']:
                     if flag["name"] == "stabilization-list" and flag["status"] == '+':
-                        myJob.packageList = packageFinder.findPackages(base64.b64decode(attachment["data"]).decode("utf8"), config['arch'])
+                        myJob.packageList = packageFinder.findPackages(base64.b64decode(attachment["data"]).decode("utf8"), config['arch'], config['repodir'],  options.bugnum)
 
 
 # joint code for -f and -b
@@ -209,6 +209,7 @@ if myJob.packageList is not None and len(myJob.packageList) > 0:
 
         for p in myJob.packageList:
             print("Found the following package atom : " + p.packageString())
+
             # check if the package already has the needed keywords
             kw = port.aux_get(dep_getcpv(p.packageString()), ["KEYWORDS"])
             if len(kw) > 0:

diff --git a/tatt/packageFinder.py b/tatt/packageFinder.py
index a404d39..24c69ac 100644
--- a/tatt/packageFinder.py
+++ b/tatt/packageFinder.py
@@ -1,17 +1,28 @@
 """module for extracting packages from a package/architecture list """
-
+import subprocess
 from .gentooPackage import gentooPackage as gP
 
-def findPackages (s, arch):
+def findPackages (s, arch, repo, bugnum):
     """ Given a string s,
         and a string arch
         return all gentooPackages from that string that need actioning on that arch """
 
     packages = []
 
-    for line in s.splitlines():
+    if bugnum:
+            print("Using Nattka to process the bug")
+            output = subprocess.check_output(['nattka', '--repo', repo, 'apply', '-a', arch, '-n', bugnum, '--ignore-sanity-check', '--ignore-dependencies'])
+            output = output.decode("utf8").split("\n")
+            output = [line for line in output if not line.startswith("#")]
+            output = [line.split(" ")[0] for line in output]
+    else:
+            print("Manually processing")
+            output = s.splitlines()
+
+    for line in output:
         if not line:
             continue
+
         atom, _, arches = line.replace('\t', ' ').partition(' ')
         archlist = arches.split(' ')
         if not arches or arch in archlist or ('~' + arch) in archlist:


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2020-09-11 16:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-11 16:00 [gentoo-commits] proj/tatt:master commit in: scripts/, tatt/ Sam James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox