Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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))
Ejemplo n.º 9
0
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))
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
def event_building(settings):
    log_info("Building targets...")
Ejemplo n.º 15
0
def event_node_removed(settings, node, progress):
    msg = node.get_build_str(settings.brief)
    if msg:
        log_info("(%s) Removed: %s", progress, msg)
Ejemplo n.º 16
0
def event_reading_scripts(settings):
    log_info("Reading scripts...")
Ejemplo n.º 17
0
def event_reading_scripts_done(settings, elapsed):
    log_info("Reading scripts finished (%s)", elapsed)
Ejemplo n.º 18
0
def event_reading_scripts(settings):
    log_info("Reading scripts...")
Ejemplo n.º 19
0
def event_building(settings):
    log_info("Building targets...")
Ejemplo n.º 20
0
def event_build_summary(settings, elapsed):
    log_info("Total time: %s", elapsed)
Ejemplo n.º 21
0
def event_reading_scripts_done(settings, elapsed):
    log_info("Reading scripts finished (%s)", elapsed)
Ejemplo n.º 22
0
def event_building_done(settings, success, elapsed):
    status = "finished" if success else "failed"
    log_info("Building targets %s (%s)", status, elapsed)
Ejemplo n.º 23
0
def event_building_done(settings, success, elapsed):
    status = "finished" if success else "failed"
    log_info("Building targets %s (%s)", status, elapsed)
Ejemplo n.º 24
0
def event_build_summary(settings, elapsed):
    log_info("Total time: %s", elapsed)
Ejemplo n.º 25
0
 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)
Ejemplo n.º 26
0
def event_extracted_tools(settings, path):
    log_info("Extracted embedded tools into: '%s'" % (path,))
Ejemplo n.º 27
0
def event_node_removed(settings, node, progress):
    msg = node.get_build_str(settings.brief)
    if msg:
        log_info("(%s) Removed: %s", progress, msg)
Ejemplo n.º 28
0
def event_extracted_tools(settings, path):
    log_info("Extracted embedded tools into: '%s'" % (path, ))
Ejemplo n.º 29
0
 def print_targets(self):
     targets = [t.get() for t in getattr(self, 'target_entities', [])]
     log_info("node '%s' targets: %s", self, targets)
Ejemplo n.º 30
0
 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)