[improvement] changing the way versions are compared in Arch and AppImage gems

This commit is contained in:
Vinicius Moreira
2020-09-02 10:35:55 -03:00
parent 4d260df3f7
commit ae27b6af3b
3 changed files with 46 additions and 32 deletions

View File

@@ -1,8 +1,10 @@
import re
from distutils.version import LooseVersion
import traceback
from threading import Thread
from typing import Set, List, Tuple, Dict, Iterable
from pkg_resources import parse_version
from bauh.api.abstract.handler import ProcessWatcher
from bauh.gems.arch import pacman, message, sorting, confirmation
from bauh.gems.arch.aur import AURClient
@@ -203,23 +205,26 @@ class DependenciesAnalyser:
matched_providers = set()
split_informed_dep = self.re_dep_operator.split(dep_exp)
version_informed = LooseVersion(split_informed_dep[2])
exp_op = split_informed_dep[1] if split_informed_dep[1] != '=' else '=='
try:
version_informed = parse_version(split_informed_dep[2])
exp_op = split_informed_dep[1] if split_informed_dep[1] != '=' else '=='
for p in providers:
provided = deps_data[p]['p']
for p in providers:
provided = deps_data[p]['p']
for provided_exp in provided:
split_dep = self.re_dep_operator.split(provided_exp)
for provided_exp in provided:
split_dep = self.re_dep_operator.split(provided_exp)
if len(split_dep) == 3 and split_dep[0] == dep_name:
provided_version = LooseVersion(split_dep[2])
if len(split_dep) == 3 and split_dep[0] == dep_name:
provided_version = parse_version(split_dep[2])
if eval('provided_version {} version_informed'.format(exp_op)):
matched_providers.add(p)
break
if eval('provided_version {} version_informed'.format(exp_op)):
matched_providers.add(p)
break
providers = matched_providers
providers = matched_providers
except:
traceback.print_exc()
if providers:
if len(providers) > 1:
@@ -298,19 +303,22 @@ class DependenciesAnalyser:
if '-' not in version_informed:
version_found = version_found.split('-')[0]
version_found = LooseVersion(version_found)
version_informed = LooseVersion(version_informed)
try:
version_found = parse_version(version_found)
version_informed = parse_version(version_informed)
op = dep_split[1] if dep_split[1] != '=' else '=='
if not eval('version_found {} version_informed'.format(op)):
self._fill_missing_dep(dep_name=dep_name, dep_exp=dep, aur_index=aur_index,
missing_deps=missing_deps,
remote_provided_map=remote_provided_map,
remote_repo_map=remote_repo_map,
repo_deps=repo_missing, aur_deps=aur_missing,
watcher=watcher,
deps_data=deps_data,
automatch_providers=automatch_providers)
op = dep_split[1] if dep_split[1] != '=' else '=='
if not eval('version_found {} version_informed'.format(op)):
self._fill_missing_dep(dep_name=dep_name, dep_exp=dep, aur_index=aur_index,
missing_deps=missing_deps,
remote_provided_map=remote_provided_map,
remote_repo_map=remote_repo_map,
repo_deps=repo_missing, aur_deps=aur_missing,
watcher=watcher,
deps_data=deps_data,
automatch_providers=automatch_providers)
except:
traceback.print_exc()
else:
self._fill_missing_dep(dep_name=dep_name, dep_exp=dep, aur_index=aur_index,
missing_deps=missing_deps,