#!/bin/bash # # Copyright 2015 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. # # Setting up the environment for Bazel integration tests. # [ -z "$TEST_SRCDIR" ] && { echo "TEST_SRCDIR not set!" >&2; exit 1; } BAZEL_RUNFILES="$TEST_SRCDIR/io_bazel" if ! type rlocation &> /dev/null; then function rlocation() { if [[ "$1" = /* ]]; then echo $1 else echo "$TEST_SRCDIR/$1" fi } export -f rlocation fi # Load the unit-testing framework source "$(rlocation io_bazel/src/test/shell/unittest.bash)" || \ { echo "Failed to source unittest.bash" >&2; exit 1; } # WORKSPACE file workspace_file="${BAZEL_RUNFILES}/WORKSPACE" # Bazel bazel_tree="$(rlocation io_bazel/src/test/shell/bazel/doc-srcs.zip)" bazel="$(rlocation io_bazel/src/bazel)" bazel_data="${BAZEL_RUNFILES}" # Windows PLATFORM="$(uname -s | tr 'A-Z' 'a-z')" function is_windows() { # On windows, the shell test actually running on msys if [[ "${PLATFORM}" =~ msys_nt* ]]; then true else false fi } # Java if is_windows; then jdk_dir="$(cygpath -m $(cd $(rlocation local_jdk/bin/java.exe)/../..; pwd))" else jdk_dir="${TEST_SRCDIR}/local_jdk" fi langtools="$(rlocation io_bazel/src/test/shell/bazel/langtools.jar)" # Tools directory location tools_dir="$(dirname $(rlocation io_bazel/tools/BUILD))" langtools_dir="$(dirname $(rlocation io_bazel/third_party/java/jdk/langtools/BUILD))" EXTRA_BAZELRC="build --ios_sdk_version=8.4" # Java tooling javabuilder_path="$(find ${BAZEL_RUNFILES} -name JavaBuilder_*.jar)" langtools_path="${BAZEL_RUNFILES}/third_party/java/jdk/langtools/javac.jar" singlejar_path="${BAZEL_RUNFILES}/src/java_tools/singlejar/SingleJar_deploy.jar" genclass_path="${BAZEL_RUNFILES}/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/genclass/GenClass_deploy.jar" junitrunner_path="${BAZEL_RUNFILES}/src/java_tools/junitrunner/java/com/google/testing/junit/runner/Runner_deploy.jar" ijar_path="${BAZEL_RUNFILES}/third_party/ijar/ijar" # Sandbox tools process_wrapper="${BAZEL_RUNFILES}/src/main/tools/process-wrapper" linux_sandbox="${BAZEL_RUNFILES}/src/main/tools/linux-sandbox" # iOS and Objective-C tooling iossim_path="${BAZEL_RUNFILES}/third_party/iossim/iossim" actoolwrapper_path="${BAZEL_RUNFILES}/src/tools/xcode/actoolwrapper/actoolwrapper.sh" ibtoolwrapper_path="${BAZEL_RUNFILES}/src/tools/xcode/ibtoolwrapper/ibtoolwrapper.sh" swiftstdlibtoolwrapper_path="${BAZEL_RUNFILES}/src/tools/xcode/swiftstdlibtoolwrapper/swiftstdlibtoolwrapper.sh" momcwrapper_path="${BAZEL_RUNFILES}/src/tools/xcode/momcwrapper/momcwrapper.sh" bundlemerge_path="${BAZEL_RUNFILES}/src/objc_tools/bundlemerge/bundlemerge_deploy.jar" plmerge_path="${BAZEL_RUNFILES}/src/objc_tools/plmerge/plmerge_deploy.jar" xcodegen_path="${BAZEL_RUNFILES}/src/objc_tools/xcodegen/xcodegen_deploy.jar" stdredirect_path="${BAZEL_RUNFILES}/src/tools/xcode/stdredirect/StdRedirect.dylib" realpath_path="${BAZEL_RUNFILES}/src/tools/xcode/realpath/realpath" environment_plist_path="${BAZEL_RUNFILES}/src/tools/xcode/environment/environment_plist.sh" xcrunwrapper_path="${BAZEL_RUNFILES}/src/tools/xcode/xcrunwrapper/xcrunwrapper.sh" # Test data testdata_path=${BAZEL_RUNFILES}/src/test/shell/bazel/testdata python_server="${BAZEL_RUNFILES}/src/test/shell/bazel/testing_server.py" # Third-party MACHINE_TYPE="$(uname -m)" MACHINE_IS_64BIT='no' if [ "${MACHINE_TYPE}" = 'amd64' -o "${MACHINE_TYPE}" = 'x86_64' ]; then MACHINE_IS_64BIT='yes' fi case "${PLATFORM}" in darwin) if [ "${MACHINE_IS_64BIT}" = 'yes' ]; then protoc_compiler="${BAZEL_RUNFILES}/third_party/protobuf/protoc-osx-x86_64.exe" else protoc_compiler="${BAZEL_RUNFILES}/third_party/protobuf/protoc-osx-x86_32.exe" fi ;; *) if [ "${MACHINE_IS_64BIT}" = 'yes' ]; then protoc_compiler="${BAZEL_RUNFILES}/third_party/protobuf/protoc-linux-x86_64.exe" else protoc_compiler="${BAZEL_RUNFILES}/third_party/protobuf/protoc-linux-x86_32.exe" fi ;; esac if [ -z ${RUNFILES_MANIFEST_ONLY+x} ]; then protoc_jar="${BAZEL_RUNFILES}/third_party/protobuf/protobuf-*.jar" junit_jar="${BAZEL_RUNFILES}/third_party/junit/junit-*.jar" hamcrest_jar="${BAZEL_RUNFILES}/third_party/hamcrest/hamcrest-*.jar" else protoc_jar=$(rlocation io_bazel/third_party/protobuf/protobuf-.*.jar) junit_jar=$(rlocation io_bazel/third_party/junit/junit-.*.jar) hamcrest_jar=$(rlocation io_bazel/third_party/hamcrest/hamcrest-.*.jar) fi # This function copies the tools directory from Bazel. function copy_tools_directory() { cp -RL ${tools_dir}/* tools # tools/jdk/BUILD file for JDK 7 is generated. if [ -f tools/jdk/BUILD.* ]; then cp tools/jdk/BUILD.* tools/jdk/BUILD chmod +w tools/jdk/BUILD fi # To support custom langtools cp ${langtools} tools/jdk/langtools.jar cat >>tools/jdk/BUILD <<'EOF' filegroup(name = "test-langtools", srcs = ["langtools.jar"]) EOF mkdir -p third_party/java/jdk/langtools cp -R ${langtools_dir}/* third_party/java/jdk/langtools chmod -R +w . mkdir -p tools/defaults touch tools/defaults/BUILD mkdir -p third_party/py/gflags cat > third_party/py/gflags/BUILD <