Buck (ソフトウェア)
表示
開発元 | Meta |
---|---|
初版 | 2013年4月17日[1] |
最新版 |
2021.01.12.01
/ 2021年1月12日[2] |
リポジトリ | |
プログラミング 言語 | Java |
対応OS | クロスプラットフォーム |
ライセンス | Apache License 2.0[3] |
公式サイト |
buck2 |
Buckは、Meta(旧Facebook)により開発・使用されている複数言語に対応したビルドシステムである。
解説
[編集]monorepo内に格納されたコードとリソースからなる、小さく再利用可能なモジュールをビルドするために設計された[4]。ソースコードの入力として、C++(Objective-C、Swift)、Shell、Java(Kotlin、Groovy)、Python、Lua、OCaml、Rust、Goやその他の言語に対応している。 iOS、Android、.NET、Java VMランタイムを含むさまざまなターゲットプラットフォーム向けのバイナリ出力が生成できる。
BuckはApache License 2.0でライセンスされている[3]。
Buckは依存関係の明示的な宣言を必要とし、シンボリックリンクツリーを使用することを強制する。すべての依存関係は明示的であり、Buckはすべてのソースファイルとビルドターゲットの有向非巡回グラフを持っているため、Buckはターゲットのダウンストリームの変更されたファイルだけを再ビルドするインクリメンタルな再コンパイルを実行できる。Buckは各ターゲットに対して、依存しているファイルのコンテンツハッシュをキーとして計算し、ビルドキャッシュ内にキーからビルド対象へのマッピングを保存する。ターゲットがコンテンツの決定的な関数である場合、BuckはHTTP Cache APIをサポートするため、このビルドキャッシュは開発者と継続的インテグレーション(CI)で共有される。
関連項目
[編集]出典
[編集]- ^ Bolin, Michael (2013年5月14日). “Buck: How we build Android apps at Facebook”. Facebook. Facebook Engineering. 2019年7月16日閲覧。
- ^ “Releases · facebook/buck”. GitHub. 2021年11月4日閲覧。
- ^ a b “buck/license” (2013年4月29日). 2017年10月20日閲覧。
- ^ “Overview”. Buck: a build tool. 2018年7月16日閲覧。 “Buck is designed to build multiple deliverables from a single repository—that is, a monorepo—rather than from multiple repositories”