Изменён поряток выполнения emerge -uDN world

master-3.5 3.5.1_beta5
parent eca0cabfaf
commit d89445dd5c

@ -765,31 +765,6 @@ class Update(MethodsInterface):
_("Listing packages for removal"))) _("Listing packages for removal")))
self._display_pretty_package_list(pkglist, remove_list=True) 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): def mark_schedule(self):
""" """
@ -805,26 +780,12 @@ class Update(MethodsInterface):
Вывести информацию об обновлении Вывести информацию об обновлении
""" """
deo = self.clVars.Get('cl_emerge_default_opts') deo = self.clVars.Get('cl_emerge_default_opts')
param, packages = self.getCacheOnWorld(param, packages, check=True)
param = [param, "-pv"] 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, with EmergeParser(EmergeCommand(list(packages), emerge_default_opts=deo,
extra_params=param)) as emerge: extra_params=param)) as emerge:
try: try:
emerge.run() 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: if not emerge.install_packages.list:
self.printSUCCESS(_("The system is up to date")) self.printSUCCESS(_("The system is up to date"))
self.set_need_update(False) self.set_need_update(False)
@ -835,7 +796,6 @@ class Update(MethodsInterface):
self._display_error(emerge.skipped_packages) self._display_error(emerge.skipped_packages)
except EmergeError: except EmergeError:
self.set_need_update(False) self.set_need_update(False)
self.emerge_cache.drop_cache("Emerge error")
self._display_install_package(emerge, emergelike=True) self._display_install_package(emerge, emergelike=True)
self._display_error(emerge.prepare_error) self._display_error(emerge.prepare_error)
raise raise
@ -870,7 +830,7 @@ class Update(MethodsInterface):
""" """
Установить кэш - "нет пакетов для обновления" Установить кэш - "нет пакетов для обновления"
""" """
self.updateCache(PackageList([])) #self.updateCache(PackageList([]))
return True return True
def _startEmerging(self, emerge): def _startEmerging(self, emerge):
@ -896,7 +856,6 @@ class Update(MethodsInterface):
try: try:
emerge.run() emerge.run()
except EmergeError: except EmergeError:
self.emerge_cache.drop_cache("Emerge error")
if emerge.emerging_error: if emerge.emerging_error:
self._display_error(emerge.emerging_error.log) self._display_error(emerge.emerging_error.log)
else: else:
@ -917,9 +876,6 @@ class Update(MethodsInterface):
packages = [param] packages = [param]
extra_params = None extra_params = None
else: else:
param, packages = self.getCacheOnWorld(param, packages)
if not packages:
return True
extra_params = [param] extra_params = [param]
command = EmergeCommand(list(packages), emerge_default_opts=deo, command = EmergeCommand(list(packages), emerge_default_opts=deo,
@ -935,7 +891,43 @@ class Update(MethodsInterface):
if not emerge.install_packages.list: if not emerge.install_packages.list:
return True return True
except EmergeError: 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) self._display_error(emerge.prepare_error)
raise raise
self._startEmerging(emerge) self._startEmerging(emerge)

@ -69,12 +69,13 @@ class ClUpdateAction(Action):
{'name': 'premerge', {'name': 'premerge',
'message': __("Calculating dependencies"), 'message': __("Calculating dependencies"),
'method': 'Update.premerge("-uDN","@world")', 'method': 'Update.premerge("-uDN","@world")',
'condition': lambda Get:Get('cl_update_sync_only_set') == 'off' 'condition': lambda Get: (
Get('cl_update_sync_only_set') == 'off' and
Get('cl_update_pretend_set') == 'on')
}], }],
}, },
{'name': 'premerge:update', {'name': 'update',
'condition': lambda Get:Get('cl_update_pretend_set') == 'off', 'condition': lambda Get:Get('cl_update_pretend_set') == 'off',
'depend': Tasks.result("premerge", eq='yes')
}, },
{'name': 'update_other', {'name': 'update_other',
'condition': lambda Get: ( Get('cl_update_pretend_set') == 'off' and 'condition': lambda Get: ( Get('cl_update_pretend_set') == 'off' and
@ -83,11 +84,13 @@ class ClUpdateAction(Action):
{'name': 'update:update_world', {'name': 'update:update_world',
'group': __("Updating packages"), 'group': __("Updating packages"),
'tasks': [ 'tasks': [
{'name': 'update:update_world', {'name': 'update_world',
'message': __("Calculating dependencies"), 'message': __("Calculating dependencies"),
'method': 'Update.emerge("","-uDN","@world")', 'method': 'Update.emerge_ask(cl_update_pretend_set,'
'"-uDN","@world")',
} }
] ],
'condition': lambda Get: Get('cl_update_sync_only_set') == 'off'
}, },
{'name': 'update:update_perl', {'name': 'update:update_perl',
'group': __("Updating Perl"), 'group': __("Updating Perl"),

Loading…
Cancel
Save