diff -Nru update-manager-17.04.7/debian/changelog update-manager-17.04.8/debian/changelog --- update-manager-17.04.7/debian/changelog 2017-08-24 17:00:11.000000000 +0000 +++ update-manager-17.04.8/debian/changelog 2017-09-20 21:36:07.000000000 +0000 @@ -1,3 +1,14 @@ +update-manager (1:17.04.8) zesty; urgency=medium + + * UpdateManager/UpdatesAvailable.py: Provide instructions when mount points + have insufficient free space for the upgrade to complete. (LP: #1477455) + * test_update_origin.py: fix the extended origin matcher test as it was + making wrong assumptions, not checking if packages actually had ANY package + in -security. This should fix the current autopkgtest failures. + (LP: #1717360) + + -- Brian Murray Wed, 20 Sep 2017 14:36:07 -0700 + update-manager (1:17.04.7) zesty; urgency=medium * UpdateManager.py: Workaround a crash when calling software-properties-gtk diff -Nru update-manager-17.04.7/tests/test_update_origin.py update-manager-17.04.8/tests/test_update_origin.py --- update-manager-17.04.7/tests/test_update_origin.py 2017-08-10 20:58:50.000000000 +0000 +++ update-manager-17.04.8/tests/test_update_origin.py 2017-09-20 21:35:38.000000000 +0000 @@ -76,14 +76,23 @@ # ensure that the origin is not -updates and -security is_in_updates = False is_in_security = False + had_security = False for v in pkg.candidate.origins: # test if the package is not in both updates and security if v.archive == "xenial-updates": is_in_updates = True elif v.archive == "xenial-security": is_in_security = True + # ensure that the package actually has any version in -security + for v in pkg.versions: + for (pkgfile, _unused) in v._cand.file_list: + o = apt.package.Origin(pkg, pkgfile) + if o.archive == "xenial-security": + had_security = True + break if (is_in_updates and not is_in_security and + had_security and len(pkg._pkg.version_list) > 2): test_pkgs.add(pkg.name) self.assertTrue(len(test_pkgs) > 0, diff -Nru update-manager-17.04.7/UpdateManager/UpdatesAvailable.py update-manager-17.04.8/UpdateManager/UpdatesAvailable.py --- update-manager-17.04.7/UpdateManager/UpdatesAvailable.py 2017-01-05 18:01:57.000000000 +0000 +++ update-manager-17.04.8/UpdateManager/UpdatesAvailable.py 2017-09-20 21:36:07.000000000 +0000 @@ -823,25 +823,56 @@ def on_button_install_clicked(self): self.unity.set_install_menuitem_visible(False) - #print("on_button_install_clicked") + # print("on_button_install_clicked") err_sum = _("Not enough free disk space") - err_long = _("The upgrade needs a total of %s free space on " - "disk '%s'. " - "Please free at least an additional %s of disk " - "space on '%s'. " - "Empty your trash and remove temporary " - "packages of former installations using " - "'sudo apt-get clean'.") + err_msg = _("The upgrade needs a total of %s free space on " + "disk '%s'. " + "Please free at least an additional %s of disk " + "space on '%s'. %s") + # specific ways to resolve lack of free space + remedy_archivedir = _("Remove temporary packages of former " + "installations using 'sudo apt clean'.") + remedy_boot = _("You can remove old kernels using " + "'sudo apt autoremove', and you could also " + "set COMPRESS=xz in " + "/etc/initramfs-tools/initramfs.conf to " + "reduce the size of your initramfs.") + remedy_root = _("Empty your trash and remove temporary " + "packages of former installations using " + "'sudo apt clean'.") + remedy_tmp = _("Reboot to clean up files in /tmp.") + remedy_usr = _("") # check free space and error if its not enough try: self.cache.checkFreeSpace() except NotEnoughFreeSpaceError as e: + # CheckFreeSpace examines where packages are cached + archivedir = apt_pkg.config.find_dir("Dir::Cache::archives") + err_long = "" for req in e.free_space_required_list: - self.window_main.start_error(False, err_sum, - err_long % (req.size_total, - req.dir, - req.size_needed, - req.dir)) + if err_long != "": + err_long += " " + if req.dir == archivedir: + err_long += err_msg % (req.size_total, req.dir, + req.size_needed, req.dir, + remedy_archivedir) + elif req.dir == "/boot": + err_long += err_msg % (req.size_total, req.dir, + req.size_needed, req.dir, + remedy_boot) + elif req.dir == "/": + err_long += err_msg % (req.size_total, req.dir, + req.size_needed, req.dir, + remedy_root) + elif req.dir == "/tmp": + err_long += err_msg % (req.size_total, req.dir, + req.size_needed, req.dir, + remedy_tmp) + elif req.dir == "/usr": + err_long += err_msg % (req.size_total, req.dir, + req.size_needed, req.dir, + remedy_usr) + self.window_main.start_error(False, err_sum, err_long) return except SystemError as e: logging.exception("free space check failed")