diff --git a/anvil/packaging/yum.py b/anvil/packaging/yum.py index 9f55def5..5d85039b 100644 --- a/anvil/packaging/yum.py +++ b/anvil/packaging/yum.py @@ -688,7 +688,7 @@ class YumDependencyHandler(base.DependencyHandler): pkg = json.loads(matched) if isinstance(pkg, dict): rpm_names_located.add(pkg['name']) - rpms_located.append((pkg['name'], pkg['version'])) + rpms_located.append(pkg) rpm_names_missing = desired_rpm_names - rpm_names_located if rpm_names_missing: @@ -709,8 +709,9 @@ class YumDependencyHandler(base.DependencyHandler): LOG.info("All %s required packages are still available!", len(desired_rpms)) desired_rpms = [] - for (name, version) in rpms_located: - desired_rpms.append("%s,%s" % (name, version)) + for pkg in rpms_located: + LOG.debug("Found %s", pkg) + desired_rpms.append("%s,%s" % (pkg['name'], pkg['version'])) return list(sorted(desired_rpms)) def install(self): diff --git a/tools/yumfind b/tools/yumfind index 68009d1d..f3e88f73 100755 --- a/tools/yumfind +++ b/tools/yumfind @@ -28,6 +28,19 @@ import pkg_resources from yum import YumBase +def format_rpm(pkg): + details = { + 'arch': pkg.arch, + 'epoch': pkg.epoch, + 'name': pkg.name, + 'release': pkg.release, + 'version': pkg.version, + } + if hasattr(pkg, 'repo') and pkg.repo: + details['repo'] = pkg.repo.name + return details + + def parse_py_req(text): if not text: return None @@ -86,13 +99,7 @@ if __name__ == '__main__': # Pick the newest match. pkg = sorted(matches)[-1] if options.is_json: - print(json.dumps({ - 'arch': pkg.arch, - 'epoch': pkg.epoch, - 'name': pkg.name, - 'release': pkg.release, - 'version': pkg.version, - })) + print(json.dumps(format_rpm(pkg))) else: print(pkg) else: