diff --git a/.bazelrc b/.bazelrc index 7a1fead515..7127e8fc0a 100644 --- a/.bazelrc +++ b/.bazelrc @@ -22,3 +22,4 @@ common:tsan --cc_output_directory_tag=tsan # This is needed to address false positive problem with abseil.The same setting as gRPC # https://github.com/google/sanitizers/issues/953 common:tsan --test_env=TSAN_OPTIONS=report_atomic_races=0 + diff --git a/.bazelversion b/.bazelversion index 0b2eb36f50..6aba2b245a 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -3.7.2 +4.2.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 788982121d..514b86ff3b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -128,30 +128,6 @@ jobs: - name: run tests run: ./ci/do_ci.sh cmake.test_example_plugin - bazel_gcc_48_test: - name: Bazel gcc 4.8 - runs-on: ubuntu-18.04 - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - name: Mount Bazel Cache - uses: actions/cache@v2 - env: - cache-name: bazel_cache - with: - path: /home/runner/.cache/bazel - key: bazel_gcc_48_test - - name: setup - run: | - sudo ./ci/setup_ci_environment.sh - sudo ./ci/install_bazelisk.sh - sudo ./ci/install_gcc48.sh - - name: run tests - run: ./ci/do_ci.sh bazel.legacy.test - env: - CC: /usr/bin/gcc-4.8 - bazel_test: name: Bazel runs-on: ubuntu-latest @@ -272,7 +248,7 @@ jobs: path: /Users/runner/.cache/bazel key: bazel_osx - name: run tests - run: ./ci/do_ci.sh bazel.test + run: ./ci/do_ci.sh bazel.macos.test benchmark: name: Benchmark diff --git a/INSTALL.md b/INSTALL.md index 27523dc598..b8864911cd 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -133,6 +133,8 @@ target_link_libraries(foo PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES}) ## Build instructions using Bazel +NOTE: Experimental, and not supported for all the components. + ### Prerequisites for Bazel - A supported platform (e.g. Windows, macOS or Linux). diff --git a/README.md b/README.md index 3fea28d577..b1304752d5 100644 --- a/README.md +++ b/README.md @@ -47,11 +47,16 @@ of the current project. Our CI pipeline builds and tests on following `x86-64` platforms: -* ubuntu-18.04 (Default GCC Compiler - 7.5.0) -* ubuntu-18.04 (GCC 4.8 with -std=c++11 flag) -* ubuntu-20.04 (Default GCC Compiler - 9.3.0 with -std=c++20 flags) -* macOS 10.15 (Xcode 12.2) -* Windows Server 2019 (Visual Studio Enterprise 2019) +| Platform | Build type | +|---------------------------------------------------------------------|---------------| +| ubuntu-18.04 (Default GCC Compiler - 7.5.0) | CMake, Bazel | +| ubuntu-18.04 (GCC 4.8 with -std=c++11 flag) | CMake [1] | +| ubuntu-20.04 (Default GCC Compiler - 9.3.0 with -std=c++20 flags) | CMake, Bazel | +| macOS 10.15 (Xcode 12.2) | Bazel | +| Windows Server 2019 (Visual Studio Enterprise 2019) | CMake, Bazel | + +[1]: Bazel build is disabled for GCC 4.8, as GRPC library ( required by OTLP expoter) + doesn't build with this compiler. CMake build won't build OTLP exporter with GCC 4.8. In general, the code shipped from this repository should build on all platforms having C++ compiler with [supported C++ standards](#supported-c-versions). diff --git a/bazel/repository.bzl b/bazel/repository.bzl index af35dece2d..73ea34fce6 100644 --- a/bazel/repository.bzl +++ b/bazel/repository.bzl @@ -32,20 +32,20 @@ def opentelemetry_cpp_deps(): maybe( http_archive, name = "com_github_grpc_grpc_legacy", - sha256 = "2060769f2d4b0d3535ba594b2ab614d7f68a492f786ab94b4318788d45e3278a", - strip_prefix = "grpc-1.33.2", + sha256 = "024118069912358e60722a2b7e507e9c3b51eeaeee06e2dd9d95d9c16f6639ec", + strip_prefix = "grpc-1.39.1", urls = [ - "https://github.com/grpc/grpc/archive/v1.33.2.tar.gz", + "https://github.com/grpc/grpc/archive/v1.39.1.tar.gz", ], ) maybe( http_archive, name = "com_github_grpc_grpc", - sha256 = "2060769f2d4b0d3535ba594b2ab614d7f68a492f786ab94b4318788d45e3278a", - strip_prefix = "grpc-1.33.2", + sha256 = "024118069912358e60722a2b7e507e9c3b51eeaeee06e2dd9d95d9c16f6639ec", + strip_prefix = "grpc-1.39.1", urls = [ - "https://github.com/grpc/grpc/archive/v1.33.2.tar.gz", + "https://github.com/grpc/grpc/archive/v1.39.1.tar.gz", ], ) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 3c1be05119..7dfb2fe983 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -25,6 +25,11 @@ mkdir -p "${PLUGIN_DIR}" BAZEL_OPTIONS="--copt=-DENABLE_METRICS_PREVIEW --copt=-DENABLE_LOGS_PREVIEW" BAZEL_TEST_OPTIONS="$BAZEL_OPTIONS --test_output=errors" + +# https://github.com/bazelbuild/bazel/issues/4341 +BAZEL_MACOS_OPTIONS="$BAZEL_OPRIONS --features=-supports_dynamic_linker" +BAZEL_MACOS_TEST_OPTIONS="$BAZEL_MACOS_OPTIONS --test_output=errors" + BAZEL_STARTUP_OPTIONS="--output_user_root=$HOME/.cache/bazel" export CTEST_OUTPUT_ON_FAILURE=1 @@ -158,6 +163,10 @@ elif [[ "$1" == "bazel.test" ]]; then bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_OPTIONS //... bazel $BAZEL_STARTUP_OPTIONS test $BAZEL_TEST_OPTIONS //... exit 0 +elif [[ "$1" == "bazel.macos.test" ]]; then + bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_MACOS_OPTIONS //... + bazel $BAZEL_STARTUP_OPTIONS test $BAZEL_MACOS_TEST_OPTIONS //... + exit 0 elif [[ "$1" == "bazel.legacy.test" ]]; then # we uses C++ future and async() function to test the Prometheus Exporter functionality, # that make this test always fail. ignore Prometheus exporter here. diff --git a/ci/install_bazelisk.sh b/ci/install_bazelisk.sh index 0c3e90b167..d8b6781775 100755 --- a/ci/install_bazelisk.sh +++ b/ci/install_bazelisk.sh @@ -5,7 +5,7 @@ set -e -BAZELISK_VERSION=v1.7.4 +BAZELISK_VERSION=v1.10.1 wget -O /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/$BAZELISK_VERSION/bazelisk-linux-amd64 chmod +x /usr/local/bin/bazel diff --git a/ci/setup_grpc.sh b/ci/setup_grpc.sh index f6c1f9885a..f46e38c12c 100755 --- a/ci/setup_grpc.sh +++ b/ci/setup_grpc.sh @@ -6,7 +6,7 @@ set -e export DEBIAN_FRONTEND=noninteractive old_grpc_version='v1.33.2' -new_grpc_version='v1.39.0' +new_grpc_version='v1.39.1' gcc_version_for_new_grpc='5.1' install_grpc_version=${new_grpc_version} grpc_version='v1.39.0'