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 的别名

class mozbuild.controller.building.BuildProgressFooter(terminal, monitor)

基类: Footer

处理在终端中显示构建进度指示器。

当 mach 在受 blessed 支持的终端内构建时,它将呈现从 BuildMonitor 收集的进度信息。此类将 BuildMonitor 的状态转换为终端输出。

draw()

在终端中绘制此页脚。

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)
class mozbuild.controller.building.StaticAnalysisFooter(terminal, monitor)

基类: Footer

处理在终端中显示静态分析进度指示器。

draw()

在终端中绘制此页脚。

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 项目文件)。

模块内容