Buck (software)

Buck is a build system developed and used by Facebook. It was designed for building small, reusable modules consisting of code and resources within a monorepo,[4] and supports a variety of languages on many platforms. Buck is licensed under the Apache License 2.0.[3]

Buck
Developer(s)Facebook
Initial releaseApril 17, 2013 (2013-04-17)[1]
Stable release
2019.10.17.01 / October 17, 2019 (2019-10-17)[2]
Repository
Written inJava
Operating systemCross-platform
LicenseApache License 2.0[3]
Websitebuck.build/ 

Buck requires explicit declaration of dependencies and enforces that by use of a symbolic link tree. Since all dependencies are explicit and Buck has a directed acyclic graph of all source files and build targets, Buck can perform incremental recompilation only building targets downstream of files that have changed. Buck computes a key for each target that is a hash of the contents all the files it depends on. It stores a mapping from that key to the built target in a build cache. Assuming that all targets are deterministic functions of the contents of their dependencies you can share this build cache between developers and continuous integration (CI) as Buck supports a HTTP Cache API.

See also

References

  1. Bolin, Michael (May 14, 2013). "Buck: How we build Android apps at Facebook". Notes. Facebook. Facebook Engineering. Retrieved 2019-07-16.
  2. "Releases · facebook/buck". GitHub.
  3. "buck/license". April 29, 2013. Retrieved 2017-10-20.
  4. "Overview". Buck: a build tool. Retrieved 2018-07-16. Buck is designed to build multiple deliverables from a single repository—that is, a monorepo—rather than from multiple repositories


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.