mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-13 08:01:09 +00:00
pull-uca: update UbuntuCloudArchiveSourcePackage
look in its PPA for its SPPHs look up the development (latest) UCA release if not specified use the 'series' param as the UCA release, instead of 'uca_release' param
This commit is contained in:
parent
b96885f05e
commit
f4f16f95f7
@ -45,7 +45,7 @@ import httplib2
|
|||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
|
|
||||||
from ubuntutools.config import UDTConfig
|
from ubuntutools.config import UDTConfig
|
||||||
from ubuntutools.lp.lpapicache import (Launchpad, Distribution,
|
from ubuntutools.lp.lpapicache import (Launchpad, Distribution, PersonTeam,
|
||||||
SourcePackagePublishingHistory,
|
SourcePackagePublishingHistory,
|
||||||
BinaryPackagePublishingHistory)
|
BinaryPackagePublishingHistory)
|
||||||
from ubuntutools.lp.udtexceptions import (PackageNotFoundException,
|
from ubuntutools.lp.udtexceptions import (PackageNotFoundException,
|
||||||
@ -146,6 +146,7 @@ class SourcePackage(object):
|
|||||||
self.workdir = workdir
|
self.workdir = workdir
|
||||||
self.quiet = quiet
|
self.quiet = quiet
|
||||||
self._series = series
|
self._series = series
|
||||||
|
self._use_series = True
|
||||||
self._pocket = pocket
|
self._pocket = pocket
|
||||||
self._dsc_source = dscfile
|
self._dsc_source = dscfile
|
||||||
|
|
||||||
@ -185,7 +186,7 @@ class SourcePackage(object):
|
|||||||
if self._version:
|
if self._version:
|
||||||
# if version was specified, use that
|
# if version was specified, use that
|
||||||
params['version'] = self._version.full_version
|
params['version'] = self._version.full_version
|
||||||
else:
|
elif self._use_series:
|
||||||
if self._series:
|
if self._series:
|
||||||
# if version not specified, get the latest from this series
|
# if version not specified, get the latest from this series
|
||||||
series = distro.getSeries(self._series)
|
series = distro.getSeries(self._series)
|
||||||
@ -709,15 +710,54 @@ class UbuntuSourcePackage(SourcePackage):
|
|||||||
|
|
||||||
class UbuntuCloudArchiveSourcePackage(UbuntuSourcePackage):
|
class UbuntuCloudArchiveSourcePackage(UbuntuSourcePackage):
|
||||||
"Download / unpack an Ubuntu Cloud Archive source package"
|
"Download / unpack an Ubuntu Cloud Archive source package"
|
||||||
def __init__(self, uca_release, *args, **kwargs):
|
_ppas = None
|
||||||
|
_ppa_names = None
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
super(UbuntuCloudArchiveSourcePackage, self).__init__(*args, **kwargs)
|
super(UbuntuCloudArchiveSourcePackage, self).__init__(*args, **kwargs)
|
||||||
self._uca_release = uca_release
|
self._use_series = False # UCA doesn't really use distro series
|
||||||
|
self._uca_release = self._series
|
||||||
|
self._series = None
|
||||||
self.masters = ["http://ubuntu-cloud.archive.canonical.com/ubuntu/"]
|
self.masters = ["http://ubuntu-cloud.archive.canonical.com/ubuntu/"]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def getArchives(cls):
|
||||||
|
if not cls._ppas:
|
||||||
|
ppas = filter(lambda p: p.name.endswith('-staging'),
|
||||||
|
PersonTeam.fetch('ubuntu-cloud-archive').getPPAs())
|
||||||
|
cls._ppas = sorted(ppas, key=lambda p: p.name, reverse=True)
|
||||||
|
return cls._ppas
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def getReleaseNames(cls):
|
||||||
|
if not cls._ppa_names:
|
||||||
|
cls._ppa_names = [p.name.split('-', 1)[0] for p in cls.getArchives()]
|
||||||
|
return cls._ppa_names
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def getDevelopmentRelease(cls):
|
||||||
|
return cls.getReleaseNames()[0]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def uca_release(self):
|
||||||
|
if not self._uca_release:
|
||||||
|
self._uca_release = self.getDevelopmentRelease()
|
||||||
|
Logger.normal('Using UCA release %s', self._uca_release)
|
||||||
|
return self._uca_release
|
||||||
|
|
||||||
|
def getArchive(self):
|
||||||
|
ppas = {p.name: p for p in self.getArchives()}
|
||||||
|
release = '{}-staging'.format(self.uca_release)
|
||||||
|
if release in ppas:
|
||||||
|
Logger.debug('UCA release {} at {}'.format(self.uca_release,
|
||||||
|
ppas[release]()))
|
||||||
|
return ppas[release]
|
||||||
|
raise SeriesNotFoundException('UCA release {} not found.'.format(self.uca_release))
|
||||||
|
|
||||||
def _lp_url(self, filename):
|
def _lp_url(self, filename):
|
||||||
"Build a source package URL on Launchpad"
|
"Build a source package URL on Launchpad"
|
||||||
return os.path.join('https://launchpad.net', "~ubuntu-cloud-archive",
|
return os.path.join('https://launchpad.net', "~ubuntu-cloud-archive",
|
||||||
'+archive', ("%s-staging" % self._uca_release),
|
'+archive', ("%s-staging" % self.uca_release),
|
||||||
'+files', filename)
|
'+files', filename)
|
||||||
|
|
||||||
|
|
||||||
|
@ -846,6 +846,7 @@ class PersonTeam(BaseWrapper, metaclass=MetaPersonTeam):
|
|||||||
|
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
# Don't share _upload between different PersonTeams
|
# Don't share _upload between different PersonTeams
|
||||||
|
self._ppas = None
|
||||||
if '_upload' not in self.__dict__:
|
if '_upload' not in self.__dict__:
|
||||||
self._upload = dict()
|
self._upload = dict()
|
||||||
|
|
||||||
@ -923,6 +924,12 @@ class PersonTeam(BaseWrapper, metaclass=MetaPersonTeam):
|
|||||||
|
|
||||||
return canUpload
|
return canUpload
|
||||||
|
|
||||||
|
def getPPAs(self):
|
||||||
|
if not self._ppas:
|
||||||
|
ppas = Launchpad.load(self._lpobject.ppas_collection_link).entries
|
||||||
|
self._ppas = [Archive(a['self_link']) for a in ppas]
|
||||||
|
return self._ppas
|
||||||
|
|
||||||
|
|
||||||
class Build(BaseWrapper):
|
class Build(BaseWrapper):
|
||||||
'''
|
'''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user