mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-05-07 15:01:34 +00:00
Use +sourcefiles URLs where possible
In https://code.launchpad.net/~cjwatson/launchpad/archive-unambiguous-files-traversals/+merge/345118, I added support for downloading source package files from Launchpad that can cope with the situation where different versions of a source package have the same file name with different contents (normally impossible, but it can happen with imported archives and due to some old bugs). Use this where possible. LP: #1860456
This commit is contained in:
parent
f8fa865ab2
commit
1e1702e676
@ -25,6 +25,7 @@ import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
from urllib.parse import quote
|
||||
|
||||
import lsb_release
|
||||
from httplib2 import Http, HttpLib2Error
|
||||
@ -296,8 +297,10 @@ def orig_needed(upload, workdir, pkg):
|
||||
|
||||
h = Http()
|
||||
for filename in glob.glob(os.path.join(workdir, '%s_%s.orig*' % (pkg.source, version))):
|
||||
url = ('https://launchpad.net/~%s/+archive/%s/+files/%s'
|
||||
% (user, ppa, filename))
|
||||
url = ('https://launchpad.net/~%s/+archive/%s/+sourcefiles/%s/%s/%s'
|
||||
% (quote(user), quote(ppa), quote(pkg.source),
|
||||
quote(pkg.version.full_version),
|
||||
quote(os.path.basename(filename))))
|
||||
try:
|
||||
headers, body = h.request(url, 'HEAD')
|
||||
if (headers.status != 200 or
|
||||
|
@ -28,7 +28,7 @@ Approach:
|
||||
"""
|
||||
|
||||
from urllib.error import (URLError, HTTPError)
|
||||
from urllib.parse import urlparse
|
||||
from urllib.parse import (quote, urlparse)
|
||||
from urllib.request import urlopen
|
||||
import codecs
|
||||
import hashlib
|
||||
@ -298,10 +298,16 @@ class SourcePackage(object):
|
||||
return os.path.join(mirror, 'pool', self.component, group,
|
||||
self.source, filename)
|
||||
|
||||
def _lp_url(self, filename):
|
||||
"Build a source package URL on Launchpad"
|
||||
return os.path.join('https://launchpad.net', self.distribution,
|
||||
'+archive', 'primary', '+files', filename)
|
||||
def _lp_url(self, filename, source=False):
|
||||
"Build an archive file URL on Launchpad"
|
||||
if source:
|
||||
suffix = '+sourcefiles/%s/%s/%s' % (
|
||||
quote(self.source), quote(self.version.full_version),
|
||||
quote(filename))
|
||||
else:
|
||||
suffix = '+files/%s' % quote(filename)
|
||||
return 'https://launchpad.net/%s/+archive/primary/%s' % (
|
||||
quote(self.distribution), suffix)
|
||||
|
||||
def _source_urls(self, name):
|
||||
"Generator of sources for name"
|
||||
@ -312,7 +318,7 @@ class SourcePackage(object):
|
||||
for mirror in self.masters:
|
||||
if mirror not in self.mirrors:
|
||||
yield self._mirror_url(mirror, name)
|
||||
yield self._lp_url(name)
|
||||
yield self._lp_url(name, source=True)
|
||||
|
||||
def _binary_urls(self, name, default_urls):
|
||||
"Generator of URLs for name"
|
||||
@ -339,7 +345,7 @@ class SourcePackage(object):
|
||||
parsed = urlparse(self._dsc_source)
|
||||
url = self._dsc_source
|
||||
else:
|
||||
url = self._lp_url(self.dsc_name)
|
||||
url = self._lp_url(self.dsc_name, source=True)
|
||||
self._download_dsc(url)
|
||||
|
||||
self._check_dsc()
|
||||
@ -755,11 +761,17 @@ class PersonalPackageArchiveSourcePackage(UbuntuSourcePackage):
|
||||
self._team = None
|
||||
self._ppa = None
|
||||
|
||||
def _lp_url(self, filename):
|
||||
"Build a source package URL on Launchpad"
|
||||
return os.path.join('https://launchpad.net', '~' + self._ppateam,
|
||||
'+archive', self.distribution, self._ppaname,
|
||||
'+files', filename)
|
||||
def _lp_url(self, filename, source=False):
|
||||
"Build an archive file URL on Launchpad"
|
||||
if source:
|
||||
suffix = '+sourcefiles/%s/%s/%s' % (
|
||||
quote(self.source), quote(self.version.full_version),
|
||||
quote(filename))
|
||||
else:
|
||||
suffix = '+files/%s' % quote(filename)
|
||||
return 'https://launchpad.net/~%s/+archive/%s/%s/%s' % (
|
||||
quote(self._ppateam), quote(self.distribution),
|
||||
quote(self._ppaname), suffix)
|
||||
|
||||
|
||||
class UbuntuCloudArchiveSourcePackage(PersonalPackageArchiveSourcePackage):
|
||||
|
Loading…
x
Reference in New Issue
Block a user