cli/upgrade: Show packages that need serviceRestart and systemRestart before upgrade
This commit is contained in:
@@ -27,6 +27,44 @@ import pisi.dependency as dependency
|
|||||||
import pisi.db
|
import pisi.db
|
||||||
import pisi.blacklist
|
import pisi.blacklist
|
||||||
|
|
||||||
|
def check_update_actions(packages):
|
||||||
|
installdb = pisi.db.installdb.InstallDB()
|
||||||
|
packagedb = pisi.db.packagedb.PackageDB()
|
||||||
|
|
||||||
|
actions = {}
|
||||||
|
|
||||||
|
for package in packages:
|
||||||
|
if not installdb.has_package(package):
|
||||||
|
continue
|
||||||
|
|
||||||
|
pkg = packagedb.get_package(package)
|
||||||
|
version, release, build = installdb.get_version(package)
|
||||||
|
pkg_actions = pkg.get_update_actions(release)
|
||||||
|
|
||||||
|
for action_name, action_target in pkg_actions:
|
||||||
|
item = actions.setdefault(action_name, [])
|
||||||
|
item.append((package, action_target))
|
||||||
|
|
||||||
|
has_actions = False
|
||||||
|
|
||||||
|
if "serviceRestart" in actions:
|
||||||
|
has_actions = True
|
||||||
|
ctx.ui.warning(_("You must restart the following service(s) manually "
|
||||||
|
"in order the updated versions of software to take "
|
||||||
|
"effect:"))
|
||||||
|
for package, target in actions["serviceRestart"]:
|
||||||
|
ctx.ui.info(" - %s" % target)
|
||||||
|
|
||||||
|
if "systemRestart" in actions:
|
||||||
|
has_actions = True
|
||||||
|
ctx.ui.warning(_("You must restart your system in order the updated "
|
||||||
|
"versions of the following package(s) to take "
|
||||||
|
"effect:"))
|
||||||
|
for package, target in actions["systemRestart"]:
|
||||||
|
ctx.ui.info(" - %s" % package)
|
||||||
|
|
||||||
|
return has_actions
|
||||||
|
|
||||||
def find_upgrades(packages, replaces):
|
def find_upgrades(packages, replaces):
|
||||||
packagedb = pisi.db.packagedb.PackageDB()
|
packagedb = pisi.db.packagedb.PackageDB()
|
||||||
installdb = pisi.db.installdb.InstallDB()
|
installdb = pisi.db.installdb.InstallDB()
|
||||||
@@ -141,12 +179,18 @@ def upgrade(A=[], repo=None):
|
|||||||
total_size, symbol = util.human_readable_size(total_size)
|
total_size, symbol = util.human_readable_size(total_size)
|
||||||
ctx.ui.info(util.colorize(_('Total size of package(s): %.2f %s') % (total_size, symbol), "yellow"))
|
ctx.ui.info(util.colorize(_('Total size of package(s): %.2f %s') % (total_size, symbol), "yellow"))
|
||||||
|
|
||||||
|
needs_confirm = check_update_actions(order)
|
||||||
|
|
||||||
|
if set(order) - A_0 - set(sum(replaces.values(), [])):
|
||||||
|
ctx.ui.warning(_("There are extra packages due to dependencies."))
|
||||||
|
needs_confirm = True
|
||||||
|
|
||||||
if ctx.get_option('dry_run'):
|
if ctx.get_option('dry_run'):
|
||||||
return
|
return
|
||||||
|
|
||||||
if set(order) - A_0 - set(sum(replaces.values(), [])):
|
if needs_confirm and \
|
||||||
if not ctx.ui.confirm(_('There are extra packages due to dependencies. Do you want to continue?')):
|
not ctx.ui.confirm(_("Do you want to continue?")):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
ctx.ui.notify(ui.packagestogo, order = order)
|
ctx.ui.notify(ui.packagestogo, order = order)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user