Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable bazel build for gcc 4.8, upgrade versions for grpc and bazel, document bazel support #953

Merged
merged 13 commits into from
Aug 19, 2021
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -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

2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.7.2
4.2.0
50 changes: 26 additions & 24 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,29 +128,31 @@ 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 build is disabled for gcc 4.8 compiler as grpc lib
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd say just remove this instead of comment. It's unlikely we can bring it back and of we need it it's in git history.

# used for otlp exporter doesn't work with gcc4.8
#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
Expand Down Expand Up @@ -272,7 +274,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
Expand Down
2 changes: 2 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
ThomsonTan marked this conversation as resolved.
Show resolved Hide resolved

### Prerequisites for Bazel

- A supported platform (e.g. Windows, macOS or Linux).
Expand Down
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
12 changes: 6 additions & 6 deletions bazel/repository.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
)

Expand Down
9 changes: 9 additions & 0 deletions ci/do_ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion ci/install_bazelisk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion ci/setup_grpc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down