From eb6da09ea370cf6c96003922191c09735cdb6e22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Jun=C3=A1k?= Date: Thu, 13 Sep 2018 11:34:10 +0200 Subject: [PATCH] [mockbuild] create custom error message for dnf-utils not being installed Created new exception for absent weak dependent package. Added custom message for error caused by dnf utils not being installed. bugzilla url: https://bugzilla.redhat.com/show_bug.cgi?id=1626879 --- mock/py/mockbuild/exception.py | 1 + mock/py/mockbuild/package_manager.py | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mock/py/mockbuild/exception.py b/mock/py/mockbuild/exception.py index dadf5c4da..6d5a62719 100644 --- a/mock/py/mockbuild/exception.py +++ b/mock/py/mockbuild/exception.py @@ -41,6 +41,7 @@ def __str__(self): # 70 = result dir could not be created # 80 = unshare of namespace failed # 110 = unbalanced call to state functions +# 120 = weak dependent package not installed class BuildError(Error): "rpmbuild failed." diff --git a/mock/py/mockbuild/package_manager.py b/mock/py/mockbuild/package_manager.py index 7a58d6ea2..fc5810159 100644 --- a/mock/py/mockbuild/package_manager.py +++ b/mock/py/mockbuild/package_manager.py @@ -5,6 +5,7 @@ import glob import os.path import shutil +import sys from textwrap import dedent import distro @@ -156,7 +157,22 @@ def update(self, *args, **kwargs): # pylint: disable=unused-argument @traceLog() def builddep(self, *args, **kwargs): - return self.execute('builddep', returnOutput=1, *args) + try: + result = self.execute('builddep', returnOutput=1, *args) + except (FileNotFoundError) as error: + er = str(error) + if "builddep" in er: + print(error) + print(""" +Error: dnf-utils is not installed. Dnf-utils is needed to complete this action. + To install dnf-utils use one of the commands below: + $ dnf install dnf-utils + or + $ yum install dnf-utils""") + sys.exit(120) + else: + raise + return result @traceLog() def copy_gpg_keys(self):