Entropy/Spritz:

- beautified the new 'up-to-date' message
Entropy/Equo:
- avoid crashing when it's impossible to write queue cache to disk


git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@1859 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
lxnay
2008-04-24 14:34:33 +00:00
parent 3a0d5ef5d4
commit b6ed62dd0e
5 changed files with 115 additions and 45 deletions
+69 -39
View File
@@ -148,17 +148,20 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
# clear old resume information
if etpConst['uid'] == 0:
Equo.dumpTools.dumpobj(etpCache['world'],{})
Equo.dumpTools.dumpobj(etpCache['install'],{})
Equo.dumpTools.dumpobj(etpCache['remove'],[])
if (not etpUi['pretend']):
# store resume information
resume_cache = {}
resume_cache['ask'] = etpUi['ask']
resume_cache['verbose'] = etpUi['verbose']
resume_cache['onlyfetch'] = onlyfetch
resume_cache['remove'] = remove
Equo.dumpTools.dumpobj(etpCache['world'],resume_cache)
try:
Equo.dumpTools.dumpobj(etpCache['world'],{})
Equo.dumpTools.dumpobj(etpCache['install'],{})
Equo.dumpTools.dumpobj(etpCache['remove'],[])
if (not etpUi['pretend']):
# store resume information
resume_cache = {}
resume_cache['ask'] = etpUi['ask']
resume_cache['verbose'] = etpUi['verbose']
resume_cache['onlyfetch'] = onlyfetch
resume_cache['remove'] = remove
Equo.dumpTools.dumpobj(etpCache['world'],resume_cache)
except (OSError,IOError):
pass
else: # if resume, load cache if possible
@@ -175,11 +178,14 @@ def worldUpdate(onlyfetch = False, replay = False, upgradeTo = None, resume = Fa
etpUi['verbose'] = resume_cache['verbose']
onlyfetch = resume_cache['onlyfetch']
Equo.dumpTools.dumpobj(etpCache['remove'],list(remove))
except (IOError,KeyError):
except (OSError,IOError,KeyError):
print_error(red("Resume cache corrupted."))
Equo.dumpTools.dumpobj(etpCache['world'],{})
Equo.dumpTools.dumpobj(etpCache['install'],{})
Equo.dumpTools.dumpobj(etpCache['remove'],[])
try:
Equo.dumpTools.dumpobj(etpCache['world'],{})
Equo.dumpTools.dumpobj(etpCache['install'],{})
Equo.dumpTools.dumpobj(etpCache['remove'],[])
except (OSError,IOError):
pass
return 128,-1
# disable collisions protection, better
@@ -575,17 +581,20 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
dirscleanup()
return 0,0
# clear old resume information
Equo.dumpTools.dumpobj(etpCache['install'],{})
# store resume information
if not tbz2: # .tbz2 install resume not supported
resume_cache = {}
#resume_cache['removalQueue'] = removalQueue[:]
resume_cache['runQueue'] = runQueue[:]
resume_cache['onlyfetch'] = onlyfetch
resume_cache['emptydeps'] = emptydeps
resume_cache['deepdeps'] = deepdeps
Equo.dumpTools.dumpobj(etpCache['install'],resume_cache)
try:
# clear old resume information
Equo.dumpTools.dumpobj(etpCache['install'],{})
# store resume information
if not tbz2: # .tbz2 install resume not supported
resume_cache = {}
#resume_cache['removalQueue'] = removalQueue[:]
resume_cache['runQueue'] = runQueue[:]
resume_cache['onlyfetch'] = onlyfetch
resume_cache['emptydeps'] = emptydeps
resume_cache['deepdeps'] = deepdeps
Equo.dumpTools.dumpobj(etpCache['install'],resume_cache)
except (IOError,OSError):
pass
else: # if resume, load cache if possible
@@ -607,7 +616,10 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
print_warning(red("Resuming previous operations..."))
except:
print_error(red("Resume cache corrupted."))
Equo.dumpTools.dumpobj(etpCache['install'],{})
try:
Equo.dumpTools.dumpobj(etpCache['install'],{})
except (IOError,OSError):
pass
return 128,-1
if skipfirst and runQueue:
@@ -616,7 +628,10 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
# save new queues
resume_cache['runQueue'] = runQueue[:]
#resume_cache['removalQueue'] = removalQueue[:]
Equo.dumpTools.dumpobj(etpCache['install'],resume_cache)
try:
Equo.dumpTools.dumpobj(etpCache['install'],resume_cache)
except (IOError,OSError):
pass
# running tasks
totalqueue = str(len(runQueue))
@@ -736,7 +751,10 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
# update resume cache
if not tbz2: # tbz2 caching not supported
resume_cache['runQueue'].remove(packageInfo)
Equo.dumpTools.dumpobj(etpCache['install'],resume_cache)
try:
Equo.dumpTools.dumpobj(etpCache['install'],resume_cache)
except (IOError,OSError):
pass
Package.kill()
del metaopts
@@ -744,8 +762,11 @@ def installPackages(packages = [], atomsdata = [], deps = True, emptydeps = Fals
print_info(red(" @@ ")+blue("Install Complete."))
# clear resume information
Equo.dumpTools.dumpobj(etpCache['install'],{})
try:
# clear resume information
Equo.dumpTools.dumpobj(etpCache['install'],{})
except (IOError,OSError):
pass
dirscleanup()
return 0,0
@@ -875,12 +896,15 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
removalQueue.append(idpackage)
# clear old resume information
Equo.dumpTools.dumpobj(etpCache['remove'],{})
# store resume information
resume_cache = {}
resume_cache['doSelectiveRemoval'] = doSelectiveRemoval
resume_cache['removalQueue'] = removalQueue[:]
Equo.dumpTools.dumpobj(etpCache['remove'],resume_cache)
try:
Equo.dumpTools.dumpobj(etpCache['remove'],{})
# store resume information
resume_cache = {}
resume_cache['doSelectiveRemoval'] = doSelectiveRemoval
resume_cache['removalQueue'] = removalQueue[:]
Equo.dumpTools.dumpobj(etpCache['remove'],resume_cache)
except (OSError, IOError):
pass
else: # if resume, load cache if possible
@@ -896,7 +920,10 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
print_warning(red("Resuming previous operations..."))
except:
print_error(red("Resume cache corrupted."))
Equo.dumpTools.dumpobj(etpCache['remove'],{})
try:
Equo.dumpTools.dumpobj(etpCache['remove'],{})
except (OSError, IOError):
pass
return 128,-1
# validate removalQueue
@@ -944,7 +971,10 @@ def removePackages(packages = [], atomsdata = [], deps = True, deep = False, sys
# update resume cache
resume_cache['removalQueue'].remove(Package.infoDict['removeidpackage'])
Equo.dumpTools.dumpobj(etpCache['remove'],resume_cache)
try:
Equo.dumpTools.dumpobj(etpCache['remove'],resume_cache)
except (OSError,IOError):
pass
Package.kill()
del metaopts
+3 -1
View File
@@ -164,7 +164,9 @@ class PkgInfoMenu:
pkg = self.pkg
dbconn = self.pkg.dbconn
avail = dbconn.isIDPackageAvailable(pkg.matched_atom[0])
avail = False
if dbconn:
avail = dbconn.isIDPackageAvailable(pkg.matched_atom[0])
if not avail:
return
if type(pkg.matched_atom[1]) is not int and pkg.matched_atom[1] not in self.Entropy.validRepositories:
+20
View File
@@ -197,6 +197,26 @@ class EntropyPackages:
yp.action = 'rr'
yp.color = color_install
yield yp
elif mask == "fake_updates":
# load a pixmap inside the treeview
class emptyobj:
def __init__(self):
self.matched_atom = (0,0)
self.namedesc = "<big><b><span foreground='#FF0000'>%s</span></b></big>\n<span foreground='darkblue'>%s.\n%s</span>" % (
_('No updates available'),
_("It seems that your system is already up-to-date. Good!"),
_("Try clicking the %s button in the %s page") % (
_("Update Repositories"),
_("Repository Selection"),
),
)
self.queued = None
self.repoid = ''
self.color = None
self.action = None
self.dbconn = None
myobj = emptyobj()
yield myobj
def getCategories(self):
catlist = []
+6 -1
View File
@@ -1143,7 +1143,12 @@ class SpritzApplication(SpritzController,SpritzGUI):
if bootstrap:
self.endWorking()
self.pkgView.populate(allpkgs)
empty = False
if not allpkgs and action == "updates":
allpkgs = self.etpbase.getPackages('fake_updates')
empty = True
self.pkgView.populate(allpkgs, empty = empty)
self.progress.total.show()
if self.doProgress: self.progress.hide() #Hide Progress
+17 -4
View File
@@ -428,7 +428,7 @@ class EntropyPackageView:
def clear(self):
self.store.clear()
def populate(self, pkgs, widget = None):
def populate(self, pkgs, widget = None, empty = False):
self.clear()
search_col = 0
if widget == None:
@@ -437,9 +437,16 @@ class EntropyPackageView:
widget.set_model(None)
for po in pkgs:
self.store.append( None, (po,) ) # str(po)) )
widget.set_model(self.store)
widget.set_search_column( search_col )
widget.set_search_equal_func(self.atom_search)
if not empty:
widget.set_search_column( search_col )
widget.set_search_equal_func(self.atom_search)
widget.set_property('headers-visible',True)
widget.set_property('enable-search',True)
else:
widget.set_property('headers-visible',False)
widget.set_property('enable-search',False)
def atom_search(self, model, column, key, iterator):
obj = model.get_value( iterator, 0 )
@@ -474,7 +481,8 @@ class EntropyPackageView:
obj = model.get_value( iter, 0 )
if obj:
cell.set_property('markup',getattr( obj, property ))
cell.set_property('foreground',obj.color)
if obj.color:
cell.set_property('foreground',obj.color)
def selectAll(self):
list = [x[0] for x in self.store if not x[0].queued == x[0].action]
@@ -522,6 +530,11 @@ class EntropyPackageView:
"""
pkg = model.get_value( iter, 0 )
if pkg:
if not pkg.dbconn:
cell.set_property( 'stock-id', 'gtk-apply' )
return
if not pkg.queued:
if pkg.action in ["r","rr"]:
self.set_pixbuf_to_cell(cell, self.pkg_install_ok)