GerritはなぜBuckを選んだのですか?
Shawn Pearce(Gerritプロジェクトのメンテナ)は、直前のEclipseConで、ジャックを使ってJava構築を改善するというテーマの講演(スライド、より多くの情報)を発表しました.Gerrit 2.8から、プロジェクトの構築はすでにBuckを完全に使用し始めました.
BUCKは、Googleの内部構築システム「blaze」をモデルにした元Google、現Facebookエンジニアによって開発されたシステムです.Facebookでは,この構築システムはオープンソースであり,Apacheの許可に基づいてGitHubに位置している.BuckはPythonに基づいて構築されているが、Gerritでは主にJavaをコンパイルするために用いられている.
Buck言語はDSLで、Pythonを使って下の層のファイルを構築します.下記のコードは「printymulib」というJavaライブラリを定義しています.それはGuavaに依存しています.後者はファイルシステムのどこにありますか?
java_library(
name = 'printy_lib',
srcs = glob(['src/main/java/**/*.java']),
deps = [':guava'],
)
prebuilt_jar(
name = 'guava',
binary_jar = 'guava.jar',
)
Gerrit Maven Central JAR , JAR 。JAR GAV , SHA1 , 。 Buck , 。
include_defs('//lib/maven.defs')
maven_jar(
name = 'guava',
id = 'com.google.guava:guava:14.0',
sha1 = '67b7be4ee7ba48e4828a42d6d5069761186d4a53',
license = 'Apache2.0',
)
Buck Maven 。 , , ,Buck 1.25xCPU (Maven Make , )。 Gerrit :
-
mvn package -Dmaven.{javadoc,test}.skip=true ... 6m50s
buck build :gerrit ... 2m 3s
buck test --all ... 2m 5s
-
mvn package -Dmaven.{javadoc,test}.skip=true ... 4m44s
buck build :gerrit ... 2s
- Buck , buckd
~/buck/bin/buckd
time buck :gerrit ... 0.5s
,Buck , 。 ( ),Buck SHA 。 , , 。
Buck Java , , API , 。
, Buck Apache Cassandra , 。 , , , 。 , 。 , 。
。 ( Gerrit daemon),Gerrit , HTTP 。 , 。
Buck , Gradle 。 , Buck Java , Python DSL, Mac Linux , Windows 。
Buck , Facebook Buck 。
:Why Gerrit chose Buck
・