From 7d97b565749498580dad01d7e1b0397bb14d94c0 Mon Sep 17 00:00:00 2001 From: Ondrej Nosek Date: Dec 05 2018 14:41:19 +0000 Subject: libmodulemd is missing on el7 Do not restrict the presence of libmodulemd on specific architecture or python version. Just try to import it every time. Fixes: #402 Signed-off-by: Ondrej Nosek --- diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py index c8ccb0f..82b66ec 100644 --- a/pyrpkg/__init__.py +++ b/pyrpkg/__init__.py @@ -48,12 +48,14 @@ from pyrpkg.lookaside import CGILookasideCache from pyrpkg.sources import SourcesFile from pyrpkg.utils import cached_property, log_result, find_me -PY26 = sys.version_info < (2, 7, 0) - -if not PY26: +# libmodulemd might not be available for some platforms +# currently python27 and older versions are missing +try: import gi gi.require_version('Modulemd', '1.0') # raises ValueError from gi.repository import Modulemd # noqa +except (ValueError, ImportError): + Modulemd = None if six.PY2: ConfigParser = configparser.SafeConfigParser @@ -918,6 +920,9 @@ class Commands(object): The stream of the 'platform' pseudo-module determines what base package set we need for the runtime - and thus what build target we need. """ + if Modulemd is None: + raise rpkgError("libmodulemd is required by this feature. " + "Is not installed or not available for this platform.") if version is not None: nsvc = name + ':' + stream + ':' + version diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py index bdf1fc8..a70b929 100644 --- a/pyrpkg/cli.py +++ b/pyrpkg/cli.py @@ -32,7 +32,7 @@ from six.moves import configparser import koji_cli.lib import pyrpkg.utils as utils -from pyrpkg import PY26 +from pyrpkg import Modulemd from pyrpkg import log as rpkgLogger from pyrpkg import rpkgError @@ -448,7 +448,7 @@ class cliClient(object): self.register_container_build() self.register_container_build_setup() self.register_diff() - if not PY26: + if Modulemd is not None: self.register_flatpak_build() self.register_gimmespec() self.register_gitbuildhash() diff --git a/tests/test_cli.py b/tests/test_cli.py index 809fd1a..b02973a 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -23,7 +23,7 @@ from six.moves import http_client import git import pyrpkg.cli -from pyrpkg import PY26 +from pyrpkg import Modulemd try: import openidc_client @@ -314,7 +314,7 @@ class TestContainerBuildWithKoji(CliTestCase): self.assertEqual('koji', kwargs['build_client']) @unittest.skipIf( - PY26, + Modulemd is None, 'Skip on old Python versions where libmodulemd is not available.') @patch('requests.get') def test_flatpak(self, mock_get): diff --git a/tests/test_flatpak_build.py b/tests/test_flatpak_build.py index 97ab456..0b3d560 100644 --- a/tests/test_flatpak_build.py +++ b/tests/test_flatpak_build.py @@ -10,7 +10,7 @@ except ImportError: from mock import Mock, patch import requests -from pyrpkg import PY26 +from pyrpkg import Modulemd from utils import CommandTestCase EOG_MODULEMD = """ @@ -177,7 +177,7 @@ BUILDS = { @unittest.skipIf( - PY26, + Modulemd is None, 'Skip on old Python versions where libmodulemd is not available.') class FlatpakBuildCase(CommandTestCase): def set_container_modules(self, container_modules):