Useful Tools

Collect licenses

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


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



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 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 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 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!