mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-05-18 04:11:29 +00:00
commit revuput, not added to setup.py as it's not ready yet
This commit is contained in:
parent
f448fc0196
commit
f74faa7bd0
104
revuput
Executable file
104
revuput
Executable file
@ -0,0 +1,104 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# Copyright 2007, Canonical
|
||||||
|
#
|
||||||
|
# GPL 3
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import string
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
USAGE = 'Usage: revuput <location> <debuild options>'
|
||||||
|
|
||||||
|
def find_fixed_launchpad_bug(changesfile):
|
||||||
|
changes = open(changesfile).readlines()
|
||||||
|
for line in changes:
|
||||||
|
if line.startswith("Launchpad-Bugs-Fixed"):
|
||||||
|
return line.split(":")[1].split()
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def call_dput(location, changes):
|
||||||
|
return os.system("dput %s %s" % (location, changes)) == 0
|
||||||
|
|
||||||
|
|
||||||
|
def lookup_dput_host(host):
|
||||||
|
(dummy, output, dummy) = os.popen3("dput -H | grep ^%s" % host)
|
||||||
|
text = output.read()
|
||||||
|
if text:
|
||||||
|
return text.split()[2]
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def call_debuild(options):
|
||||||
|
return os.system("debuild -S -k%s %s" % \
|
||||||
|
(os.getenv("DEBEMAIL"), \
|
||||||
|
string.join(options, " "))) == 0
|
||||||
|
|
||||||
|
def get_name_and_version():
|
||||||
|
changelogfile = "debian/changelog"
|
||||||
|
if not os.path.exists(changelogfile):
|
||||||
|
print >> sys.stderr, "%s not found." % changelogfile
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
head = open(changelogfile).readline()
|
||||||
|
return re.findall(r'^(.*)\ \((.*)\).*', head)
|
||||||
|
|
||||||
|
|
||||||
|
def assemble_bug_comment_text(host, sourcepackage, version):
|
||||||
|
return """A new version of %s was uploaded to fix this bug.
|
||||||
|
|
||||||
|
To review the current version, please run
|
||||||
|
|
||||||
|
dget -x http://%s/%s_%s.dsc
|
||||||
|
""" % (sourcepackage, host, sourcepackage, version)
|
||||||
|
|
||||||
|
|
||||||
|
def file_bug_report(package, text):
|
||||||
|
to = "new@bugs.launchpad.net"
|
||||||
|
mailtext = """ affects distros/ubuntu/%s
|
||||||
|
status confirmed
|
||||||
|
subscribe %s"""
|
||||||
|
|
||||||
|
mail_process = subprocess.Popen(["mail", "-s", subject, to],
|
||||||
|
stdin=subprocess.PIPE,
|
||||||
|
stdout=subprocess.PIPE)
|
||||||
|
mail_process.communicate(report)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
location = ""
|
||||||
|
options = []
|
||||||
|
|
||||||
|
if len(sys.argv)<2:
|
||||||
|
print >> sys.stderr, USAGE
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
location = sys.argv[1]
|
||||||
|
if len(sys.argv) > 2:
|
||||||
|
options = sys.argv[2:]
|
||||||
|
|
||||||
|
if not call_debuild(options):
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
(sourcepackage, version) = get_name_and_version()[0]
|
||||||
|
changesfile = "../%s_%s_source.changes" % (sourcepackage, version)
|
||||||
|
if not os.path.exists(os.path.expanduser(changesfile)):
|
||||||
|
print >> sys.stderr, "%s does not exist." % \
|
||||||
|
os.path.expanduser(changesfile)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
fixed_lp_bugs = find_fixed_launchpad_bug(changesfile)
|
||||||
|
host = lookup_dput_host(location)
|
||||||
|
|
||||||
|
print assemble_bug_comment_text(host, sourcepackage, version)
|
||||||
|
if not call_dput(location, changesfile):
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
x
Reference in New Issue
Block a user