mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-16 01:21:07 +00:00
requestbackport: Check for existing backport bugs first.
This commit is contained in:
parent
70a035f13d
commit
7dfb6c3ed7
1
debian/changelog
vendored
1
debian/changelog
vendored
@ -4,6 +4,7 @@ ubuntu-dev-tools (0.136ubuntu1) UNRELEASED; urgency=low
|
|||||||
* Remove dgetlp. No longer needed.
|
* Remove dgetlp. No longer needed.
|
||||||
* Use httplib2 everywhere that we do https. The python stdlib doesn't do
|
* Use httplib2 everywhere that we do https. The python stdlib doesn't do
|
||||||
certificate verification.
|
certificate verification.
|
||||||
|
* requestbackport: Check for existing backport bugs first.
|
||||||
|
|
||||||
-- Stefano Rivera <stefanor@debian.org> Mon, 21 Nov 2011 09:47:00 +0200
|
-- Stefano Rivera <stefanor@debian.org> Mon, 21 Nov 2011 09:47:00 +0200
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import optparse
|
import optparse
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import apt
|
import apt
|
||||||
@ -26,7 +27,8 @@ from ubuntutools.lp.lpapicache import Launchpad, Distribution
|
|||||||
from ubuntutools.lp.udtexceptions import PackageNotFoundException
|
from ubuntutools.lp.udtexceptions import PackageNotFoundException
|
||||||
from ubuntutools.config import UDTConfig
|
from ubuntutools.config import UDTConfig
|
||||||
from ubuntutools.rdepends import query_rdepends, RDependsException
|
from ubuntutools.rdepends import query_rdepends, RDependsException
|
||||||
from ubuntutools.question import YesNoQuestion, EditBugReport
|
from ubuntutools.question import (YesNoQuestion, EditBugReport,
|
||||||
|
confirmation_prompt)
|
||||||
|
|
||||||
|
|
||||||
class DestinationException(Exception):
|
class DestinationException(Exception):
|
||||||
@ -72,6 +74,30 @@ def determine_destinations(source, destination):
|
|||||||
return destinations
|
return destinations
|
||||||
|
|
||||||
|
|
||||||
|
def check_existing(package, destinations):
|
||||||
|
"""Search for possible existing bug reports"""
|
||||||
|
# The LP bug search is indexed, not substring:
|
||||||
|
query = re.findall(r'[a-z]+', package)
|
||||||
|
bugs = []
|
||||||
|
for release in destinations:
|
||||||
|
project = Launchpad.projects[release + '-backports']
|
||||||
|
bugs += project.searchTasks(omit_duplicates=True,
|
||||||
|
search_text=query,
|
||||||
|
status=["Incomplete", "New", "Confirmed",
|
||||||
|
"Triaged", "In Progress",
|
||||||
|
"Fix Committed"])
|
||||||
|
if not bugs:
|
||||||
|
return
|
||||||
|
|
||||||
|
Logger.normal("There are existing bug reports that look similar to your "
|
||||||
|
"request. Please check before continuing:")
|
||||||
|
|
||||||
|
for bug in sorted(set(bug_task.bug for bug_task in bugs)):
|
||||||
|
Logger.normal(" * LP: #%-7i: %s %s", bug.id, bug.title, bug.web_link)
|
||||||
|
|
||||||
|
confirmation_prompt()
|
||||||
|
|
||||||
|
|
||||||
def find_rdepends(releases, published_binaries):
|
def find_rdepends(releases, published_binaries):
|
||||||
intermediate = defaultdict(lambda: defaultdict(list))
|
intermediate = defaultdict(lambda: defaultdict(list))
|
||||||
|
|
||||||
@ -250,6 +276,8 @@ def main():
|
|||||||
Logger.error(str(e))
|
Logger.error(str(e))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
check_existing(package, destinations)
|
||||||
|
|
||||||
package_spph = locate_package(package, options.source)
|
package_spph = locate_package(package, options.source)
|
||||||
request_backport(package_spph, options.source, destinations)
|
request_backport(package_spph, options.source, destinations)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user