|
|
|
@ -20,6 +20,7 @@ from os import path
|
|
|
|
|
from calculate.lib.utils.tools import AddonError
|
|
|
|
|
from calculate.lib.utils.colortext.palette import TextState
|
|
|
|
|
from calculate.lib.utils.colortext import get_color_print
|
|
|
|
|
from calculate.update.emerge_parser import RevdepPercentBlock
|
|
|
|
|
import pexpect
|
|
|
|
|
|
|
|
|
|
from package_tools import Git, Layman,\
|
|
|
|
@ -298,6 +299,31 @@ class Update:
|
|
|
|
|
raise
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def revdep_rebuild(self, cmd, *params):
|
|
|
|
|
cmd_path = getProgPath(cmd)
|
|
|
|
|
if not cmd_path:
|
|
|
|
|
raise UpdateError(_("Failed to find %s command") % cmd)
|
|
|
|
|
with EmergeParser(
|
|
|
|
|
emerge_parser.CommandExecutor(cmd_path, params)) as emerge:
|
|
|
|
|
revdep = RevdepPercentBlock(emerge)
|
|
|
|
|
self.addProgress()
|
|
|
|
|
revdep.add_observer(self.setProgress)
|
|
|
|
|
revdep.action = lambda x: (self.endTask(), self.startTask(
|
|
|
|
|
_("Calculating dependencies")) if "Assign" in revdep else None)
|
|
|
|
|
emerge.emerging.add_observer(self._printEmergePackage)
|
|
|
|
|
emerge.installing.add_observer(self._printInstallPackage)
|
|
|
|
|
emerge.uninstalling.add_observer(self._printUninstallPackage)
|
|
|
|
|
try:
|
|
|
|
|
emerge.run()
|
|
|
|
|
except EmergeError:
|
|
|
|
|
if emerge.emerging_error:
|
|
|
|
|
self.printPre(
|
|
|
|
|
self._emerge_translate(emerge.emerging_error.log))
|
|
|
|
|
else:
|
|
|
|
|
self.printPre(self._emerge_translate(emerge.prepare_error))
|
|
|
|
|
raise
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def _display_pretty_package_list(self, pkglist, remove_list=False):
|
|
|
|
|
"""
|
|
|
|
|
Отобразить список пакетов в "удобночитаемом" виде
|
|
|
|
|