From 9187984b6b94cb7996e566445e1a2c6ea2e4c2a4 Mon Sep 17 00:00:00 2001 From: bgme Date: Tue, 15 Aug 2023 01:30:42 +0800 Subject: [PATCH] fix bug on pkgver compare --- archrepo2/lib/archpkg.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/archrepo2/lib/archpkg.py b/archrepo2/lib/archpkg.py index f2f9aee..74fd65b 100644 --- a/archrepo2/lib/archpkg.py +++ b/archrepo2/lib/archpkg.py @@ -2,24 +2,18 @@ import os from collections import namedtuple import subprocess import re -from typing import Tuple, List, Dict +from typing import List, Dict -from pkg_resources import parse_version as _parse_version from packaging.version import Version # type: ignore -def parse_arch_version(v: str) -> Tuple[int, Version]: - if ':' in v: - epoch = int(v.split(':', 1)[0]) - else: - epoch = 0 - return epoch, _parse_version(v) - class PkgNameInfo(namedtuple('PkgNameInfo', 'name, version, release, arch')): def __lt__(self, other) -> bool: if self.name != other.name or self.arch != other.arch: return NotImplemented if self.version != other.version: - return parse_arch_version(self.version) < parse_arch_version(other.version) + p = subprocess.Popen(["vercmp", self.version, other.version], stdout=subprocess.PIPE) + output = p.stdout.read() + return int(output) < 0 return float(self.release) < float(other.release) def __gt__(self, other) -> bool: