241
242
# FIXME: upgrade add-ons here
242
243
@inline_callbacks
243
def upgrade(self, pkgname, appname, iconname, addons_install=[], addons_remove=[], metadata=None):
244
def upgrade(self, app, iconname, addons_install=[], addons_remove=[], metadata=None):
244
245
""" upgrade a single package """
246
pkgname = app.pkgname
247
appname = app.appname
246
249
trans = yield self.aptd_client.upgrade_packages([pkgname],
279
282
@inline_callbacks
280
def remove(self, pkgname, appname, iconname, addons_install=[], addons_remove=[], metadata=None):
283
def remove(self, app, iconname, addons_install=[], addons_remove=[], metadata=None):
281
284
""" remove a single package """
285
pkgname = app.pkgname
286
appname = app.appname
283
288
trans = yield self.aptd_client.remove_packages([pkgname],
288
293
self._on_trans_error(error, pkgname)
290
295
@inline_callbacks
291
def remove_multiple(self, pkgnames, appnames, iconnames, addons_install=[], addons_remove=[], metadatas=None):
296
def remove_multiple(self, apps, iconnames, addons_install=[], addons_remove=[], metadatas=None):
292
297
""" queue a list of packages for removal """
293
298
if metadatas == None:
295
for item in pkgnames:
296
301
metadatas.append(None)
297
for pkgname, appname, iconname, metadata in zip(pkgnames, appnames, iconnames, metadatas):
298
yield self.remove(pkgname, appname, iconname, metadata)
302
for app, iconname, metadata in zip(apps, iconnames, metadatas):
303
yield self.remove(app, iconname, metadata)
300
305
@inline_callbacks
301
def install(self, pkgname, appname, iconname, filename=None, addons_install=[], addons_remove=[], metadata=None, force=False):
306
def install(self, app, iconname, filename=None, addons_install=[], addons_remove=[], metadata=None, force=False):
302
307
"""Install a single package from the archive
303
308
If filename is given a local deb package is installed instead.
310
pkgname = app.pkgname
311
appname = app.appname
312
# this will force aptdaemon to use the right archive suite on install
313
if app.archive_suite:
314
pkgname = "%s/%s" % (pkgname, app.archive_suite)
307
317
# force means on lintian failure
323
333
self._on_trans_error(error, pkgname)
325
335
@inline_callbacks
326
def install_multiple(self, pkgnames, appnames, iconnames, addons_install=[], addons_remove=[], metadatas=None):
336
def install_multiple(self, apps, iconnames, addons_install=[], addons_remove=[], metadatas=None):
327
337
""" queue a list of packages for install """
328
338
if metadatas == None:
330
for item in pkgnames:
331
341
metadatas.append(None)
332
for pkgname, appname, iconname, metadata in zip(pkgnames, appnames, iconnames, metadatas):
333
yield self.install(pkgname, appname, iconname, metadata=metadata)
342
for app, iconname, metadata in zip(apps, iconnames, metadatas):
343
yield self.install(app, iconname, metadata=metadata)
335
345
@inline_callbacks
336
def apply_changes(self, pkgname, appname, iconname, addons_install=[], addons_remove=[], metadata=None):
346
def apply_changes(self, app, iconname, addons_install=[], addons_remove=[], metadata=None):
337
347
""" install and remove add-ons """
348
pkgname = app.pkgname
349
appname = app.appname
339
351
install = addons_install
340
352
remove = addons_remove
620
632
# we use aptd_client.install_packages() here instead
622
# self.install(app.pkgname, app.appname, "", metadata=metadata)
634
# self.install(app, "", metadata=metadata)
623
635
# go get less authentication prompts (because of the 03_auth_me_less
624
636
# patch in aptdaemon)
770
782
# Reinject the transaction
771
783
meta_copy = trans.meta_data.copy()
772
pkgname = meta_copy.pop("sc_pkgname")
773
appname = meta_copy.pop("sc_appname", None)
784
app = Application(meta_copy.pop("sc_appname", None),
785
meta_copy.pop("sc_pkgname"))
774
786
iconname = meta_copy.pop("sc_iconname", None)
775
787
filename = meta_copy.pop("sc_filename")
776
self.install(pkgname, appname, iconname, filename, [], [],
788
self.install(app, iconname, filename, [], [],
777
789
metadata=meta_copy, force=True)
779
791
elif not "sc_add_repo_and_install_ignore_errors" in trans.meta_data:
833
845
yield trans.set_meta_data(sc_iconname=iconname, defer=True)
834
846
# we do not always have a pkgname, e.g. "cache_update" does not
836
yield trans.set_meta_data(sc_pkgname=pkgname, defer=True)
848
# ensure the metadata is just the pkgname
849
sc_pkgname = pkgname.split("/")[0].split("=")[0]
850
yield trans.set_meta_data(sc_pkgname=sc_pkgname, defer=True)
837
851
# setup debconf only if we have a pkg
838
852
yield trans.set_debconf_frontend("gnome", defer=True)
839
853
trans.set_remove_obsoleted_depends(True, defer=True)