From 2c7c159297850e5ad4dcf12097894b05ad50678f Mon Sep 17 00:00:00 2001 From: Tomas Tomecek Date: May 30 2017 11:35:36 +0000 Subject: make --resolve work on dnf api <2 Fixes #25 Signed-off-by: Tomas Tomecek --- diff --git a/modularity/module_deps_differ.py b/modularity/module_deps_differ.py index ff92e38..9bd5e9f 100755 --- a/modularity/module_deps_differ.py +++ b/modularity/module_deps_differ.py @@ -21,6 +21,20 @@ ARCH = 'x86_64' p = None +def get_pkgs_source_rpm_name(pkg): + """ + pkg: dnf.Package + + returns name of source RPM used to build the provided rpm + """ + if LooseVersion(dnf.__version__) < LooseVersion("2.0.0"): + source_rpm = pkg.sourcerpm + source_rpm_name = source_rpm.rsplit('-', 2)[0] + else: + source_rpm_name = pkg.source_name + return source_rpm_name + + def get_pdc_client(): """ cache PDCClient instance """ global p @@ -115,11 +129,7 @@ class ModuleDepsDiffer(object): source_pkgs = [] base = ModuleDepsDiffer.get_base_from_repo('f26-source', REPO_F26_SOURCE) for pkg in pkgs: - if LooseVersion(dnf.__version__) < LooseVersion("2.0.0"): - source_rpm = pkgs[0].sourcerpm - source_rpm_name = source_rpm.rsplit('-', 2)[0] - else: - source_rpm_name = pkgs[0].source_name + source_rpm_name = get_pkgs_source_rpm_name(pkgs[0]) filter_result = base.sack.query().filter(name=source_rpm_name) ModuleDepsDiffer.package_unique(filter_result) source_pkgs.append(filter_result[0]) @@ -161,13 +171,12 @@ class ModuleDepsDiffer(object): q = base.sack.query() for cap in caps: pkg = q.filter(provides__glob=[cap], arch=['noarch', ARCH], latest=True) - if pkg: - result.add(str(pkg.result[0].source_name)) - else: + if not pkg: pkg = q.filter(file__glob=cap) if len(pkg) == 0: raise ValueError('No package provides capability \'' + cap + '\'') - result.add(str(pkg.result[0].source_name)) + source_rpm_name = get_pkgs_source_rpm_name(pkg.result[0]) + result.add(source_rpm_name) return result def _dump_caps_result(self, items):