With the python shebang remaining as Python 2, switch the scripts to using Python 3. This also allows us to clean up some imports.
105 lines
2.7 KiB
Python
Executable File
105 lines
2.7 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import sys
|
|
import os
|
|
import osc
|
|
import osc.core
|
|
import osc.conf
|
|
import xml.etree.ElementTree as ET
|
|
import re
|
|
|
|
|
|
results = []
|
|
repo = ""
|
|
architectures = ["x86_64", "i586"]
|
|
pkg = ""
|
|
projects = ['openSUSE:Factory', 'openSUSE:Factory:Rebuild']
|
|
|
|
#initialize osc config
|
|
osc.conf.get_config()
|
|
|
|
def get_prj_results(prj, arch):
|
|
url = osc.core.makeurl(osc.conf.config['apiurl'], ['build', prj, 'standard', arch, "_jobhistory?code=lastfailures"])
|
|
f = osc.core.http_GET(url)
|
|
xml = f.read()
|
|
results = []
|
|
|
|
root = ET.fromstring(xml)
|
|
|
|
xmllines = root.findall("./jobhist")
|
|
|
|
for pkg in xmllines:
|
|
if pkg.attrib['code'] == 'failed':
|
|
results.append(pkg.attrib['package'])
|
|
|
|
return results
|
|
|
|
def compare_results(factory, rebuild, testmode):
|
|
|
|
com_res = set(rebuild).symmetric_difference(set(factory))
|
|
|
|
if testmode != False:
|
|
print(com_res)
|
|
|
|
return com_res
|
|
|
|
def check_pkgs(rebuild_list):
|
|
url = osc.core.makeurl(osc.conf.config['apiurl'], ['source', 'openSUSE:Factory'])
|
|
f = osc.core.http_GET(url)
|
|
xml = f.read()
|
|
pkglist = []
|
|
|
|
root = ET.fromstring(xml)
|
|
|
|
xmllines = root.findall("./entry")
|
|
|
|
for pkg in xmllines:
|
|
if pkg.attrib['name'] in rebuild_list:
|
|
pkglist.append(pkg.attrib['name'])
|
|
|
|
return pkglist
|
|
|
|
def rebuild_pkg_in_factory(package, prj, arch, testmode, code=None):
|
|
query = { 'cmd': 'rebuild', 'arch': arch }
|
|
#prj = "home:jzwickl"
|
|
if package:
|
|
query['package'] = package
|
|
pkg = query['package']
|
|
|
|
u = osc.core.makeurl(osc.conf.config['apiurl'], ['build', prj], query=query)
|
|
|
|
if testmode != False:
|
|
print("Trigger rebuild for this package: " + u)
|
|
|
|
else:
|
|
try:
|
|
print('tried to trigger rebuild for project \'%s\' package \'%s\'' % (prj, pkg))
|
|
f = osc.core.http_POST(u)
|
|
|
|
except:
|
|
print('could not trigger rebuild for project \'%s\' package \'%s\'' % (prj, pkg))
|
|
|
|
testmode = False
|
|
try:
|
|
if sys.argv[1] != None:
|
|
if sys.argv[1] == '-test':
|
|
testmode = True
|
|
print("testmode: " + str(testmode))
|
|
else:
|
|
testmode = False
|
|
except:
|
|
pass
|
|
|
|
for arch in architectures:
|
|
fact_result = get_prj_results('openSUSE:Factory', arch)
|
|
rebuild_result = get_prj_results('openSUSE:Factory:Rebuild', arch)
|
|
rebuild_result = check_pkgs(rebuild_result)
|
|
fact_result = check_pkgs(fact_result)
|
|
result = compare_results(fact_result, rebuild_result, testmode)
|
|
|
|
print(sorted(result))
|
|
|
|
for package in result:
|
|
rebuild_pkg_in_factory(package, 'openSUSE:Factory', arch, testmode, None)
|
|
rebuild_pkg_in_factory(package, 'openSUSE:Factory:Rebuild', arch, testmode, None)
|