Skip to main content
A BUILD target identifier. For every Label instance l, the string representation str(l) has the property that Label(str(l)) == l, regardless of where the Label() call occurs. When passed as positional arguments to print() or fail(), Label use a string representation optimized for human readability instead. This representation uses an apparent repository name from the perspective of the main repository if possible.

Members

Label

Converts a label string into a Label object, in the context of the package where the calling .bzl source file lives. If the given value is already a Label, it is returned unchanged. For macros, a related function, native.package_relative_label(), converts the input into a Label in the context of the package currently being constructed. For rule and aspect implementation functions, ctx.package_relative_label() can be used for the same purpose. Use these functions to mimic the string-to-label conversion that is automatically done by label-valued rule attributes.

Parameters

name

The name of the target referred to by this label. For instance:

package

The name of the package containing the target referred to by this label, without the repository name. For instance:

relative

Experimental. This API is experimental and may change at any time. Please do not depend on it. It may be enabled on an experimental basis by setting --+incompatible_enable_deprecated_label_apis Deprecated. This method behaves surprisingly when used with an argument containing an apparent repo name. Prefer Label.same_package_label(), native.package_relative_label(), ctx.package_relative_label(), or Label() instead. Resolves a label that is either absolute (starts with //) or relative to the current package. If this label is in a remote repository, the argument will be resolved relative to that repository. If the argument contains a repository name, the current label is ignored and the argument is returned as-is, except that the repository name is rewritten if it is in the current repository mapping. Reserved labels will also be returned as-is. For example:
If the repository mapping passed in is {'@other' : '@remapped'}, then the following remapping will take place:

Parameters

repo_name

The canonical name of the repository containing the target referred to by this label, without any leading at-signs (@). For instance,

repo_root

The root directory of the repository containing the target referred to by this label, relative to the execution root. This is the empty string for the main repository and external/ followed by the canonical repository name for all other repositories. For instance:

same_package_label

Creates a label in the same package as this label with the given target name.

Parameters

workspace_name

Experimental. This API is experimental and may change at any time. Please do not depend on it. It may be enabled on an experimental basis by setting --+incompatible_enable_deprecated_label_apis Deprecated. The field name “workspace name” is a misnomer here; use the identically-behaving Label.repo_name instead. The canonical name of the repository containing the target referred to by this label, without any leading at-signs (@). For instance,

workspace_root

Experimental. This API is experimental and may change at any time. Please do not depend on it. It may be enabled on an experimental basis by setting --+incompatible_enable_deprecated_label_apis Deprecated. The field name “workspace root” is a misnomer here; use the identically-behaving Label.repo_root instead. Returns the execution root for the repository containing the target referred to by this label, relative to the execroot. For instance: