Gitiles: Implement Buck driven build

Until extension system is released by Buck team [1], factor out
existing Buck building blocks as Bucklets in standalone git
repository and reuse it as Git submodule to implement Buck driven
build [2].

To build gitiles `gitiles` target is used:

  buck build gitiles

To build servlet, sources and javadoc in addition, `all` target is used:

  buck build all

that produces:

  buck-out/gen/gitiles.war
  buck-out/gen/servlet.jar
  buck-out/gen/src.jar
  buck-out/gen/javadoc.jar

To execute the tests:

  buck test --all

To generate eclipse project:

  bucklets/tools/eclipse.py

To fetch sources for all dependent libraries too:

  bucklets/tools/eclipse.py --src

To install gitiles-servlet into local Maven repository:

  buck build mvn_install

To deploy gitiles-servlet into remote Maven repository:

  buck build mvn_deploy

[1] http://stackoverflow.com/questions/16681527/buck-vs-gradle-pros-and-cons-for-android-build-systems
[2] https://gerrit.googlesource.com/bucklets

Change-Id: Ib824dac6423d69c298f9c30ed7a0c05b4d6447c0
diff --git a/BUCK b/BUCK
new file mode 100644
index 0000000..e9083fc
--- /dev/null
+++ b/BUCK
@@ -0,0 +1,50 @@
+include_defs('//VERSION')
+include_defs('//bucklets/maven_package.bucklet')
+TYPE = 'snapshot' if GITILES_VERSION.endswith('-SNAPSHOT') else 'release'
+
+DEPS = [
+  '//gitiles-servlet:servlet',
+  '//gitiles-servlet:src',
+  '//gitiles-servlet:javadoc',
+  '//gitiles-war:gitiles',
+]
+
+java_library(
+  name = 'classpath',
+  deps = [
+    '//gitiles-servlet:servlet',
+    '//gitiles-servlet:servlet_tests',
+    '//gitiles-dev:dev',
+  ]
+)
+
+maven_package(
+  repository = 'gerrit-api-repository',
+  url = 'gs://gerrit-api/%s' % TYPE,
+  version = GITILES_VERSION,
+  jar = {'gitiles-servlet': '//gitiles-servlet:servlet'},
+  src = {'gitiles-servlet': '//gitiles-servlet:src'},
+  doc = {'gitiles-servlet': '//gitiles-servlet:javadoc'},
+)
+
+def b():
+  a = set()
+  for d in DEPS:
+    n,t = d.split(':')
+    a.add(t)
+    out = "%s.%s" % (t, 'war' if 'war' in n else 'jar')
+    genrule(
+      name = t,
+      cmd = 'ln -s $(location %s) $OUT' % d,
+      deps = [d],
+      out = out,
+    )
+
+  genrule(
+    name = 'all',
+    cmd = 'echo done >$OUT',
+    deps = [':' + e for e in a],
+    out = '__fake.gitiles__',
+  )
+
+b()