From 847c380d653dd80994453021dcc59adfa7f6d0e5 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Jul 03 2019 11:57:03 +0000 Subject: Port to libmodulemd 2 API Signed-off-by: Lubomír Sedlář --- diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py index a4012cb..4756eea 100644 --- a/pyrpkg/__init__.py +++ b/pyrpkg/__init__.py @@ -54,7 +54,7 @@ from .gitignore import GitIgnore # currently python27 and older versions are missing try: import gi - gi.require_version('Modulemd', '1.0') # raises ValueError + gi.require_version("Modulemd", "2.0") # raises ValueError from gi.repository import Modulemd # noqa except (ValueError, ImportError): Modulemd = None @@ -943,15 +943,16 @@ class Commands(object): mmd_str = build['modulemd'] - objects = Modulemd.objects_from_string(mmd_str) - modules = [o for o in objects if isinstance(o, Modulemd.Module)] - if len(modules) != 1: + try: + module_stream = Modulemd.ModuleStream.read_string(mmd_str, strict=False) + except Exception: raise rpkgError("Failed to load modulemd for %s" % nsvc) + module_stream.upgrade(2) # Streams should already be expanded in the modulemd's that we retrieve # from MBS - modules were built against a particular dependency. - def get_stream(req, req_stream): - req_stream_list = req_stream.get() + def get_stream(dep, req): + req_stream_list = dep.get_runtime_streams(req) if len(req_stream_list) != 1: raise rpkgError("%s: stream list for '%s' is not expanded (%s)" % (nsvc, req, req_stream_list)) @@ -959,16 +960,17 @@ class Commands(object): # We first look for 'platform' as a direct dependency of this module, # before recursing into the dependencies - for dep in modules[0].peek_dependencies(): - for req, req_stream in dep.peek_requires().items(): + for dep in module_stream.get_dependencies(): + for req in dep.get_runtime_modules(): if req == 'platform': - return get_stream(req, req_stream) + return get_stream(dep, req) # Now recurse into the dependencies - for dep in modules[0].peek_dependencies(): - for req, req_stream in dep.peek_requires().items(): - platform_stream = self._find_platform_stream(req, - get_stream(req, req_stream)) + for dep in module_stream.get_dependencies(): + for req in dep.get_runtime_modules(): + platform_stream = self._find_platform_stream( + req, get_stream(dep, req) + ) if platform_stream: return platform_stream