mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 01:14:15 +02:00
[improvement] changing the way versions are compared in Arch and AppImage gems
This commit is contained in:
@@ -7,13 +7,13 @@ import sqlite3
|
|||||||
import subprocess
|
import subprocess
|
||||||
import traceback
|
import traceback
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from distutils.version import LooseVersion
|
|
||||||
from math import floor
|
from math import floor
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
from typing import Set, Type, List, Tuple, Optional
|
from typing import Set, Type, List, Tuple, Optional
|
||||||
|
|
||||||
from colorama import Fore
|
from colorama import Fore
|
||||||
|
from pkg_resources import parse_version
|
||||||
|
|
||||||
from bauh.api.abstract.context import ApplicationContext
|
from bauh.api.abstract.context import ApplicationContext
|
||||||
from bauh.api.abstract.controller import SoftwareManager, SearchResult, UpgradeRequirements, UpgradeRequirement, \
|
from bauh.api.abstract.controller import SoftwareManager, SearchResult, UpgradeRequirements, UpgradeRequirement, \
|
||||||
@@ -265,7 +265,7 @@ class AppImageManager(SoftwareManager):
|
|||||||
app.update = False
|
app.update = False
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
app.update = LooseVersion(tup[2]) > LooseVersion(app.version) if tup[2] else False
|
app.update = parse_version(tup[2]) > parse_version(app.version) if tup[2] else False
|
||||||
except:
|
except:
|
||||||
app.update = False
|
app.update = False
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import re
|
import re
|
||||||
from distutils.version import LooseVersion
|
import traceback
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from typing import Set, List, Tuple, Dict, Iterable
|
from typing import Set, List, Tuple, Dict, Iterable
|
||||||
|
|
||||||
|
from pkg_resources import parse_version
|
||||||
|
|
||||||
from bauh.api.abstract.handler import ProcessWatcher
|
from bauh.api.abstract.handler import ProcessWatcher
|
||||||
from bauh.gems.arch import pacman, message, sorting, confirmation
|
from bauh.gems.arch import pacman, message, sorting, confirmation
|
||||||
from bauh.gems.arch.aur import AURClient
|
from bauh.gems.arch.aur import AURClient
|
||||||
@@ -203,23 +205,26 @@ class DependenciesAnalyser:
|
|||||||
|
|
||||||
matched_providers = set()
|
matched_providers = set()
|
||||||
split_informed_dep = self.re_dep_operator.split(dep_exp)
|
split_informed_dep = self.re_dep_operator.split(dep_exp)
|
||||||
version_informed = LooseVersion(split_informed_dep[2])
|
try:
|
||||||
exp_op = split_informed_dep[1] if split_informed_dep[1] != '=' else '=='
|
version_informed = parse_version(split_informed_dep[2])
|
||||||
|
exp_op = split_informed_dep[1] if split_informed_dep[1] != '=' else '=='
|
||||||
|
|
||||||
for p in providers:
|
for p in providers:
|
||||||
provided = deps_data[p]['p']
|
provided = deps_data[p]['p']
|
||||||
|
|
||||||
for provided_exp in provided:
|
for provided_exp in provided:
|
||||||
split_dep = self.re_dep_operator.split(provided_exp)
|
split_dep = self.re_dep_operator.split(provided_exp)
|
||||||
|
|
||||||
if len(split_dep) == 3 and split_dep[0] == dep_name:
|
if len(split_dep) == 3 and split_dep[0] == dep_name:
|
||||||
provided_version = LooseVersion(split_dep[2])
|
provided_version = parse_version(split_dep[2])
|
||||||
|
|
||||||
if eval('provided_version {} version_informed'.format(exp_op)):
|
if eval('provided_version {} version_informed'.format(exp_op)):
|
||||||
matched_providers.add(p)
|
matched_providers.add(p)
|
||||||
break
|
break
|
||||||
|
|
||||||
providers = matched_providers
|
providers = matched_providers
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
if providers:
|
if providers:
|
||||||
if len(providers) > 1:
|
if len(providers) > 1:
|
||||||
@@ -298,19 +303,22 @@ class DependenciesAnalyser:
|
|||||||
if '-' not in version_informed:
|
if '-' not in version_informed:
|
||||||
version_found = version_found.split('-')[0]
|
version_found = version_found.split('-')[0]
|
||||||
|
|
||||||
version_found = LooseVersion(version_found)
|
try:
|
||||||
version_informed = LooseVersion(version_informed)
|
version_found = parse_version(version_found)
|
||||||
|
version_informed = parse_version(version_informed)
|
||||||
|
|
||||||
op = dep_split[1] if dep_split[1] != '=' else '=='
|
op = dep_split[1] if dep_split[1] != '=' else '=='
|
||||||
if not eval('version_found {} version_informed'.format(op)):
|
if not eval('version_found {} version_informed'.format(op)):
|
||||||
self._fill_missing_dep(dep_name=dep_name, dep_exp=dep, aur_index=aur_index,
|
self._fill_missing_dep(dep_name=dep_name, dep_exp=dep, aur_index=aur_index,
|
||||||
missing_deps=missing_deps,
|
missing_deps=missing_deps,
|
||||||
remote_provided_map=remote_provided_map,
|
remote_provided_map=remote_provided_map,
|
||||||
remote_repo_map=remote_repo_map,
|
remote_repo_map=remote_repo_map,
|
||||||
repo_deps=repo_missing, aur_deps=aur_missing,
|
repo_deps=repo_missing, aur_deps=aur_missing,
|
||||||
watcher=watcher,
|
watcher=watcher,
|
||||||
deps_data=deps_data,
|
deps_data=deps_data,
|
||||||
automatch_providers=automatch_providers)
|
automatch_providers=automatch_providers)
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
else:
|
else:
|
||||||
self._fill_missing_dep(dep_name=dep_name, dep_exp=dep, aur_index=aur_index,
|
self._fill_missing_dep(dep_name=dep_name, dep_exp=dep, aur_index=aur_index,
|
||||||
missing_deps=missing_deps,
|
missing_deps=missing_deps,
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
from distutils.version import LooseVersion
|
import traceback
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from typing import Dict, Set, List, Tuple, Iterable, Optional
|
from typing import Dict, Set, List, Tuple, Iterable, Optional
|
||||||
|
|
||||||
|
from pkg_resources import parse_version
|
||||||
|
|
||||||
from bauh.api.abstract.controller import UpgradeRequirements, UpgradeRequirement
|
from bauh.api.abstract.controller import UpgradeRequirements, UpgradeRequirement
|
||||||
from bauh.api.abstract.handler import ProcessWatcher
|
from bauh.api.abstract.handler import ProcessWatcher
|
||||||
from bauh.gems.arch import pacman, sorting
|
from bauh.gems.arch import pacman, sorting
|
||||||
@@ -725,11 +727,15 @@ class UpdatesSummarizer:
|
|||||||
version_match = False
|
version_match = False
|
||||||
|
|
||||||
for v in versions:
|
for v in versions:
|
||||||
provided_version, required_version = LooseVersion(v), LooseVersion(dep_split[1])
|
try:
|
||||||
|
provided_version, required_version = parse_version(v), parse_version(dep_split[1])
|
||||||
|
|
||||||
if eval('provided_version {} required_version'.format(op)):
|
if eval('provided_version {} required_version'.format(op)):
|
||||||
version_match = True
|
version_match = True
|
||||||
break
|
break
|
||||||
|
except:
|
||||||
|
self.logger.error("Error when comparing versions {} (provided) and {} (required)".format(v, dep_split[1]))
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
if not version_match:
|
if not version_match:
|
||||||
for pname in real_providers:
|
for pname in real_providers:
|
||||||
|
|||||||
Reference in New Issue
Block a user