From 58a0d16530d61d430bc868663290fafb580db9df Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 26 Aug 2009 21:49:33 +0200 Subject: [PATCH] Allow % as wildcard in the end of PREFERRED_VERSION_pkg --- lib/bb/providers.py | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) diff --git a/lib/bb/providers.py b/lib/bb/providers.py index 8970fb3..9cf9edc 100644 --- a/lib/bb/providers.py +++ b/lib/bb/providers.py @@ -63,7 +63,18 @@ def sortPriorities(pn, dataCache, pkg_pn = None): return tmp_pn +def isPreferredVersion(pe, pv, pr, preferred_e, preferred_v, preferred_r): + """ + Check if the version pe,pv,pr is the preferred one. + If there is preferred version defined and ends with '%', then pv has to start with that version after removing the '%' in the end, + """ + if (pv == preferred_v or (preferred_v != None and preferred_v.endswith('%') and pv.startswith(preferred_v[:len(preferred_v)-1]))): + if (pr == preferred_r or preferred_r == None): + if (pe == preferred_e or preferred_e == None): + return True + return False + def findPreferredProvider(pn, cfgData, dataCache, pkg_pn = None, item = None): """ Find the first provider in pkg_pn with a PREFERRED_VERSION set. @@ -96,7 +107,7 @@ def findPreferredProvider(pn, cfgData, dataCache, pkg_pn = None, item = None): for file_set in pkg_pn: for f in file_set: pe,pv,pr = dataCache.pkg_pepvpr[f] - if preferred_v == pv and (preferred_r == pr or preferred_r == None) and (preferred_e == pe or preferred_e == None): + if isPreferredVersion(pe,pv,pr,preferred_e,preferred_v,preferred_r): preferred_file = f preferred_ver = (pe, pv, pr) break -- 1.6.4.2