def _getLatestOfAvailableArches(self, pkgLst): """ Given a list of package objects, find the latest versions of each package for each name/arch. @param pkgLst: list of packages @type pkgLst: [repomd.packagexml._Package, ...] """ pkgLst.sort() pkgMap = {} for pkg in pkgLst: arch = self._getRepositoryArch(pkg.location) key = pkg.name + pkg.arch + arch if key not in pkgMap: pkgMap[key] = pkg continue # check if newer, first wins if util.packagevercmp(pkg, pkgMap[key]) in (1, ): pkgMap[key] = pkg ret = pkgMap.values() ret.sort() return ret
continue else: if metadata is None: pkgs = self._getMetadataFromConaryRepository(nvf[0], version=nvf[1]) if pkgs: metadata = util.Metadata(pkgs) if metadata: binPkg = metadata.locationMap[line] srcPkg = metadata.binPkgMap[binPkg] else: raise OldVersionNotFoundError( why="can't find metadata for %s" % line) # set needsUpdate if version changes if util.packagevercmp(srpm, srcPkg) == 1: needsUpdate = True # make sure new package is actually newer if util.packagevercmp(srpm, srcPkg) == -1: # In current mode we just need to build # attempts are made in update set to keep the latest rpm # the latest conary version so just let it go if self._cfg.updateMode == 'current': srcTuple = (srcPkg.getNevra(), srpm.getNevra()) log.warn('running in current mode ignoring') log.warn('version goes backwards %s -> %s' % srcTuple) needsUpdate = True else: srcTuple = (srcPkg.getNevra(), srpm.getNevra()) log.warn('version goes backwards %s -> %s' % srcTuple)
continue else: if metadata is None: pkgs = self._getMetadataFromConaryRepository( nvf[0], version=nvf[1]) if pkgs: metadata = util.Metadata(pkgs) if metadata: binPkg = metadata.locationMap[line] srcPkg = metadata.binPkgMap[binPkg] else: raise OldVersionNotFoundError( why="can't find metadata for %s" % line) # set needsUpdate if version changes if util.packagevercmp(srpm, srcPkg) == 1: needsUpdate = True # make sure new package is actually newer if util.packagevercmp(srpm, srcPkg) == -1: # In current mode we just need to build # attempts are made in update set to keep the latest rpm # the latest conary version so just let it go if self._cfg.updateMode == 'current': srcTuple = (srcPkg.getNevra(), srpm.getNevra()) log.warn('running in current mode ignoring') log.warn('version goes backwards %s -> %s' % srcTuple) needsUpdate = True else: srcTuple = (srcPkg.getNevra(), srpm.getNevra()) log.warn('version goes backwards %s -> %s' % srcTuple)