Добавлено логгирование использования emerge кэша

master3.3
Mike khiretskiy 10 years ago
parent dd31cadbb1
commit 3f817eedfc

@ -32,6 +32,7 @@ from calculate.lib.utils.files import getProgPath, readLinesFile, listDirectory,
from calculate.lib.utils.colortext.output import XmlOutput from calculate.lib.utils.colortext.output import XmlOutput
from calculate.lib.utils.colortext.converter import (ConsoleCodes256Converter, from calculate.lib.utils.colortext.converter import (ConsoleCodes256Converter,
XmlConverter) XmlConverter)
from calculate.lib.cl_log import log
from calculate.lib.cl_lang import setLocalTranslate, getLazyLocalTranslate, _ from calculate.lib.cl_lang import setLocalTranslate, getLazyLocalTranslate, _
@ -587,6 +588,9 @@ class EmergeCache(object):
'/etc/make.profile'), '/etc/make.profile'),
Md5Checkvalue('/var/lib/portage/world', Md5Checkvalue('/var/lib/portage/world',
'/var/lib/portage/world_sets')] '/var/lib/portage/world_sets')]
logger = log("emerge-cache",
filename="/var/log/calculate/emerge-cache.log",
formatter="%(asctime)s - %(levelname)s - %(message)s")
def __init__(self): def __init__(self):
self.files_control_values = {} self.files_control_values = {}
@ -602,14 +606,20 @@ class EmergeCache(object):
f.write('\n') f.write('\n')
for pkg in package_list: for pkg in package_list:
f.write("%s\n"% str(pkg)) f.write("%s\n"% str(pkg))
self.logger.info("Setting cache (%d packages)"%len(package_list))
def drop_cache(self): def drop_cache(self, reason=None):
if path.exists(self.cache_file): if path.exists(self.cache_file):
with ignore(OSError): with ignore(OSError):
os.unlink(self.cache_file) os.unlink(self.cache_file)
self.logger.info("Droping cache. Reason: %s"%reason)
else:
self.logger.info("Droping empty cache. Reason: %s"%reason)
def get_cached_package_list(self): def get_cached_package_list(self):
self.read_cache() self.read_cache()
if not path.exists(self.cache_file):
self.logger.info("Requesting empty cache")
if self.check_actuality(): if self.check_actuality():
return self.pkg_list return self.pkg_list
return None return None
@ -618,7 +628,20 @@ class EmergeCache(object):
""" """
Кэш считается актуальным если ни один из файлов не менялся Кэш считается актуальным если ни один из файлов не менялся
""" """
return self.get_control_values() == self.files_control_values if self.get_control_values() == self.files_control_values:
self.logger.info(
"Getting actuality cache (%d packages)" % len(self.pkg_list))
return True
else:
reason = "Unknown"
for k,v in self.get_control_values().items():
if k in self.files_control_values:
if v != self.files_control_values[k]:
reason = "%s was modified"%k
else:
reason = "Checksum of file %s is not exist" % k
self.logger.info("Failed to get cache. Reason: %s" % reason)
return False
def read_cache(self): def read_cache(self):
self.files_control_values = {} self.files_control_values = {}

@ -284,13 +284,10 @@ class Update:
""" """
self.endTask() self.endTask()
_print = self.color_print _print = self.color_print
if max_num > 1: one = _print.bold("{0}", num)
one = _print.bold("{0}", num) two = _print.bold("{0}", max_num)
two = _print.bold("{0}", max_num) part = _(" ({current} of {maximum})").format(current=one,
part = _(" ({current} of {maximum})").format(current=one, maximum=two)
maximum=two)
else:
part = ""
if self.is_binary_pkg(pkg,binary): if self.is_binary_pkg(pkg,binary):
_print = _print.foreground(Colors.PURPLE) _print = _print.foreground(Colors.PURPLE)
else: else:
@ -319,13 +316,10 @@ class Update:
""" """
self.endTask() self.endTask()
_print = self.color_print _print = self.color_print
if max_num > 1: one = _print.bold("{0}", num)
one = _print.bold("{0}", num) two = _print.bold("{0}", max_num)
two = _print.bold("{0}", max_num) part = _(" ({current} of {maximum})").format(current=one,
part = _(" ({current} of {maximum})").format(current=one, maximum=two)
maximum=two)
else:
part = ""
_print = _print.foreground(Colors.RED) _print = _print.foreground(Colors.RED)
self.startTask( self.startTask(
@ -440,7 +434,8 @@ class Update:
elog = EmergeLog( elog = EmergeLog(
EmergeLogNamedTask(ClUpdateAction.log_names['premerge'])) EmergeLogNamedTask(ClUpdateAction.log_names['premerge']))
if check and (elog.list or elog.remove_list): if check and (elog.list or elog.remove_list):
self.emerge_cache.drop_cache() self.emerge_cache.drop_cache(
"Some packages was installed or removed")
return params, packages return params, packages
installed_pkgs = elog.list installed_pkgs = elog.list
new_packages = self.emerge_cache.get_cached_package_list() new_packages = self.emerge_cache.get_cached_package_list()
@ -476,7 +471,8 @@ class Update:
emerge.run() emerge.run()
if "@world" in packages: if "@world" in packages:
if emerge.install_packages.remove_list: if emerge.install_packages.remove_list:
self.emerge_cache.drop_cache() self.emerge_cache.drop_cache(
"List has packages for remove")
else: else:
self.updateCache(emerge.install_packages.list) self.updateCache(emerge.install_packages.list)
if not emerge.install_packages.list: if not emerge.install_packages.list:
@ -484,7 +480,7 @@ class Update:
return True return True
self._display_install_package(emerge) self._display_install_package(emerge)
except EmergeError: except EmergeError:
self.emerge_cache.drop_cache() self.emerge_cache.drop_cache("Emerge error")
self.printPre(self._emerge_translate(emerge.prepare_error)) self.printPre(self._emerge_translate(emerge.prepare_error))
raise raise
if self.clVars.Get('cl_update_pretend_set') == 'on': if self.clVars.Get('cl_update_pretend_set') == 'on':
@ -520,7 +516,7 @@ class Update:
try: try:
emerge.run() emerge.run()
except EmergeError: except EmergeError:
self.emerge_cache.drop_cache() self.emerge_cache.drop_cache("Emerge error")
if emerge.emerging_error: if emerge.emerging_error:
self.printPre( self.printPre(
self._emerge_translate(emerge.emerging_error.log)) self._emerge_translate(emerge.emerging_error.log))
@ -548,7 +544,7 @@ class Update:
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() self.emerge_cache.drop_cache("Emerge error")
self.printPre(self._emerge_translate(emerge.prepare_error)) self.printPre(self._emerge_translate(emerge.prepare_error))
raise raise
self._startEmerging(emerge) self._startEmerging(emerge)

Loading…
Cancel
Save