def _resolve_modules(self, modules): koji_session = get_koji_session(self.workflow, fallback=NO_FALLBACK) resolved_modules = {} for module_spec in modules: build, rpm_list = get_koji_module_build(koji_session, module_spec) # The returned RPM list contains source RPMs and RPMs for all # architectures. rpms = [ '{name}-{epochnum}:{version}-{release}.{arch}.rpm'.format( epochnum=rpm['epoch'] or 0, **rpm) for rpm in rpm_list ] # strict=False - don't break if new fields are added mmd = Modulemd.ModuleStream.read_string( build['extra']['typeinfo']['module']['modulemd_str'], strict=False) # Make sure we have a version 2 modulemd file mmd = mmd.upgrade(Modulemd.ModuleStreamVersionEnum.TWO) resolved_modules[module_spec.name] = ModuleInfo( module_spec.name, module_spec.stream, module_spec.version, mmd, rpms) return resolved_modules
def _resolve_modules(self, compose_source): koji_session = get_koji_session(self.workflow, fallback=NO_FALLBACK) resolved_modules = {} for module in compose_source.strip().split(): module_spec = split_module_spec(module) build, rpm_list = get_koji_module_build(koji_session, module_spec) # The returned RPM list contains source RPMs and RPMs for all # architectures. rpms = [ '{name}-{epochnum}:{version}-{release}.{arch}.rpm'.format( epochnum=rpm['epoch'] or 0, **rpm) for rpm in rpm_list ] objects = Modulemd.objects_from_string( build['extra']['typeinfo']['module']['modulemd_str']) assert len(objects) == 1 mmd = objects[0] assert isinstance(mmd, Modulemd.Module) # Make sure we have a version 2 modulemd file mmd.upgrade() resolved_modules[module_spec.name] = ModuleInfo( module_spec.name, module_spec.stream, module_spec.version, mmd, rpms) return resolved_modules
def setup_flatpak_compose_info(workflow, config=APP_CONFIG): modules = {} for name, module_config in config['modules'].items(): mmd = Modulemd.Module.new_from_string(module_config['metadata']) modules[name] = ModuleInfo(name, module_config['stream'], module_config['version'], mmd, module_config['rpms']) repo_url = 'http://odcs.example/composes/latest-odcs-42-1/compose/Temporary/$basearch/os/' base_module = modules[config['base_module']] source_spec = base_module.name + ':' + base_module.stream if 'profile' in config: source_spec += '/' + config['profile'] compose = ComposeInfo(source_spec, 42, base_module, modules, repo_url, 'unsigned', False) set_compose_info(workflow, compose) return compose
def setup_flatpak_compose_info(config=None): config = APP_CONFIG if config is None else config modules = {} for name, module_config in config['modules'].items(): mmd = Modulemd.ModuleStream.read_string(module_config['metadata'], strict=True) modules[name] = ModuleInfo(name, module_config['stream'], module_config['version'], mmd, module_config['rpms']) base_module = modules[config['base_module']] source_spec = base_module.name + ':' + base_module.stream if 'profile' in config: source_spec += '/' + config['profile'] compose = ComposeInfo(source_spec, base_module, modules) return compose