1{
2 bazel
3, bazelTest
4, bazel-examples
5, stdenv
6, darwin
7, lib
8, openjdk8
9, jdk11_headless
10, runLocal
11, runtimeShell
12, writeScript
13, writeText
14, distDir
15}:
16
17let
18
19 toolsBazel = writeScript "bazel" ''
20 #! ${runtimeShell}
21
22 export CXX='${stdenv.cc}/bin/clang++'
23 export LD='${darwin.cctools}/bin/ld'
24 export LIBTOOL='${darwin.cctools}/bin/libtool'
25 export CC='${stdenv.cc}/bin/clang'
26
27 # XXX: hack for macosX, this flags disable bazel usage of xcode
28 # See: https://github.com/bazelbuild/bazel/issues/4231
29 export BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
30
31 exec "$BAZEL_REAL" "$@"
32 '';
33
34 workspaceDir = runLocal "our_workspace" {} (''
35 cp -r ${bazel-examples}/java-tutorial $out
36 find $out -type d -exec chmod 755 {} \;
37 ''
38 + (lib.optionalString stdenv.isDarwin ''
39 mkdir $out/tools
40 cp ${toolsBazel} $out/tools/bazel
41 ''));
42
43 testBazel = bazelTest {
44 name = "bazel-test-java";
45 inherit workspaceDir;
46 bazelPkg = bazel;
47 buildInputs = [ (if lib.strings.versionOlder bazel.version "5.0.0" then openjdk8 else jdk11_headless) ];
48 bazelScript = ''
49 ${bazel}/bin/bazel \
50 run \
51 --distdir=${distDir} \
52 --verbose_failures \
53 --curses=no \
54 --sandbox_debug \
55 --strict_java_deps=off \
56 //:ProjectRunner \
57 '' + lib.optionalString (lib.strings.versionOlder bazel.version "5.0.0") ''
58 --host_javabase='@local_jdk//:jdk' \
59 --java_toolchain='@bazel_tools//tools/jdk:toolchain_hostjdk8' \
60 --javabase='@local_jdk//:jdk' \
61 '';
62 };
63
64in testBazel
65