def requestBuild(self, archive, requester, distroseries, pocket=PackagePublishingPocket.RELEASE, manual=False): """See `ISourcePackageRecipe`.""" if not archive.is_ppa: raise NonPPABuildRequest buildable_distros = BuildableDistroSeries.findSeries(archive.owner) if distroseries not in buildable_distros: raise BuildNotAllowedForDistro(self, distroseries) reject_reason = archive.checkUpload( requester, distroseries, None, archive.default_component, pocket) if reject_reason is not None: raise reject_reason if self.isOverQuota(requester, distroseries): raise TooManyBuilds(self, distroseries) pending = IStore(self).find(SourcePackageRecipeBuild, SourcePackageRecipeBuild.recipe_id == self.id, SourcePackageRecipeBuild.distroseries_id == distroseries.id, SourcePackageRecipeBuild.archive_id == archive.id, SourcePackageRecipeBuild.status == BuildStatus.NEEDSBUILD) if pending.any() is not None: raise BuildAlreadyPending(self, distroseries) build = getUtility(ISourcePackageRecipeBuildSource).new(distroseries, self, requester, archive) build.queueBuild() queue_record = build.buildqueue_record if manual: queue_record.manualScore(queue_record.lastscore + 100) return build
def requestBuild(self, archive, requester, distroseries, pocket=PackagePublishingPocket.RELEASE, manual=False): """See `ISourcePackageRecipe`.""" if not archive.is_ppa: raise NonPPABuildRequest buildable_distros = BuildableDistroSeries.findSeries(archive.owner) if distroseries not in buildable_distros: raise BuildNotAllowedForDistro(self, distroseries) reject_reason = archive.checkUpload( requester, distroseries, None, archive.default_component, pocket) if reject_reason is not None: raise reject_reason pending = IStore(self).find(SourcePackageRecipeBuild, SourcePackageRecipeBuild.recipe_id == self.id, SourcePackageRecipeBuild.distroseries_id == distroseries.id, SourcePackageRecipeBuild.archive_id == archive.id, SourcePackageRecipeBuild.status == BuildStatus.NEEDSBUILD) if pending.any() is not None: raise BuildAlreadyPending(self, distroseries) build = getUtility(ISourcePackageRecipeBuildSource).new(distroseries, self, requester, archive) build.queueBuild() queue_record = build.buildqueue_record if manual: queue_record.manualScore(queue_record.lastscore + 100) return build
def requestBuild(self, requester, archive, distro_arch_series, pocket, unique_key=None, metadata_override=None, version=None): """See `ILiveFS`.""" if not requester.inTeam(self.owner): raise LiveFSNotOwner( "%s cannot create live filesystem builds owned by %s." % (requester.displayname, self.owner.displayname)) if not archive.enabled: raise ArchiveDisabled(archive.displayname) if archive.private and self.owner != archive.owner: # See rationale in `LiveFSBuildArchiveOwnerMismatch` docstring. raise LiveFSBuildArchiveOwnerMismatch() pending = IStore(self).find( LiveFSBuild, LiveFSBuild.livefs_id == self.id, LiveFSBuild.archive_id == archive.id, LiveFSBuild.distro_arch_series_id == distro_arch_series.id, LiveFSBuild.pocket == pocket, LiveFSBuild.unique_key == unique_key, LiveFSBuild.status == BuildStatus.NEEDSBUILD) if pending.any() is not None: raise LiveFSBuildAlreadyPending build = getUtility(ILiveFSBuildSet).new( requester, self, archive, distro_arch_series, pocket, unique_key=unique_key, metadata_override=metadata_override, version=version) build.queueBuild() return build