| --- |
| title: 'WORKSPACE files' |
| --- |
| |
| Methods available in WORKSPACE files. |
| |
| ## Members |
| |
| * [bind](#bind) |
| * [register_execution_platforms](#register_execution_platforms) |
| * [register_toolchains](#register_toolchains) |
| * [workspace](#workspace) |
| |
| ## bind |
| |
| ``` |
| None bind(name, actual=None) |
| ``` |
| |
| DEPRECATED: see [Consider removing bind](https://github.com/bazelbuild/bazel/issues/1952) for a long discussion of its issues and alternatives. `bind()` is not be available in Bzlmod. |
| |
| Gives a target an alias in the `//external` package. |
| |
| ### Parameters |
| |
| | Parameter | Description | |
| | --- | --- | |
| | `name` | [string](../core/string); required The label under '//external' to serve as the alias name | |
| | `actual` | [string](../core/string); or `None`; default is `None` The real label to be aliased | |
| |
| ## register_execution_platforms |
| |
| ``` |
| None register_execution_platforms(*platform_labels) |
| ``` |
| |
| Specifies already-defined execution platforms to be registered. Should be absolute [target patterns](https://bazel.build/versions/8.7.0/reference/glossary#target-pattern) (ie. beginning with either `@` or `//`). See [toolchain resolution](/versions/8.7.0/docs/toolchains) for more information. Patterns that expand to multiple targets, such as `:all`, will be registered in lexicographical order by name. |
| |
| ### Parameters |
| |
| | Parameter | Description | |
| | --- | --- | |
| | `platform_labels` | [sequence](../core/list) of [string](../core/string)s; required The target patterns to register. | |
| |
| ## register_toolchains |
| |
| ``` |
| None register_toolchains(*toolchain_labels) |
| ``` |
| |
| Specifies already-defined toolchains to be registered. Should be absolute [target patterns](https://bazel.build/versions/8.7.0/reference/glossary#target-pattern) (ie. beginning with either `@` or `//`). See [toolchain resolution](/versions/8.7.0/docs/toolchains) for more information. Patterns that expand to multiple targets, such as `:all`, will be registered in lexicographical order by target name (not the name of the toolchain implementation). |
| |
| ### Parameters |
| |
| | Parameter | Description | |
| | --- | --- | |
| | `toolchain_labels` | [sequence](../core/list) of [string](../core/string)s; required The target patterns to register. | |
| |
| ## workspace |
| |
| ``` |
| None workspace(name) |
| ``` |
| |
| This function can only be used in a `WORKSPACE` file and must be declared before all other functions in the `WORKSPACE` file. Each `WORKSPACE` file should have a `workspace` function. |
| |
| Sets the name for this workspace. Workspace names should be a Java-package-style description of the project, using underscores as separators, e.g., github.com/bazelbuild/bazel should use com_github_bazelbuild_bazel. |
| |
| This name is used for the directory that the repository's runfiles are stored in. For example, if there is a runfile `foo/bar` in the local repository and the WORKSPACE file contains `workspace(name = 'baz')`, then the runfile will be available under `mytarget.runfiles/baz/foo/bar`. If no workspace name is specified, then the runfile will be symlinked to `bar.runfiles/foo/bar`. |
| |
| [Remote repository](/versions/8.7.0/docs/external) rule names must be valid workspace names. For example, you could have `maven_jar(name = 'foo')`, but not `maven_jar(name = 'foo%bar')`, as Bazel would attempt to write a WORKSPACE file for the `maven_jar` containing `workspace(name = 'foo%bar')`. |
| |
| ### Parameters |
| |
| | Parameter | Description | |
| | --- | --- | |
| | `name` | [string](../core/string); required the name of the workspace. Names must start with a letter and can only contain letters, numbers, underscores, dashes, and dots. | |