Pants v2: The ergonomic build system

Welcome to the Pants v2 documentation hub!

Pants v2 is a fast, scalable, user-friendly build system for growing codebases. It's currently focused on Python, with support for other languages coming soon.

Here you'll find guides to help you get started with Pants v2, comprehensive documentation on how to configure, run and customize Pants v2, and information on how to get help from the Pants community.

Get Started

The protocol buffer compiler (https://developers.google.com/protocol-buffers).

Config section: [protoc]

Basic options

dependency_inference

--[no-]protoc-dependency-inference
PANTS_PROTOC_DEPENDENCY_INFERENCE
default: True

Infer Protobuf dependencies on other Protobuf files by analyzing import statements.


Advanced options

version

--protoc-version=<str>
PANTS_PROTOC_VERSION
default: 3.11.4

Use this version of protoc.


known_versions

--protoc-known-versions="['<str>', '<str>', ...]"
PANTS_PROTOC_KNOWN_VERSIONS
default:
[
  "3.11.4|darwin|8c6af11e1058efe953830ecb38324c0e0fd2fb67df3891896d138c535932e7db|2482119",
  "3.11.4|linux |6d0f18cd84b918c7b3edd0203e75569e0c8caecb1367bbbe409b45e28514f5be|1591191"
]

Known versions to verify downloads against.

Each element is a pipe-separated string of version|platform|sha256|length, where:

  • version is the version string
  • platform is one of [darwin,linux],
  • sha256 is the 64-character hex representation of the expected sha256
    digest of the download file, as emitted by shasum -a 256
  • length is the expected length of the download file in bytes

E.g., 3.1.2|darwin|6d0f18cd84b918c7b3edd0203e75569e0c7caecb1367bbbe409b44e28514f5be|42813.

Values are space-stripped, so pipes can be indented for readability if necessary.


url_template

--protoc-url-template=<str>
PANTS_PROTOC_URL_TEMPLATE
default: https://github.com/protocolbuffers/protobuf/releases/download/v{version}/protoc-{version}-{platform}-x86\_64.zip

URL to download the tool, either as a single binary file or a compressed file (e.g. zip file). You can change this to point to your own hosted file, e.g. to work with proxies or for access via the filesystem through a file:// URL.

Use {version} to have the value from --version substituted, and {platform} to have a value from --url-platform-mapping substituted in, depending on the current platform. For example, https://github.com/.../protoc-{version}-{platform}.zip.


url_platform_mapping

--protoc-url-platform-mapping="{'key1': val1, 'key2': val2, ...}"
PANTS_PROTOC_URL_PLATFORM_MAPPING
default:
{
  "darwin": "osx",
  "linux": "linux"
}

A dictionary mapping platforms to strings to be used when generating the URL to download the tool.

In --url-template, anytime the {platform} string is used, Pants will determine the current platform, and substitute {platform} with the respective value from your dictionary.

For example, if you define {&quot;darwin&quot;: &quot;apple-darwin&quot;, &quot;linux&quot;: &quot;unknown-linux&quot;}, and run Pants on Linux, then {platform}` will be substituted in the --url-template option with unknown-linux.


Deprecated options

None

Updated about a month ago


protoc


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.