about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorPhilip Patsch <philip.patsch@tweag.io>2019-01-28 11:51:09 +0100
committerProfpatsch <mail@profpatsch.de>2019-01-29 14:03:54 +0100
commit5c6892e1a277ca4bd39340a2548c84b0a7b96f81 (patch)
tree59f8ade0526565eb20af8e1d51bcc5392c70f88e /pkgs
parent7e6662a275c0bc1549ca849d865e88ce7dd8473c (diff)
downloadnixlib-5c6892e1a277ca4bd39340a2548c84b0a7b96f81.tar
nixlib-5c6892e1a277ca4bd39340a2548c84b0a7b96f81.tar.gz
nixlib-5c6892e1a277ca4bd39340a2548c84b0a7b96f81.tar.bz2
nixlib-5c6892e1a277ca4bd39340a2548c84b0a7b96f81.tar.lz
nixlib-5c6892e1a277ca4bd39340a2548c84b0a7b96f81.tar.xz
nixlib-5c6892e1a277ca4bd39340a2548c84b0a7b96f81.tar.zst
nixlib-5c6892e1a277ca4bd39340a2548c84b0a7b96f81.zip
bazel: fix java toolchain regression
By changing the default toolchain to JDK8, we broke the default Java
toolchain, which assumes JDK9.

Instead, set `host_java_toolchain` manually for our build of bazel,
and set `java_toolchain` to run the java tests with the build JDK as
well.

Fixes https://github.com/NixOS/nixpkgs/issues/54289
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/tools/build-managers/bazel/default.nix19
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 13 insertions, 8 deletions
diff --git a/pkgs/development/tools/build-managers/bazel/default.nix b/pkgs/development/tools/build-managers/bazel/default.nix
index 15ef2abd0946..c8c0c70ada2b 100644
--- a/pkgs/development/tools/build-managers/bazel/default.nix
+++ b/pkgs/development/tools/build-managers/bazel/default.nix
@@ -1,10 +1,11 @@
 { stdenv, callPackage, lib, fetchurl, fetchpatch, runCommand, makeWrapper
-, jdk, zip, unzip, bash, writeCBin, coreutils
+, zip, unzip, bash, writeCBin, coreutils
 , which, python, perl, gawk, gnused, gnutar, gnugrep, gzip, findutils
 # Apple dependencies
 , cctools, clang, libcxx, CoreFoundation, CoreServices, Foundation
 # Allow to independently override the jdks used to build and run respectively
-, buildJdk ? jdk, runJdk ? jdk
+, buildJdk, runJdk
+, buildJdkName
 # Always assume all markers valid (don't redownload dependencies).
 # Also, don't clean up environment variables.
 , enableNixHacks ? false
@@ -53,6 +54,9 @@ let
     #
     [ bash coreutils findutils gawk gnugrep gnutar gnused gzip which unzip ];
 
+  # Java toolchain used for the build and tests
+  javaToolchain = "@bazel_tools//tools/jdk:toolchain_host${buildJdkName}";
+
 in
 stdenv.mkDerivation rec {
 
@@ -177,11 +181,6 @@ stdenv.mkDerivation rec {
       substituteInPlace scripts/bootstrap/compile.sh \
           --replace /bin/sh ${customBash}/bin/bash
 
-      # We only build with JDK8 for now, since JDK11 does not compile bazel
-      substituteInPlace tools/jdk/default_java_toolchain.bzl \
-        --replace '"jvm_opts": JDK9_JVM_OPTS' \
-                  '"jvm_opts": JDK8_JVM_OPTS'
-
       # add nix environment vars to .bazelrc
       cat >> .bazelrc <<EOF
       build --experimental_distdir=${distDir}
@@ -191,6 +190,7 @@ stdenv.mkDerivation rec {
       build --linkopt="-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --linkopt="-Wl,/g')"
       build --host_linkopt="-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --host_linkopt="-Wl,/g')"
       build --host_javabase='@local_jdk//:jdk'
+      build --host_java_toolchain='${javaToolchain}'
       EOF
 
       # add the same environment vars to compile.sh
@@ -199,6 +199,7 @@ stdenv.mkDerivation rec {
           -e "/\$command \\\\$/a --linkopt=\"-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --linkopt=\"-Wl,/g')\" \\\\" \
           -e "/\$command \\\\$/a --host_linkopt=\"-Wl,$(echo $NIX_LDFLAGS | sed -e 's/ /" --host_linkopt=\"-Wl,/g')\" \\\\" \
           -e "/\$command \\\\$/a --host_javabase='@local_jdk//:jdk' \\\\" \
+          -e "/\$command \\\\$/a --host_java_toolchain='${javaToolchain}' \\\\" \
           -i scripts/bootstrap/compile.sh
 
       # --experimental_strict_action_env (which will soon become the
@@ -268,7 +269,9 @@ stdenv.mkDerivation rec {
     export TEST_TMPDIR=$(pwd)
 
     hello_test () {
-      $out/bin/bazel test --test_output=errors \
+      $out/bin/bazel test \
+        --test_output=errors \
+        --java_toolchain='${javaToolchain}' \
         examples/cpp:hello-success_test \
         examples/java-native/src/test/java/com/example/myproject:hello
     }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 285ed3b75450..ba59be8201fe 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8282,6 +8282,8 @@ in
   bazel = callPackage ../development/tools/build-managers/bazel {
     inherit (darwin) cctools;
     inherit (darwin.apple_sdk.frameworks) CoreFoundation CoreServices Foundation;
+    buildJdk = jdk8;
+    buildJdkName = "jdk8";
     runJdk = jdk11;
   };