Merge lp:~glatzor/software-center/fix-977020 into lp:software-center

Proposed by Sebastian Heinlein
Status: Merged
Merged at revision: 2951
Proposed branch: lp:~glatzor/software-center/fix-977020
Merge into: lp:software-center
Diff against target: 92 lines (+49/-26)
1 file modified
softwarecenter/backend/installbackend_impl/aptd.py (+49/-26)
To merge this branch: bzr merge lp:~glatzor/software-center/fix-977020
Reviewer Review Type Date Requested Status
software-store-developers Pending
Review via email: mp+101223@code.launchpad.net

Description of the change

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'softwarecenter/backend/installbackend_impl/aptd.py'
--- softwarecenter/backend/installbackend_impl/aptd.py 2012-03-16 20:12:57 +0000
+++ softwarecenter/backend/installbackend_impl/aptd.py 2012-04-09 07:37:20 +0000
@@ -245,6 +245,16 @@
245 except Exception as error:245 except Exception as error:
246 self._on_trans_error(error)246 self._on_trans_error(error)
247247
248 @inline_callbacks
249 def fix_incomplete_install(self):
250 try:
251 trans = yield self.aptd_client.fix_incomplete_install(defer=True)
252 self.emit("transaction-started", "", "", trans.tid,
253 TransactionTypes.REPAIR)
254 yield self._run_transaction(trans, None, None, None)
255 except Exception as error:
256 self._on_trans_error(error)
257
248 # FIXME: upgrade add-ons here258 # FIXME: upgrade add-ons here
249 @inline_callbacks259 @inline_callbacks
250 def upgrade(self, app, iconname, addons_install=[], addons_remove=[],260 def upgrade(self, app, iconname, addons_install=[], addons_remove=[],
@@ -819,32 +829,45 @@
819829
820 # show error830 # show error
821 if enum == enums.EXIT_FAILED:831 if enum == enums.EXIT_FAILED:
822 if trans.error:832 # Handle invalid packages separately
823 # Handle invalid packages separately833 if (trans.error and
824 if trans.error.code == enums.ERROR_INVALID_PACKAGE_FILE:834 trans.error.code == enums.ERROR_INVALID_PACKAGE_FILE):
825 action = _("_Ignore and install")835 action = _("_Ignore and install")
826 res = self._show_transaction_failed_dialog(836 res = self._show_transaction_failed_dialog(
827 trans, enum, action)837 trans, enum, action)
828 if res == "yes":838 if res == "yes":
829 # Reinject the transaction839 # Reinject the transaction
830 app, iconname, filename, meta_copy = \840 app, iconname, filename, meta_copy = \
831 self._get_app_and_icon_and_deb_from_trans(trans)841 self._get_app_and_icon_and_deb_from_trans(trans)
832 self.install(app, iconname, filename, [], [],842 self.install(app, iconname, filename, [], [],
833 metadata=meta_copy, force=True)843 metadata=meta_copy, force=True)
834 return844 return
835 # on unauthenticated errors, try a "repair" using the845 # on unauthenticated errors, try a "repair" using the
836 # reload functionatlity846 # reload functionatlity
837 elif trans.error.code == enums.ERROR_PACKAGE_UNAUTHENTICATED:847 elif (trans.error and
838 action = _("Repair")848 trans.error.code == enums.ERROR_PACKAGE_UNAUTHENTICATED):
839 res = self._show_transaction_failed_dialog(849 action = _("Repair")
840 trans, enum, action)850 res = self._show_transaction_failed_dialog(
841 if res == "yes":851 trans, enum, action)
842 app, iconname, filename, meta_copy = \852 if res == "yes":
843 self._get_app_and_icon_and_deb_from_trans(trans)853 app, iconname, filename, meta_copy = \
844 self.reload()854 self._get_app_and_icon_and_deb_from_trans(trans)
845 self.install(app, iconname, filename, [], [],855 self.reload()
846 metadata=meta_copy)856 self.install(app, iconname, filename, [], [],
847 return857 metadata=meta_copy)
858 return
859 # Finish a cancelled installation before resuming. If the
860 # user e.g. rebooted during a debconf question apt
861 # will hang and the user is required to call
862 # dpkg --configure -a, see LP#659438
863 elif (trans.error and
864 trans.error.code == enums.ERROR_INCOMPLETE_INSTALL):
865 action = _("Repair")
866 res = self._show_transaction_failed_dialog(trans, enum,
867 action)
868 if res == "yes":
869 self.fix_incomplete_install()
870 return
848871
849 elif (not "sc_add_repo_and_install_ignore_errors" in872 elif (not "sc_add_repo_and_install_ignore_errors" in
850 trans.meta_data):873 trans.meta_data):