native.cc_library. Note that the native module is only available in the loading phase (i.e. for macros, not for rule implementations). Attributes will ignore None values, and treat them as if the attribute was unset.The following functions are also available:
Members
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- subpackages
existing_rule
unknown native.existing_rule(name)
None if no rule instance of that name exists.Here, an immutable dict-like object means a deeply immutable object x supporting dict-like iteration, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), and x.values().
If the --noincompatible_existing_rules_immutable_view flag is set, instead returns a new mutable dict with the same content.
The result contains an entry for each attribute, with the exception of private ones (whose names do not start with a letter) and a few unrepresentable legacy attribute types. In addition, the dict contains entries for the rule instance's name and kind (for example, 'cc_binary').
The values of the result represent attribute values as follows:
- Attributes of type str, int, and bool are represented as is.
- Labels are converted to strings of the form
':foo'for targets in the same package or'//pkg:name'for targets in a different package. - Lists are represented as tuples, and dicts are converted to new, mutable dicts. Their elements are recursively converted in the same fashion.
selectvalues are returned with their contents transformed as described above.- Attributes for which no value was specified during rule instantiation and whose default value is computed are excluded from the result. (Computed defaults cannot be computed until the analysis phase.).
If possible, avoid using this function. It makes BUILD files brittle and order-dependent. Also, beware that it differs subtly from the two other conversions of rule attribute values from internal form to Starlark: one used by computed defaults, the other used by ctx.attr.foo.
Parameters
| Parameter | Description |
|---|---|
name
|
required The name of the target. |
existing_rules
unknown native.existing_rules()
existing_rule(name).Here, an immutable dict-like object means a deeply immutable object x supporting dict-like iteration, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), and x.values().
If the --noincompatible_existing_rules_immutable_view flag is set, instead returns a new mutable dict with the same content.
Note: If possible, avoid using this function. It makes BUILD files brittle and order-dependent. Furthermore, if the --noincompatible_existing_rules_immutable_view flag is set, this function may be very expensive, especially if called within a loop.
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)Parameters
| Parameter | Description |
|---|---|
srcs
|
sequence of strings;
required The list of files to export. |
visibility
|
sequence; or None;
default is NoneA visibility declaration can to be specified. The files will be visible to the targets specified. If no visibility is specified, the files will be visible to every package. |
licenses
|
sequence of strings; or None;
default is NoneLicenses to be specified. |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- Matches at least one pattern in
include. - Does not match any of the patterns in
exclude(default[]).
exclude_directories argument is enabled (set to 1), files of type directory will be omitted from the results (default 1).
Parameters
| Parameter | Description |
|---|---|
include
|
sequence of strings;
default is []The list of glob patterns to include. |
exclude
|
sequence of strings;
default is []The list of glob patterns to exclude. |
exclude_directories
|
default is 1A flag whether to exclude directories or not. |
allow_empty
|
default is unboundWhether we allow glob patterns to match nothing. If `allow_empty` is False, each individual include pattern must match something and also the final result must be non-empty (after the matches of the `exclude` patterns are excluded). |
module_name
string native.module_name()
module.name field seen in module_ctx.modules.
May return None.
module_version
string native.module_version()
module.version field seen in module_ctx.modules.
May return None.
package_group
None native.package_group(name, packages=[], includes=[])visibility attributes.
Parameters
| Parameter | Description |
|---|---|
name
|
required The unique name for this rule. |
packages
|
sequence of strings;
default is []A complete enumeration of packages in this group. |
includes
|
sequence of strings;
default is []Other package groups that are included in this one. |
package_name
string native.package_name()
some/package/BUILD, its value will be some/package. If the BUILD file calls a function defined in a .bzl file, package_name() will match the caller BUILD file package.
package_relative_label
Label native.package_relative_label(input)
BUILD file for which the current macro is executing). If the input is already a Label, it is returned unchanged.This function may only be called while evaluating a BUILD file and the macros it directly or indirectly calls; it may not be called in (for instance) a rule implementation function.
The result of this function is the same Label value as would be produced by passing the given string to a label-valued attribute of a target declared in the BUILD file.
Usage note: The difference between this function and Label() is that Label() uses the context of the package of the .bzl file that called it, not the package of the BUILD file. Use Label() when you need to refer to a fixed target that is hardcoded into the macro, such as a compiler. Use package_relative_label() when you need to normalize a label string supplied by the BUILD file to a Label object. (There is no way to convert a string to a Label in the context of a package other than the BUILD file or the calling .bzl file. For that reason, outer macros should always prefer to pass Label objects to inner macros rather than label strings.)
Parameters
| Parameter | Description |
|---|---|
input
|
string; or Label;
required The input label string or Label object. If a Label object is passed, it's returned as is. |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis Deprecated. Prefer to use
repo_name instead, which doesn't contain the spurious leading at-sign, but behaves identically otherwise.The canonical name of the repository containing the package currently being evaluated, with a single at-sign (@) prefixed. For example, in packages that are called into existence by the WORKSPACE stanza local_repository(name='local', path=...) it will be set to @local. In packages in the main repository, it will be set to @.
subpackages
sequence native.subpackages(include, exclude=[], allow_empty=False)
Parameters
| Parameter | Description |
|---|---|
include
|
sequence of strings;
required The list of glob patterns to include in subpackages scan. |
exclude
|
sequence of strings;
default is []The list of glob patterns to exclude from subpackages scan. |
allow_empty
|
default is FalseWhether we fail if the call returns an empty list. By default empty list indicates potential error in BUILD file where the call to subpackages() is superflous. Setting to true allows this function to succeed in that case. |