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
示例#3
0
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
示例#4
0
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