|
|
|
@ -765,31 +765,6 @@ class Update(MethodsInterface):
|
|
|
|
|
_("Listing packages for removal")))
|
|
|
|
|
self._display_pretty_package_list(pkglist, remove_list=True)
|
|
|
|
|
|
|
|
|
|
def getCacheOnWorld(self, params, packages, check=False):
|
|
|
|
|
"""
|
|
|
|
|
Получить список обновляемых пакетов @world из кэша
|
|
|
|
|
"""
|
|
|
|
|
if "@world" in packages:
|
|
|
|
|
elog = EmergeLog(EmergeLogNamedTask(EmergeMark.Premerge))
|
|
|
|
|
if check and (elog.list or elog.remove_list):
|
|
|
|
|
self.emerge_cache.drop_cache(
|
|
|
|
|
"Some packages was installed or removed")
|
|
|
|
|
return params, packages
|
|
|
|
|
installed_pkgs = elog.list
|
|
|
|
|
new_packages = self.emerge_cache.get_cached_package_list()
|
|
|
|
|
if new_packages is not None:
|
|
|
|
|
return "-1O", ["=%s" % x for x in new_packages
|
|
|
|
|
if not str(x) in installed_pkgs]
|
|
|
|
|
return params, packages
|
|
|
|
|
|
|
|
|
|
def updateCache(self, pkg_list):
|
|
|
|
|
"""
|
|
|
|
|
Обновить кэш. Оставить отметку в emerge.log о том, выполнено действие
|
|
|
|
|
premerge
|
|
|
|
|
"""
|
|
|
|
|
self.emerge_cache.set_cache(pkg_list)
|
|
|
|
|
elog = EmergeLog(EmergeLogNamedTask(EmergeMark.Premerge))
|
|
|
|
|
elog.mark_end_task(),
|
|
|
|
|
|
|
|
|
|
def mark_schedule(self):
|
|
|
|
|
"""
|
|
|
|
@ -805,26 +780,12 @@ class Update(MethodsInterface):
|
|
|
|
|
Вывести информацию об обновлении
|
|
|
|
|
"""
|
|
|
|
|
deo = self.clVars.Get('cl_emerge_default_opts')
|
|
|
|
|
param, packages = self.getCacheOnWorld(param, packages, check=True)
|
|
|
|
|
param = [param, "-pv"]
|
|
|
|
|
|
|
|
|
|
if not packages:
|
|
|
|
|
self.printSUCCESS(_("Installed packages are up to date"))
|
|
|
|
|
self.set_need_update(False)
|
|
|
|
|
return True
|
|
|
|
|
with EmergeParser(EmergeCommand(list(packages), emerge_default_opts=deo,
|
|
|
|
|
extra_params=param)) as emerge:
|
|
|
|
|
try:
|
|
|
|
|
emerge.run()
|
|
|
|
|
if "@world" in packages:
|
|
|
|
|
if emerge.install_packages.remove_list:
|
|
|
|
|
self.emerge_cache.drop_cache(
|
|
|
|
|
"List has packages for remove")
|
|
|
|
|
elif emerge.install_packages.block_packages:
|
|
|
|
|
self.emerge_cache.drop_cache(
|
|
|
|
|
"List has block packages")
|
|
|
|
|
else:
|
|
|
|
|
self.updateCache(emerge.install_packages.list)
|
|
|
|
|
if not emerge.install_packages.list:
|
|
|
|
|
self.printSUCCESS(_("The system is up to date"))
|
|
|
|
|
self.set_need_update(False)
|
|
|
|
@ -835,7 +796,6 @@ class Update(MethodsInterface):
|
|
|
|
|
self._display_error(emerge.skipped_packages)
|
|
|
|
|
except EmergeError:
|
|
|
|
|
self.set_need_update(False)
|
|
|
|
|
self.emerge_cache.drop_cache("Emerge error")
|
|
|
|
|
self._display_install_package(emerge, emergelike=True)
|
|
|
|
|
self._display_error(emerge.prepare_error)
|
|
|
|
|
raise
|
|
|
|
@ -870,7 +830,7 @@ class Update(MethodsInterface):
|
|
|
|
|
"""
|
|
|
|
|
Установить кэш - "нет пакетов для обновления"
|
|
|
|
|
"""
|
|
|
|
|
self.updateCache(PackageList([]))
|
|
|
|
|
#self.updateCache(PackageList([]))
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def _startEmerging(self, emerge):
|
|
|
|
@ -896,7 +856,6 @@ class Update(MethodsInterface):
|
|
|
|
|
try:
|
|
|
|
|
emerge.run()
|
|
|
|
|
except EmergeError:
|
|
|
|
|
self.emerge_cache.drop_cache("Emerge error")
|
|
|
|
|
if emerge.emerging_error:
|
|
|
|
|
self._display_error(emerge.emerging_error.log)
|
|
|
|
|
else:
|
|
|
|
@ -917,9 +876,6 @@ class Update(MethodsInterface):
|
|
|
|
|
packages = [param]
|
|
|
|
|
extra_params = None
|
|
|
|
|
else:
|
|
|
|
|
param, packages = self.getCacheOnWorld(param, packages)
|
|
|
|
|
if not packages:
|
|
|
|
|
return True
|
|
|
|
|
extra_params = [param]
|
|
|
|
|
|
|
|
|
|
command = EmergeCommand(list(packages), emerge_default_opts=deo,
|
|
|
|
@ -935,7 +891,43 @@ class Update(MethodsInterface):
|
|
|
|
|
if not emerge.install_packages.list:
|
|
|
|
|
return True
|
|
|
|
|
except EmergeError:
|
|
|
|
|
self.emerge_cache.drop_cache("Emerge error")
|
|
|
|
|
self._display_error(emerge.prepare_error)
|
|
|
|
|
raise
|
|
|
|
|
self._startEmerging(emerge)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def emerge_ask(self, pretend, *params):
|
|
|
|
|
"""
|
|
|
|
|
Вывести информацию об обновлении
|
|
|
|
|
"""
|
|
|
|
|
deo = self.get_default_emerge_opts()
|
|
|
|
|
param = [x for x in params if x.startswith("-")]
|
|
|
|
|
packages = [x for x in params if not x.startswith("-")]
|
|
|
|
|
command = EmergeCommand(list(packages), emerge_default_opts=deo,
|
|
|
|
|
extra_params=param)
|
|
|
|
|
with EmergeParser(command) as emerge:
|
|
|
|
|
try:
|
|
|
|
|
emerge.question.action = lambda x: False
|
|
|
|
|
emerge.run()
|
|
|
|
|
if emerge.install_packages.list:
|
|
|
|
|
emergelike = self.clVars.Get(
|
|
|
|
|
'update.cl_update_emergelist_set') == 'on'
|
|
|
|
|
self._display_install_package(emerge, emergelike)
|
|
|
|
|
if emerge.skipped_packages:
|
|
|
|
|
self._display_error(emerge.skipped_packages)
|
|
|
|
|
if not pretend:
|
|
|
|
|
answer = self.askConfirm(
|
|
|
|
|
_("Would you like to merge these packages?"), "yes")
|
|
|
|
|
if answer == "no":
|
|
|
|
|
emerge.command.send("no\n")
|
|
|
|
|
raise KeyboardInterrupt
|
|
|
|
|
else:
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
self.printSUCCESS(_("The system is up to date"))
|
|
|
|
|
except EmergeError:
|
|
|
|
|
self.set_need_update(False)
|
|
|
|
|
self._display_install_package(emerge, emergelike=True)
|
|
|
|
|
self._display_error(emerge.prepare_error)
|
|
|
|
|
raise
|
|
|
|
|
self._startEmerging(emerge)
|
|
|
|
|