diff options
author | David Ostrovsky <david@ostrovsky.org> | 2015-12-04 08:27:57 +0100 |
---|---|---|
committer | Shawn Pearce <sop@google.com> | 2015-12-31 10:08:55 -0800 |
commit | 13502fef8f4814c6c5bdfa63674c94f9d32b5531 (patch) | |
tree | 0859856732a406008ba6fda2c813567abfdcd27f /tools | |
parent | 2fbd98dbe8e56aafe4bbf4252b5734c762fb225f (diff) | |
download | jgit-13502fef8f4814c6c5bdfa63674c94f9d32b5531.tar.gz jgit-13502fef8f4814c6c5bdfa63674c94f9d32b5531.zip |
Implement Buck driven build
Today there are plenty of modern build tool systems available in the
wild (in no particular order):
* http://bazel.io
* https://pantsbuild.github.io
* http://shakebuild.com
* https://ninja-build.org
* https://buckbuild.com
The attributes, that all these build tools have in common, are:
* reliable
* correct
* very fast
* reproducible
It must not always be the other build tool, this project is currently
using. Or, quoting Gerrit Code Review maintainer here:
"Friends, don't let friends use <the other build tool system>!"
This change is non-complete implementation of JGit build in Buck,
needed by Gerrit Code Review to replace its dependency with standlone
JGit cell. This is very useful when a developer is working on both
projects and is trying to integrate changes made in JGit in Gerrit.
The supported workflow is:
$ cd jgit
$ emacs <hack>
$ cd ../gerrit
$ buck build --config repositories.jgit=../jgit gerrit
With --config repositories.jgit=../jgit jgit cell is routed through
JGit development tree.
To build jgit, issue:
$ buck build //:jgit
[-] PROCESSING BUCK FILES...FINISHED 0,0s
Yes, you can't measure no-op build time, given that Buck daemon is
used.
Change-Id: I301a71b19fba35a5093d8cc64d4ba970c2877a44
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/default.defs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/default.defs b/tools/default.defs new file mode 100644 index 0000000000..3481fa1f8a --- /dev/null +++ b/tools/default.defs @@ -0,0 +1,42 @@ +def java_sources( + name, + srcs, + visibility = ['PUBLIC'] + ): + java_library( + name = name, + resources = srcs, + visibility = visibility, + ) + +def maven_jar( + name, + group, + artifact, + version, + bin_sha1, + src_sha1, + visibility = ['PUBLIC']): + jar_name = '%s__jar' % name + src_name = '%s__src' % name + + remote_file( + name = jar_name, + sha1 = bin_sha1, + url = 'mvn:%s:%s:jar:%s' % (group, artifact, version), + out = '%s.jar' % jar_name, + ) + + remote_file( + name = src_name, + sha1 = src_sha1, + url = 'mvn:%s:%s:src:%s' % (group, artifact, version), + out = '%s.jar' % src_name, + ) + + prebuilt_jar( + name = name, + binary_jar = ':' + jar_name, + source_jar = ':' + src_name, + visibility = visibility) + |