rendered paste bodyIndex: providers.py===================================================================--- providers.py (revision 753)+++ providers.py (working copy)@@ -70,7 +70,7 @@ for file_set in tmp_pn: for f in file_set:- pv,pr = dataCache.pkg_pvpr[f]+ pe,pv,pr = dataCache.pkg_pepvpr[f] if preferred_v == pv and (preferred_r == pr or preferred_r == None): preferred_file = f preferred_ver = (pv, pr)@@ -97,11 +97,11 @@ latest_p = 0 latest_f = None for file_name in files:- pv,pr = dataCache.pkg_pvpr[file_name]+ pe,pv,pr = dataCache.pkg_pepvpr[file_name] dp = dataCache.pkg_dp[file_name] - if (latest is None) or ((latest_p == dp) and (utils.vercmp(latest, (pv, pr)) < 0)) or (dp > latest_p):- latest = (pv, pr)+ if (latest is None) or ((latest_p == dp) and (utils.vercmp(latest, (pe, pv, pr)) < 0)) or (dp > latest_p):+ latest = (pe, pv, pr) latest_f = file_name latest_p = dp if preferred_file is None:@@ -162,7 +162,7 @@ # if so, bump it to the head of the queue for p in providers: pn = dataCache.pkg_fn[p]- pv, pr = dataCache.pkg_pvpr[p]+ pe, pv, pr = dataCache.pkg_pepvpr[p] stamp = '%s.do_populate_staging' % dataCache.stamp[p] if os.path.exists(stamp):Index: cache.py===================================================================--- cache.py (revision 753)+++ cache.py (working copy)@@ -251,6 +251,7 @@ """ pn = self.getVar('PN', file_name, True)+ pe = int(self.getVar('PE', file_name, True) or "0") pv = self.getVar('PV', file_name, True) pr = self.getVar('PR', file_name, True) dp = int(self.getVar('DEFAULT_PREFERENCE', file_name, True) or "0")@@ -272,7 +273,7 @@ # build FileName to PackageName lookup table cacheData.pkg_fn[file_name] = pn- cacheData.pkg_pvpr[file_name] = (pv,pr)+ cacheData.pkg_pepvpr[file_name] = (pe,pv,pr) cacheData.pkg_dp[file_name] = dp # Build forward and reverse provider hashes@@ -407,7 +408,7 @@ self.possible_world = [] self.pkg_pn = {} self.pkg_fn = {}- self.pkg_pvpr = {}+ self.pkg_pepvpr = {} self.pkg_dp = {} self.pn_provides = {} self.all_depends = Set()Index: utils.py===================================================================--- utils.py (revision 753)+++ utils.py (working copy)@@ -62,11 +62,13 @@ return -1 def vercmp(ta, tb):- (va, ra) = ta- (vb, rb) = tb+ (ea, va, ra) = ta+ (eb, vb, rb) = tb - r = vercmp_part(va, vb)+ r = ea-eb if (r == 0):+ r = vercmp_part(va, vb)+ if (r == 0): r = vercmp_part(ra, rb) return r