Skip to content

Commit

Permalink
Default java toolchain target
Browse files Browse the repository at this point in the history
The previous javac version used by the default_java_toolchain in Bazel had a non-standard modification to default to the Java 8 language level, which wasn't carried forward to 11. Adding default values for {source,target}_version in the default_java_toolchain to keep Bazel backwards compatibility.

Fixes #8539.

Closes #8569.

PiperOrigin-RevId: 251848351
  • Loading branch information
iirina authored and copybara-github committed Jun 6, 2019
1 parent 9b0e64a commit 6ef6d87
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .bazelci/postsubmit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ platforms:
- "-//src/test/shell/bazel:bazel_determinism_test"
- "-//src/test/shell/bazel:bazel_example_test"
- "-//src/test/shell/bazel:bazel_java_test"
- "-//src/test/shell/bazel:bazel_java_test_defaults"
- "-//src/test/shell/bazel:bazel_random_characters_test"
- "-//src/test/shell/bazel:bazel_repository_cache_test"
- "-//src/test/shell/bazel:bazel_rules_test"
Expand Down Expand Up @@ -193,6 +194,7 @@ platforms:
- "-//src/test/shell/bazel:bazel_determinism_test"
- "-//src/test/shell/bazel:bazel_example_test"
- "-//src/test/shell/bazel:bazel_java_test"
- "-//src/test/shell/bazel:bazel_java_test_defaults"
- "-//src/test/shell/bazel:bazel_random_characters_test"
- "-//src/test/shell/bazel:bazel_repository_cache_test"
- "-//src/test/shell/bazel:bazel_rules_test"
Expand Down
2 changes: 2 additions & 0 deletions .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ platforms:
- "-//src/test/shell/bazel:bazel_determinism_test"
- "-//src/test/shell/bazel:bazel_example_test"
- "-//src/test/shell/bazel:bazel_java_test"
- "-//src/test/shell/bazel:bazel_java_test_defaults"
- "-//src/test/shell/bazel:bazel_random_characters_test"
- "-//src/test/shell/bazel:bazel_repository_cache_test"
- "-//src/test/shell/bazel:bazel_rules_test"
Expand Down Expand Up @@ -191,6 +192,7 @@ platforms:
- "-//src/test/shell/bazel:bazel_determinism_test"
- "-//src/test/shell/bazel:bazel_example_test"
- "-//src/test/shell/bazel:bazel_java_test"
- "-//src/test/shell/bazel:bazel_java_test_defaults"
- "-//src/test/shell/bazel:bazel_random_characters_test"
- "-//src/test/shell/bazel:bazel_repository_cache_test"
- "-//src/test/shell/bazel:bazel_rules_test"
Expand Down
9 changes: 9 additions & 0 deletions src/test/shell/bazel/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,15 @@ sh_test(
],
)

sh_test(
name = "bazel_java_test_defaults",
srcs = ["bazel_java_test_defaults.sh"],
data = [
":test-deps",
"@bazel_tools//tools/bash/runfiles",
],
)

sh_test(
name = "bazel_java_test",
# TODO(iirina): Investigate if the 'large' and 'eternal' values still apply.
Expand Down
92 changes: 92 additions & 0 deletions src/test/shell/bazel/bazel_java_test_defaults.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/bin/bash
#
# Copyright 2016 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Tests the java rules with the default values provided by Bazel.
#

add_to_bazelrc "build --javabase=@bazel_tools//tools/jdk:remote_jdk11"

# --- begin runfiles.bash initialization ---
if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
if [[ -f "$0.runfiles_manifest" ]]; then
export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
elif [[ -f "$0.runfiles/MANIFEST" ]]; then
export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST"
elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
export RUNFILES_DIR="$0.runfiles"
fi
fi
if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash"
elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
"$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
else
echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
exit 1
fi
# --- end runfiles.bash initialization ---

source "$(rlocation "io_bazel/src/test/shell/integration_test_setup.sh")" \
|| { echo "integration_test_setup.sh not found!" >&2; exit 1; }

case "$(uname -s | tr [:upper:] [:lower:])" in
msys*|mingw*|cygwin*)
declare -r is_windows=true
;;
*)
declare -r is_windows=false
;;
esac

if "$is_windows"; then
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
fi


function test_default_java_toolchain_target_version() {
mkdir -p java/main
cat >java/main/BUILD <<EOF
java_binary(
name = 'JavaBinary',
srcs = ['JavaBinary.java'],
main_class = 'JavaBinary',
)
load(
"@bazel_tools//tools/jdk:default_java_toolchain.bzl",
"default_java_toolchain",
)
default_java_toolchain(
name = "default_toolchain",
visibility = ["//visibility:public"],
)
EOF

cat >java/main/JavaBinary.java <<EOF
public class JavaBinary {
public static void main(String[] args) {
System.out.println("Successfully executed JavaBinary!");
}
}
EOF
bazel run java/main:JavaBinary --java_toolchain=//java/main:default_toolchain --verbose_failures -s &>"${TEST_log}"
expect_log "Successfully executed JavaBinary!"
javap -verbose -cp bazel-bin/java/main/JavaBinary.jar JavaBinary | grep major &>"${TEST_log}"
expect_log "major version: 52"
}

run_suite "Java integration tests with default Bazel values"
2 changes: 2 additions & 0 deletions tools/jdk/default_java_toolchain.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ DEFAULT_TOOLCHAIN_CONFIGURATION = {
"compatible_javacopts": COMPATIBLE_JAVACOPTS,
"singlejar": ["@bazel_tools//tools/jdk:singlejar"],
"bootclasspath": ["@bazel_tools//tools/jdk:platformclasspath"],
"source_version": "8",
"target_version": "8",
}

def default_java_toolchain(name, **kwargs):
Expand Down

0 comments on commit 6ef6d87

Please sign in to comment.