@bazel_tools//tools/build_defs/repo:utils.bzl.
Utils for manipulating external repositories, once fetched.
Setup
These utilities are intended to be used by other repository rules. They can be loaded as follows.download_remote_files
load(“@bazel//tools/build_defs/repo:utils.bzl”, “download_remote_files”)download_remote_files(ctx, auth)Utility function for downloading remote files. This rule is intended to be used in the implementation function of a repository rule. It assumes the parameters
remote_file_urls and
remote_file_integrity to be present in ctx.attr.
Parameters
ctx | required. The repository context of the repository rule calling this utility function. |
auth | optional.
default is NoneAn optional dict specifying authentication information for some of the URLs. |
get_auth
load(“@bazel//tools/build_defs/repo:utils.bzl”, “get_auth”)get_auth(ctx, urls)Utility function to obtain the correct auth dict for a list of urls from .netrc file. Support optional netrc and auth_patterns attributes if available.
Parameters
ctx | required. The repository context of the repository rule calling this utility function. |
urls | required. the list of urls to read |
Returns
the auth dict which can be passed to repository_ctx.downloadmaybe
load(“@bazel//tools/build_defs/repo:utils.bzl”, “maybe”)maybe(repo_rule, name, **kwargs)Utility function for only adding a repository if it’s not already present. This is to implement safe repositories.bzl macro documented in https://bazel.build/rules/deploying#dependencies.
Parameters
repo_rule | required. repository rule function. |
name | required. name of the repository to create. |
kwargs | optional. remaining arguments that are passed to the repo_rule function. |
Returns
Nothing, defines the repository when needed as a side-effect.parse_netrc
load(“@bazel//tools/build_defs/repo:utils.bzl”, “parse_netrc”)parse_netrc(contents, filename)Utility function to parse at least a basic .netrc file.
Parameters
contents | required. input for the parser. |
filename | optional.
default is Nonefilename to use in error messages, if any. |
Returns
dict mapping a machine names to a dict with the information provided about thempatch
load(“@bazel//tools/build_defs/repo:utils.bzl”, “patch”)patch(ctx, patches, patch_cmds, patch_cmds_win, patch_tool, patch_args, auth)Implementation of patching an already extracted repository. This rule is intended to be used in the implementation function of a repository rule. If the parameters
patches, patch_tool,
patch_args, patch_cmds and patch_cmds_win are not specified
then they are taken from ctx.attr.
Parameters
ctx | required. The repository context of the repository rule calling this utility function. |
patches | optional.
default is NoneThe patch files to apply. List of strings, Labels, or paths. |
patch_cmds | optional.
default is NoneBash commands to run for patching, passed one at a time to bash -c. List of strings |
patch_cmds_win | optional.
default is NonePowershell commands to run for patching, passed one at a time to powershell /c. List of strings. If the boolean value of this parameter is false, patch_cmds will be used and this parameter will be ignored. |
patch_tool | optional.
default is NonePath of the patch tool to execute for applying patches. String. |
patch_args | optional.
default is NoneArguments to pass to the patch tool. List of strings. |
auth | optional.
default is NoneAn optional dict specifying authentication information for some of the URLs. |
read_netrc
load(“@bazel//tools/build_defs/repo:utils.bzl”, “read_netrc”)read_netrc(ctx, filename)Utility function to parse at least a basic .netrc file.
Parameters
ctx | required. The repository context of the repository rule calling this utility function. |
filename | required. the name of the .netrc file to read |
Returns
dict mapping a machine names to a dict with the information provided about themread_user_netrc
load(“@bazel//tools/build_defs/repo:utils.bzl”, “read_user_netrc”)read_user_netrc(ctx)Read user’s default netrc file.
Parameters
ctx | required. The repository context of the repository rule calling this utility function. |
Returns
dict mapping a machine names to a dict with the information provided about them.update_attrs
load(“@bazel//tools/build_defs/repo:utils.bzl”, “update_attrs”)update_attrs(orig, keys, override)Utility function for altering and adding the specified attributes to a particular repository rule invocation. This is used to make a rule reproducible.
Parameters
orig | required. dict of actually set attributes (either explicitly or implicitly) by a particular rule invocation |
keys | required. complete set of attributes defined on this rule |
override | required. dict of attributes to override or add to orig |
Returns
dict of attributes with the keys from override inserted/updateduse_netrc
load(“@bazel//tools/build_defs/repo:utils.bzl”, “use_netrc”)use_netrc(netrc, urls, patterns)Compute an auth dict from a parsed netrc file and a list of URLs.
Parameters
netrc | required. a netrc file already parsed to a dict, e.g., as obtained from read_netrc |
urls | required. a list of URLs. |
patterns | required. optional dict of url to authorization patterns |
Returns
dict suitable as auth argument for ctx.download; more precisely, the dict will map all URLs where the netrc file provides login and password to a dict containing the corresponding login, password and optional authorization pattern, as well as the mapping of “type” to “basic” or “pattern”.workspace_and_buildfile
load(“@bazel//tools/build_defs/repo:utils.bzl”, “workspace_and_buildfile”)workspace_and_buildfile(ctx)Utility function for writing WORKSPACE and, if requested, a BUILD file. This rule is intended to be used in the implementation function of a repository rule. It assumes the parameters
name, build_file, build_file_content,
workspace_file, and workspace_file_content to be
present in ctx.attr; the latter four possibly with value None.
Parameters
ctx | required. The repository context of the repository rule calling this utility function. |