def getBinaryPackage(self, name): """See `IDistroArchSeries`.""" from lp.soyuz.model.distroarchseriesbinarypackage import ( DistroArchSeriesBinaryPackage, ) if not IBinaryPackageName.providedBy(name): try: name = BinaryPackageName.byName(name) except SQLObjectNotFound: return None return DistroArchSeriesBinaryPackage(self, name)
def getBinaryPackage(self, name): """See `IDistroArchSeries`.""" from lp.soyuz.model.distroarchseriesbinarypackage import ( DistroArchSeriesBinaryPackage, ) if not IBinaryPackageName.providedBy(name): try: name = BinaryPackageName.byName(name) except SQLObjectNotFound: return None return DistroArchSeriesBinaryPackage( self, name)
def checkBin(self, binarypackagedata, distroarchinfo): """Returns a binarypackage -- if it exists.""" try: binaryname = BinaryPackageName.byName(binarypackagedata.package) except SQLObjectNotFound: # If the binary package's name doesn't exist, don't even # bother looking for a binary package. return None version = binarypackagedata.version architecture = binarypackagedata.architecture clauseTables = [ "BinaryPackageRelease", "DistroSeries", "BinaryPackageBuild", "DistroArchSeries" ] distroseries = distroarchinfo['distroarchseries'].distroseries # When looking for binaries, we need to remember that they are # shared between distribution releases, so match on the # distribution and the architecture tag of the distroarchseries # they were built for query = ( "BinaryPackageRelease.binarypackagename=%s AND " "BinaryPackageRelease.version=%s AND " "BinaryPackageRelease.build = BinaryPackageBuild.id AND " "BinaryPackageBuild.distro_arch_series = DistroArchSeries.id AND " "DistroArchSeries.distroseries = DistroSeries.id AND " "DistroSeries.distribution = %d" % (binaryname.id, quote(version), distroseries.distribution.id)) if architecture != "all": query += ("AND DistroArchSeries.architecturetag = %s" % quote(architecture)) try: bpr = BinaryPackageRelease.selectOne(query, clauseTables=clauseTables) except SQLObjectMoreThanOneResultError: # XXX kiko 2005-10-27: Untested raise MultiplePackageReleaseError( "Found more than one " "entry for %s (%s) for %s in %s" % (binaryname.name, version, architecture, distroseries.distribution.name)) return bpr
def checkBin(self, binarypackagedata, distroarchinfo): """Returns a binarypackage -- if it exists.""" try: binaryname = BinaryPackageName.byName(binarypackagedata.package) except SQLObjectNotFound: # If the binary package's name doesn't exist, don't even # bother looking for a binary package. return None version = binarypackagedata.version architecture = binarypackagedata.architecture clauseTables = ["BinaryPackageRelease", "DistroSeries", "BinaryPackageBuild", "DistroArchSeries"] distroseries = distroarchinfo['distroarchseries'].distroseries # When looking for binaries, we need to remember that they are # shared between distribution releases, so match on the # distribution and the architecture tag of the distroarchseries # they were built for query = ( "BinaryPackageRelease.binarypackagename=%s AND " "BinaryPackageRelease.version=%s AND " "BinaryPackageRelease.build = BinaryPackageBuild.id AND " "BinaryPackageBuild.distro_arch_series = DistroArchSeries.id AND " "DistroArchSeries.distroseries = DistroSeries.id AND " "DistroSeries.distribution = %d" % (binaryname.id, quote(version), distroseries.distribution.id)) if architecture != "all": query += ("AND DistroArchSeries.architecturetag = %s" % quote(architecture)) try: bpr = BinaryPackageRelease.selectOne( query, clauseTables=clauseTables) except SQLObjectMoreThanOneResultError: # XXX kiko 2005-10-27: Untested raise MultiplePackageReleaseError("Found more than one " "entry for %s (%s) for %s in %s" % (binaryname.name, version, architecture, distroseries.distribution.name)) return bpr
def getReleasedPackages(self, binary_name, pocket=None, include_pending=False, archive=None): """See IDistroArchSeries.""" from lp.soyuz.model.publishing import BinaryPackagePublishingHistory queries = [] if not IBinaryPackageName.providedBy(binary_name): binary_name = BinaryPackageName.byName(binary_name) queries.append(""" binarypackagerelease=binarypackagerelease.id AND binarypackagerelease.binarypackagename=%s AND distroarchseries = %s """ % sqlvalues(binary_name, self)) if pocket is not None: queries.append("pocket=%s" % sqlvalues(pocket.value)) if include_pending: queries.append("status in (%s, %s)" % sqlvalues(PackagePublishingStatus.PUBLISHED, PackagePublishingStatus.PENDING)) else: queries.append("status=%s" % sqlvalues(PackagePublishingStatus.PUBLISHED)) archives = self.distroseries.distribution.getArchiveIDList(archive) queries.append("archive IN %s" % sqlvalues(archives)) published = BinaryPackagePublishingHistory.select( " AND ".join(queries), clauseTables=['BinaryPackageRelease'], orderBy=['-id']) return shortlist(published)
def getReleasedPackages(self, binary_name, pocket=None, include_pending=False, archive=None): """See IDistroArchSeries.""" from lp.soyuz.model.publishing import BinaryPackagePublishingHistory queries = [] if not IBinaryPackageName.providedBy(binary_name): binary_name = BinaryPackageName.byName(binary_name) queries.append(""" binarypackagerelease=binarypackagerelease.id AND binarypackagerelease.binarypackagename=%s AND distroarchseries = %s """ % sqlvalues(binary_name, self)) if pocket is not None: queries.append("pocket=%s" % sqlvalues(pocket.value)) if include_pending: queries.append("status in (%s, %s)" % sqlvalues( PackagePublishingStatus.PUBLISHED, PackagePublishingStatus.PENDING)) else: queries.append("status=%s" % sqlvalues( PackagePublishingStatus.PUBLISHED)) archives = self.distroseries.distribution.getArchiveIDList(archive) queries.append("archive IN %s" % sqlvalues(archives)) published = BinaryPackagePublishingHistory.select( " AND ".join(queries), clauseTables=['BinaryPackageRelease'], orderBy=['-id']) return shortlist(published)