bazelbuild / bazel

a fast, scalable, multi-language and extensible build system
https://bazel.build
Apache License 2.0
23k stars 4.03k forks source link

bazel build fail on centos7 #2353

Closed llhhbc closed 7 years ago

llhhbc commented 7 years ago

INFO: You can skip this first step by providing a path to the bazel binary as second argument: INFO: ./compile.sh compile /path/to/bazel 🍃 Building Bazel from scratch../usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/bin/javac -classpath third_party/aether/aether-api-1.0.0.v20140518.jar:third_party/aether/aether-connector-basic-1.0.0.v20140518.jar:third_party/aether/aether-impl-1.0.0.v20140518.jar:third_party/aether/aether-spi-1.0.0.v20140518.jar:third_party/aether/aether-transport-classpath-1.0.0.v20140518.jar:third_party/aether/aether-transport-file-1.0.0.v20140518.jar:third_party/aether/aether-transport-http-1.0.0.v20140518.jar:third_party/aether/aether-transport-wagon-1.0.0.v20140518.jar:third_party/aether/aether-util-1.0.0.v20140518.jar:third_party/android_common/com.android.jack_api_0.9.0.jar:third_party/android_common/com.android.jill_api_0.9.0.jar:third_party/android_common/com.android.tools.build_builder-model_0.13.3.jar:third_party/android_common/com.android.tools.build_builder-model_2.0.0.jar:third_party/android_common/com.android.tools.build_builder-test-api_2.0.0.jar:third_party/android_common/com.android.tools.build_builder_0.13.3.jar:third_party/android_common/com.android.tools.build_builder_2.0.0.jar:third_party/android_common/com.android.tools.build_manifest-merger_23.1.3.jar:third_party/android_common/com.android.tools.build_manifest-merger_25.0.0.jar:third_party/android_common/com.android.tools.layoutlib_layoutlib_23.1.3.jar:third_party/android_common/com.android.tools.layoutlib_layoutlib_25.0.0.jar:third_party/android_common/com.android.tools_common_23.1.3.jar:third_party/android_common/com.android.tools_common_25.0.0.jar:third_party/android_common/com.android.tools_ddmlib_25.0.0.jar:third_party/android_common/com.android.tools_dvlib_25.0.0.jar:third_party/android_common/com.android.tools_repository_25.0.0.jar:third_party/android_common/com.android.tools_sdk-common_23.1.3.jar:third_party/android_common/com.android.tools_sdk-common_25.0.0.jar:third_party/android_common/com.android.tools_sdklib_23.1.3.jar:third_party/android_common/com.android.tools_sdklib_25.0.0.jar:third_party/android_common/com.android_annotations_25.0.0.jar:third_party/apache_commons_codec/commons-codec-1.9.jar:third_party/apache_commons_collections/commons-collections-3.2.2.jar:third_party/apache_commons_compress/apache-commons-compress-1.9.jar:third_party/apache_commons_lang/commons-lang-2.6.jar:third_party/apache_commons_logging/commons-logging-1.1.1.jar:third_party/apache_commons_pool2/commons-pool2-2.3.jar:third_party/apache_httpclient/httpclient-4.2.5.jar:third_party/apache_httpcore/httpcore-4.2.4.jar:third_party/apache_velocity/velocity-1.7.jar:third_party/asm/asm-5.0.3.jar:third_party/asm/asm-5.0.4.jar:third_party/asm/asm-commons-5.0.4.jar:third_party/asm/asm-tree-5.0.4.jar:third_party/asm/asm-util-5.0.4.jar:third_party/auto/auto-common-0.3.jar:third_party/auto/auto-service-1.0-rc2.jar:third_party/auto/auto-value-1.2.jar:third_party/auto/auto-value-1.4-rc1.jar:third_party/bytebuddy/byte-buddy-dep-0.7-rc6.jar:third_party/checker_framework_dataflow/dataflow-1.8.10.jar:third_party/dagger/dagger-2.5.jar:third_party/dagger/dagger-compiler-2.5.jar:third_party/dagger/dagger-producers-2.5.jar:third_party/error_prone/error_prone_annotation-2.0.13.jar:third_party/error_prone/error_prone_annotations-2.0.13.jar:third_party/guava/guava-21.0-20161101.jar:third_party/gson/gson-2.2.4.jar:third_party/error_prone/error_prone_core-2.0.13.jar:third_party/guava/guava-testlib-21.0-20161101.jar:third_party/hamcrest/hamcrest-core-1.3.jar:third_party/hazelcast/hazelcast-3.5.4.jar:third_party/hazelcast/hazelcast-3.6.4.jar:third_party/hazelcast/hazelcast-client-3.5.4.jar:third_party/hazelcast/hazelcast-client-3.6.4.jar:third_party/ijar/test/libwrongcentraldir.jar:third_party/java/android_databinding/exec.jar:third_party/java/apksig/apksigner_deploy.jar:third_party/java/jacoco/jacocoagent.jar:third_party/java/jacoco/org.jacoco.agent-0.7.5.201505241946-src.jar:third_party/java/jacoco/org.jacoco.agent-0.7.5.201505241946.jar:third_party/java/jacoco/org.jacoco.core-0.7.5.201505241946-src.jar:third_party/java/jacoco/org.jacoco.core-0.7.5.201505241946.jar:third_party/java/jacoco/org.jacoco.report-0.7.5.201505241946-src.jar:third_party/java/jacoco/org.jacoco.report-0.7.5.201505241946.jar:third_party/java/jarjar/jarjar-1.4.jar:third_party/jcip_annotations/jcip-annotations-1.0-1.jar:third_party/jgit/org.eclipse.jgit-4.0.1.201506240215-r.jar:third_party/jimfs/jimfs-1.1-rc1.jar:third_party/joda_time/joda-time-2.3.jar:third_party/jsch/jsch-0.1.51.jar:third_party/jsr305/jsr-305.jar:third_party/jsr330_inject/javax.inject.jar:third_party/junit/junit-4.11.jar:third_party/maven/maven-builder-support-3.3.3.jar:third_party/maven/maven-settings-3.3.3.jar:third_party/maven/maven-settings-builder-3.3.3.jar:third_party/maven_model/maven-aether-provider-3.2.3.jar:third_party/maven_model/maven-model-3.2.3.jar:third_party/maven_model/maven-model-builder-3.2.3.jar:third_party/maven_model/maven-repository-metadata-3.2.3.jar:third_party/mockito/mockito-all-1.10.19.jar:third_party/netty/netty-all-4.1.0.CR6.jar:third_party/pcollections/pcollections-2.1.2.jar:third_party/plexus_component_annotations/plexus-component-annotations-1.6.jar:third_party/plexus_interpolation/plexus-interpolation-1.22.jar:third_party/plexus_utils/plexus-utils-3.0.21.jar:third_party/protobuf/3.0.0/protobuf-java-3.0.0.jar:third_party/slf4j/slf4j-api-1.7.7.jar:third_party/slf4j/slf4j-jdk14-1.7.7.jar:third_party/tomcat_annotations_api/tomcat-annotations-api-8.0.5.jar:third_party/truth/truth-0.28.jar:third_party/xz/xz-1.5.jar:third_party/grpc/grpc-core-0.15.0.jar:third_party/grpc/grpc-netty-0.15.0.jar:third_party/grpc/grpc-protobuf-0.15.0.jar:third_party/grpc/grpc-protobuf-lite-0.15.0.jar:third_party/grpc/grpc-stub-0.15.0.jar:/tmp/bazel_5dj0a0iQ -sourcepath src/java_tools/singlejar/java/com/google/devtools/build/zip:src/main/java:src/tools/xcode-common/java/com/google/devtools/build/xcode/common:src/tools/xcode-common/java/com/google/devtools/build/xcode/util:third_party/java/dd_plist/java:/tmp/bazel_5dj0a0iQ/src -d /tmp/bazel_5dj0a0iQ/classes -source 1.8 -target 1.8 -encoding UTF-8 @/tmp/bazel_qXLVUav6/param src/main/java/com/google/devtools/build/lib/runtime/OomSignalHandler.java:21: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/server/signal/AbstractSignalHandler.java:19: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/server/signal/AbstractSignalHandler.java:20: warning: SignalHandler is internal proprietary API and may be removed in a future release import sun.misc.SignalHandler; ^ src/main/java/com/google/devtools/build/lib/server/signal/InterruptSignalHandler.java:16: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/runtime/OomSignalHandler.java:21: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/server/signal/AbstractSignalHandler.java:19: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/server/signal/AbstractSignalHandler.java:20: warning: SignalHandler is internal proprietary API and may be removed in a future release import sun.misc.SignalHandler; ^ src/main/java/com/google/devtools/build/lib/server/signal/InterruptSignalHandler.java:16: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/runtime/OomSignalHandler.java:21: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/server/signal/AbstractSignalHandler.java:19: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ src/main/java/com/google/devtools/build/lib/server/signal/AbstractSignalHandler.java:20: warning: SignalHandler is internal proprietary API and may be removed in a future release import sun.misc.SignalHandler; ^ src/main/java/com/google/devtools/build/lib/server/signal/InterruptSignalHandler.java:16: warning: Signal is internal proprietary API and may be removed in a future release import sun.misc.Signal; ^ /tmp/bazel_5dj0a0iQ/src/com/google/devtools/build/lib/remote/CasServiceGrpc.java:503: error: cannot find symbol private static final class CasServiceDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier { ^ symbol: class ProtoFileDescriptorSupplier location: package io.grpc.protobuf /tmp/bazel_5dj0a0iQ/src/com/google/devtools/build/lib/remote/ExecuteServiceGrpc.java:208: error: cannot find symbol private static final class ExecuteServiceDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier { ^ symbol: class ProtoFileDescriptorSupplier location: package io.grpc.protobuf /tmp/bazel_5dj0a0iQ/src/com/google/devtools/build/lib/remote/ExecutionCacheServiceGrpc.java:285: error: cannot find symbol private static final class ExecutionCacheServiceDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier { ^ symbol: class ProtoFileDescriptorSupplier location: package io.grpc.protobuf /tmp/bazel_5dj0a0iQ/src/com/google/devtools/build/lib/server/CommandServerGrpc.java:334: error: cannot find symbol private static final class CommandServerDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier { ^ symbol: class ProtoFileDescriptorSupplier location: package io.grpc.protobuf 4 errors 12 warnings

llhhbc commented 7 years ago

my environments are: PROTOC_HOME=/home/go/deepmind/bin/protoc

export PATH=$PATH:$PROTOC_HOME/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PROTOC_HOME/lib

for grpc

export CXXFLAGS="-I/home/go/deepmind/bin/protoc/include" LDFLAGS="-L/home/go/deepmind/bin/protoc/lib"

for bazel

export PROTOC=$PROTOC_HOME/bin/protoc export GRPC_JAVA_PLUGIN=/home/go/deepmind/grpc-java/compiler/build/exe/java_plugin/protoc-gen-grpc-java

$PROTOC --version libprotoc 3.1.0

hlopko commented 7 years ago

Hi @llhhbc,

it looks like you cloned a repo and called ./compile.sh, is it so? Because of a circular dependency between bazel and protobuf, if you want to build from scratch, you have to download a distribution artifact. Or you can clone a repo, but then build it with bazel build //src:bazel. Obviously you need to have bazel binary for that.

More info here.

I'll close this now, feel free to reopen if this isn't what's happening to you. Cheers!

aehlig commented 7 years ago

$PROTOC --version libprotoc 3.1.0

This is the problem. While it still works building from a checkout when providing a protoc, it has to be precisely the right version of protoc. As you can see from the sources, bazel currenlty uses version 3.0.0. To avoid those problems, we recommend downloading a distribution artefact to build the first bazel binary on your machine and then build development versions via bazel build //src:bazel, as @mhlopko explained.

-- Klaus Aehlig Google Germany GmbH, Erika-Mann-Str. 33, 80636 Muenchen Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschaeftsfuehrer: Matthew Scott Sucherman, Paul Terence Manicle

msarahan commented 7 years ago

Any recommendations for CentOS 6? Its glibc is 2.12, but your binaries seem to require newer.

hhclam commented 7 years ago

I just ran into this issue. This has to do with Bazel still using an old version of grpc-java and you run ./compile.sh manually and the version of protoc-gen-grpc-java is newer than the one in Bazel.

You can either downgrade the version of protoc-gen-grpc-java to version 0.15. You can also install the Bazel binaries and use it.

The reason behind this failure is that Bazel requires gRPC to communicate between the c++ frontend and the Java daemon. Normally Bazel has the source code for grpc-java protoc plugin and BUILD rule to build it, but if you're building from scratch you need the pre-built protoc and grpc plugin to bootstrap. And the version mismatch causes the problem.