aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/tatt7
-rw-r--r--tatt/packageFinder.py17
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: