22
22
from ubuntutools.archive import DebianSourcePackage, DownloadError, rmadison
23
23
from ubuntutools.config import UDTConfig
24
from ubuntutools.distro_info import DebianDistroInfo
24
25
from ubuntutools.logger import Logger
27
def is_suite(version):
28
"""If version could be considered to be a Debian suite, return the
29
canonical suite name. Otherwise None
31
debian_info = DebianDistroInfo()
32
debian_releases = debian_info.all + ['experimental']
35
release, pocket = version.split('-', 1)
36
release = debian_info.codename(release, default=release)
37
if release in debian_releases:
38
if pocket in ('proposed-updates', 'p-u'):
39
return (release + '-proposed-updates')
40
elif pocket == 'security':
41
return (release + '-security')
43
release = debian_info.codename(version, default=version)
44
if release in debian_releases:
27
usage = 'Usage: %prog <package> [release]'
49
usage = 'Usage: %prog <package> [release|version]'
28
50
parser = optparse.OptionParser(usage)
29
51
parser.add_option('-d', '--download-only',
30
52
dest='download_only', default=False, action='store_true',
31
53
help='Do not extract the source package')
32
parser.add_option('-m', '--mirror', metavar='UBUNTU_MIRROR',
54
parser.add_option('-m', '--mirror', metavar='DEBIAN_MIRROR',
33
55
dest='debian_mirror',
34
56
help='Preferred Debian mirror (default: %s)'
35
57
% UDTConfig.defaults['DEBIAN_MIRROR'])
56
78
package = args[0].lower()
59
suite = args[1].lower()
63
line = list(rmadison('debian', package, suite, 'source'))
65
Logger.error('Unable to find %s in %s.', package, suite)
69
srcpkg = DebianSourcePackage(package, line['version'],
70
component=line['component'],
80
version = args[1] if len(args) > 1 else 'unstable'
83
suite = is_suite(version)
85
line = list(rmadison('debian', package, suite, 'source'))
87
Logger.error('Unable to find %s in Debian suite "%s".', package,
91
version = line['version']
92
component = line['component']
94
Logger.normal('Downloading %s version %s', package, version)
95
srcpkg = DebianSourcePackage(package, version, component=component,
71
96
mirrors=[options.debian_mirror,
72
97
options.debsec_mirror])