def _log_memory_top(snapshot, group_by='lineno', limit=30): try: import tracemalloc import linecache except ImportError: return snapshot = snapshot.filter_traces(( tracemalloc.Filter(False, "<frozen importlib._bootstrap>"), tracemalloc.Filter(False, "<unknown>"), )) top_stats = snapshot.statistics(group_by) log_info("Top %s lines", limit) for index, stat in enumerate(top_stats[:limit], 1): frame = stat.traceback[0] # replace "/path/to/module/file.py" with "module/file.py" filename = os.sep.join(frame.filename.split(os.sep)[-2:]) log_info("#%s: %s:%s: %.1f KiB", index, filename, frame.lineno, stat.size / 1024) line = linecache.getline(frame.filename, frame.lineno).strip() if line: log_info(' %s', line) other = top_stats[limit:] if other: size = sum(stat.size for stat in other) log_info("%s other: %.1f KiB", len(other), size / 1024) total = sum(stat.size for stat in top_stats) log_info("Total allocated size: %.1f KiB", total / 1024)
def print_sources(self): # noqa result = [] sources = self.sources if not sources: sources = self.source_entities for src in sources: if isinstance(src, EntityBase): result.append(src.get()) elif isinstance(src, Node): targets = getattr(src, 'target_entities', None) if targets is not None: result += (target.get() for target in targets) else: result.append(src) elif isinstance(src, NodeFilter): try: targets = src.get_entities() except AttributeError: continue if targets is not None: result += (target.get() for target in targets) else: result.append(src) else: result.append(src) sources_str = ', '.join(map(str, result)) log_info("node '%s' sources: %s", self, sources_str)
def _print_memory_status(): _stop_memory_tracing() mem_usage = memory_usage() num_objects = len(gc.get_objects()) obj_mem_usage = sum(sys.getsizeof(obj) for obj in gc.get_objects()) log_info("GC objects: %s, size: %.1f KiB, heap memory usage: %s Kb", num_objects, obj_mem_usage / 1024, mem_usage)
def event_node_building_finished(settings, node, builder_output, progress): msg = node.get_build_str(settings.brief) if settings.with_output and builder_output: msg += '\n' if builder_output: msg += builder_output msg += '\n' msg = "(%s) %s" % (progress, msg) log_info(msg)
def _list_options(prj): prj_cfg = prj.config text = [] if prj_cfg.list_options: text += prj.list_options(brief=not prj_cfg.verbose) if prj_cfg.list_tool_options: text += prj.list_tools_options(prj_cfg.list_tool_options, brief=not prj_cfg.verbose) log_info('\n'.join(text))
def _list_options(prj): prj_cfg = prj.config text = [] if prj_cfg.list_options: text += prj.list_options(brief=not prj_cfg.verbose) if prj_cfg.list_tool_options: text += prj.list_tool_options(prj_cfg.list_tool_options, brief=not prj_cfg.verbose) log_info('\n'.join(text))
def main(): with_backtrace = True try: _patch_sys_modules() prj_cfg = ProjectConfig() with_backtrace = prj_cfg.debug_backtrace if prj_cfg.show_version: log_info(dump_aql_info()) return 0 if prj_cfg.silent: set_log_level(LOG_WARNING) status = _run_main(prj_cfg) except (Exception, KeyboardInterrupt) as ex: _log_error(ex, with_backtrace) status = 1 return status
def _main(prj_cfg): with Chrono() as total_elapsed: ev_settings = EventSettings(brief=not prj_cfg.verbose, with_output=not prj_cfg.no_output, trace_exec=prj_cfg.debug_exec) set_event_settings(ev_settings) with Chdir(prj_cfg.directory): if prj_cfg.debug_memory: _start_memory_tracing() prj = Project(prj_cfg) _read_make_script(prj) success = True if prj_cfg.clean: prj.clear() elif prj_cfg.list_targets: text = prj.list_targets() log_info('\n'.join(text)) elif prj_cfg.list_options or prj_cfg.list_tool_options: _list_options(prj) else: success = _build(prj) if prj_cfg.debug_memory: _print_memory_status() event_build_summary(total_elapsed) status = int(not success) return status
def _main(prj_cfg): with Chrono() as total_elapsed: ev_settings = EventSettings(brief=not prj_cfg.verbose, with_output=not prj_cfg.no_output, trace_exec=prj_cfg.debug_exec) set_event_settings(ev_settings) with Chdir(prj_cfg.directory): if prj_cfg.debug_memory: _start_memory_tracing() prj = Project(prj_cfg) _read_make_script(prj) success = True if prj_cfg.clean: prj.clear() elif prj_cfg.list_targets: text = prj.list_targets() log_info('\n'.join(text)) elif prj_cfg.list_options or prj_cfg.list_tool_options: _list_options(prj_cfg) else: success = _build(prj) if prj_cfg.debug_memory: _print_memory_status() event_build_summary(total_elapsed) status = int(not success) return status
def event_building(settings): log_info("Building targets...")
def event_node_removed(settings, node, progress): msg = node.get_build_str(settings.brief) if msg: log_info("(%s) Removed: %s", progress, msg)
def event_reading_scripts(settings): log_info("Reading scripts...")
def event_reading_scripts_done(settings, elapsed): log_info("Reading scripts finished (%s)", elapsed)
def event_build_summary(settings, elapsed): log_info("Total time: %s", elapsed)
def event_building_done(settings, success, elapsed): status = "finished" if success else "failed" log_info("Building targets %s (%s)", status, elapsed)
def print_build_state(self): log_info("Failed nodes: %s", len(self._failed_nodes)) log_info("Skipped nodes: %s", self.skipped) log_info("Completed nodes: %s", self.completed) log_info("Actual nodes: %s", self.actual)
def event_extracted_tools(settings, path): log_info("Extracted embedded tools into: '%s'" % (path,))
def event_extracted_tools(settings, path): log_info("Extracted embedded tools into: '%s'" % (path, ))
def print_targets(self): targets = [t.get() for t in getattr(self, 'target_entities', [])] log_info("node '%s' targets: %s", self, targets)