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