From 8ec93b144b9f095748282fa6e2daf8061bf6ec6b Mon Sep 17 00:00:00 2001 From: Klaus Kämpf Date: Mon, 18 Nov 2013 08:34:53 +0100 Subject: software: allow tilde presence in package version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OpenSUSE distribution uses tilde character (~) in version of their packages a lot. This patch allows to parse such packages. Resolves: bz#1031345 Reported-by: Klaus Kämpf --- doc/admin/software/dmtf.rst | 3 ++- src/software/lmi/software/util/__init__.py | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/admin/software/dmtf.rst b/doc/admin/software/dmtf.rst index d68692c..35ca35c 100644 --- a/doc/admin/software/dmtf.rst +++ b/doc/admin/software/dmtf.rst @@ -296,6 +296,7 @@ Class overview ------------------------------------------------------------------------------ -.. [1] Precisely they must match following regular expression `r"[\\w.+{}]+"`. +.. [1] Precisely ``Release`` must match following regular expression ``r"[\\w.+{}]+"``. + ``Version`` allows also tilde character: ``r"[~\\w.+{}]+"``. .. [2] Because internally the query is executed upon the list obtained by enumeration of instances. diff --git a/src/software/lmi/software/util/__init__.py b/src/software/lmi/software/util/__init__.py index 5f601b9..7cfc894 100644 --- a/src/software/lmi/software/util/__init__.py +++ b/src/software/lmi/software/util/__init__.py @@ -36,16 +36,16 @@ RE_INSTANCE_ID = re.compile(r'LMI:(?P[a-z][a-z_0-9]+):(?P\d+)', re.IGNORECASE) RE_EVRA = re.compile( - r'^(?P\d+):(?P[\w.+{}]+)-(?P[\w.+{}]+)' + r'^(?P\d+):(?P[~\w.+{}]+)-(?P[\w.+{}]+)' r'\.(?P[^.]+)$') RE_NEVRA = re.compile( - r'^(?P.+)-(?P(?P\d+):(?P[\w.+{}]+)' + r'^(?P.+)-(?P(?P\d+):(?P[~\w.+{}]+)' r'-(?P[\w.+{}]+)\.(?P[^.]+))$') RE_NEVRA_OPT_EPOCH = re.compile( - r'^(?P.+)-(?P(?:(?P\d+):)?(?P[\w.+{}]+)' + r'^(?P.+)-(?P(?:(?P\d+):)?(?P[~\w.+{}]+)' r'-(?P[\w.+{}]+)\.(?P[^.]+))$') RE_ENVRA = re.compile( - r'^(?P\d+):(?P.+)-(?P(?P[\w.+{}]+)' + r'^(?P\d+):(?P.+)-(?P(?P[~\w.+{}]+)' r'-(?P[\w.+{}]+)\.(?P[^.]+))$') def _get_distname(): -- cgit