[elbe-devel] [PATCH v2 4/4] Fix pkg list validation error on version wildcards

Torben Hohn torben.hohn at linutronix.de
Thu Mar 11 10:20:31 CET 2021


When version is specified using wildcards (glob), the simple comparison
of versions fails, and the build fails.

Use fnmatchcase, which is the actual matcher used in pythons glob module,
to match version strings. re is not used, because + is a special character
there and versions containing + doe not match themselves, when interpreted
as re.

Fixes: #276

Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>
---
 elbepack/dump.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/elbepack/dump.py b/elbepack/dump.py
index edc6637f6..56ce54d60 100644
--- a/elbepack/dump.py
+++ b/elbepack/dump.py
@@ -7,6 +7,7 @@
 
 import logging
 
+from fnmatch import fnmatchcase
 from datetime import datetime
 
 from apt import Cache
@@ -106,7 +107,7 @@ def check_full_pkgs(pkgs, fullpkgs, cache):
 
             ver = p.et.get('version')
             pkg = cache.get_pkg(nomulti_name)
-            if ver and (pkg.installed_version != ver):
+            if ver and fnmatchcase(pkg.installed_version, ver):
                 validation.error("Package '%s' version '%s' does not match installed version %s",
                                  name, ver, pkg.installed_version)
                 errors += 1
@@ -143,7 +144,7 @@ def check_full_pkgs(pkgs, fullpkgs, cache):
 
         pkg = cache.get_pkg(name)
 
-        if pkg.installed_version != ver:
+        if fnmatchcase(pkg.installed_version, ver):
             validation.error("Package '%s' version %s does not match installed version %s",
                              name, ver, pkg.installed_version)
             errors += 1
-- 
2.20.1



More information about the elbe-devel mailing list