High-performance extensible build system for reproducible builds.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Download xz Feb 11, 2019
build_defs Sandbox test directories (#539) Jan 19, 2019
docs Replace `append` and `extend` in all the rules. Feb 10, 2019
package User namespacing in sandbox tool, install along with everything else. Jan 17, 2019
src Making licences field visible in Python & Java build defs (#558) Feb 15, 2019
test Add Go manually on OSX (#554) Feb 9, 2019
third_party Update junit_runner to latest version Jan 22, 2019
tools Downgrade log levels for langserver Feb 12, 2019
.cirrus.yml Add go.mod (#546) Jan 31, 2019
.gitattributes Make BUILD.plz one of the default build file names. Jan 13, 2019
.gitignore User namespacing in sandbox tool, install along with everything else. Jan 17, 2019
.plzconfig Improve linting aliases Jan 27, 2019
.plzconfig.bootstrap Add go.mod (#546) Jan 31, 2019
.plzconfig.ci Add go.mod (#546) Jan 31, 2019
.plzconfig_freebsd_amd64 Fix a bunch of things on FreeBSD. Jan 6, 2019
.plzconfig_linux_x86 Cross-compiling support Apr 26, 2018
BUILD Move gtest stuff to third_party (#531) Jan 13, 2019
ChangeLog Small OSX sandboxing fix Feb 7, 2019
LICENSE Add Apache 2 licence in preparation for open sourcing Jul 21, 2016
README.md Update FreeBSD docs. Jan 7, 2019
VERSION Small OSX sandboxing fix Feb 7, 2019
bootstrap.sh Add go.mod (#546) Jan 31, 2019
go.mod Add more stuff to go.mod Feb 1, 2019
go.sum Add more stuff to go.mod Feb 1, 2019
install.sh Fix a bunch of things on FreeBSD. Jan 6, 2019


Please Build Status Build Status Go Report Card Gitter chat

Please is a cross-language build system with an emphasis on high performance, extensibility and reproduceability. It supports a number of popular languages and can automate nearly any aspect of your build process.

See http://please.build for more information.

Currently Linux (tested on Ubuntu), OSX and FreeBSD are actively supported.

Getting Started

The easiest way to install it on your own machine is to run:

curl -s https://get.please.build | bash

Or, if you prefer, grab one of the tarballs off our releases page and extract it yourself; it typically lives in ~/.please.

Then you simply run plz init at the root of your project to set up a default config and you're good to start adding BUILD files. See the website for more instructions about how to write them.

There are various commands available to interact with Please, the most obvious & useful ones initially are plz build and plz test to build things & run tests respectively. See plz --help or the documentation for more comprehensive information.

Building Please

To build Please yourself, run ./bootstrap.sh in the repo root. This will set up the minimal environment needed to build Please, build it once manually and then rebuild it again using itself. You'll need to have Go 1.11+ installed to build Please although once built it can target any version from 1.5+ onwards.

Optional dependencies for various tests include Python, Java, unittest++ (sudo apt-get install libunittest++-dev), clang, gold and docker - none of those are required to build components so their tests will be excluded if they aren't available.

If you'd rather not worry about installing the dependencies, we provide a prebuilt Docker image based on Ubuntu which is capable of building the whole thing for you: docker run -it thoughtmachine/please_ubuntu



Please is released & we consider it stable; we follow semver for releases, so major versions indicate potentially breaking changes to the BUILD language, command line or other behaviour. We try to minimise this where possible.

We're very happy to accept pull requests & feature requests, and bugs if it's not working for you. We don't always have time for everything since Please is only part-time work for us, but we'll do our best.