Go providers
============

.. _providers: https://docs.bazel.build/versions/master/skylark/rules.html#providers

.. _go_library: /docs/go/core/rules.md#go_library
.. _go_binary: /docs/go/core/rules.md#go_binary
.. _go_test: /docs/go/core/rules.md#go_test
.. _go_path: /docs/go/core/rules.md#go_path
.. _cc_library: https://docs.bazel.build/versions/master/be/c-cpp.html#cc_library
.. _flatbuffers: http://google.github.io/flatbuffers/
.. _static linking: modes.rst#building-static-binaries
.. _race detector: modes.rst#using-the-race-detector
.. _runfiles: https://docs.bazel.build/versions/master/skylark/lib/runfiles.html
.. _File: https://docs.bazel.build/versions/master/skylark/lib/File.html
.. _new_library: toolchains.rst#new_library
.. _library_to_source: toolchains.rst#library_to_source
.. _archive: toolchains.rst#archive

.. role:: param(kbd)
.. role:: type(emphasis)
.. role:: value(code)
.. |mandatory| replace:: **mandatory value**


The providers_ are the outputs of the rules. You generaly get them by having a
dependency on a rule, and then asking for a provider of a specific type.

.. contents:: :depth: 2

-----

Design
------

The Go providers are designed primarily for the efficiency of the Go rules. The
information they share is mostly there because it is required for the core rules
to work.

All the providers are designed to hold only immutable data. This is partly
because its a cleaner design choice to be able to assume a provider will never
change, but also because only immutable objects are allowed to be stored in a
depset, and it's really useful to have depsets of providers.  Specifically the
:param:`direct` and :param:`transitive` fields on GoLibrary_ only work because
it is immutable.

API
---

GoLibrary
~~~~~~~~~

``GoLibrary`` contains metadata about an individual library. It is provided
by the `go_library`_ rule and other compatible rules. In general, you should
build ``GoLibrary`` with the `new_library`_ helper method. ``GoLibrary`` is
an input to the `library_to_source`_ helper method, which produces GoSource_.

+--------------------------------+-----------------------------------------------------------------+
| **Name**                       | **Type**                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`name`                  | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The name of the library. Usually, this is the ``name`` attribute.                                |
+--------------------------------+-----------------------------------------------------------------+
| :param:`label`                 | :type:`Label`                                                   |
+--------------------------------+-----------------------------------------------------------------+
| The full label for the library.                                                                  |
+--------------------------------+-----------------------------------------------------------------+
| :param:`importpath`            | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The string used in ``import`` declarations in Go source code to import                           |
| this library. Usually, this is the ``importpath`` attribute.                                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`importmap`             | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The package path for this library. The Go compiler and linker internally refer                   |
| to the library using this string. It must be unique in any binary the library                    |
| is linked into. This is usually the same as ``importpath``, but it may be                        |
| different, especially for vendored libraries.                                                    |
+--------------------------------+-----------------------------------------------------------------+
| :param:`pathtype`              | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| Information about the source of the importpath. Possible values are:                             |
|                                                                                                  |
| :value:`explicit`                                                                                |
|     The importpath was explicitly supplied by the user and the library is importable.            |
|     This is the normal case.                                                                     |
| :value:`inferred`                                                                                |
|     The importpath was inferred from the directory structure and rule name. The library may be   |
|     importable.                                                                                  |
|     This is normally true for rules that do not expect to be compiled directly to a library,     |
|     embeded into another rule instead (source generators)                                        |
| :value:`export`                                                                                  |
|     The importpath was explicitly supplied by the user, but the library is                       |
|     not importable. This is the case for binaries and tests. The importpath                      |
|     may still be useful for `go_path`_ and other rules.                                          |
+--------------------------------+-----------------------------------------------------------------+
| :param:`resolve`               | :type:`function (optional)`                                     |
+--------------------------------+-----------------------------------------------------------------+
| A function called by `library_to_source`_ that can be used to resolve this                       |
| library to a mode-specific GoSource_.                                                            |
+--------------------------------+-----------------------------------------------------------------+
| :param:`is_main`               | :type:`bool`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| Indicates whether the library should be compiled as a `main` package.                            |
| `main` packages may have arbitrary `importpath` and `importmap` values,                          |
| but the compiler and linker must see them as `main`.                                             |
+--------------------------------+-----------------------------------------------------------------+

GoSource
~~~~~~~~

GoSource represents a GoLibrary_ after mode-specific processing, ready to build
a GoArchive_. This is produced by calling the `library_to_source`_ helper
method. In general, only rules_go should need to build or handle these.

+--------------------------------+-----------------------------------------------------------------+
| **Name**                       | **Type**                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`library`               | :type:`GoLibrary`                                               |
+--------------------------------+-----------------------------------------------------------------+
| The go library that this GoSource was generated from.                                            |
+--------------------------------+-----------------------------------------------------------------+
| :param:`mode`                  | :type:`Mode`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| The mode this library is being built for.                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`srcs`                  | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| The sources to compile into the archive.                                                         |
+--------------------------------+-----------------------------------------------------------------+
| :param:`orig_srcs`             | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| The original source files this library is based on. This may differ from                         |
| :param:`srcs` if processing tools such as cgo or cover are applied.                              |
+--------------------------------+-----------------------------------------------------------------+
| :param:`orig_src_map`          | :type:`dict of File to File`                                    |
+--------------------------------+-----------------------------------------------------------------+
| Maps generated files in :param:`srcs` back to :param:`orig_srcs`. Not all                        |
| generated files may appear in here.                                                              |
+--------------------------------+-----------------------------------------------------------------+
| :param:`embedsrcs`             | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| Files that may be embedded into the compiled package using ``//go:embed``                        |
| directives. All files must be in the same logical directory or a subdirectory                    |
| as source files. However, it's okay to mix static and generated source files                     |
| and static and generated embeddable files.                                                       |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cover`                 | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| List of source files to instrument for code coverage.                                            |
+--------------------------------+-----------------------------------------------------------------+
| :param:`x_defs`                | :type:`string_dict`                                             |
+--------------------------------+-----------------------------------------------------------------+
| Map of defines to add to the go link command.                                                    |
+--------------------------------+-----------------------------------------------------------------+
| :param:`deps`                  | :type:`list of Target`                                          |
+--------------------------------+-----------------------------------------------------------------+
| The direct dependencies needed by this library.                                                  |
+--------------------------------+-----------------------------------------------------------------+
| :param:`gc_goopts`             | :type:`list of string`                                          |
+--------------------------------+-----------------------------------------------------------------+
| Go compilation options that should be used when compiling these sources.                         |
| In general these will be used for *all* sources of any library this provider is embedded into.   |
+--------------------------------+-----------------------------------------------------------------+
| :param:`runfiles`              | :type:`Runfiles`                                                |
+--------------------------------+-----------------------------------------------------------------+
| The set of files needed by code in these sources at runtime.                                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cgo`                   | :type:`bool`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| True if the library may contain cgo sources or C/C++/ObjC sources.                               |
| If true and cgo is enabled, cgo sources will be processed with cgo, and                          |
| C/C++/ObjC will be compiled with the appropriate toolchain and packed into                       |
| the final archive. If true and cgo is disabled, cgo sources are filtered                         |
| out, and sources with ``// +build !cgo`` are included.                                           |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cdeps`                 | :type:`list of Target`                                          |
+--------------------------------+-----------------------------------------------------------------+
| List of ``cc_library`` and ``objc_library`` targets this library depends on.                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cppopts`               | :type:`list of string`                                          |
+--------------------------------+-----------------------------------------------------------------+
| List of additional flags to pass to the C preprocessor when invoking the                         |
| C/C++/ObjC compilers.                                                                            |
+--------------------------------+-----------------------------------------------------------------+
| :param:`copts`                 | :type:`list of string`                                          |
+--------------------------------+-----------------------------------------------------------------+
| List of additional flags to pass to the C compiler.                                              |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cxxopts`               | :type:`list of string`                                          |
+--------------------------------+-----------------------------------------------------------------+
| List of additional flags to pass to the C++ compiler.                                            |
+--------------------------------+-----------------------------------------------------------------+
| :param:`clinkopts`             | :type:`list of string`                                          |
+--------------------------------+-----------------------------------------------------------------+
| List of additional flags to pass to the external linker.                                         |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cgo_deps`              | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| Deprecated; use ``cdeps`` instead. The direct cgo dependencies of this library.                  |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cgo_exports`           | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| The exposed cc headers for these sources.                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cc_info`               | :type:`CcInfo`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The result of merging the ``CcInfo``s of all `deps` and `cdeps`                                  |
+--------------------------------+-----------------------------------------------------------------+

GoArchiveData
~~~~~~~~~~~~~

GoArchiveData contains information about a compiled Go package. GoArchiveData
only contains immutable information about a package itself. It does not contain
any information about dependencies or references to other providers. This makes
it suitable to include in depsets. GoArchiveData is not directly returned by any
rule.  Instead, it's referenced in the ``data`` field of GoArchive_.

+--------------------------------+-----------------------------------------------------------------+
| **Name**                       | **Type**                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`name`                  | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The name of the library. Usually the same as the ``name`` attribute.                             |
+--------------------------------+-----------------------------------------------------------------+
| :param:`label`                 | :type:`Label`                                                   |
+--------------------------------+-----------------------------------------------------------------+
| The full label for the library.                                                                  |
+--------------------------------+-----------------------------------------------------------------+
| :param:`importpath`            | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The string used in ``import`` declarations in Go source code to import this                      |
| library. Usually, this is the ``importpath`` attribute.                                          |
+--------------------------------+-----------------------------------------------------------------+
| :param:`importmap`             | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The package path for this library. The Go compiler and linker internally refer                   |
| to the library using this string. It must be unique in any binary the library                    |
| is linked into. This is usually the same as ``importpath``, but it may be                        |
| different, especially for vendored libraries.                                                    |
+--------------------------------+-----------------------------------------------------------------+
| :param:`pathtype`              | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| Information about the source of the importpath. Possible values are:                             |
|                                                                                                  |
| :value:`explicit`                                                                                |
|     The importpath was explicitly supplied by the user and the library is importable.            |
|     This is the normal case.                                                                     |
| :value:`inferred`                                                                                |
|     The importpath was inferred from the directory structure and rule name. The library may be   |
|     importable.                                                                                  |
|     This is normally true for rules that do not expect to be compiled directly to a library,     |
|     embeded into another rule instead (source generators)                                        |
| :value:`export`                                                                                  |
|     The importpath was explicitly supplied by the user, but the library is                       |
|     not importable. This is the case for binaries and tests. The importpath                      |
|     may still be useful for `go_path`_ and other rules.                                          |
+--------------------------------+-----------------------------------------------------------------+
| :param:`file`                  | :type:`File`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| The archive file produced when this library is compiled.                                         |
+--------------------------------+-----------------------------------------------------------------+
| :param:`srcs`                  | :type:`tuple of File`                                           |
+--------------------------------+-----------------------------------------------------------------+
| The .go sources compiled into the archive. May have been generated or                            |
| transformed with tools like cgo and cover.                                                       |
+--------------------------------+-----------------------------------------------------------------+
| :param:`orig_srcs`             | :type:`tuple of File`                                           |
+--------------------------------+-----------------------------------------------------------------+
| The unmodified sources provided to the rule, including .go, .s, .h, .c files.                    |
+--------------------------------+-----------------------------------------------------------------+
| :param:`data_files`            | :type:`tuple of File`                                           |
+--------------------------------+-----------------------------------------------------------------+
| Data files that should be available at runtime to binaries and tests built                       |
| from this archive.                                                                               |
+--------------------------------+-----------------------------------------------------------------+

GoArchive
~~~~~~~~~

``GoArchive`` contains information about a compiled archive and its dependencies
(both direct and transitive). This is used when compiling and linking Go
libraries and binaries. It is produced by the archive_ toolchain function.

Most of the metadata about the archive itself is available in GoArchiveData_,
which is available through the :param:`data` field.

+--------------------------------+-----------------------------------------------------------------+
| **Name**                       | **Type**                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`source`                | :type:`GoSource`                                                |
+--------------------------------+-----------------------------------------------------------------+
| The source provider this GoArchive was compiled from.                                            |
+--------------------------------+-----------------------------------------------------------------+
| :param:`data`                  | :type:`GoArchiveData`                                           |
+--------------------------------+-----------------------------------------------------------------+
| The non transitive data for this archive.                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`direct`                | :type:`list of GoArchive`                                       |
+--------------------------------+-----------------------------------------------------------------+
| The direct dependencies of this archive.                                                         |
+--------------------------------+-----------------------------------------------------------------+
| :param:`libs`                  | :type:`depset of File`                                          |
+--------------------------------+-----------------------------------------------------------------+
| The transitive set of libraries needed to link with this archive.                                |
+--------------------------------+-----------------------------------------------------------------+
| :param:`transitive`            | :type:`depset of GoArchiveData`                                 |
+--------------------------------+-----------------------------------------------------------------+
| The full set of transitive dependencies. This includes ``data`` for this                         |
| archive and all ``data`` members transitively reachable through ``direct``.                      |
+--------------------------------+-----------------------------------------------------------------+
| :param:`x_defs`                | :type:`string_dict`                                             |
+--------------------------------+-----------------------------------------------------------------+
| The full transitive set of defines to add to the go link command.                                |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cgo_deps`              | :type:`depset(cc_library)`                                      |
+--------------------------------+-----------------------------------------------------------------+
| The direct cgo dependencies of this library.                                                     |
| This has the same constraints as things that can appear in the deps of a cc_library_.            |
+--------------------------------+-----------------------------------------------------------------+
| :param:`cgo_exports`           | :type:`depset of GoSource`                                      |
+--------------------------------+-----------------------------------------------------------------+
| The the transitive set of c headers needed to reference exports of this archive.                 |
+--------------------------------+-----------------------------------------------------------------+
| :param:`runfiles`              | runfiles_                                                       |
+--------------------------------+-----------------------------------------------------------------+
| The files needed to run anything that includes this library.                                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`mode`                  | :type:`Mode`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| The mode this archive was compiled in.                                                           |
+--------------------------------+-----------------------------------------------------------------+

GoPath
~~~~~~

GoPath is produced by the `go_path`_ rule. It gives a list of packages used to
build the ``go_path`` directory and provides a list of original files for each
package.

+--------------------------------+-----------------------------------------------------------------+
| **Name**                       | **Type**                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`gopath`                | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The short path to the output file or directory. Useful for constructing                          |
| ``runfiles`` paths.                                                                              |
+--------------------------------+-----------------------------------------------------------------+
| :param:`gopath_file`           | :type:`File`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| A Bazel File_ that points to the output directory.                                               |
|                                                                                                  |
| * In ``archive`` mode, this is the archive.                                                      |
| * In ``copy`` mode, this is the output directory.                                                |
| * In ``link`` mode, this is an empty file inside the output directory, so                        |
|   you need to use .dirname to get the path to the directory.                                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`packages`              | :type:`list of struct`                                          |
+--------------------------------+-----------------------------------------------------------------+
| A list of structs representing packages used to build the ``go_path``                            |
| directory. Each struct has the following fields:                                                 |
|                                                                                                  |
| * ``importpath``: the import path of the package.                                                |
| * ``dir``: the subdirectory of the package within the ``go_path``, including                     |
|   the ``src/`` prefix. May different from ``importpath`` due to vendoring.                       |
| * ``srcs``: list of source ``File``s.                                                            |
| * ``data``: list of data ``File``s.                                                              |
+--------------------------------+-----------------------------------------------------------------+

GoSDK
~~~~~

``GoSDK`` contains information about the Go SDK used in the toolchain.

+--------------------------------+-----------------------------------------------------------------+
| **Name**                       | **Type**                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`goos`                  | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The host operating system the SDK was built for.                                                 |
+--------------------------------+-----------------------------------------------------------------+
| :param:`goarch`                | :type:`string`                                                  |
+--------------------------------+-----------------------------------------------------------------+
| The host architecture the SDK was built for.                                                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`root_file`             | :type:`File`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| A file in the SDK root directory. Used to determine ``GOROOT``.                                  |
+--------------------------------+-----------------------------------------------------------------+
| :param:`libs`                  | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| Pre-compiled .a files for the standard library, built for the                                    |
| execution platform.                                                                              |
+--------------------------------+-----------------------------------------------------------------+
| :param:`headers`               | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| .h files from pkg/include that may be included in assembly sources.                              |
+--------------------------------+-----------------------------------------------------------------+
| :param:`srcs`                  | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| Source files for importable packages in the standard library.                                    |
| Internal, vendored, and tool packages might not be included.                                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`package_list`          | :type:`File`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| A file containing a list of importable packages in the standard library.                         |
+--------------------------------+-----------------------------------------------------------------+
| :param:`tools`                 | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| Executable files from pkg/tool built for the execution platform.                                 |
+--------------------------------+-----------------------------------------------------------------+
| :param:`go`                    | :type:`File`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| The go binary file.                                                                              |
+--------------------------------+-----------------------------------------------------------------+

GoStdLib
~~~~~~~~

``GoStdLib`` contains information about the standard library being used for
compiling and linking. The standard library may be the pre-compiled library
from GoSDK_, or it may be another library compiled for the target mode.

+--------------------------------+-----------------------------------------------------------------+
| **Name**                       | **Type**                                                        |
+--------------------------------+-----------------------------------------------------------------+
| :param:`root_file`             | :type:`File`                                                    |
+--------------------------------+-----------------------------------------------------------------+
| A file in the standard library root directory. Used to determine ``GOROOT``.                     |
+--------------------------------+-----------------------------------------------------------------+
| :param:`libs`                  | :type:`list of File`                                            |
+--------------------------------+-----------------------------------------------------------------+
| .a files for the standard library, built for the target platform.                                |
+--------------------------------+-----------------------------------------------------------------+
