コンテンツにスキップ

モノレポビルドシステム Buck2

概要

Buck2という Meta が発表したモノレポビルドシステムについて調べてみた。C++, Rust, Python など多言語のビルドをサポートしている。Buck2 は Bazel や Pants のようなビルドシステムである。他の特徴としては次のようなものがある。

  • Rust で書かれている
  • リモート実行のサポート
  • Starlark という言語でビルドルールを記述
  • Buck1 より高速
  • Python は Pants と同じく pex を生成する

Python サポート

Buck2 では Pants と同じく pex を生成する。外部のパッケージをインストールする場合は remote_file として whl や egg を指定し、prebuilt_python_libraryルールを使う必要がある。公式ドキュメント

感想

Pants や JavaScript、Typescript のモノレポビルドシステムで Rust を使って書かれたものを良く見かけるようになった。 普段は Pants を使っているが、Pants より多くの言語をサポートしてる印象を受けた。 Python に限っては Pants も Buck2 も pex の実行ファイルを生成するのが個人的に面白く感じた。 Pants や Bazel に比べて Python の外部パッケージを使うのが大変そうに感じた。Buck2 はまだドキュメントが少なく、使用例なども普及してないのでこれからの動きを楽しみにしたい。

参考