1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-12-19 12:28:51 +00:00
nixpkgs/pkgs/development/tools/build-managers/bazel/default.nix
Philip Potter 76dd430cd8 bazel: fix build, make compatible with openjdk
Bazel 981b7bc1 depends on protobuf-2.5 and won't work with 2.6 (and in
bbe84fe3d upgraded straight to protobuf 3.0.0-alpha3); this commit fixes
the dependency to depend on protobuf2_5 specifically.

The bazel compile.sh needs `which` on the PATH; so this commit adds that
as a dependency.

Setting JAVA_HOME to ${jdk} broke bazel when used with openjdk, with the
message:

    Problem with java installation: couldn't find/access rt.jar in /nix/store/z9vc0vzyzhnpl5l5inmqdnvdnbxmmmg7-openjdk-8u60b24

This is because if you set JAVA_HOME, bazel will look for rt.jar in
$JAVA_HOME/lib and $JAVA_HOME/jre/lib, but the nixpkgs openjdk
distribution puts rt.jar in ${jdk}/lib/openjdk/jre/lib for some reason.

To fix this, this commit uses the ${jdk.home} passthru value to use the
appropriate JAVA_HOME for the given jdk.

As bazel now works with openjdk, and openjdk is free while oraclejdk is
not, this commit changes the default jdk for bazel to openjdk.

Since this package didn't have a listed maintainer, I'm claiming it.
2015-07-28 20:38:44 +01:00

30 lines
902 B
Nix

{ stdenv, fetchFromGitHub, jdk, zip, zlib, protobuf2_5, pkgconfig, libarchive, unzip, which, makeWrapper }:
stdenv.mkDerivation rec {
name = "bazel-20150326.981b7bc1";
src = fetchFromGitHub {
owner = "google";
repo = "bazel";
rev = "981b7bc1";
sha256 = "0i9gxgqhfmix7hmkb15s7h9f8ssln08pixqm26pd1d20g0kfyxj7";
};
buildInputs = [ pkgconfig protobuf2_5 zlib zip jdk libarchive unzip which makeWrapper ];
installPhase = ''
PROTOC=protoc bash compile.sh
mkdir -p $out/bin $out/share
cp -R output $out/share/bazel
ln -s $out/share/bazel/bazel $out/bin/bazel
wrapProgram $out/bin/bazel --set JAVA_HOME "${jdk.home}"
'';
meta = {
homepage = http://github.com/google/bazel/;
description = "Build tool that builds code quickly and reliably";
license = stdenv.lib.licenses.asl20;
maintainers = [ stdenv.lib.maintainers.philandstuff ];
};
}