Skip to content
High-performance extensible build system for reproducible builds.
Go Python Shell C++ C Dockerfile Other
Branch: master
Clone or download
peterebden Local caching of remote actions (#822)
* Locally cache remote actions

* Remove remote-execution based cache

Not sure anyone is going to bother setting up this kind of infra just for caching when the HTTP cache is faster and a shitton simpler

* Default NumExecutors to a non-zero number and use the URL to determine if it's on or not

* Remove now-unused Store method

* Record xattrs on outputs so we don't have to re-download them if they've not changed.

* ooeerrr...

* set max message size
Latest commit c9ff83d Jan 17, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Patch remote SDK to multiplex remote capabilities (#783) Dec 2, 2019
build_defs More rex fiddling (#814) Jan 10, 2020
docs Add buildenv section to docs Oct 1, 2019
package HTTP cache rewrite (#689) Jul 26, 2019
rules fix: add returns for rules to allow reuse (#818) Jan 16, 2020
src Local caching of remote actions (#822) Jan 17, 2020
test feat: importlib_metadata compatibility in ModuleDirImport of pex_main ( Jan 14, 2020
third_party feat: importlib_metadata compatibility in ModuleDirImport of pex_main ( Jan 14, 2020
tools feat: importlib_metadata compatibility in ModuleDirImport of pex_main ( Jan 14, 2020
.cirrus.yml Handle temp output names correctly (#812) Jan 5, 2020
.gitattributes Make BUILD.plz one of the default build file names. Jan 13, 2019
.gitignore
.plzconfig Remove containerisation support (#661) Jun 20, 2019
.plzconfig.bootstrap Move //src/parse/rules to top-level //rules (#667) Jun 26, 2019
.plzconfig.ci Use fork of gcfg, get rid of patch. Feb 17, 2019
.plzconfig_freebsd_amd64 Fix a bunch of things on FreeBSD. Jan 6, 2019
.plzconfig_linux_x86
BUILD More rex fiddling (#814) Jan 10, 2020
ChangeLog Honour args being passed in some cases in `plz run` Jan 6, 2020
LICENSE
README.md Note that required Go version is now 1.12 due to remote-apis-sdks nee… Dec 26, 2019
VERSION Honour args being passed in some cases in `plz run` Jan 6, 2020
bootstrap.sh
go.mod Update to latest remote-apis version (#782) Nov 29, 2019
go.sum Display RPC bytes in/out (#795) Dec 17, 2019
install.sh Fix a bunch of things on FreeBSD. Jan 6, 2019

README.md

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 reproducibility. 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), macOS 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.

You can also install using Homebrew:

brew tap thought-machine/please
brew install 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 bootstrap a minimal version of Please using Go and then rebuild it using itself. You'll need to have Go 1.12+ installed to build Please although once built it can target any version from 1.8+ onwards.

Optional dependencies for various tests include Python, Java, 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

You can install a locally built copy of Please using plz install, or if it's the first time, by running ./install.sh after it's built. This will overwrite whatever you currently have in ~/.please with your local version, although you can get back to a released version again by running plz update --force.

Documentation

Status

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.

You can’t perform that action at this time.