bazel-lib/docs/expand_template.md

4.0 KiB

Public API for expand template

expand_template

expand_template(name, data, is_executable, out, stamp, stamp_substitutions, substitutions, template)

Template expansion

This performs a simple search over the template file for the keys in substitutions, and replaces them with the corresponding values.

Values may also use location templates as documented in expand_locations as well as configuration variables such as $(BINDIR), $(TARGET_CPU), and $(COMPILATION_MODE) as documented in expand_variables.

ATTRIBUTES

Name Description Type Mandatory Default
name A unique name for this target. Name required
data List of targets for additional lookup information. List of labels optional []
is_executable Whether to mark the output file as executable. Boolean optional False
out Where to write the expanded file. Label required
stamp Whether to encode build information into the output. Possible values:

- stamp = 1: Always stamp the build information into the output, even in --nostamp builds. This setting should be avoided, since it is non-deterministic. It potentially causes remote cache misses for the target and any downstream actions that depend on the result. - stamp = 0: Never stamp, instead replace build information by constant values. This gives good build result caching. - stamp = -1: Embedding of build information is controlled by the --[no]stamp flag. Stamped targets are not rebuilt unless their dependencies change.
Integer optional -1
stamp_substitutions Mapping of strings to substitutions.

There are overlayed on top of substitutions when stamping is enabled for the target.

Substitutions can contain (execpath :target) and (rootpath :target) expansions, $(MAKEVAR) expansions and {{STAMP_VAR}} expansions when stamping is enabled for the target.
Dictionary: String -> String optional {}
substitutions Mapping of strings to substitutions.

Substitutions can contain (execpath :target) and (rootpath :target) expansions, $(MAKEVAR) expansions and {{STAMP_VAR}} expansions when stamping is enabled for the target.
Dictionary: String -> String optional {}
template The template file to expand. Label required