Members
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package
- package_default_visibility
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- select
- subpackages
depset
direct parameter is a list of direct elements of the depset, and transitive parameter is a list of depsets whose elements become indirect elements of the created depset. The order in which elements are returned when the depset is converted to a list is specified by the order parameter. See the Depsets overview for more information.
All elements (direct and indirect) of a depset must be of the same type, as obtained by the expression type(x).
Because a hash-based set is used to eliminate duplicates during iteration, all elements of a depset should be hashable. However, this invariant is not currently checked consistently in all constructors. Use the —incompatible_always_check_depset_elements flag to enable consistent checking; this will be the default behavior in future releases; see Issue 10313.
In addition, elements must currently be immutable, though this restriction will be relaxed in future.
The order of the created depset should be compatible with the order of its transitive depsets. "default" order is compatible with any other order, all other orders are only compatible with themselves.
Parameters
existing_rule
None if no rule instance of that name exists.
Here, an immutable dict-like object means a deeply immutable object x supporting dict-like iteration, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), and x.values().
The result contains an entry for each attribute, with the exception of private ones (whose names do not start with a letter) and a few unrepresentable legacy attribute types. In addition, the dict contains entries for the rule instance’s name and kind (for example, 'cc_binary').
The values of the result represent attribute values as follows:
- Attributes of type str, int, and bool are represented as is.
- Labels are converted to strings of the form
':foo'for targets in the same package or'//pkg:name'for targets in a different package. - Lists are represented as tuples, and dicts are converted to new, mutable dicts. Their elements are recursively converted in the same fashion.
selectvalues are returned with their contents transformed as described above.- Attributes for which no value was specified during rule instantiation and whose default value is computed are excluded from the result. (Computed defaults cannot be computed until the analysis phase.).
BUILD files brittle and order-dependent. Also, beware that it differs subtly from the two other conversions of rule attribute values from internal form to Starlark: one used by computed defaults, the other used by ctx.attr.foo.
Parameters
existing_rules
existing_rule(name).
Here, an immutable dict-like object means a deeply immutable object x supporting dict-like iteration, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), and x.values().
If possible, use this function only in implementation functions of rule finalizer symbolic macros. Use of this function in other contexts is not recommened, and will be disabled in a future Bazel release; it makes BUILD files brittle and order-dependent.
exports_files
Parameters
glob
- Matches at least one pattern in
include. - Does not match any of the patterns in
exclude(default[]).
exclude_directories argument is enabled (set to 1), files of type directory will be omitted from the results (default 1).
Parameters
module_name
module.name field seen in module_ctx.modules.
May return None.
module_version
module.version field seen in module_ctx.modules.
May return None.
package
load() statements.
Parameters
package_default_visibility
default_visibility parameter of package(), extended to include the package itself.
package_group
visibility attributes.
Parameters
package_name
some/package/BUILD, its value will be some/package. If the BUILD file calls a function defined in a .bzl file, package_name() will match the caller BUILD file package. The value will always be an empty string for the root package.
package_relative_label
BUILD file for which the current macro is executing). If the input is already a Label, it is returned unchanged.
This function may only be called while evaluating a BUILD file and the macros it directly or indirectly calls; it may not be called in (for instance) a rule implementation function.
The result of this function is the same Label value as would be produced by passing the given string to a label-valued attribute of a target declared in the BUILD file.
Usage note: The difference between this function and Label() is that Label() uses the context of the package of the .bzl file that called it, not the package of the BUILD file. Use Label() when you need to refer to a fixed target that is hardcoded into the macro, such as a compiler. Use package_relative_label() when you need to normalize a label string supplied by the BUILD file to a Label object. (There is no way to convert a string to a Label in the context of a package other than the BUILD file or the calling .bzl file. For that reason, outer macros should always prefer to pass Label objects to inner macros rather than label strings.)ctx.package_relative_label() provides the same functionality within a rule or aspect implementation function.
Parameters
repo_name
repository_name
--+incompatible_enable_deprecated_label_apis
Deprecated. Prefer to use repo_name instead, which doesn’t contain the spurious leading at-sign, but behaves identically otherwise.
The canonical name of the repository containing the package currently being evaluated, with a single at-sign (@) prefixed. For example, in packages that are called into existence by the WORKSPACE stanza local_repository(name='local', path=...) it will be set to @local. In packages in the main repository, it will be set to @.
select
select() is the helper function that makes a rule attribute configurable. See build encyclopedia for details.