def _getSourcePackageDataFromDSC(self, sp_name, sp_version, sp_component, sp_section): try: dsc_name, dsc_path, sp_component = get_dsc_path(sp_name, sp_version, sp_component, self.archive_root) except PoolFileNotFound: # Aah well, no source package in archive either. return None log.debug("Found a source package for %s (%s) in %s" % (sp_name, sp_version, sp_component)) dsc_contents = parse_tagfile(dsc_path) dsc_contents = dict([ (name.lower(), value) for (name, value) in dsc_contents.iteritems()]) # Since the dsc doesn't know, we add in the directory, package # component and section dsc_contents['directory'] = os.path.join("pool", poolify(sp_name, sp_component)) dsc_contents['package'] = sp_name dsc_contents['component'] = sp_component dsc_contents['section'] = sp_section # the dsc doesn't list itself so add it ourselves if 'files' not in dsc_contents: log.error('DSC for %s didn\'t contain a files entry: %r' % (dsc_name, dsc_contents)) return None if not dsc_contents['files'].endswith("\n"): dsc_contents['files'] += "\n" # XXX kiko 2005-10-21: Why do we hack the md5sum and size of the DSC? # Should probably calculate it properly. dsc_contents['files'] += "xxx 000 %s" % dsc_name # SourcePackageData requires capitals capitalized_dsc = {} for k, v in dsc_contents.items(): capitalized_dsc[k.capitalize()] = v return SourcePackageData(**capitalized_dsc)
def _getSourcePackageDataFromDSC(self, sp_name, sp_version, sp_component, sp_section): try: dsc_name, dsc_path, sp_component = get_dsc_path( sp_name, sp_version, sp_component, self.archive_root) except PoolFileNotFound: # Aah well, no source package in archive either. return None log.debug("Found a source package for %s (%s) in %s" % (sp_name, sp_version, sp_component)) dsc_contents = parse_tagfile(dsc_path) dsc_contents = dict([(name.lower(), value) for (name, value) in dsc_contents.iteritems()]) # Since the dsc doesn't know, we add in the directory, package # component and section dsc_contents['directory'] = os.path.join( "pool", poolify(sp_name, sp_component)) dsc_contents['package'] = sp_name dsc_contents['component'] = sp_component dsc_contents['section'] = sp_section # the dsc doesn't list itself so add it ourselves if 'files' not in dsc_contents: log.error('DSC for %s didn\'t contain a files entry: %r' % (dsc_name, dsc_contents)) return None if not dsc_contents['files'].endswith("\n"): dsc_contents['files'] += "\n" # XXX kiko 2005-10-21: Why do we hack the md5sum and size of the DSC? # Should probably calculate it properly. dsc_contents['files'] += "xxx 000 %s" % dsc_name # SourcePackageData requires capitals capitalized_dsc = {} for k, v in dsc_contents.items(): capitalized_dsc[k.capitalize()] = v return SourcePackageData(**capitalized_dsc)
def run_gina(options, ztm, target_section): # Avoid circular imports. from lp.registry.interfaces.pocket import PackagePublishingPocket package_root = target_section.root distro = target_section.distro pocket_distroseries = target_section.pocketrelease distroseries = target_section.distroseries components = [c.strip() for c in target_section.components.split(",")] archs = [a.strip() for a in target_section.architectures.split(",")] pocket = target_section.pocket component_override = target_section.componentoverride source_only = target_section.source_only spnames_only = target_section.sourcepackagenames_only LIBRHOST = config.librarian.upload_host LIBRPORT = config.librarian.upload_port log.info("") log.info("=== Processing %s/%s/%s ===", distro, distroseries, pocket) log.debug("Packages read from: %s", package_root) log.info("Components to import: %s", ", ".join(components)) if component_override is not None: log.info("Override components to: %s", component_override) log.info("Architectures to import: %s", ", ".join(archs)) log.debug("Launchpad database: %s", config.database.rw_main_master) log.info("SourcePackage Only: %s", source_only) log.info("SourcePackageName Only: %s", spnames_only) log.debug("Librarian: %s:%s", LIBRHOST, LIBRPORT) log.info("") if not hasattr(PackagePublishingPocket, pocket.upper()): log.error("Could not find a pocket schema for %s", pocket) sys.exit(1) pocket = getattr(PackagePublishingPocket, pocket.upper()) if component_override: valid_components = [component.name for component in getUtility(IComponentSet)] if component_override not in valid_components: log.error("Could not find component %s", component_override) sys.exit(1) try: arch_component_items = ArchiveComponentItems(package_root, pocket_distroseries, components, archs, source_only) except MangledArchiveError: log.exception("Failed to analyze archive for %s", pocket_distroseries) sys.exit(1) packages_map = PackagesMap(arch_component_items) importer_handler = ImporterHandler(ztm, distro, distroseries, package_root, pocket, component_override) import_sourcepackages(distro, packages_map, package_root, importer_handler) importer_handler.commit() # XXX JeroenVermeulen 2011-09-07 bug=843728: Dominate binaries as well. dominate_imported_source_packages(ztm, log, distro, distroseries, pocket, packages_map) ztm.commit() if source_only: log.info("Source only mode... done") return for archtag in archs: try: importer_handler.ensure_archinfo(archtag) except DataSetupError: log.exception("Database setup required for run on %s", archtag) sys.exit(1) import_binarypackages(distro, packages_map, package_root, importer_handler) importer_handler.commit()
def run_gina(options, ztm, target_section): package_root = target_section.root distro = target_section.distro pocket_distroseries = target_section.pocketrelease distroseries = target_section.distroseries components = [c.strip() for c in target_section.components.split(",")] archs = [a.strip() for a in target_section.architectures.split(",")] pocket = target_section.pocket component_override = target_section.componentoverride source_only = target_section.source_only spnames_only = target_section.sourcepackagenames_only LIBRHOST = config.librarian.upload_host LIBRPORT = config.librarian.upload_port log.info("") log.info("=== Processing %s/%s/%s ===", distro, distroseries, pocket) log.debug("Packages read from: %s", package_root) log.info("Components to import: %s", ", ".join(components)) if component_override is not None: log.info("Override components to: %s", component_override) log.info("Architectures to import: %s", ", ".join(archs)) log.debug("Launchpad database: %s", config.database.rw_main_master) log.info("SourcePackage Only: %s", source_only) log.info("SourcePackageName Only: %s", spnames_only) log.debug("Librarian: %s:%s", LIBRHOST, LIBRPORT) log.info("") if not hasattr(PackagePublishingPocket, pocket.upper()): log.error("Could not find a pocket schema for %s", pocket) sys.exit(1) pocket = getattr(PackagePublishingPocket, pocket.upper()) if component_override: valid_components = [ component.name for component in getUtility(IComponentSet) ] if component_override not in valid_components: log.error("Could not find component %s", component_override) sys.exit(1) try: arch_component_items = ArchiveComponentItems(package_root, pocket_distroseries, components, archs, source_only) except MangledArchiveError: log.exception("Failed to analyze archive for %s", pocket_distroseries) sys.exit(1) packages_map = PackagesMap(arch_component_items) importer_handler = ImporterHandler(ztm, distro, distroseries, package_root, pocket, component_override) import_sourcepackages(distro, packages_map, package_root, importer_handler) importer_handler.commit() # XXX JeroenVermeulen 2011-09-07 bug=843728: Dominate binaries as well. dominate_imported_source_packages(ztm, log, distro, distroseries, pocket, packages_map) ztm.commit() if source_only: log.info('Source only mode... done') return for archtag in archs: try: importer_handler.ensure_arch(archtag) except DataSetupError: log.exception("Database setup required for run on %s", archtag) sys.exit(1) import_binarypackages(distro, packages_map, package_root, importer_handler) importer_handler.commit()