mirror of
https://github.com/bazel-contrib/bazel-lib
synced 2024-11-26 13:30:30 +00:00
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
"Helpers to expand location"
|
|
|
|
def expand_locations(ctx, input, targets = []):
|
|
"""Expand location templates.
|
|
|
|
Expands all `$(execpath ...)`, `$(rootpath ...)` and deprecated `$(location ...)` templates in the
|
|
given string by replacing with the expanded path. Expansion only works for labels that point to direct dependencies
|
|
of this rule or that are explicitly listed in the optional argument targets.
|
|
|
|
See https://docs.bazel.build/versions/main/be/make-variables.html#predefined_label_variables.
|
|
|
|
Use `$(rootpath)` and `$(rootpaths)` to expand labels to the runfiles path that a built binary can use
|
|
to find its dependencies. This path is of the format:
|
|
- `./file`
|
|
- `path/to/file`
|
|
- `../external_repo/path/to/file`
|
|
|
|
Use `$(execpath)` and `$(execpaths)` to expand labels to the execroot (where Bazel runs build actions).
|
|
This is of the format:
|
|
- `./file`
|
|
- `path/to/file`
|
|
- `external/external_repo/path/to/file`
|
|
- `<bin_dir>/path/to/file`
|
|
- `<bin_dir>/external/external_repo/path/to/file`
|
|
|
|
The deprecated `$(location)` and `$(locations)` expansions returns either the execpath or rootpath depending on the context.
|
|
|
|
Args:
|
|
ctx: context
|
|
input: String to be expanded
|
|
targets: List of targets for additional lookup information.
|
|
|
|
Returns:
|
|
The expanded path or the original path
|
|
"""
|
|
|
|
return ctx.expand_location(input, targets = targets)
|