Useful Tools

Collect licenses

go/collect_licenses - collect_licenses produces a distributable LICENSE file given a target (and an arbitrary set of blaze flags).

Updatemd

To help keep the METADATA file up-to-date, you can use the updatemd program to update commonly changed fields. It resides here:

$ /path/to/.../updatemd --help
Usage: updatemd [options] path

  -archive_url=""     : update the third-party "archive_url" field
  -print=""           : print the value of the field
  -version=""         : update the third-party "version" field

The -print flag takes a comma-separated list of values to print:

$ /path/to/.../updatemd -print version METADATA
1b2e19fdacff67bf390486e86eefbfb35bd464c6

Googlify

go/googlify

Googlify analyzes the output of a traditional build (running ./configure, make, and make install for all required packages) and uses this to construct google3-style BUILD files for your not-yet-in-third_party package. This tool imports library files into the third_party/library/src subdirectory by default.

NOTE: Googlify is completely unsupported, does not generate hermetic BUILD files, and may require OWNERS to rerun it often.

Copybara

go/copybara

Copybara automates the import of code from upstream repositories, such as github. Copybara can also apply transformations to the changes or run checkers for validation, for example leak detection.

qu4

go/qu4

qu4 is an adaptation of the Quilt patch management system to Piper, providing a standardized process for maintaining local modifications to third-party code in google3.

floorcloth

go/floorcloth

floorcloth is a tool to assist in managing the lifecycle of packages, mostly through outreach to consumers and OWNERS, but it can also restrict visibility, finding new owners, nudge dependees, and more!