commit 55d88e291c35640b4b560a2754d739d75393d237 Author: Till Maas opensource@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)
rel-eng@lists.fedoraproject.org