[releng] check-latest-build: PEP8 compliance/implement --fix
Till Maas
till at fedoraproject.org
Mon Sep 29 19:32:14 UTC 2014
commit 55d88e291c35640b4b560a2754d739d75393d237
Author: Till Maas <opensource at till.name>
Date: Mon Sep 29 21:32:44 2014 +0200
check-latest-build: PEP8 compliance/implement --fix
scripts/check-latest-build.py | 63 ++++++++++++++++++++++++----------------
1 files changed, 38 insertions(+), 25 deletions(-)
---
diff --git a/scripts/check-latest-build.py b/scripts/check-latest-build.py
index 6370939..422ee0c 100755
--- a/scripts/check-latest-build.py
+++ b/scripts/check-latest-build.py
@@ -9,33 +9,37 @@
# It can happen when bodhi pushes multiple builds of one package.
#
+import argparse
+import logging
+log = logging.getLogger(__name__)
+import subprocess
-import sys
-import os
import koji
-import time
-import string
-import rpm
-import shutil
-import argparse
+import rpm
# get parameters from command line
parser = argparse.ArgumentParser()
parser.add_argument("--arch", help="use when checking secondary arch koji")
-parser.add_argument("--fix", help="retag the highest NVR to became the latest (no-op now)", action="store_true")
-parser.add_argument("--verbose", help="be verbose during processing", action="store_true")
+parser.add_argument("--fix", help="retag the highest NVR to became the latest",
+ action="store_true")
+parser.add_argument("--verbose", help="be verbose during processing",
+ action="store_true")
+parser.add_argument("--debug", help="Enable debug output", action="store_true")
parser.add_argument("tag", help="tag to check")
parser.add_argument("package", nargs="*", help="packages to check")
args = parser.parse_args()
-#print("tag=%s arch=%s pkgs=%s" % (args.tag, args.arch, args.package))
+if args.debug:
+ log.setLevel(logging.DEBUG)
+log.debug("tag=%s arch=%s pkgs=%s", args.tag, args.arch, args.package)
if args.arch is None:
KOJIHUB = 'http://koji.fedoraproject.org/kojihub'
else:
KOJIHUB = 'http://%s.koji.fedoraproject.org/kojihub' % (args.arch)
-def _rpmvercmp ((e1, v1, r1), (e2, v2, r2)):
+
+def _rpmvercmp((e1, v1, r1), (e2, v2, r2)):
"""find out which build is newer"""
if e1 == "None":
e1 = "0"
@@ -43,30 +47,32 @@ def _rpmvercmp ((e1, v1, r1), (e2, v2, r2)):
e2 = "0"
rc = rpm.labelCompare((e1, v1, r1), (e2, v2, r2))
if rc == 1:
- #first evr wins
+ # first evr wins
return 1
elif rc == 0:
- #same evr
+ # same evr
return 0
else:
- #second evr wins
+ # second evr wins
return -1
kojisession = koji.ClientSession(KOJIHUB)
if args.package == []:
- latest_builds = sorted(kojisession.listTagged(args.tag, latest=True), key = lambda pkg: pkg['package_name'])
+ latest_builds = sorted(kojisession.listTagged(args.tag, latest=True),
+ key=lambda pkg: pkg['package_name'])
else:
-# print("pkgs=%s" % (args.package))
+ log.debug("pkgs=%s", args.package)
latest_builds = []
for p in args.package:
- latest_builds += kojisession.listTagged(args.tag, latest=True, package=p)
+ latest_builds += kojisession.listTagged(args.tag, latest=True,
+ package=p)
num = len(latest_builds)
-#print "latest builds=%d" % (num)
-#print("%s" % (latest_builds))
+log.debug("latest builds=%d", num)
+log.debug(str(latest_builds))
for build in latest_builds:
latest_evr = (str(build['epoch']), build['version'], build['release'])
@@ -75,9 +81,16 @@ for build in latest_builds:
builds = kojisession.listTagged(args.tag, package=build['package_name'])
for b in builds:
- evr = (str(b['epoch']), b['version'], b['release'])
- res = _rpmvercmp(latest_evr, evr)
- if res == -1:
- print("\tlatest is %s, but higher exists - %s" % (build['nvr'], b['nvr']))
- if args.fix is True:
- print("\t\tretagging (no-op)")
+ evr = (str(b['epoch']), b['version'], b['release'])
+ res = _rpmvercmp(latest_evr, evr)
+ if res == -1:
+ print("\tlatest is %s, but higher exists - %s" % (build['nvr'],
+ b['nvr']))
+ if args.fix is True:
+ cmd = ["koji", "untag-build", args.tag, b['nvr']]
+ print("running: " + " ".join(cmd))
+ subprocess.check_call(cmd)
+
+ cmd = ["koji", "tag-build", args.tag, b['nvr']]
+ print("running: " + " ".join(cmd))
+ subprocess.check_call(cmd)
More information about the rel-eng
mailing list