代码库 ctx

包含辅助函数和有关属性信息的库规则的上下文。创建代码库规则时,您会获得一个 repository_ctx 对象作为 implementation 函数的实参。

成员

attr

struct repository_ctx.attr

用于访问属性值的结构。这些值由用户提供(否则,系统会使用默认值)。

删除

bool repository_ctx.delete(path)

删除文件或目录。返回一个布尔值,指示相应文件或目录是否已通过此调用实际删除。

参数

参数 说明
path 字符串;或路径; 必需
要删除的文件的路径(相对于代码库目录或绝对路径)。可以是路径或字符串。

下载

struct repository_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, *, integrity='')

将文件下载到指定网址的输出路径,并返回一个包含 success 的结构体,如果下载成功完成,该标志为 true;如果下载成功,则返回包含字段 sha256integrity 的文件哈希。

参数

参数 说明
url 字符串;或 字符串的可迭代对象; 必需
引用同一文件的镜像网址列表。
output 字符串;或 Label;或 path; 默认值为 ''
输出文件的路径(相对于代码库目录)。
sha256 默认值为 ''
下载的文件的预期 SHA-256 哈希值。此值必须与下载的文件的 SHA-256 哈希值一致。省略 SHA-256 会带来安全风险,因为远程文件可能会发生更改。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。
executable 默认值为 False
在创建的文件上设置可执行标志,默认值为 false。
allow_fail 默认值为 False
如果设置,则在返回值中指示错误,而不是针对下载失败引发错误
canonical_id 默认值为 ''
如果设置,则将缓存命中限制为以下情况:文件添加到缓存时具有相同的规范 ID
auth 默认值为 {}
一个可选的字典,用于指定部分网址的身份验证信息。
integrity 默认值为 ''
下载文件的预期校验和,采用子资源完整性格式。此值必须与下载的文件的校验和一致。省略校验和存在安全风险,因为远程文件可能会发生变化。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。

download_and_extract

struct repository_ctx.download_and_extract(url, output='', sha256='', type='', stripPrefix='', allow_fail=False, canonical_id='', auth={}, *, integrity='', rename_files={})

将文件下载到指定网址的输出路径,提取文件,并返回一个结构体,其中包含 success(一个标志,如果下载成功完成,则为 true)以及一个包含字段 sha256integrity 的文件哈希(如果下载成功)。

参数

参数 说明
url 字符串;或 字符串的可迭代对象; 必需
引用同一文件的镜像网址列表。
output 字符串;或 Label;或 路径; 默认值为 ''
相对于代码库目录的归档解压缩目录的路径。
sha256 默认值为 ''
下载的文件的预期 SHA-256 哈希值。此值必须与下载的文件的 SHA-256 哈希值一致。省略 SHA-256 会带来安全风险,因为远程文件可能会发生更改。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。如果提供了哈希值,系统会先检查代码库缓存中是否存在具有指定哈希值的文件;只有在缓存中未找到该文件时,才会尝试下载。成功下载后,文件将添加到缓存中。
type 默认值为 ''
,即下载文件的归档类型。默认情况下,系统会根据网址的文件扩展名确定归档类型。如果文件没有扩展名,您可以在此处明确指定“zip”“jar”“war”“aar”“tar”“tar.gz”“tgz”“tar.xz”“txz”“.tar.zst”“.tzst”“tar.bz2”“.tbz”“.ar”或“.deb”。
stripPrefix 默认值为 ''
要从提取的文件中剥离的目录前缀。 许多归档文件都包含一个顶级目录,其中包含归档文件中的所有文件。无需在 build_file 中反复指定此前缀,而是可以使用此字段从提取的文件中剥离此前缀。
allow_fail 默认值为 False
如果设置,则在返回值中指示错误,而不是针对下载失败引发错误
canonical_id 默认值为 ''
如果设置,则将缓存命中限制为以下情况:文件添加到缓存时具有相同的规范 ID
auth 默认值为 {}
一个可选的字典,用于指定部分网址的身份验证信息。
integrity 默认值为 ''
下载文件的预期校验和,采用子资源完整性格式。此值必须与下载的文件的校验和一致。省略校验和存在安全风险,因为远程文件可能会发生变化。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。
rename_files 默认值为 {}
一个可选的字典,用于指定在提取期间要重命名的文件。在进行任何目录前缀调整之前,名称与键完全匹配的归档条目将重命名为相应的值。此选项可用于提取包含非 Unicode 文件名的归档文件,或提取在不区分大小写的文件系统上会提取到同一路径的文件。

execute

exec_result repository_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")

执行由参数列表给定的命令。命令的执行时间受 timeout(以秒为单位,默认值为 600 秒)限制。此方法会返回一个包含命令输出的 exec_result 结构。environment 映射可用于替换要传递给进程的某些环境变量。

参数

参数 说明
arguments 必需
实参列表,第一个元素应该是要执行的程序的路径。
timeout 默认值为 600
命令的最长持续时间(以秒为单位,默认值为 600 秒)。
environment 默认值为 {}
强制将某些环境变量设置为传递给进程。
quiet 默认值为 True
是否应将 stdout 和 stderr 输出到终端。
working_directory 默认值为 ""
用于执行命令的工作目录。 可以是相对于代码库根目录的路径,也可以是绝对路径。

extract

None repository_ctx.extract(archive, output='', stripPrefix='', *, rename_files={})

将归档提取到代码库目录。

参数

参数 说明
archive 字符串;或标签;或路径; 必需
要解压缩的归档的路径(相对于代码库目录)。
output 字符串;或 Label;或 路径; 默认值为 ''
相对于代码库目录的归档解压缩目录的路径。
stripPrefix 默认值为 ''
要从提取的文件中剥离的目录前缀。 许多归档文件都包含一个顶级目录,其中包含归档文件中的所有文件。无需在 build_file 中反复指定此前缀,而是可以使用此字段从提取的文件中剥离此前缀。
rename_files 默认值为 {}
一个可选的字典,用于指定在提取期间要重命名的文件。在进行任何目录前缀调整之前,名称与键完全匹配的归档条目将重命名为相应的值。此选项可用于提取包含非 Unicode 文件名的归档文件,或提取在不区分大小写的文件系统上会提取到同一路径的文件。

文件

None repository_ctx.file(path, content='', executable=True, legacy_utf8=True)

在代码库目录中生成一个包含所提供内容的文件。

参数

参数 说明
path 字符串;或 Label;或 path;必需
要创建的文件的路径(相对于代码库目录)。
content 默认值为 ''
要创建的文件的内容,默认为空。
executable 默认值为 True
在创建的文件上设置可执行标志,默认为 true。
legacy_utf8 默认值为 True
将文件内容编码为 UTF-8,默认值为 true。未来版本将更改默认值并移除此参数。

name

string repository_ctx.name

相应规则创建的外部代码库的名称。

os

repository_os repository_ctx.os

用于访问系统信息的结构。

patch

None repository_ctx.patch(patch_file, strip=0)

将补丁文件应用到外部代码库的根目录。补丁文件应为标准统一差异格式的文件。与 patch 命令行工具不同,Bazel 原生补丁实现不支持模糊匹配和二进制补丁。

参数

参数 说明
patch_file 字符串;或标签;或路径;必需
要应用的补丁文件,可以是标签、相对路径或绝对路径。如果它是相对路径,则会解析为代码库目录。
strip 默认值为 0
从文件名中剥离指定数量的前导组件。

路径

path repository_ctx.path(path)

根据字符串、标签或路径返回路径。如果路径是相对路径,则会相对于代码库目录进行解析。如果路径是标签,则会解析为相应文件的路径。请注意,远程代码库在分析阶段执行,因此不能依赖于目标结果(标签应指向非生成的文件)。如果 path 是路径,则会原样返回该路径。

参数

参数 说明
path string;或 Label;或 path;必需
从中创建路径的字符串、标签或路径

读取

string repository_ctx.read(path)

读取文件系统上文件的内容。

参数

参数 说明
path string;或 Label;或 path; 必需
要读取的文件的路径。

report_progress

None repository_ctx.report_progress(status='')

更新相应代码库或模块扩展程序提取的进度状态

参数

参数 说明
status 字符串; 默认值为 ''
描述提取进度的当前状态的字符串

None repository_ctx.symlink(target, link_name)

在文件系统上创建符号链接。

参数

参数 说明
target 字符串;或标签;或路径;必需
符号链接应指向的路径。
字符串;或 Label;或 path;必需
要创建的符号链接的路径(相对于代码库目录)。

模板

None repository_ctx.template(path, template, substitutions={}, executable=True)

使用 template 生成新文件。template 中出现的每个 substitutions 的键都将被替换为相应的值。结果以 path 格式写入。您可以设置可选的executable实参(默认为 true)来开启或关闭可执行位。

参数

参数 说明
path 字符串;或 Label;或 path;必需
要创建的文件的路径(相对于代码库目录)。
template 字符串;或标签;或路径; 必需
模板文件的路径。
substitutions 默认值为 {}
展开模板时要进行的替换。
executable 默认值为 True
在创建的文件上设置可执行标志,默认为 true。

哪个

path repository_ctx.which(program)

返回相应程序的路径;如果路径中没有此类程序,则返回 None。

参数

参数 说明
program 必需
要在路径中查找的程序。
可能会返回 None

workspace_root

path repository_ctx.workspace_root

bazel 调用根工作区的路径。