Back to Bazel

DefaultInfo

docs/versions/7.2.0/rules/lib/providers/DefaultInfo.mdx

9.1.010.3 KB
Original Source
<html devsite> <head> <meta name="project_path" value="/_project.yaml"> <meta name="book_path" value="/versions/7.2.0/_book.yaml"> </head> <body> <h1 class="page-title" id="modules.DefaultInfo">DefaultInfo</h1>

{% dynamic setvar source_file "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/DefaultInfoApi.java" %} {% dynamic setvar version "7.2.0" %} {% dynamic setvar original_path "/rules/lib/providers/DefaultInfo" %} {% include "_buttons.html" %}

<!-- {% raw %} -->

A provider that gives general information about a target's direct and transitive files. Every rule type has this provider, even if it is not returned explicitly by the rule's implementation function. Each <code>DefaultInfo</code> instance has the following fields: <ul><li><code>files</code><li><code>files_to_run</code><li><code>data_runfiles</code><li><code>default_runfiles</code></ul>See the <a href='https://bazel.build/versions/7.2.0/extending/rules'>rules</a> page for extensive guides on how to use this provider.

<h2>Members</h2> <ul> <li> <a href="#DefaultInfo">DefaultInfo</a> </li> <li> <a href="#data_runfiles">data_runfiles</a> </li> <li> <a href="#default_runfiles">default_runfiles</a> </li> <li> <a href="#files">files</a> </li> <li> <a href="#files_to_run">files_to_run</a> </li> <li> <a href="#to_json">to_json</a> </li> <li> <a href="#to_proto">to_proto</a> </li> </ul>
  <h2 id="DefaultInfo">DefaultInfo</h2>
    <p><pre class="rule-signature"><a class="anchor" href="../providers/DefaultInfo.html">DefaultInfo</a> DefaultInfo(files=None, runfiles=None, data_runfiles=None, default_runfiles=None, executable=None)</pre></p>

<p>The <code>DefaultInfo</code> constructor.

      <!-- hide-from-toc is a class used by DevSite for the public Bazel site
  (https://developers.google.com/devsite/reference/styles/headings#hide_headings_from_the_toc) -->
  <h3 class="hide-from-toc">Parameters</h3>
  <table class="table table-bordered table-condensed table-params">
    <colgroup>
      <col class="col-param">
      <col class="param-description">
    </colgroup>
    <thead>
      <tr>
        <th>Parameter</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
              <tr>
        <td id="DefaultInfo.files">
          <code>files</code>
        </td>
        <td>
                      <a class="anchor" href="../builtins/depset.html">depset</a>; or <code>None</code>;
                                 default is <code>None</code>

                      A <a href='../builtins/depset.html'><code>depset</code></a> of <a href='../builtins/File.html'><code>File</code></a> objects representing the default outputs to build when this target is specified on the bazel command line. By default it is all predeclared outputs.
        </td>
      </tr>
              <tr>
        <td id="DefaultInfo.runfiles">
          <code>runfiles</code>
        </td>
        <td>
                      <a class="anchor" href="../builtins/runfiles.html">runfiles</a>; or <code>None</code>;
                                 default is <code>None</code>

                      runfiles descriptor describing the files that this target needs when run (via the <code>run</code> command or as a tool dependency).
        </td>
      </tr>
              <tr>
        <td id="DefaultInfo.data_runfiles">
          <code>data_runfiles</code>
        </td>
        <td>
                      <a class="anchor" href="../builtins/runfiles.html">runfiles</a>; or <code>None</code>;
                                 default is <code>None</code>

                      <p><b>It is recommended that you avoid using this parameter (see <a href='https://bazel.build/versions/7.2.0/extending/rules#runfiles_features_to_avoid'>"runfiles features to avoid"</a>)</b></p> runfiles descriptor describing the runfiles this target needs to run when it is a dependency via the <code>data</code> attribute.
        </td>
      </tr>
              <tr>
        <td id="DefaultInfo.default_runfiles">
          <code>default_runfiles</code>
        </td>
        <td>
                      <a class="anchor" href="../builtins/runfiles.html">runfiles</a>; or <code>None</code>;
                                 default is <code>None</code>

                      <p><b>It is recommended that you avoid using this parameter (see <a href='https://bazel.build/versions/7.2.0/extending/rules#runfiles_features_to_avoid'>"runfiles features to avoid"</a>)</b></p> runfiles descriptor describing the runfiles this target needs to run when it is a dependency via any attribute other than the <code>data</code> attribute.
        </td>
      </tr>
              <tr>
        <td id="DefaultInfo.executable">
          <code>executable</code>
        </td>
        <td>
                      <a class="anchor" href="../builtins/File.html">File</a>; or <code>None</code>;
                                 default is <code>None</code>

                      If this rule is marked <a href='../globals/bzl.html#rule.executable'><code>executable</code></a> or <a href='../globals/bzl.html#rule.test'><code>test</code></a>, this is a <a href='../builtins/File.html'><code>File</code></a> object representing the file that should be executed to run the target. By default it is the predeclared output <code>ctx.outputs.executable</code>.
        </td>
      </tr>
            </tbody>
  </table>

    <h2 id="data_runfiles">data_runfiles</h2>
    <p><pre class="rule-signature"><a class="anchor" href="../builtins/runfiles.html">runfiles</a> DefaultInfo.data_runfiles</pre></p>

runfiles descriptor describing the files that this target needs when run in the condition that it is a <code>data</code> dependency attribute. Under most circumstances, use the <code>default_runfiles</code> parameter instead. See <a href='https://bazel.build/versions/7.2.0/extending/rules#runfiles_features_to_avoid'>"runfiles features to avoid"</a> for details.

     May return <code>None</code>.

    <h2 id="default_runfiles">default_runfiles</h2>
    <p><pre class="rule-signature"><a class="anchor" href="../builtins/runfiles.html">runfiles</a> DefaultInfo.default_runfiles</pre></p>

runfiles descriptor describing the files that this target needs when run (via the <code>run</code> command or as a tool dependency).

     May return <code>None</code>.

    <h2 id="files">files</h2>
    <p><pre class="rule-signature"><a class="anchor" href="../builtins/depset.html">depset</a> DefaultInfo.files</pre></p>

A <a href='../builtins/depset.html'><code>depset</code></a> of <a href='../builtins/File.html'><code>File</code></a> objects representing the default outputs to build when this target is specified on the bazel command line. By default it is all predeclared outputs.

     May return <code>None</code>.

    <h2 id="files_to_run">files_to_run</h2>
    <p><pre class="rule-signature"><a class="anchor" href="../providers/FilesToRunProvider.html">FilesToRunProvider</a> DefaultInfo.files_to_run</pre></p>

A <a href='../providers/FilesToRunProvider.html'><code>FilesToRunProvider</code></a> object containing information about the executable and runfiles of the target.

     May return <code>None</code>.

    <h2 id="to_json">to_json</h2>
    <p><pre class="rule-signature"><a class="anchor" href="../core/string.html">string</a> DefaultInfo.to_json()</pre></p>

<b>Deprecated</b>. This API is deprecated and will be removed soon. Please do not depend on it. It is <i>disabled</i> with <code>---incompatible_struct_has_no_methods</code>. Use this flag to verify your code is compatible with its imminent removal. 

Creates a JSON string from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs, a list of these types or a dictionary with string keys and values of these types. Quotes and new lines in strings are escaped. Examples:

<pre class=language-python>struct(key=123).to_json() # {"key":123} struct(key=True).to_json() # {"key":true} struct(key=[1, 2, 3]).to_json() # {"key":[1,2,3]} struct(key='text').to_json() # {"key":"text"} struct(key=struct(inner_key='text')).to_json() # {"key":{"inner_key":"text"}} struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json() # {"key":[{"inner_key":1},{"inner_key":2}]} struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json() # {"key":{"inner_key":{"inner_inner_key":"text"}}} </pre>.<p>Deprecated: instead, use json.encode(x) or json.encode_indent(x), which work for values other than structs and do not pollute the struct field namespace.
    <h2 id="to_proto">to_proto</h2>
    <p><pre class="rule-signature"><a class="anchor" href="../core/string.html">string</a> DefaultInfo.to_proto()</pre></p>

<b>Deprecated</b>. This API is deprecated and will be removed soon. Please do not depend on it. It is <i>disabled</i> with <code>---incompatible_struct_has_no_methods</code>. Use this flag to verify your code is compatible with its imminent removal. 

Creates a text message from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs or dicts or lists of these types. Quotes and new lines in strings are escaped. Struct keys are iterated in the sorted order. Examples:

<pre class=language-python>struct(key=123).to_proto() # key: 123 struct(key=True).to_proto() # key: true struct(key=[1, 2, 3]).to_proto() # key: 1 # key: 2 # key: 3 struct(key='text').to_proto() # key: "text" struct(key=struct(inner_key='text')).to_proto() # key { # inner_key: "text" # } struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto() # key { # inner_key: 1 # } # key { # inner_key: 2 # } struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto() # key { # inner_key { # inner_inner_key: "text" # } # } struct(foo={4: 3, 2: 1}).to_proto() # foo: { # key: 4 # value: 3 # } # foo: { # key: 2 # value: 1 # } </pre><p>Deprecated: use proto.encode_text(x) instead. </body> </html> <!-- {% endraw %} -->