Entropy/Spritz:

- add fetch (download) only support


git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@2764 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
lxnay
2008-12-10 17:27:24 +00:00
parent c1d033a63d
commit a27888e5d4
3 changed files with 71 additions and 24 deletions
+7 -2
View File
@@ -51,7 +51,7 @@ class QueueExecutor:
else:
return 0,licenses
def run(self, install_queue, removal_queue, do_purge_cache = []):
def run(self, install_queue, removal_queue, do_purge_cache = [], fetch_only = False):
# unmask packages
for match in self.Spritz.etpbase.unmaskingPackages:
@@ -79,7 +79,9 @@ class QueueExecutor:
self.Entropy.clientDbconn.acceptLicense(lic)
totalqueue = len(runQueue)
progress_step = float(1)/((totalqueue*2)+len(removalQueue))
steps_here = 2
if fetch_only: steps_here = 1
progress_step = float(1)/((totalqueue*steps_here)+len(removalQueue))
step = progress_step
myrange = []
while progress_step < 1.0:
@@ -134,6 +136,9 @@ class QueueExecutor:
self.Spritz.ui.skipMirror.hide()
if fetch_only:
return 0,0
# then removalQueue
# NOT conflicts! :-)
totalremovalqueue = len(removalQueue)
+39 -2
View File
@@ -1602,10 +1602,46 @@
</child>
</widget>
</child>
<child>
<widget class="GtkVBox" id="vbox109">
<property name="visible">True</property>
<child>
<widget class="GtkCheckButton" id="queueProcessFetchOnly">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip" translatable="yes">If selected, packages will be downloaded only</property>
<property name="label" translatable="yes">Download only</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbutton2">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Download source code</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">8</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox19">
<property name="visible">True</property>
<property name="spacing">5</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="queueProcess">
@@ -1653,7 +1689,8 @@
</child>
</widget>
<packing>
<property name="position">1</property>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</widget>
+25 -20
View File
@@ -1283,7 +1283,7 @@ class SpritzApplication(Controller):
self.resetQueueProgressBars()
self.disable_ugc = False
def processPackageQueue(self, pkgs, remove_repos = []):
def processPackageQueue(self, pkgs, remove_repos = [], fetch_only = False):
# preventive check against other instances
locked = self.Equo.application_lock_check()
@@ -1298,6 +1298,7 @@ class SpritzApplication(Controller):
total = len( pkgs['i'] )+len( pkgs['u'] )+len( pkgs['r'] ) +len( pkgs['rr'] )
state = True
if total > 0:
self.startWorking(do_busy = True)
normalCursor(self.ui.main)
self.progress.show()
@@ -1308,9 +1309,10 @@ class SpritzApplication(Controller):
removal_queue = [x.matched_atom[0] for x in pkgs['r']]
do_purge_cache = set([x.matched_atom[0] for x in pkgs['r'] if x.do_purge])
if install_queue or removal_queue:
controller = QueueExecutor(self)
try:
e,i = controller.run(install_queue[:], removal_queue[:], do_purge_cache)
e,i = controller.run(install_queue[:], removal_queue[:], do_purge_cache, fetch_only = fetch_only)
except exceptionTools.QueueError:
e = 1
self.ui.skipMirror.hide()
@@ -1320,25 +1322,24 @@ class SpritzApplication(Controller):
_("Attention. An error occured when processing the queue."
"\nPlease have a look in the processing terminal.")
)
self.endWorking()
self.etpbase.clearPackages()
time.sleep(5)
self.endWorking()
self.progress.reset_progress()
self.etpbase.clearPackages()
self.etpbase.clearCache()
for myrepo in remove_repos:
self.Equo.removeRepository(myrepo)
self.Equo.closeAllRepositoryDatabases()
self.Equo.reopenClientDbconn()
# regenerate packages information
self.setupSpritz()
self.Equo.FileUpdates.scanfs(dcache = False)
if self.Equo.FileUpdates.scandata:
if len(self.Equo.FileUpdates.scandata) > 0:
self.setPage('filesconf')
#self.progress.hide()
if not fetch_only:
self.etpbase.clearPackages()
self.etpbase.clearCache()
for myrepo in remove_repos:
self.Equo.removeRepository(myrepo)
self.Equo.closeAllRepositoryDatabases()
self.Equo.reopenClientDbconn()
# regenerate packages information
self.setupSpritz()
self.Equo.FileUpdates.scanfs(dcache = False)
if self.Equo.FileUpdates.scandata:
if len(self.Equo.FileUpdates.scandata) > 0:
self.setPage('filesconf')
else:
self.setStatus( _( "No packages selected" ) )
@@ -2013,11 +2014,15 @@ class SpritzApplication(Controller):
self.setStatus(_('No packages in queue'))
return
rc = self.processPackageQueue(self.queue.packages)
fetch_only = self.ui.queueProcessFetchOnly.get_active()
rc = self.processPackageQueue(self.queue.packages, fetch_only = fetch_only)
self.resetQueueProgressBars()
if rc:
if rc and not fetch_only:
self.queue.clear() # Clear package queue
self.queueView.refresh() # Refresh Package Queue
#if fetch_only:
# self.setPage('queue')
def on_queueSave_clicked( self, widget ):
fn = FileChooser(action = gtk.FILE_CHOOSER_ACTION_SAVE, buttons = (gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK))