def createBinaryPackage(self, bin, srcpkg, distroarchinfo, archtag): """Create a new binarypackage.""" fdir, fname = os.path.split(bin.filename) to_upload = check_not_in_librarian(fname, bin.archive_root, fdir) fname, path = to_upload[0] componentID = self.distro_handler.getComponentByName(bin.component).id sectionID = self.distro_handler.ensureSection(bin.section).id architecturespecific = (bin.architecture != "all") bin_name = getUtility(IBinaryPackageNameSet).ensure(bin.package) build = self.ensureBuild(bin, srcpkg, distroarchinfo, archtag) # Create the binarypackage entry on lp db. binpkg = BinaryPackageRelease( binarypackagename=bin_name.id, component=componentID, version=bin.version, description=bin.description, summary=bin.summary, build=build.id, binpackageformat=getBinaryPackageFormat(bin.filename), section=sectionID, priority=prioritymap[bin.priority], shlibdeps=bin.shlibs, depends=bin.depends, suggests=bin.suggests, recommends=bin.recommends, conflicts=bin.conflicts, replaces=bin.replaces, provides=bin.provides, pre_depends=bin.pre_depends, enhances=bin.enhances, breaks=bin.breaks, essential=bin.essential, installedsize=bin.installed_size, architecturespecific=architecturespecific, ) log.info('Binary Package Release %s (%s) created' % (bin_name.name, bin.version)) alias = getLibraryAlias(path, fname) BinaryPackageFile( binarypackagerelease=binpkg.id, libraryfile=alias, filetype=determine_binary_file_type(fname)) log.info('Package file %s included into library' % fname) # Return the binarypackage object. return binpkg
def createBinaryPackage(self, bin, srcpkg, distroarchinfo, archtag): """Create a new binarypackage.""" fdir, fname = os.path.split(bin.filename) to_upload = check_not_in_librarian(fname, bin.archive_root, fdir) fname, path = to_upload[0] componentID = self.distro_handler.getComponentByName(bin.component).id sectionID = self.distro_handler.ensureSection(bin.section).id architecturespecific = (bin.architecture != "all") bin_name = getUtility(IBinaryPackageNameSet).ensure(bin.package) build = self.ensureBuild(bin, srcpkg, distroarchinfo, archtag) # Create the binarypackage entry on lp db. binpkg = BinaryPackageRelease( binarypackagename=bin_name.id, component=componentID, version=bin.version, description=bin.description, summary=bin.summary, build=build.id, binpackageformat=getBinaryPackageFormat(bin.filename), section=sectionID, priority=prioritymap[bin.priority], shlibdeps=bin.shlibs, depends=bin.depends, suggests=bin.suggests, recommends=bin.recommends, conflicts=bin.conflicts, replaces=bin.replaces, provides=bin.provides, pre_depends=bin.pre_depends, enhances=bin.enhances, breaks=bin.breaks, essential=bin.essential, installedsize=bin.installed_size, architecturespecific=architecturespecific, ) log.info('Binary Package Release %s (%s) created' % (bin_name.name, bin.version)) alias = getLibraryAlias(path, fname) BinaryPackageFile(binarypackagerelease=binpkg.id, libraryfile=alias, filetype=determine_binary_file_type(fname)) log.info('Package file %s included into library' % fname) # Return the binarypackage object. return binpkg
def createSourcePackageRelease(self, src, distroseries): """Create a SourcePackagerelease and db dependencies if needed. Returns the created SourcePackageRelease, or None if it failed. """ displayname, emailaddress = src.maintainer comment = 'when the %s package was imported into %s' % ( src.package, distroseries.displayname) maintainer = getUtility(IPersonSet).ensurePerson( emailaddress, displayname, PersonCreationRationale.SOURCEPACKAGEIMPORT, comment=comment) # XXX Debonzi 2005-05-16: Check it later. # if src.dsc_signing_key_owner: # key = self.getGPGKey(src.dsc_signing_key, # *src.dsc_signing_key_owner) # else: key = None to_upload = check_not_in_librarian(src.files, src.archive_root, src.directory) # Create the SourcePackageRelease (SPR) componentID = self.distro_handler.getComponentByName(src.component).id sectionID = self.distro_handler.ensureSection(src.section).id maintainer_line = "%s <%s>" % (displayname, emailaddress) name = self.ensureSourcePackageName(src.package) spr = SourcePackageRelease( section=sectionID, creator=maintainer.id, component=componentID, sourcepackagename=name.id, maintainer=maintainer.id, dscsigningkey=key, urgency=ChangesFile.urgency_map[src.urgency], dateuploaded=src.date_uploaded, dsc=src.dsc, copyright=src.copyright, version=src.version, changelog_entry=src.changelog_entry, builddepends=src.build_depends, builddependsindep=src.build_depends_indep, build_conflicts=src.build_conflicts, build_conflicts_indep=src.build_conflicts_indep, architecturehintlist=src.architecture, format=SourcePackageType.DPKG, upload_distroseries=distroseries.id, dsc_format=src.format, dsc_maintainer_rfc822=maintainer_line, dsc_standards_version=src.standards_version, dsc_binaries=", ".join(src.binaries), upload_archive=distroseries.main_archive) log.info('Source Package Release %s (%s) created' % (name.name, src.version)) # Upload the changelog to the Librarian if src.changelog is not None: changelog_lfa = getUtility(ILibraryFileAliasSet).create( "changelog", len(src.changelog), StringIO(src.changelog), "text/x-debian-source-changelog") spr.changelog = changelog_lfa # Insert file into the library and create the # SourcePackageReleaseFile entry on lp db. for fname, path in to_upload: alias = getLibraryAlias(path, fname) SourcePackageReleaseFile( sourcepackagerelease=spr.id, libraryfile=alias, filetype=determine_source_file_type(fname)) log.info('Package file %s included into library' % fname) return spr