[paketler-commits] r15761 - devel/system/base/pisi/comar
paketler-uludag at uludag.org.tr
paketler-uludag at uludag.org.tr
1 Ara 2006 Cum 21:29:47 EET
Author: faik
Date: Fri Dec 1 21:29:47 2006
New Revision: 15761
Modified:
devel/system/base/pisi/comar/manager.py
Log:
very sorry i missed this :((
Modified: devel/system/base/pisi/comar/manager.py
=================================================================
--- devel/system/base/pisi/comar/manager.py (original)
+++ devel/system/base/pisi/comar/manager.py Fri Dec 1 21:29:47 2006
@@ -22,6 +22,8 @@
import pisi.lockeddbshelve
import pisi.ui
import pisi.context
+ import pisi.util as util
+ from pisi.version import Version
except KeyboardInterrupt:
fail("System.Manager.cancelled")
@@ -119,27 +121,27 @@
def removePackage(package=None):
_init_pisi()
if package:
- try:
+ try:
package = package.split(",")
pisi.api.remove(package)
pisi.api.finalize()
except KeyboardInterrupt:
cancelled()
- except Exception, e:
- fail(unicode(e))
+ except Exception, e:
+ fail(unicode(e))
finished("System.Manager.removePackage")
-def updateRepository(repo=None):
+def updateRepository(repository=None):
_init_pisi()
- if repo:
- try:
- notify("System.Manager.updatingRepo","%s" % repo)
- pisi.api.update_repo(repo)
+ if repository:
+ try:
+ notify("System.Manager.updatingRepo","%s" % repository)
+ pisi.api.update_repo(repository)
pisi.api.finalize()
except KeyboardInterrupt:
cancelled()
- except Exception, e:
- fail(unicode(e))
+ except Exception, e:
+ fail(unicode(e))
finished("System.Manager.updateRepository")
def updateAllRepositories():
@@ -164,19 +166,19 @@
except KeyboardInterrupt:
cancelled()
except Exception, e:
- fail(unicode(e))
+ fail(unicode(e))
finished("System.Manager.addRepository")
def removeRepository(repo=None):
_init_pisi()
if repo:
- try:
+ try:
pisi.api.remove_repo(repo)
pisi.api.finalize()
except KeyboardInterrupt:
cancelled()
- except Exception, e:
- fail(unicode(e))
+ except Exception, e:
+ fail(unicode(e))
finished("System.Manager.removeRepository")
def installCritical():
@@ -223,3 +225,67 @@
except Exception, e:
fail(unicode(e))
finished("System.Manager.setRepositories")
+
+def clearCache(cacheDir, limit):
+ import os
+ import glob
+ from sets import Set as set
+
+ def getPackageLists(pkgList):
+ latest = {}
+ for f in pkgList:
+ try:
+ name, version = util.parse_package_name(f)
+ if latest.has_key(name):
+ if Version(latest[name]) < Version(version):
+ latest[name] = version
+ else:
+ if version:
+ latest[name] = version
+ except:
+ pass
+
+ latestVersions = []
+ for pkg in latest:
+ latestVersions.append("%s-%s" % (pkg, latest[pkg]))
+
+ oldVersions = list(set(pkgList) - set(latestVersions))
+ return oldVersions, latestVersions
+
+ def getRemoveOrder(cacheDir, pkgList):
+ sizes = {}
+ for pkg in pkgList:
+ sizes[pkg] = os.stat(os.path.join(cacheDir, pkg) + ".pisi").st_size
+
+ # sort dictionary by value from PEP-265
+ from operator import itemgetter
+ return sorted(sizes.iteritems(), key=itemgetter(1), reverse=False)
+
+ def removeOrderByLimit(cacheDir, order, limit):
+ totalSize = 0
+ for pkg, size in order:
+ totalSize += size
+ if totalSize >= limit:
+ try:
+ os.remove(os.path.join(cacheDir, pkg) + ".pisi")
+ except exceptions.OSError:
+ pass
+
+ def removeAll(cacheDir):
+ cached = glob.glob("%s/*.pisi" % cacheDir) + glob.glob("%s/*.part" % cacheDir)
+ for pkg in cached:
+ try:
+ os.remove(pkg)
+ except exceptions.OSError:
+ pass
+
+ limit = int(limit)
+ pkgList = map(lambda x: os.path.basename(x).split(".pisi")[0], glob.glob("%s/*.pisi" % cacheDir))
+ if limit:
+ old, latest = getPackageLists(pkgList)
+ order = getRemoveOrder(cacheDir, latest) + getRemoveOrder(cacheDir, old)
+ removeOrderByLimit(cacheDir, order, limit)
+ else:
+ removeAll(cacheDir)
+
+ finished("System.Manager.clearCache")
Paketler-commits mesaj listesiyle ilgili
daha fazla bilgi