mozbuild.configure 包

子模块

mozbuild.configure.check_debug_ranges 模块

mozbuild.configure.check_debug_ranges.get_range_for(compilation_unit, debug_info)

返回给定调试信息中给定编译单元的范围偏移量。

mozbuild.configure.check_debug_ranges.get_range_length(range, debug_ranges)

返回从给定偏移量开始的范围中的项目数量。

mozbuild.configure.check_debug_ranges.main(bin, compilation_unit)

mozbuild.configure.constants 模块

class mozbuild.configure.constants.Abi(value)

基类:EnumString

POSSIBLE_VALUES = ('msvc', 'mingw')
class mozbuild.configure.constants.CPU(value)

基类:EnumString

POSSIBLE_VALUES = dict_keys(['aarch64', 'Alpha', 'arm', 'hppa', 'ia64', 'loongarch64', 'm68k', 'mips32', 'mips64', 'ppc', 'ppc64', 'riscv64', 's390', 's390x', 'sh4', 'sparc', 'sparc64', 'x86', 'x86_64', 'wasm32'])
class mozbuild.configure.constants.CompilerType(value)

基类:EnumString

POSSIBLE_VALUES = ('clang', 'clang-cl', 'gcc', 'msvc')
class mozbuild.configure.constants.Endianness(value)

基类:EnumString

POSSIBLE_VALUES = ('big', 'little')
class mozbuild.configure.constants.Kernel(value)

基类:EnumString

POSSIBLE_VALUES = ('Darwin', 'DragonFly', 'FreeBSD', 'kFreeBSD', 'Linux', 'NetBSD', 'OpenBSD', 'SunOS', 'WINNT', 'WASI')
class mozbuild.configure.constants.OS(value)

基类:EnumString

POSSIBLE_VALUES = ('Android', 'DragonFly', 'FreeBSD', 'GNU', 'iOS', 'NetBSD', 'OpenBSD', 'OSX', 'SunOS', 'WINNT', 'WASI')
class mozbuild.configure.constants.RaiseErrorOnUse(msg)

基类:str

class mozbuild.configure.constants.WindowsBinaryType(value)

基类:EnumString

POSSIBLE_VALUES = ('win32', 'win64')

mozbuild.configure.help 模块

class mozbuild.configure.help.HelpFormatter(argv0)

基类:object

RE_FORMAT = re.compile('{([^|}]*)\\|([^|}]*)}')
add(option)
format_help(option)
format_options_by_category(options_by_category)
usage(out)

mozbuild.configure.lint 模块

class mozbuild.configure.lint.LintSandbox(environ=None, argv=None, stdout=None, stderr=None)

基类:ConfigureSandbox

imports_impl(_import, _from=None, _as=None)

@imports 的实现。此装饰器从给定的 _from 模块导入给定的 _import,可以选择在不同的 _as 名称下。这些选项对应于 import 内置函数的各种形式。

@imports(‘sys’) @imports(_from=’mozpack’, _import=’path’, _as=’mozpath’)

option_impl(*args, **kwargs)

option() 的实现 此函数创建并返回一个 Option() 对象,并将解析后的参数传递给它(在传递函数时使用函数的结果)。在大多数情况下,不希望使用此函数的结果。此 Option 的命令行参数/环境变量解析在此处处理。

run(path=None)

在沙箱中执行给定的文件,以及任何其他包含文件中挂起的任何内容,并确保执行的脚本的整体一致性。

unwrap(func)
wraps(func)
mozbuild.configure.lint.code_replace(code, co_filename, co_name, co_firstlineno)

mozbuild.configure.options 模块

class mozbuild.configure.options.CommandLineHelper(environ=environ({'SHELL': '/bin/bash', 'MOZ_FETCHES': '[{"artifact": "public/build/node-modules.tar.zst", "extract": true, "task": "OajyGWQIRCKUlcPB9iu2Gw"}, {"artifact": "public/build/node.tar.zst", "extract": true, "task": "KuZT2N-QTvaXh03iaRDQXg"}, {"artifact": "public/build/python.tar.zst", "extract": true, "task": "AKtCY5T_SfufFqf9_8_fIQ"}]', 'MOZPYTHONHOME': '/builds/worker/fetches/python', 'GECKO_HEAD_REV': 'bcec5f42cb2e5a1cb68f6c686ffe88ec72bb7828', 'HOSTNAME': 'taskcluster-worker', 'MOZ_AUTOMATION': '1', 'TASKCLUSTER_ROOT_URL': 'https://firefox-ci-tc.services.mozilla.com', 'PWD': '/builds/worker/checkouts/gecko', 'LOGNAME': 'worker', 'GECKO_PATH': '/builds/worker/checkouts/gecko', 'TASKCLUSTER_WORKER_POOL': 'gecko-3/b-linux-medium-gcp', 'TASKCLUSTER_PORT_80_TCP_PORT': '80', 'HOME': '/builds/worker', 'TASKCLUSTER_WORKER_GROUP': 'us-central1-a', 'LANG': 'en_US.UTF-8', 'TASKCLUSTER_NAME': '/sad_chaum/taskcluster', 'MOZ_PYTHON_HOME': '/builds/worker/fetches/python', 'TASKCLUSTER_INSTANCE_TYPE': 'projects/970387039909/machineTypes/c2-standard-8', 'GECKO_BASE_REPOSITORY': 'https://hg.mozilla.org/mozilla-unified', 'TASKCLUSTER_PORT': 'tcp://172.17.0.2:80', 'TASKCLUSTER_WORKER_LOCATION': '{"cloud":"google","region":"us-central1","zone":"us-central1-a"}', 'TERM': 'xterm', 'TASKCLUSTER_PUBLIC_IP': '34.41.192.107', 'HG_STORE_PATH': '/builds/worker/checkouts/hg-store', 'USER': 'worker', 'TASKCLUSTER_PORT_80_TCP_PROTO': 'tcp', 'MOZ_SCM_LEVEL': '3', 'SHLVL': '0', 'TASKCLUSTER_PROXY_URL': 'http://taskcluster', 'GECKO_HEAD_REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'SCCACHE_DISABLE': '1', 'LC_ALL': 'C', 'MOZ_SOURCE_DOCS_USE_GOOGLE': '1', 'MOZ_FETCHES_DIR': '/builds/worker/fetches', 'PATH': '/builds/worker/checkouts/gecko/node_modules/.bin:/builds/worker/fetches/node/bin:/builds/worker/.mozbuild/srcdirs/gecko-8a5b87fe5d69/_virtualenvs/docs/bin:/builds/worker/fetches/python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'RUN_ID': '0', 'TASK_ID': 'dku2aZenSWybD2y99igT9Q', 'TASKCLUSTER_WORKER_TYPE': 'b-linux-medium-gcp', 'TASKCLUSTER_PORT_80_TCP_ADDR': '172.17.0.2', 'DEBIAN_FRONTEND': 'noninteractive', 'TASKCLUSTER_PORT_80_TCP': 'tcp://172.17.0.2:80', '_': './mach', 'MACH_MAIN_PID': '26', 'VIRTUAL_ENV': '/builds/worker/.mozbuild/srcdirs/gecko-8a5b87fe5d69/_virtualenvs/docs', 'DOCUTILSCONFIG': '/builds/worker/checkouts/gecko/docs/docutils.conf'}), argv=['./mach', 'doc', '--upload', '--no-open', '--no-serve', '--write-url', '/builds/worker/firefox-source-docs-url.txt', '--dump-trees=/builds/worker/artifacts/trees.json'])

基类:object

辅助类,用于处理通过命令行或环境传递选项的各种方式。

例如,Option(’–foo’, env=’FOO’) 可以作为命令行上的 –foo 传递,或者作为环境中的 FOO=1 命令行传递。

如果给出了多个变体,则优先使用命令行而不是环境,如果在命令行上给出了不同的值,则最后一个值获胜。(这模仿了 autoconf 的行为,避免以奇怪的方式破坏使用有效选项的现有 mozconfig)

之后可以通过 API 调用添加额外的选项。对于这些,冲突的值将引发异常。

add(arg, origin='command-line', args=None)
handle(option)

根据命令行、环境和额外参数以及设置它的实际选项或变量,返回对应于给定 Option 实例的 OptionValue。对于给定的 Option,此方法仅工作一次。

exception mozbuild.configure.options.ConflictingOptionError(message, **format_data)

基类:InvalidOptionError

exception mozbuild.configure.options.InvalidOptionError

基类:Exception

class mozbuild.configure.options.NegativeOptionValue(origin='unknown')

基类:OptionValue

表示负选项(–disable/–without)的值

这实际上是一个带有 origin 属性的空元组。

class mozbuild.configure.options.Option(name=None, env=None, nargs=None, default=None, possible_origins=None, choices=None, category=None, help=None, metavar=None, define_depth=0)

基类:object

表示配置选项

配置选项可以是命令行标志或环境变量,或两者兼而有之。

  • name 是完整的命令行标志(例如 –enable-foo)。

  • env 是环境变量名称(例如 ENV)

  • nargs 是选项可能接受的参数数量。它可以是数字,也可以是特殊值 ‘?’(0 或 1)、‘*’(0 或更多)或 ‘+’(1 或更多)。

  • default 可用于为选项提供默认值。当选项的 name 以 ‘–enable-’ 或 ‘–with-’ 开头时,隐含的默认值为 NegativeOptionValue(禁用)。当它以 ‘–disable-’ 或 ‘–without-’ 开头时,隐含的默认值为一个空的 PositiveOptionValue(启用)。

  • choices 限制可以赋予选项的值集。

  • help 是选项描述,用于在 –help 输出中使用。

  • possible_origins 是一个字符串元组,表示此选项接受的来源。例如,来源包括 ‘mozconfig’、‘implied’ 和 ‘environment’。

  • category 是一个人类可读的字符串,仅用于在显示 configure –help 的输出时对命令行选项进行分类。如果未提供,脚本将尝试根据定义选项的文件名推断合适的类别。如果提供,则必须在上面的 _ALL_CATEGORIES 列表中。

  • define_depth 通常仅应由用于间接实例化选项的模板使用。将其设置为正整数以强制脚本在推断 category 时查看更深的堆栈帧。

category
choices
default
define_depth
env
get_value(option=None, origin='unknown')

给定一个完整的命令行选项(例如 –enable-foo=bar)或一个变量赋值(FOO=bar),返回相应的 OptionValue。

注意:变量赋值可以来自环境或命令行(例如 ../configure CFLAGS=-O2)

help
id
property maxargs
metavar
property minargs
name
nargs
property option
possible_origins
prefix
static split_option(option, values_separator=',')

将标志或变量拆分为前缀、名称和值

变量采用 NAME=values 的形式(没有前缀)。标志采用 –name=values 或 –prefix-name=values 的形式,其中 prefix 是 ‘with’、‘without’、‘enable’ 或 ‘disable’ 之一。 ‘=values’ 部分是可选的。值用 values_separator 分隔。如果 values_separator 为 None,则最多只有一个值。

class mozbuild.configure.options.OptionValue(values=(), origin='unknown')

基类:tuple

表示配置选项的值。

此类不建议直接使用。请改用其子类。

origin 属性保存选项的来源(例如环境、命令行或默认值)

format(option)
static from_(value)
class mozbuild.configure.options.PositiveOptionValue(values=(), origin='unknown')

基类:OptionValue

表示正选项(–enable/–with/–foo)的值,当为选项提供值时(以 –option=value[,value2…] 的形式)以元组的形式表示。

mozbuild.configure.options.istupleofstrings(obj)

mozbuild.configure.util 模块

class mozbuild.configure.util.ConfigureOutputHandler(stdout=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, stderr=<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>, maxlen=20)

基类:Handler

一个日志处理程序类,将信息消息发送到标准输出,其他消息发送到标准错误输出。

发送到标准输出的消息不会使用附加的 Formatter 进行格式化。此外,如果它们以“… ”结尾,则不会打印换行符,使接下来打印的消息紧跟“… ”。

仅记录高于 INFO 日志级别(包括 INFO)的消息。

低于该级别的消息可以保留,直到收到 ERROR 消息,此时会打印出最后 maxlen 条累积的低于 INFO 的消息。此功能仅在 queue_debug 上下文管理器下启用。

INTERRUPTED = 2
KEEP = 1
PRINT = 2
THROW = 0
WAITING = 1
emit(record)

执行实际记录指定日志记录所需的操作。

此版本旨在由子类实现,因此引发 NotImplementedError。

queue_debug()
class mozbuild.configure.util.LineIO(callback, errors='strict')

基类:object

文件类,将写入数据的每一行发送到回调函数(不带回车符)。

close()
write(buf)
class mozbuild.configure.util.Version(version)

基类:LooseVersion

looseversion.LooseVersion 的一个简单子类。为前三个版本组件添加了 majorminorpatch 属性,以便用户可以轻松提取主版本/次版本,例如

v = Version('1.2b') v.major == 1 v.minor == 2 v.patch == 0

mozbuild.configure.util.getpreferredencoding()

模块内容

class mozbuild.configure.CombinedDependsFunction(sandbox, func, dependencies)

基类:DependsFunction

dependencies
result()
sandbox
sandboxed
when
exception mozbuild.configure.ConfigureError

基类:Exception

class mozbuild.configure.ConfigureSandbox(config, environ=environ({'SHELL': '/bin/bash', 'MOZ_FETCHES': '[{"artifact": "public/build/node-modules.tar.zst", "extract": true, "task": "OajyGWQIRCKUlcPB9iu2Gw"}, {"artifact": "public/build/node.tar.zst", "extract": true, "task": "KuZT2N-QTvaXh03iaRDQXg"}, {"artifact": "public/build/python.tar.zst", "extract": true, "task": "AKtCY5T_SfufFqf9_8_fIQ"}]', 'MOZPYTHONHOME': '/builds/worker/fetches/python', 'GECKO_HEAD_REV': 'bcec5f42cb2e5a1cb68f6c686ffe88ec72bb7828', 'HOSTNAME': 'taskcluster-worker', 'MOZ_AUTOMATION': '1', 'TASKCLUSTER_ROOT_URL': 'https://firefox-ci-tc.services.mozilla.com', 'PWD': '/builds/worker/checkouts/gecko', 'LOGNAME': 'worker', 'GECKO_PATH': '/builds/worker/checkouts/gecko', 'TASKCLUSTER_WORKER_POOL': 'gecko-3/b-linux-medium-gcp', 'TASKCLUSTER_PORT_80_TCP_PORT': '80', 'HOME': '/builds/worker', 'TASKCLUSTER_WORKER_GROUP': 'us-central1-a', 'LANG': 'en_US.UTF-8', 'TASKCLUSTER_NAME': '/sad_chaum/taskcluster', 'MOZ_PYTHON_HOME': '/builds/worker/fetches/python', 'TASKCLUSTER_INSTANCE_TYPE': 'projects/970387039909/machineTypes/c2-standard-8', 'GECKO_BASE_REPOSITORY': 'https://hg.mozilla.org/mozilla-unified', 'TASKCLUSTER_PORT': 'tcp://172.17.0.2:80', 'TASKCLUSTER_WORKER_LOCATION': '{"cloud":"google","region":"us-central1","zone":"us-central1-a"}', 'TERM': 'xterm', 'TASKCLUSTER_PUBLIC_IP': '34.41.192.107', 'HG_STORE_PATH': '/builds/worker/checkouts/hg-store', 'USER': 'worker', 'TASKCLUSTER_PORT_80_TCP_PROTO': 'tcp', 'MOZ_SCM_LEVEL': '3', 'SHLVL': '0', 'TASKCLUSTER_PROXY_URL': 'http://taskcluster', 'GECKO_HEAD_REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'SCCACHE_DISABLE': '1', 'LC_ALL': 'C', 'MOZ_SOURCE_DOCS_USE_GOOGLE': '1', 'MOZ_FETCHES_DIR': '/builds/worker/fetches', 'PATH': '/builds/worker/checkouts/gecko/node_modules/.bin:/builds/worker/fetches/node/bin:/builds/worker/.mozbuild/srcdirs/gecko-8a5b87fe5d69/_virtualenvs/docs/bin:/builds/worker/fetches/python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'RUN_ID': '0', 'TASK_ID': 'dku2aZenSWybD2y99igT9Q', 'TASKCLUSTER_WORKER_TYPE': 'b-linux-medium-gcp', 'TASKCLUSTER_PORT_80_TCP_ADDR': '172.17.0.2', 'DEBIAN_FRONTEND': 'noninteractive', 'TASKCLUSTER_PORT_80_TCP': 'tcp://172.17.0.2:80', '_': './mach', 'MACH_MAIN_PID': '26', 'VIRTUAL_ENV': '/builds/worker/.mozbuild/srcdirs/gecko-8a5b87fe5d69/_virtualenvs/docs', 'DOCUTILSCONFIG': '/builds/worker/checkouts/gecko/docs/docutils.conf'}), argv=['./mach', 'doc', '--upload', '--no-open', '--no-serve', '--write-url', '/builds/worker/firefox-source-docs-url.txt', '--dump-trees=/builds/worker/artifacts/trees.json'], stdout=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, stderr=<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>, logger=None)

基类:dict

表示用于执行构建配置 Python 代码的沙箱。这与用于 moz.build 处理的沙箱不同。

沙箱有 9 个基本操作:- option - depends - template - imports - include - set_config - set_define - imply_option - only_when

optionincludeset_configset_defineimply_option 是函数。dependstemplateimports 是装饰器。only_when 是上下文管理器。

这些基本操作被声明为此类的 name_impl 方法,并且 name -> name_impl 的映射在 __getitem__ 中自动完成。

为了尽可能保持沙箱本身的简单性,应避免添加其他基本操作。相反,应该使用现有的基本操作在沙箱内创建辅助函数。

沙箱在创建时会获得一个字典,生成的配置将存储在其中。

config = {} sandbox = ConfigureSandbox(config) sandbox.run(path) do_stuff(config)

BUILTINS = {'AssertionError': <class 'AssertionError'>, 'False': False, 'None': None, 'True': True, '__build_class__': <built-in function __build_class__>, '__import__': <function forbidden_import>, 'all': <built-in function all>, 'any': <built-in function any>, 'bool': <class 'bool'>, 'dict': <class 'dict'>, 'enumerate': <class 'enumerate'>, 'getattr': <built-in function getattr>, 'hasattr': <built-in function hasattr>, 'int': <class 'int'>, 'isinstance': <built-in function isinstance>, 'len': <built-in function len>, 'list': <class 'list'>, 'max': <built-in function max>, 'min': <built-in function min>, 'range': <class 'range'>, 'set': <class 'set'>, 'sorted': <built-in function sorted>, 'str': <class 'str'>, 'tuple': <class 'tuple'>, 'zip': <class 'zip'>}
OS = <ReadOnlyNamespace {'path': <ReadOnlyNamespace {'abspath': <function abspath>, 'basename': <function basename>, 'dirname': <function dirname>, 'isabs': <function isabs>, 'join': <function join>, 'normcase': <function normcase>, 'normpath': <function normpath>, 'realpath': <function realpath>, 'relpath': <function relpath>}>}>
RE_MODULE = re.compile('^[a-zA-Z0-9_.]+$')
depends_impl(*args, **kwargs)

@depends() 函数的实现 此函数是一个装饰器。它返回一个随后接收函数并返回哑函数的函数。哑函数为沙箱识别实际函数,同时阻止沙箱内部的进一步函数调用。

@depends() 接受可变数量的选项字符串或哑函数引用。装饰器函数在调用装饰器时立即被调用,它接收的参数是与 @depends 的每个参数相对应的 OptionValue 或函数结果。作为例外,当附加 HelpFormatter 时,只有在其 @depends 参数列表中包含 '–help' 的函数才会被调用。

装饰器函数被修改为使用不同的全局命名空间执行。这个不同的全局命名空间公开了 os.path 中的一组有限的函数。

static get_compiled_source(source, path)
imply_option_impl(option, value, reason=None, when=None)

imply_option() 的实现。注入额外的选项,就像它们是在命令行上传递的一样。 option 参数是一个字符串,如 option() 的 nameenv。选项必须在 imply_option 引用它之后声明。 value 参数指示要传递给选项的值。它可以是: - True。在这种情况下, imply_option 注入正选项

(–enable-foo/–with-foo)。

imply_option(’–enable-foo’, True) imply_option(’–disable-foo’, True)

都等价于命令行上的 –enable-foo

  • False。在这种情况下, imply_option 注入负选项

    (–disable-foo/–without-foo)。

    imply_option(’–enable-foo’, False) imply_option(’–disable-foo’, False)

    都等价于命令行上的 –disable-foo

  • None。在这种情况下, imply_option 不执行任何操作。

    imply_option(’–enable-foo’, None) imply_option(’–disable-foo’, None)

都等价于不在命令行上传递任何标志。

  • 字符串或元组。在这种情况下, imply_option 使用给定的值注入正选项。

    imply_option(’–enable-foo’, ‘a’) imply_option(’–disable-foo’, ‘a’)

    都等价于命令行上的 –enable-foo=a

    imply_option(’–enable-foo’, (‘a’, ‘b’)) imply_option(’–disable-foo’, (‘a’, ‘b’))

    都等价于命令行上的 –enable-foo=a,b

因为 imply_option(’–disable-foo’, …) 可能具有误导性,建议对 option 使用正形式 (’–enable’ 或 ‘–with’)。

value 参数也可以是(通常是)@depends 函数的引用,在这种情况下,该函数的结果将根据上述映射使用。

reason 参数指示导致选项被隐含的原因。当无法从 value 推断出来时,这是必要的。

imports_impl(_import, _from=None, _as=None)

@imports 的实现。此装饰器从给定的 _from 模块导入给定的 _import,可以选择在不同的 _as 名称下。这些选项对应于 import 内置函数的各种形式。

@imports(‘sys’) @imports(_from=’mozpack’, _import=’path’, _as=’mozpath’)

include_file(path)

在沙箱中包含一个文件。此类的用户可能希望使用 run 代替。

注意:这将执行所有模板调用,以及依赖于 '–help' 的 @depends 函数,但不会执行其他任何操作。

include_impl(what, when=None)

include() 的实现。允许包含外部文件以在沙箱中执行。可以使用 @depends 函数作为参数,在这种情况下,函数的结果是要包含的文件名。此后一项功能仅适用于 –enable-application/–enable-project。

only_when_impl(when)

only_when() 的实现

only_when 是一个上下文管理器,它本质上使上下文块内对其他沙箱函数的调用被忽略。

option_impl(*args, **kwargs)

option() 的实现 此函数创建并返回一个 Option() 对象,并将解析后的参数传递给它(在传递函数时使用函数的结果)。在大多数情况下,不希望使用此函数的结果。此 Option 的命令行参数/环境变量解析在此处处理。

run(path=None)

在沙箱中执行给定的文件,以及任何其他包含文件中挂起的任何内容,并确保执行的脚本的整体一致性。

set_config_impl(name, value, when=None)

set_config() 的实现。将给定名称的配置项设置为给定值。 namevalue 都可以是 @depends 函数的引用,在这种情况下,将使用这些函数的结果。如果任一函数的结果为 None,则不会设置配置项。

set_define_impl(name, value, when=None)

set_define() 的实现。将给定名称的 define 设置为给定值。 namevalue 都可以是 @depends 函数的引用,在这种情况下,将使用这些函数的结果。如果任一函数的结果为 None,则不会设置 define。如果结果为 False,则明确取消定义 define (-U)。

template_impl(func)

@template 的实现。此函数是一个装饰器。模板函数会立即被调用。它们被修改,以便它们的全局命名空间公开了 os.path 中的一组有限的函数,以及 dependsoption。模板允许简化重复的结构,或实现辅助装饰器等。

wraps(func)
class mozbuild.configure.DependsFunction(sandbox, func, dependencies, when=None)

基类:object

static and_impl(iterable)
dependencies
property name
static or_impl(iterable)
result()
sandbox
sandboxed
property sandboxed_dependencies
when
class mozbuild.configure.SandboxDependsFunction(unsandboxed)

基类:object

@depends 函数的沙箱可见表示。

class mozbuild.configure.SandboxedGlobal

基类:dict

用于作为函数全局的可识别字典类型

class mozbuild.configure.TrivialDependsFunction(sandbox, func, dependencies, when=None)

基类:DependsFunction

类似于 DependsFunction,但 linter 不会期望它永远依赖于 –help。

dependencies
sandbox
sandboxed
when
mozbuild.configure.forbidden_import(*args, **kwargs)