Buck: An Android (and Java!) build tool
Switch branches/tags
buck-release-f3938ef16a1fb637eb8bf13fd8d91bb88d46b243 buck-release-e6357f623290d9f98ff385fa67d24443ba95de64 buck-release-e0af6cbdcd01984886f81f41e443854c4d21ef2c buck-release-dae99559132c301fcf4f18060a872a2de04ebbf8 buck-release-d8638250de510497af84a395af8181d0b90e568f buck-release-cf0fbde2d6d455227efeaeebb94a9bf360e7d99e buck-release-c183a36cfa2ec96e4c4ba924b7145d5312f0b446 buck-release-be2bf932342e5d67f58c9b26f5065c745d285d0d buck-release-b974962d8c0e03a9723a19f60b70a14077c965e6 buck-release-b982b2135c18644487a54194edad20c732c38472 buck-release-b3c0b18d680c732b2bbc55854d38cc98e54fb008 buck-release-aa25bdb1d6cc87e6bcb149c5413c8ceeb8fd6e1f buck-release-a761bff38bee2459d4342ebbb88ed0730fa22174 buck-release-65874cbc58fab1746c2e7d15ea7c2f545fb0df38 buck-release-38657a1a333967668e971c6c382af316cdfcf42d buck-release-35906a88243594636b9c4f68cf0423dd9aa0808b buck-release-3588c134256c1fca1d7c3c44bf55afa62fa8b6eb buck-release-1074bf263191a38507a2ef1a873f78b3ee4b4f43 buck-release-587ba8310f3fc83dd4ac0e241a9fb6e5c4136704 buck-release-061beeab7353bfc3deebf41c3931c372eaef35ef buck-release-37eee6cd1a13292b45e2e682b32afae1efb9526b buck-release-8eca783ccd962d873c92c38b5b15b642e3f5e268 buck-release-7e370f5f00f23d09d1607fdae79c8bd003462fdc buck-release-7c1417f319649e9fd58fd3f97f36f42c870b1790 buck-release-6b1e094ac4b39ddd9c6e0c94e89741b4d045e19e buck-release-4c902b25c3ae0a91c185c1bef8e54700cfc5a247 buck-release-1fbdd253627e8344688f84aa9448ebbd7867e9a1 buck-release-00f4228cbd94fd948579335f4d75936dc3f274b7 buck-release-0c687e0a193b409b8b59b08b8db36b4177b28eaa buck-release-27434594077ffce3386ede13d1a9e979d8cb74f6
Nothing to show
Clone or download
Pull request Compare This branch is 69 commits ahead of shs96c:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.idea
android
assets/android
bin
config
docs
pmd Move log.Logger to core.util.log Aug 16, 2018
programs
py
python-dsl
scripts
src-gen
src
test/com/facebook/buck
third-party
tools
.buckconfig
.buckjavaargs
.buckrelease
.gitattributes
.gitignore
.inferconfig
.travis.yml
.watchmanconfig
BUCK
CONTRIBUTING.md
LICENSE
README.md
appveyor.yml
buck-parser-py.iml
buck.iml
build.gradle
build.xml
jitpack.yml
windows_cxx_support.txt
windows_failures.txt

README.md

Buck

Buck is a build tool. To see what Buck can do for you, check out the documentation at http://buckbuild.com/.

Build Status Build status

Installation

First, clone the Buck repository:

git clone --depth 1 https://github.com/facebook/buck.git
cd buck

Since Buck is used to build Buck, the initial build process involves 2 phases:

1. Bootstrap Buck with ant
git clone --depth 1 https://github.com/facebook/buck.git
cd buck
ant
2. Use bootstrapped version of Buck to build Buck:
./bin/buck build --show-output buck
# output will contain something like
# //programs:buck buck-out/gen/programs/buck.pex
buck-out/gen/programs/buck.pex --help
Prebuilt buck binaries

Pre-built binaries of buck for any buck sha can be downloaded from https://jitpack.io/com/github/facebook/buck/<sha>/buck-<sha>.pex. The very first time a version of buck is requested, it is built via jitpack. As a result, it could take a few minutes for this initial binary to become available. Every subsequent request will just serve the built artifact directly. This functionality is available for any fork of buck as well, so you can fetch https://jitpack.io/com/github/<github-user-or-org>/buck/<sha>/buck-<sha>.pex

Feature Deprecation

Buck tries to move fast with respect to its internals. However, for user facing features (build rules, command line interface, etc), the Buck team tries to have a graceful deprecation process. Note that this generally applies only to documented functionality, or functionality that is less documented, but appears to be in wide use. That process is:

  • An issue is opened on Github suggesting what will be deprecated, and when it will be removed. For larger features that are deprecated, there may be a period when the default is the new setting, and the old behavior may only be used with a configuration change.
  • A change is submitted to Buck that puts the old behavior behind a configuration flag and sets the default to the old behavior. These flags can be found at https://buckbuild.com/concept/buckconfig.html#incompatible.
  • For larger features, a change eventually is put in place that sets the default to the new behavior. e.g. when Skylark becomes the default build file parser.
  • When the removal date is reached, a change is submitted to remove the feature. At this point, the configuration value will still parse, but will not be used by Buck internally.

License

Apache License 2.0