mozbuild.controller 包¶
子模块¶
mozbuild.controller.building 模块¶
- class mozbuild.controller.building.BuildDriver(*args, **kwargs)¶
基类:
MozbuildObject
提供构建操作的高级 API。
- build(metrics, what=None, jobs=0, job_size=0, directory=None, verbose=False, keep_going=False, mach_context=None, append_env=None)¶
- configure(metrics, options=None, buildstatus_messages=False, line_handler=None, append_env=None)¶
- install_tests()¶
安装测试文件。
- class mozbuild.controller.building.BuildMonitor(topsrcdir, settings, log_manager, topobjdir=None, mozconfig=<object object>, virtualenv_name=None)¶
基类:
MozbuildObject
监控构建输出。
- ccache_stats(ccache=None)¶
- finish()¶
记录构建结束。
- get_resource_usage()¶
生成一个包含底层资源使用信息的数据结构。
此数据结构例如可以序列化为 JSON 并保存以供后续分析。
如果无法获取资源使用信息,则返回 None。
- have_excessive_swapping()¶
确定构建过程中是否存在过度交换。
返回一个 (excessive, swap_in, swap_out) 的元组。如果无法获取交换信息,则所有值均为 None。
- have_high_finder_usage()¶
确定构建过程中 Finder CPU 使用率是否过高。
如果 Finder CPU 使用率过高,则返回 True;如果不过高,则返回 False;如果没有任何报告,则返回 None。
- property have_resource_usage¶
资源使用信息是否可用。
- init(warnings_path, terminal, metrics)¶
创建一个新的监控器。
warnings_path 是要使用的警告数据库的路径。
- log_resource_usage(usage)¶
在日志消息中总结此构建的资源使用情况。
- on_line(line)¶
使用构建系统输出的一行内容。
这将解析该行以获取状态,并确定是否需要更多操作。
返回一个 BuildOutputResult 实例。
在此命名元组中,warning 将是一个描述新解析的警告的对象。否则将为 None。
state_changed 指示构建系统是否已通过此行更改状态。如果构建系统已更改状态,则调用方可能希望查询此实例以获取当前状态,以便更新 UI 等。
message 为 None 或要显示给用户的消息内容。
- record_usage()¶
- start()¶
记录构建开始。
- start_resource_recording()¶
- stop_resource_recording()¶
- class mozbuild.controller.building.BuildOutputManager(log_manager, monitor, footer)¶
基类:
OutputManager
处理将构建输出写入终端、日志等。
- on_line(line)¶
- class mozbuild.controller.building.BuildOutputResult(warning, state_changed, message)¶
基类:
tuple
- message¶
字段编号 2 的别名
- state_changed¶
字段编号 1 的别名
- warning¶
字段编号 0 的别名
基类:
Footer
处理在终端中显示构建进度指示器。
当 mach 在受 blessed 支持的终端内构建时,它将呈现从 BuildMonitor 收集的进度信息。此类将 BuildMonitor 的状态转换为终端输出。
在终端中绘制此页脚。
- class mozbuild.controller.building.CCacheStats(output=None, has_machine_format=False)¶
基类:
object
存储来自 ccache 的统计信息。
实例之间可以进行减法运算以获取差异。打印或使用 str() 函数显示对象,以显示类似于
ccache -s
输出的捕获统计信息。- ABSOLUTE_KEYS = {'cache_files', 'cache_max_size', 'cache_size'}¶
- FORMAT_KEYS = {'cache_max_size', 'cache_size'}¶
- GiB = 1073741824¶
- KiB = 1024¶
- MiB = 1048576¶
- SKIP_LINES = ('cache directory', 'primary config', 'secondary config')¶
- STATS_KEYS = [('stats_zeroed', ('stats zeroed', 'stats zero time')), ('stats_updated', 'stats updated'), ('cache_hit_direct', 'cache hit (direct)'), ('cache_hit_preprocessed', 'cache hit (preprocessed)'), ('cache_hit_rate', 'cache hit rate'), ('cache_miss', 'cache miss'), ('link', 'called for link'), ('preprocessing', 'called for preprocessing'), ('multiple', 'multiple source files'), ('stdout', 'compiler produced stdout'), ('no_output', 'compiler produced no output'), ('empty_output', 'compiler produced empty output'), ('failed', 'compile failed'), ('error', 'ccache internal error'), ('preprocessor_error', 'preprocessor error'), ('cant_use_pch', "can't use precompiled header"), ('compiler_missing', "couldn't find the compiler"), ('cache_file_missing', 'cache file missing'), ('bad_args', 'bad compiler arguments'), ('unsupported_lang', 'unsupported source language'), ('compiler_check_failed', 'compiler check failed'), ('autoconf', 'autoconf compile/link'), ('unsupported_code_directive', 'unsupported code directive'), ('unsupported_compiler_option', 'unsupported compiler option'), ('out_stdout', 'output to stdout'), ('out_device', 'output to a non-regular file'), ('no_input', 'no input file'), ('bad_extra_file', 'error hashing extra file'), ('num_cleanups', 'cleanups performed'), ('cache_files', 'files in cache'), ('cache_size', 'cache size'), ('cache_max_size', 'max cache size')]¶
- STATS_KEYS_3_7_PLUS = {'autoconf_test': 'autoconf', 'bad_compiler_arguments': 'bad_args', 'cache_miss': 'cache_miss', 'cache_size_kibibyte': 'cache_size', 'called_for_link': 'link', 'called_for_preprocessing': 'preprocessing', 'cleanups_performed': 'num_cleanups', 'compile_failed': 'failed', 'compiler_check_failed': 'compiler_check_failed', 'compiler_produced_empty_output': 'empty_output', 'compiler_produced_no_output': 'no_output', 'compiler_produced_stdout': 'stdout', 'could_not_find_compiler': 'compiler_missing', 'could_not_use_precompiled_header': 'cant_use_pch', 'direct_cache_hit': 'cache_hit_direct', 'error_hashing_extra_file': 'bad_extra_file', 'files_in_cache': 'cache_files', 'internal_error': 'error', 'missing_cache_file': 'cache_file_missing', 'multiple_source_files': 'multiple', 'no_input_file': 'no_input', 'output_to_a_non_file': 'out_device', 'output_to_stdout': 'out_stdout', 'preprocessed_cache_hit': 'cache_hit_preprocessed', 'preprocessor_error': 'preprocessor_error', 'stats_updated_timestamp': 'stats_updated', 'stats_zeroed_timestamp': 'stats_zeroed', 'unsupported_code_directive': 'unsupported_code_directive', 'unsupported_compiler_option': 'unsupported_compiler_option', 'unsupported_source_language': 'unsupported_lang'}¶
- static check_version_3_7_or_newer(ccache)¶
- hit_rate_message()¶
- hit_rates()¶
- class mozbuild.controller.building.OutputManager(log_manager, footer)¶
基类:
LoggingMixin
处理将作业输出写入终端或日志。
- refresh()¶
- write_line(line)¶
基类:
Footer
处理在终端中显示静态分析进度指示器。
在终端中绘制此页脚。
- class mozbuild.controller.building.StaticAnalysisOutputManager(log_manager, monitor, footer)¶
基类:
OutputManager
处理将静态分析输出写入终端或文件。
- on_line(line)¶
- write(path, output_format)¶
- class mozbuild.controller.building.TerminalLoggingHandler¶
基类:
Handler
自定义日志处理程序,可与终端窗口装饰一起使用。
此类可能应该放在其他地方,例如 mach 核心。将其视为证明其有用性的试验场。
- emit(record)¶
执行记录指定日志记录所需的一切操作。
此版本旨在由子类实现,因此会引发 NotImplementedError 错误。
- flush()¶
确保已刷新所有日志输出。
此版本不执行任何操作,旨在由子类实现。
- class mozbuild.controller.building.TierStatus(resources, metrics)¶
基类:
object
表示层遍历的状态和进度。
构建系统被组织成称为层的线性阶段。每个层都按其定义的顺序依次执行,一次一个。
- begin_tier(tier)¶
记录层执行已开始。
- finish_tier(tier)¶
记录层执行已完成。
- set_tiers(tiers)¶
记录已知层的集合。
- mozbuild.controller.building.record_cargo_timings(resource_monitor, timings_path)¶
mozbuild.controller.clobber 模块¶
此模块包含用于管理树清理的代码。
- class mozbuild.controller.clobber.Clobberer(topsrcdir, topobjdir, substs=None)¶
基类:
object
- clobber_cause()¶
获取需要清理的原因。
从 CLOBBER 文件中读取原因。
返回一个列表,其中包含描述清理原因的各行。每行都已去除开头和结尾的空格。
- clobber_needed()¶
返回一个布尔值,指示是否需要进行树清理。
- collect_subdirs(root, exclude)¶
收集子目录列表,排除指定的项目。
- delete_dirs(root, paths_to_delete)¶
以最佳方式删除给定的子目录。
- have_winrm()¶
- maybe_do_clobber(cwd, allow_auto=False, fh=<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>)¶
如果需要,执行清理操作。也许。
这是构建系统调用的 API,用于确定是否需要清理,并在我们可以自动执行清理操作时执行清理。
返回一个元组 (bool, bool, str)。元素为
是否需要清理。
是否已执行清理。
清理失败或无法执行的原因。如果不需要清理或我们已成功执行清理,则此值为 None。
- remove_objdir(full=True)¶
删除对象目录。
full
控制是否完全删除 objdir。如果为 False,则不会删除某些目录(例如 Visual Studio 项目文件)。