blob: 9afbcffb92ec21da1e06068a05a36ca7956c1565 [file] [log] [blame] [view]
# Glossary
{.glossary}
common attributes
: Every rule has a set of common attributes. See Bazel's
[Common attributes](https://bazel.build/reference/be/common-definitions#common-attributes)
for a complete listing
in-build runtime
: An in-build runtime is one where the Python runtime, and all its files, are
known to the build system and a Python binary includes all the necessary parts
of the runtime in its runfiles. Such runtimes may be remotely downloaded, part
of your source control, or mapped in from local files by repositories.
The main advantage of in-build runtimes is they ensure you know what Python
runtime will be used, since it's part of the build itself and included in
the resulting binary. The main disadvantage is the additional work it adds to
building. The whole Python runtime is included in a Python binary's runfiles,
which can be a significant number of files.
platform runtime
: A platform runtime is a Python runtime that is assumed to be installed on the
system where a Python binary runs, whereever that may be. For example, using `/usr/bin/python3`
as the interpreter is a platform runtime -- it assumes that, wherever the binary
runs (your local machine, a remote worker, within a container, etc), that path
is available. Such runtimes are _not_ part of a binary's runfiles.
The main advantage of platform runtimes is they are lightweight insofar as
building the binary is concerned. All Bazel has to do is pass along a string
path to the interpreter. The disadvantage is, if you don't control the systems
being run on, you may get different Python installations than expected.
rule callable
: A function that behaves like a rule. This includes, but is not is not
limited to:
* Accepts a `name` arg and other {term}`common attributes`.
* Has no return value (i.e. returns `None`).
* Creates at least a target named `name`
There is usually an implicit interface about what attributes and values are
accepted; refer to the respective API accepting this type.
simple label
: A `str` or `Label` object but not a _direct_ `select` object. These usually
mean a string manipulation is occuring, which can't be done on `select`
objects. Such attributes are usually still configurable if an alias is used,
and a reference to the alias is passed instead.
nonconfigurable
: A nonconfigurable value cannot use `select`. See Bazel's
[configurable attributes](https://bazel.build/reference/be/common-definitions#configurable-attributes) documentation.