Remove outdated script
This is no longer in use
This commit is contained in:
parent
be5b3ec12d
commit
d07e2cdc4a
166
copy-to-132.py
166
copy-to-132.py
@ -1,166 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import osc
|
|
||||||
import osc.core
|
|
||||||
import osc.conf
|
|
||||||
import xml.etree.ElementTree as ET
|
|
||||||
import re
|
|
||||||
|
|
||||||
os.environ['OSC_CONFIG'] = os.path.expanduser('~/.oscrc-syncer')
|
|
||||||
|
|
||||||
#initialize osc config
|
|
||||||
osc.conf.get_config()
|
|
||||||
osc.conf.config['debug'] = True
|
|
||||||
|
|
||||||
srcmd5s = dict()
|
|
||||||
revs = dict()
|
|
||||||
|
|
||||||
def parse_prj(prj):
|
|
||||||
url = osc.core.makeurl(osc.conf.config['apiurl'], ['source', prj], { 'view': 'info', 'nofilename': 1 } )
|
|
||||||
f = osc.core.http_GET(url)
|
|
||||||
root = ET.parse(f)
|
|
||||||
|
|
||||||
ret = dict()
|
|
||||||
|
|
||||||
for si in root.findall('./sourceinfo'):
|
|
||||||
if si.attrib.has_key('lsrcmd5'):
|
|
||||||
continue # ignore links
|
|
||||||
package = si.attrib['package']
|
|
||||||
md5 = si.attrib['verifymd5']
|
|
||||||
srcmd5s[md5] = si.attrib['srcmd5']
|
|
||||||
revs[md5] = si.attrib['rev']
|
|
||||||
if re.match('_product.*', package):
|
|
||||||
continue
|
|
||||||
ret[package] = md5
|
|
||||||
|
|
||||||
return ret
|
|
||||||
|
|
||||||
# POSIX system. Create and return a getch that manipulates the tty.
|
|
||||||
import termios, sys, tty
|
|
||||||
def _getch():
|
|
||||||
|
|
||||||
fd = sys.stdin.fileno()
|
|
||||||
old_settings = termios.tcgetattr(fd)
|
|
||||||
try:
|
|
||||||
tty.setraw(fd)
|
|
||||||
ch = sys.stdin.read(1)
|
|
||||||
finally:
|
|
||||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
|
||||||
return ch
|
|
||||||
|
|
||||||
def get_devel_project(package):
|
|
||||||
url = osc.core.makeurl(osc.conf.config['apiurl'], ['source', 'openSUSE:Factory', package, '_meta'])
|
|
||||||
f = osc.core.http_GET(url)
|
|
||||||
root = ET.parse(f)
|
|
||||||
for dp in root.findall('./devel'):
|
|
||||||
return dp.attrib['project']
|
|
||||||
|
|
||||||
raise 'NOW WHAT?'
|
|
||||||
|
|
||||||
def create_submit(project=None, package=None, rev=None, md5=None):
|
|
||||||
text = "<request type='submit'>\n"
|
|
||||||
text += " <submit>\n"
|
|
||||||
text += " <source project='" + project + "' package='" + package + "' rev='" + md5 + "'/>\n"
|
|
||||||
text += " <target project='openSUSE:13.2' package='" + package + "'/>\n"
|
|
||||||
text += " </submit>\n"
|
|
||||||
text += " <description>Submit revision " + rev + " of openSUSE:Factory/" + package + "</description>\n"
|
|
||||||
text += "</request>"
|
|
||||||
|
|
||||||
url = osc.core.makeurl(osc.conf.config['apiurl'], [ 'request' ], { 'cmd': 'create' })
|
|
||||||
#print text
|
|
||||||
print osc.core.http_POST(url, data=text).read()
|
|
||||||
|
|
||||||
def create_delete(package):
|
|
||||||
text = "<request>\n"
|
|
||||||
text += " <action type='delete'>\n"
|
|
||||||
text += " <target project='openSUSE:13.2' package='" + package + "'/>\n"
|
|
||||||
text += " </action>\n"
|
|
||||||
text += " <description>Gone from Factory</description>\n"
|
|
||||||
text += "</request>"
|
|
||||||
|
|
||||||
url = osc.core.makeurl(osc.conf.config['apiurl'], [ 'request' ], { 'cmd': 'create' })
|
|
||||||
#print text
|
|
||||||
print osc.core.http_POST(url, data=text).read()
|
|
||||||
|
|
||||||
def load_nos():
|
|
||||||
ret = set()
|
|
||||||
with open('nos') as f:
|
|
||||||
for line in f.readlines():
|
|
||||||
ret.add(line.strip())
|
|
||||||
return ret
|
|
||||||
|
|
||||||
def save_nos(nos):
|
|
||||||
with open('nos', 'w') as f:
|
|
||||||
for key in nos:
|
|
||||||
f.write(key + "\n")
|
|
||||||
|
|
||||||
def find_request_md5s(package):
|
|
||||||
url = osc.core.makeurl(osc.conf.config['apiurl'],
|
|
||||||
['search', 'request'],
|
|
||||||
{ 'match': "action/target/@project='openSUSE:13.2' and action/target/@package='{}'".format(package) })
|
|
||||||
f = osc.core.http_GET(url)
|
|
||||||
root = ET.parse(f).getroot()
|
|
||||||
md5s = set()
|
|
||||||
for rq in root.findall('request'):
|
|
||||||
for source in rq.findall('.//source'):
|
|
||||||
md5s.add(source.attrib['rev'])
|
|
||||||
return md5s
|
|
||||||
|
|
||||||
factory = parse_prj('openSUSE:Factory')
|
|
||||||
d132 = parse_prj('openSUSE:13.2')
|
|
||||||
|
|
||||||
NOS = load_nos()
|
|
||||||
|
|
||||||
for package in sorted(set(factory) | set(d132)):
|
|
||||||
prompt = None
|
|
||||||
|
|
||||||
if factory.has_key(package):
|
|
||||||
|
|
||||||
pmd5 = "%s-%s" % ( package, factory[package] )
|
|
||||||
if pmd5 in NOS:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if not d132.has_key(package):
|
|
||||||
if srcmd5s[factory[package]] in find_request_md5s(package):
|
|
||||||
continue
|
|
||||||
elif factory[package] == d132[package]:
|
|
||||||
continue
|
|
||||||
elif srcmd5s[factory[package]] in find_request_md5s(package):
|
|
||||||
print "%s already requested" % pmd5
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
url = osc.core.makeurl(osc.conf.config['apiurl'], ['source', 'openSUSE:Factory', package],
|
|
||||||
{ 'unified': 1, 'opackage': package, 'oproject': 'openSUSE:13.2', 'cmd': 'diff', 'expand': 1 } )
|
|
||||||
difflines = osc.core.http_POST(url).readlines()
|
|
||||||
inchanges = False
|
|
||||||
for line in difflines:
|
|
||||||
if re.match(r'^Index:.*\.changes', line):
|
|
||||||
inchanges = True
|
|
||||||
elif re.match(r'^Index:', line):
|
|
||||||
inchanges = False
|
|
||||||
|
|
||||||
if inchanges:
|
|
||||||
print line,
|
|
||||||
|
|
||||||
prompt = "copy diffing package %s ?" % pmd5
|
|
||||||
|
|
||||||
md5 = srcmd5s[factory[package]]
|
|
||||||
rev = revs[factory[package]]
|
|
||||||
devprj = get_devel_project(package)
|
|
||||||
if devprj == 'openSUSE:Factory':
|
|
||||||
continue
|
|
||||||
|
|
||||||
print prompt
|
|
||||||
d = _getch()
|
|
||||||
if d == 'y':
|
|
||||||
create_submit(project=devprj, package=package, rev=rev, md5=md5)
|
|
||||||
elif d == 'n':
|
|
||||||
NOS.add(pmd5)
|
|
||||||
save_nos(NOS)
|
|
||||||
|
|
||||||
else: # the 13.2 must have it
|
|
||||||
print "delete package 13.2/%s-%s" % ( package, d132[package] )
|
|
||||||
create_delete(package)
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user