mirror of
				https://git.launchpad.net/ubuntu-dev-tools
				synced 2025-11-04 07:54:03 +00:00 
			
		
		
		
	requestsync: some more refactoring
This commit is contained in:
		
							parent
							
								
									c30c4865a4
								
							
						
					
					
						commit
						5e3e368bb8
					
				
							
								
								
									
										14
									
								
								requestsync
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								requestsync
									
									
									
									
									
								
							@ -40,8 +40,8 @@ from ubuntutools.lp.lpapicache import Launchpad, LpApiWrapper, Distribution, Per
 | 
			
		||||
import ubuntutools.common
 | 
			
		||||
import ubuntutools.packages
 | 
			
		||||
 | 
			
		||||
from ubuntutools.requestsync.mail import getDebianSrcPkg
 | 
			
		||||
from ubuntutools.requestsync.common import getDebianChangelog
 | 
			
		||||
from ubuntutools.requestsync.mail import *
 | 
			
		||||
from ubuntutools.requestsync.common import *
 | 
			
		||||
 | 
			
		||||
def checkNeedsSponsorship(srcpkg):
 | 
			
		||||
    """
 | 
			
		||||
@ -121,7 +121,7 @@ def checkExistingReports(package):
 | 
			
		||||
def cur_version_component(sourcepkg, release):
 | 
			
		||||
    
 | 
			
		||||
    try:
 | 
			
		||||
	src = Distribution('ubuntu').getArchive().getSourcePackage(sourcepkg, release)
 | 
			
		||||
	src = getUbuntuSrcPkg(sourcepkg, release)
 | 
			
		||||
        return (src.getVersion(), src.getComponent())
 | 
			
		||||
     
 | 
			
		||||
    except udtexceptions.PackageNotFoundException:
 | 
			
		||||
@ -129,14 +129,6 @@ def cur_version_component(sourcepkg, release):
 | 
			
		||||
        print "%s doesn't appear to exist in %s, specify -n for a package not in Ubuntu." % (sourcepkg, release)
 | 
			
		||||
        sys.exit(1)
 | 
			
		||||
 | 
			
		||||
def raw_input_exit_on_ctrlc(*args, **kwargs):
 | 
			
		||||
    """A wrapper around raw_input() to exit with a normalized message on Control-C"""
 | 
			
		||||
    try:
 | 
			
		||||
        return raw_input(*args, **kwargs)
 | 
			
		||||
    except KeyboardInterrupt:
 | 
			
		||||
        print 'Abort requested. No sync request filed.'
 | 
			
		||||
        sys.exit(1)
 | 
			
		||||
 | 
			
		||||
def get_email_address():
 | 
			
		||||
    '''Get the DEBEMAIL environment variable or give an error.'''
 | 
			
		||||
    myemailaddr = os.getenv('DEBEMAIL')
 | 
			
		||||
 | 
			
		||||
@ -23,6 +23,16 @@ import sys
 | 
			
		||||
import urllib2
 | 
			
		||||
from debian_bundle.changelog import Changelog
 | 
			
		||||
 | 
			
		||||
def raw_input_exit_on_ctrlc(*args, **kwargs):
 | 
			
		||||
	'''
 | 
			
		||||
	A wrapper around raw_input() to exit with a normalized message on Control-C
 | 
			
		||||
	'''
 | 
			
		||||
	try:
 | 
			
		||||
		return raw_input(*args, **kwargs)
 | 
			
		||||
	except KeyboardInterrupt:
 | 
			
		||||
		print 'Abort requested. No sync request filed.'
 | 
			
		||||
		sys.exit(1)
 | 
			
		||||
 | 
			
		||||
def getDebianChangelog(srcpkg, version):
 | 
			
		||||
	'''
 | 
			
		||||
	Return the new changelog entries upto 'version'.
 | 
			
		||||
 | 
			
		||||
@ -32,3 +32,9 @@ def getDebianSrcPkg(name, release):
 | 
			
		||||
		release = 'sid'
 | 
			
		||||
 | 
			
		||||
	return debian_archive.getSourcePackage(name, release)
 | 
			
		||||
 | 
			
		||||
def getUbuntuSrcPkg(name, release):
 | 
			
		||||
	ubuntu = Distribution('ubuntu')
 | 
			
		||||
	ubuntu_archive = ubuntu.getArchive()
 | 
			
		||||
 | 
			
		||||
	return ubuntu_archive.getSourcePackage(name, release)
 | 
			
		||||
 | 
			
		||||
@ -19,9 +19,11 @@
 | 
			
		||||
#   Please see the /usr/share/common-licenses/GPL-2 file for the full text
 | 
			
		||||
#   of the GNU General Public License license.
 | 
			
		||||
 | 
			
		||||
from ..packages import checkIsInDebian
 | 
			
		||||
import subprocess
 | 
			
		||||
from ..lp.udtexceptions import PackageNotFoundException
 | 
			
		||||
 | 
			
		||||
__all__ = ['getDebianSrcPkg', 'getUbuntuSrcPkg']
 | 
			
		||||
 | 
			
		||||
# Simulate the SourcePackage class from lpapiwrapper
 | 
			
		||||
class SourcePackage(object):
 | 
			
		||||
	'''
 | 
			
		||||
@ -41,23 +43,39 @@ class SourcePackage(object):
 | 
			
		||||
	def getComponent(self):
 | 
			
		||||
		return self.component
 | 
			
		||||
 | 
			
		||||
def getDebianSrcPkg(name, release):
 | 
			
		||||
	out = checkIsInDebian(name, release)
 | 
			
		||||
	if not out:
 | 
			
		||||
		raise PackageNotFoundException(
 | 
			
		||||
			"'%s' doesn't appear to exist in Debian '%s'" % \
 | 
			
		||||
			(name, release))
 | 
			
		||||
def rmadison(distro, package, release):
 | 
			
		||||
	rmadison_cmd = subprocess.Popen(
 | 
			
		||||
		['rmadison', '-u', distro, '-a', 'source', '-s', release, package],
 | 
			
		||||
		stdout = subprocess.PIPE)
 | 
			
		||||
 | 
			
		||||
	rmadison_out = rmadison_cmd.communicate()[0]
 | 
			
		||||
	assert (rmadison_cmd.returncode == 0)
 | 
			
		||||
 | 
			
		||||
	# Work-around for a bug in Debians madison.php script not returning 
 | 
			
		||||
	# only the source line 
 | 
			
		||||
	for line in out.splitlines():
 | 
			
		||||
	for line in rmadison_out.splitlines():
 | 
			
		||||
		if line.find('source') > 0:
 | 
			
		||||
			out = line.split('|')
 | 
			
		||||
			return map(lambda x: x.strip(), line.split('|'))
 | 
			
		||||
 | 
			
		||||
	version = out[1].strip()
 | 
			
		||||
	return None
 | 
			
		||||
 | 
			
		||||
def getSrcPkg(distro, name, release):
 | 
			
		||||
	out = rmadison(distro, name, release)
 | 
			
		||||
	if not out:
 | 
			
		||||
		raise PackageNotFoundException(
 | 
			
		||||
			"'%s' doesn't appear to exist in %s '%s'" % \
 | 
			
		||||
			(name, distro.capitalize(), release))
 | 
			
		||||
 | 
			
		||||
	version = out[1]
 | 
			
		||||
	component = 'main'
 | 
			
		||||
	raw_comp = out[2].split('/')
 | 
			
		||||
	if len(raw_comp) == 2:
 | 
			
		||||
		component = raw_comp[1].strip()
 | 
			
		||||
	
 | 
			
		||||
		component = raw_comp[1]
 | 
			
		||||
 | 
			
		||||
	return SourcePackage(name, version, component)
 | 
			
		||||
 | 
			
		||||
def getDebianSrcPkg(name, release):
 | 
			
		||||
	return getSrcPkg('debian', name, release)
 | 
			
		||||
 | 
			
		||||
def getUbuntuSrcPkg(name, release):
 | 
			
		||||
	return getSrcPkg('ubuntu', name, release)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user