A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages.
Branch: master
Clone or download
mkillianey and facebook-github-bot Advance version for next round of development.
Summary: Advance plugin version for next round of feature development

Reviewed By: asp2insp

fbshipit-source-id: 490098aa8f
Latest commit 9c5c849 Feb 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea Update jar to include SpaceRequirements enum Feb 9, 2019
android Specify the classes affected by the module change Jan 22, 2019
assets/android update agent version and agent.apk file Oct 5, 2018
bin Add license to bat files Dec 15, 2018
config Disable AggregateFuture logging Jan 24, 2019
docs Buckconfig: alphabetize entries within section: [apple] Feb 16, 2019
pmd Check that System.getenv is not used Dec 4, 2018
programs Restart buckd when JVM args have changed since last start Jan 16, 2019
py Add licensing to py files Dec 3, 2018
python-dsl Add support for select in Python build file parser Jan 25, 2019
scripts Exopackage for External Test Runner Feb 11, 2019
src-gen Remove SourceRoot from thrift Jan 24, 2019
src/com/facebook/buck Extract DistBuildStatsTracker Feb 16, 2019
test/com/facebook/buck Extract DistBuildStatsTracker Feb 16, 2019
third-party Update jar to include SpaceRequirements enum Feb 9, 2019
tools Advance version for next round of development. Feb 18, 2019
.buckconfig Revert " Give suggestions if the build file has typos." Jan 29, 2019
.buckjavaargs Increase heap size. Sep 30, 2016
.buckrelease Prepare release v2018.06.25.01. Jun 25, 2018
.gitattributes Fix some Android resource tests. Jul 31, 2018
.gitignore Rename IntelliJ output directory to intellij-out. Aug 10, 2018
.inferconfig bump Infer to faed7dfc7058c534dc52191b1dd1a464b7bbe751 Oct 31, 2018
.travis.yml Run tests with Android NDK 17 in Travis CI Jul 2, 2018
.watchmanconfig Rename build output directory to use Buck convention. Aug 10, 2018
BUCK Introduce export_files macro. Aug 2, 2018
CODE_OF_CONDUCT.md Fix spelling Oct 19, 2018
CONTRIBUTING.md Move log.Logger to core.util.log Aug 16, 2018
LICENSE Try to make it easier to determine the license for Buck (Apache 2.0). Apr 30, 2013
README.md Add documentation about deprecating features to README Jul 10, 2018
appveyor.yml always -Djna.nosys=true for running buck Feb 27, 2018
buck-parser-py.iml Use typing module for PEP484 type annotations Mar 15, 2017
buck.iml Fix app bundle support (#2140) Jan 19, 2019
build.xml Upgrade grpc and related libraries to 1.18.0 Feb 4, 2019
jitpack.yml Download statically built python for jitpack builds (#2014) Aug 30, 2018
windows_cxx_support.txt Support for compiling cxx shared libraries on windows (DLLs) Oct 7, 2016
windows_failures.txt Fix Python converage tests in ExternalTestRunnerIntegrationTest on Wi… Dec 15, 2018



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


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


Apache License 2.0