diff --git a/.devcontainer/Dockerfile.dev b/.devcontainer/Dockerfile.dev index e94e293acd..60efed9723 100644 --- a/.devcontainer/Dockerfile.dev +++ b/.devcontainer/Dockerfile.dev @@ -8,14 +8,8 @@ ARG USER_GID=1000 ARG INSTALL_PACKAGES= ARG CXX_STANDARD=17 -ARG ABSEIL_CPP_VERSION=20230125.3 -ARG PROTOBUF_VERSION=23.3 -ARG GRPC_VERSION=v1.55.0 ENV CXX_STANDARD=${CXX_STANDARD} -ENV ABSEIL_CPP_VERSION=${ABSEIL_CPP_VERSION} -ENV PROTOBUF_VERSION=${PROTOBUF_VERSION} -ENV GRPC_VERSION=${GRPC_VERSION} COPY ci /opt/ci @@ -23,17 +17,13 @@ RUN apt update && apt install -y wget \ ninja-build \ llvm-dev \ libclang-dev \ - libcurl4-openssl-dev \ clang-tidy \ shellcheck \ + sudo \ cmake RUN cd /opt/ci && bash setup_ci_environment.sh RUN cd /opt/ci && bash install_iwyu.sh -RUN cd /opt && bash ci/setup_googletest.sh \ - && bash ci/install_abseil.sh \ - && bash ci/install_protobuf.sh \ - && bash ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp ADD https://github.com/bazelbuild/bazelisk/releases/download/v1.22.1/bazelisk-linux-amd64 /usr/local/bin @@ -46,6 +36,7 @@ ENV USER_UID=${USER_UID} ENV USER_GID=${USER_GID} ENV IS_CONTAINER_BUILD=true +COPY install /opt/install COPY ./.devcontainer/customize_container.sh /tmp/opentelemetry_cpp/devcontainer/customize_container.sh RUN /tmp/opentelemetry_cpp/devcontainer/customize_container.sh RUN apt install -y npm && npm install -g markdownlint-cli@0.44.0 @@ -53,7 +44,9 @@ RUN apt install -y npm && npm install -g markdownlint-cli@0.44.0 USER devuser WORKDIR /workspaces/opentelemetry-cpp +RUN cd /opt && bash ci/install_thirdparty.sh --install-dir /home/devuser/third-party/install-stable --tags-file install/cmake/third_party_stable +ENV CMAKE_PREFIX_PATH=/home/devuser/third-party/install-stable ENTRYPOINT [] -CMD ["/bin/bash"] \ No newline at end of file +CMD ["/bin/bash"] diff --git a/.devcontainer/README.md b/.devcontainer/README.md index 2844f58341..c1cb3e1c92 100644 --- a/.devcontainer/README.md +++ b/.devcontainer/README.md @@ -10,26 +10,6 @@ environment variables (for evaluation in `devcontainer.json`). * Host Environment Variable: `OTEL_CPP_DEVCONTAINER_CXX_STANDARD` -* **abseil-cpp version:** - This is the version of abseil-cpp that will be used to build protobuf, gRPC, - and opentelemetry-cpp. - * Docker ARG: - `ABSEIL_CPP_VERSION` - * Host Environment Variable: - `OTEL_CPP_DEVCONTAINER_ABSEIL_CPP_VERSION` - -* **Protobuf version:** - * Docker ARG: - `PROTOBUF_VERSION` - * Host Environment Variable: - `OTEL_CPP_DEVCONTAINER_PROTOBUF_VERSION` - -* **gRPC version:** - * Docker ARG: - `GRPC_VERSION` - * Host Environment Variable: - `OTEL_CPP_DEVCONTAINER_GRPC_VERSION` - * **User ID (UID):** User ID (Default: `1000`) * Docker ARG: diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 98a0eec74c..954c1eaf7e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -11,10 +11,7 @@ "USER_UID": "${localEnv:OTEL_CPP_DEVCONTAINER_USER_UID:1000}", "USER_GID": "${localEnv:OTEL_CPP_DEVCONTAINER_USER_GID:1000}", "INSTALL_PACKAGES": "${localEnv:OTEL_CPP_DEVCONTAINER_INSTALL_PACKAGES:}", - "CXX_STANDARD": "${localEnv:OTEL_CPP_DEVCONTAINER_CXX_STANDARD:17}", - "GRPC_VERSION": "${localEnv:OTEL_CPP_DEVCONTAINER_GRPC_VERSION:v1.55.0}", - "PROTOBUF_VERSION": "${localEnv:OTEL_CPP_DEVCONTAINER_PROTOBUF_VERSION:23.3}", - "ABSEIL_CPP_VERSION":"${localEnv:OTEL_CPP_DEVCONTAINER_ABSEIL_CPP_VERSION:20230125.3}" + "CXX_STANDARD": "${localEnv:OTEL_CPP_DEVCONTAINER_CXX_STANDARD:17}" } }, "customizations": { diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7042b43ade..f65d49aeae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,17 +21,15 @@ jobs: # submodules: 'recursive' # - name: setup # env: -# PROTOBUF_VERSION: '23.3' -# ABSEIL_CPP_VERSION: '20230125.3' # CXX_STANDARD: '14' # CC: /usr/bin/gcc-10 # CXX: /usr/bin/g++-10 # run: | # sudo -E ./ci/setup_gcc10.sh # sudo -E ./ci/setup_ci_environment.sh -# sudo -E ./ci/setup_googletest.sh -# sudo -E ./ci/install_abseil.sh -# sudo -E ./ci/install_protobuf.sh +# - name: install dependencies +# run: | +# sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release cmake_test: name: CMake test (prometheus, elasticsearch, zipkin) @@ -84,32 +82,25 @@ jobs: cmake_gcc_maintainer_sync_test: name: CMake gcc 14 (maintainer mode, sync) runs-on: ubuntu-24.04 + env: + CC: /usr/bin/gcc-14 + CXX: /usr/bin/g++-14 + CXX_STANDARD: '14' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - name: setup - env: - CC: /usr/bin/gcc-14 - CXX: /usr/bin/g++-14 - PROTOBUF_VERSION: 21.12 run: | - sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - sudo -E ./ci/install_protobuf.sh - - name: setup grpc + - name: install dependencies run: | - sudo ./ci/setup_grpc.sh + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run cmake gcc (maintainer mode, sync) - env: - CC: /usr/bin/gcc-14 - CXX: /usr/bin/g++-14 run: | ./ci/do_ci.sh cmake.maintainer.sync.test - name: generate test cert @@ -125,32 +116,25 @@ jobs: cmake_gcc_maintainer_async_test: name: CMake gcc 14 (maintainer mode, async) runs-on: ubuntu-24.04 + env: + CC: /usr/bin/gcc-14 + CXX: /usr/bin/g++-14 + CXX_STANDARD: '14' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - name: setup - env: - CC: /usr/bin/gcc-14 - CXX: /usr/bin/g++-14 - PROTOBUF_VERSION: 21.12 run: | - sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - sudo -E ./ci/install_protobuf.sh - - name: setup grpc + - name: install dependencies run: | - sudo ./ci/setup_grpc.sh + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run cmake gcc (maintainer mode, async) - env: - CC: /usr/bin/gcc-14 - CXX: /usr/bin/g++-14 run: | ./ci/do_ci.sh cmake.maintainer.async.test - name: generate test cert @@ -166,32 +150,25 @@ jobs: cmake_clang_maintainer_sync_test: name: CMake clang 18 (maintainer mode, sync) runs-on: ubuntu-24.04 + env: + CC: /usr/bin/clang-18 + CXX: /usr/bin/clang++-18 + CXX_STANDARD: '14' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - name: setup - env: - CC: /usr/bin/clang-18 - CXX: /usr/bin/clang++-18 - PROTOBUF_VERSION: 21.12 run: | - sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - sudo -E ./ci/install_protobuf.sh - - name: setup grpc + - name: install dependencies run: | - sudo ./ci/setup_grpc.sh + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run cmake clang (maintainer mode, sync) - env: - CC: /usr/bin/clang-18 - CXX: /usr/bin/clang++-18 run: | ./ci/do_ci.sh cmake.maintainer.sync.test - name: generate test cert @@ -207,32 +184,25 @@ jobs: cmake_clang_maintainer_async_test: name: CMake clang 18 (maintainer mode, async) runs-on: ubuntu-24.04 + env: + CC: /usr/bin/clang-18 + CXX: /usr/bin/clang++-18 + CXX_STANDARD: '14' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - name: setup - env: - CC: /usr/bin/clang-18 - CXX: /usr/bin/clang++-18 - PROTOBUF_VERSION: 21.12 run: | - sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - sudo -E ./ci/install_protobuf.sh - - name: setup grpc + - name: install dependencies run: | - sudo ./ci/setup_grpc.sh + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run cmake clang (maintainer mode, async) - env: - CC: /usr/bin/clang-18 - CXX: /usr/bin/clang++-18 run: | ./ci/do_ci.sh cmake.maintainer.async.test - name: generate test cert @@ -248,32 +218,25 @@ jobs: cmake_clang_maintainer_abiv2_test: name: CMake clang 18 (maintainer mode, abiv2) runs-on: ubuntu-24.04 + env: + CC: /usr/bin/clang-18 + CXX: /usr/bin/clang++-18 + CXX_STANDARD: '14' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - name: setup - env: - CC: /usr/bin/clang-18 - CXX: /usr/bin/clang++-18 - PROTOBUF_VERSION: 21.12 run: | - sudo apt remove needrestart #refer: https://github.com/actions/runner-images/issues/9937 sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - sudo -E ./ci/install_protobuf.sh - - name: setup grpc + - name: install dependencies run: | - sudo ./ci/setup_grpc.sh + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run cmake clang (maintainer mode, abiv2) - env: - CC: /usr/bin/clang-18 - CXX: /usr/bin/clang++-18 run: | ./ci/do_ci.sh cmake.maintainer.abiv2.test - name: generate test cert @@ -566,10 +529,11 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh + - name: install dependencies + run: | + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run otlp exporter tests run: | - sudo ./ci/setup_grpc.sh ./ci/do_ci.sh cmake.exporter.otprotocol.test - name: generate test cert env: @@ -584,30 +548,24 @@ jobs: cmake_modern_protobuf_grpc_with_abseil_test: name: CMake test (with modern protobuf,grpc and abseil) runs-on: ubuntu-latest + env: + CXX_STANDARD: '14' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - name: setup - env: - PROTOBUF_VERSION: '23.3' - ABSEIL_CPP_VERSION: '20230125.3' - CXX_STANDARD: '14' run: | sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - sudo -E ./ci/install_abseil.sh - sudo -E ./ci/install_protobuf.sh + - name: install dependencies + run: | + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_stable - name: run otlp exporter tests - env: - CXX_STANDARD: '14' run: | - sudo -E ./ci/setup_grpc.sh -m -p protobuf -p abseil-cpp ./ci/do_ci.sh cmake.exporter.otprotocol.test cmake_do_not_install_test: @@ -625,10 +583,11 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh + - name: install dependencies + run: | + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run otlp exporter tests run: | - sudo ./ci/setup_grpc.sh ./ci/do_ci.sh cmake.do_not_install.test cmake_otprotocol_shared_libs_with_static_grpc_test: @@ -646,10 +605,11 @@ jobs: - name: setup run: | sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh + - name: install dependencies + run: | + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release - name: run otlp exporter tests run: | - sudo ./ci/setup_grpc.sh -T ./ci/do_ci.sh cmake.exporter.otprotocol.shared_libs.with_static_grpc.test plugin_test: @@ -951,7 +911,7 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: setup - run: sudo apt remove needrestart && sudo ./ci/install_format_tools.sh #refer: https://github.com/actions/runner-images/issues/9937 + run: sudo ./ci/install_format_tools.sh - name: run tests run: ./ci/do_ci.sh format diff --git a/.github/workflows/cmake_install.yml b/.github/workflows/cmake_install.yml index d93d0a5bbb..8b572de1c8 100644 --- a/.github/workflows/cmake_install.yml +++ b/.github/workflows/cmake_install.yml @@ -67,18 +67,17 @@ jobs: uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - - name: Install libcurl, zlib, nlohmann-json with apt + - name: Setup CI Environment run: | sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - - name: Install abseil, protobuf, and grpc with apt + - name: Install Dependencies run: | sudo -E apt-get update - sudo -E apt-get install -y libabsl-dev libprotobuf-dev libgrpc++-dev protobuf-compiler protobuf-compiler-grpc + sudo -E apt-get install -y libabsl-dev libcurl4-openssl-dev zlib1g-dev nlohmann-json3-dev libprotobuf-dev libgrpc++-dev protobuf-compiler protobuf-compiler-grpc + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file third_party_release --packages "googletest;benchmark" - name: Run Tests (static libs) env: BUILD_SHARED_LIBS: 'OFF' @@ -93,34 +92,22 @@ jobs: runs-on: ubuntu-24.04 env: INSTALL_TEST_DIR: '/home/runner/install_test' - # Set to the latest cxx standard supported by opentelemetry-cpp CXX_STANDARD: '20' - # Versions below set to the latest version available - # The abseil and protobuf versions are taken from - # the grpc submodules at the GRPC_VERSION tag - GOOGLETEST_VERSION: '1.16.0' - ABSEIL_CPP_VERSION: '20240722.1' - PROTOBUF_VERSION: '29.0' - GRPC_VERSION: 'v1.71.0' BUILD_TYPE: 'Debug' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - - name: Install gtest, libcurl, zlib, nlohmann-json with apt + - name: Setup CI Environment run: | sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - - name: Build abseil, protobuf, and grpc with ci scripts + - name: Install Dependencies run: | - sudo -E ./ci/install_abseil.sh - sudo -E ./ci/install_protobuf.sh - sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_latest - name: Run Tests (static libs) env: BUILD_SHARED_LIBS: 'OFF' @@ -132,31 +119,21 @@ jobs: env: INSTALL_TEST_DIR: '/home/runner/install_test' CXX_STANDARD: '17' - # These are stable versions tested in the main ci workflow - # and defaults in the devcontainer - GOOGLETEST_VERSION: '1.14.0' - ABSEIL_CPP_VERSION: '20230125.3' - PROTOBUF_VERSION: '23.3' - GRPC_VERSION: 'v1.55.0' BUILD_TYPE: 'Debug' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - - name: Install gtest, libcurl, zlib, nlohmann-json with apt + - name: Setup CI Environment run: | sudo -E ./ci/setup_ci_environment.sh - sudo -E ./ci/setup_googletest.sh - - name: Build abseil, protobuf, and grpc with ci scripts + - name: Install Dependencies run: | - sudo -E ./ci/install_abseil.sh - sudo -E ./ci/install_protobuf.sh - sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_stable - name: Run Tests (static libs) env: BUILD_SHARED_LIBS: 'OFF' @@ -175,32 +152,22 @@ jobs: CMAKE_VERSION: '3.14.0' # cxx14 is the default for Ubuntu 22.04 CXX_STANDARD: '14' - # This is the apt package version of googletest for Ubuntu 22.04 - GOOGLETEST_VERSION: '1.11.0' - # These are minimum versions tested in the main ci workflow - ABSEIL_CPP_VERSION: '20220623.2' - PROTOBUF_VERSION: '21.12' - GRPC_VERSION: 'v1.49.2' BUILD_TYPE: 'Debug' steps: - name: Harden the runner (Audit all outbound calls) uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1 with: egress-policy: audit - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: 'recursive' - - name: Install gtest, libcurl, zlib, nlohmann-json with apt + - name: Setup CI Environment run: | sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh - sudo -E ./ci/setup_googletest.sh - - name: Build abseil, protobuf, and grpc with ci scripts + - name: Install Dependencies run: | - sudo -E ./ci/install_abseil.sh - sudo -E ./ci/install_protobuf.sh - sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp + sudo -E ./ci/install_thirdparty.sh --install-dir /usr/local --tags-file install/cmake/third_party_minimum - name: Run Tests (static libs) env: BUILD_SHARED_LIBS: 'OFF' diff --git a/ci/install_thirdparty.sh b/ci/install_thirdparty.sh new file mode 100755 index 0000000000..f9cf742968 --- /dev/null +++ b/ci/install_thirdparty.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +set -e + +usage() { + echo "Usage: $0 --install-dir [--tags-file ] [--packages \";\"]" + echo " --install-dir Path where third-party packages will be installed (required)" + echo " --tags-file File containing tags for third-party packages (optional)" + echo " --packages \";;...\" Semicolon-separated list of packages to build (optional). Default installs all third-party packages." + echo " -h, --help Show this help message" +} + +THIRDPARTY_TAGS_FILE="" +THIRDPARTY_PACKAGES="" +SRC_DIR="$(pwd)" +THIRDPARTY_INSTALL_DIR="" + +while [[ $# -gt 0 ]]; do + case $1 in + --install-dir) + if [ -z "$2" ] || [[ "$2" == --* ]]; then + echo "Error: --install-dir requires a value" >&2 + usage + exit 1 + fi + THIRDPARTY_INSTALL_DIR="$2" + shift 2 + ;; + --tags-file) + if [ -z "$2" ] || [[ "$2" == --* ]]; then + echo "Error: --tags-file requires a value" >&2 + usage + exit 1 + fi + THIRDPARTY_TAGS_FILE="$2" + shift 2 + ;; + --packages) + if [ -z "$2" ] || [[ "$2" == --* ]]; then + echo "Error: --packages requires a value" >&2 + usage + exit 1 + fi + THIRDPARTY_PACKAGES="$2" + shift 2 + ;; + -h|--help) + usage + exit 0 + ;; + *) + echo "Unknown option: $1" >&2 + usage + exit 1 + ;; + esac +done + +if [ -z "${THIRDPARTY_INSTALL_DIR}" ]; then + echo "Error: --install-dir is a required argument." >&2 + usage + exit 1 +fi + +if [ -z "${CXX_STANDARD}" ]; then + CXX_STANDARD=14 +fi + +THIRDPARTY_BUILD_DIR="/tmp/otel-cpp-third-party-build" + +if [ -d "${THIRDPARTY_BUILD_DIR}" ]; then + rm -rf "${THIRDPARTY_BUILD_DIR}" +fi + +cmake -S "${SRC_DIR}/install/cmake" -B "${THIRDPARTY_BUILD_DIR}" \ + "-DCMAKE_INSTALL_PREFIX=${THIRDPARTY_INSTALL_DIR}" \ + "-DCMAKE_CXX_STANDARD=${CXX_STANDARD}" \ + "-DOTELCPP_THIRDPARTY_TAGS_FILE=${THIRDPARTY_TAGS_FILE}" \ + "-DOTELCPP_PROTO_PATH=${OTELCPP_PROTO_PATH}" \ + "-DOTELCPP_THIRDPARTY_INSTALL_LIST=${THIRDPARTY_PACKAGES}" + +cmake --build "${THIRDPARTY_BUILD_DIR}" --clean-first -j"$(nproc)" + +if [ "${THIRDPARTY_INSTALL_DIR}" = "/usr/local" ]; then + ldconfig +fi + +echo "Third-party packages installed successfully." +echo "-- THIRDPARTY_INSTALL_DIR: ${THIRDPARTY_INSTALL_DIR}" +echo "-- THIRDPARTY_TAGS_FILE: ${THIRDPARTY_TAGS_FILE}" +echo "-- THIRDPARTY_PACKAGES: ${THIRDPARTY_PACKAGES:-all}" +echo "-- CXX_STANDARD: ${CXX_STANDARD}" diff --git a/install/cmake/CMakeLists.txt b/install/cmake/CMakeLists.txt new file mode 100644 index 0000000000..e999e2dd1d --- /dev/null +++ b/install/cmake/CMakeLists.txt @@ -0,0 +1,465 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +# This file uses CMake's ExternalProject module to populate, build, and install +# all opentelemetry-cpp dependencies + +# Input variables: +# +# OTELCPP_THIRDPARTY_TAGS_FILE: Relative path to the file containing third-party +# release git tags. +# +# OTELCPP_THIRDPARTY_INSTALL_LIST: List of third-party packages to install. If +# not set, all supported packages from the tags file will be installed. +# +# OTELCPP_PROTO_PATH: Path to the opentelemetry-proto source directory. If not +# set, the opentelemetry-proto package will not be installed. +# +# CMAKE_BUILD_TYPE: The build type to use for all third-party packages +# +# CMAKE_INSTALL_PREFIX: The installation prefix for all third-party packages. +# +# CMAKE_CXX_STANDARD: The C++ standard to use for all third-party packages. +# Defaults to 14 if not set. + +cmake_minimum_required(VERSION 3.14) +project(opentelemetry-cpp-thirdparty-install LANGUAGES CXX) + +# Added in CMake 3.16. ExternalProject_Add() with GIT_SUBMODULES "" initializes +# no submodules. +if(POLICY CMP0097) + cmake_policy(SET CMP0097 NEW) +endif() + +# Added in CMake 3.19 ExternalProject step targets fully adopt their steps. This +# is required for parallel builds. +if(POLICY CMP0114) + cmake_policy(SET CMP0114 NEW) +endif() + +include(ExternalProject) + +# Set the third-party version tags file to read. +set(OTELCPP_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../..") +get_filename_component(OTELCPP_SOURCE_DIR "${OTELCPP_SOURCE_DIR}" ABSOLUTE) + +if(NOT OTELCPP_THIRDPARTY_TAGS_FILE) + set(OTELCPP_THIRDPARTY_TAGS_FILE "${OTELCPP_SOURCE_DIR}/third_party_release") +elseif(NOT IS_ABSOLUTE OTELCPP_THIRDPARTY_TAGS_FILE) + string(PREPEND OTELCPP_THIRDPARTY_TAGS_FILE "${OTELCPP_SOURCE_DIR}/") +endif() + +file(STRINGS "${OTELCPP_THIRDPARTY_TAGS_FILE}" _THIRDPARTY_FILE_CONTENT) +set(_THIRDPARTY_PACKAGE_LIST "") + +# Parse the third-party tags file +foreach(_raw_line IN LISTS _THIRDPARTY_FILE_CONTENT) + string(STRIP "${_raw_line}" _line) + if(_line STREQUAL "" OR _line MATCHES "^#") + continue() + endif() + + # Match "package_name=git_tag" + if(_line MATCHES "^([^=]+)=(.+)$") + set(_package "${CMAKE_MATCH_1}") + set(_git_tag "${CMAKE_MATCH_2}") + + # If a list of packages is not specified, install all packages. + if(OTELCPP_THIRDPARTY_INSTALL_LIST AND NOT _package IN_LIST + OTELCPP_THIRDPARTY_INSTALL_LIST) + continue() + endif() + + set("${_package}_GIT_TAG" "${_git_tag}") + list(APPEND _THIRDPARTY_PACKAGE_LIST "${_package}") + message(STATUS " - ${_package}: ${${_package}_GIT_TAG}") + else() + message( + FATAL_ERROR + "Could not parse third-party tag. Invalid line in ${OTELCPP_THIRDPARTY_TAGS_FILE}. Line:\n ${_raw_line}" + ) + endif() +endforeach() + +# Use submodules if the third-party tags file is the default +# `third_party_release` file. +if(OTELCPP_THIRDPARTY_TAGS_FILE STREQUAL + "${OTELCPP_SOURCE_DIR}/third_party_release") + set(USE_SUBMODULES ON) +else() + set(USE_SUBMODULES OFF) +endif() + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() + +set(CMAKE_OPTIONS + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" + "-DCMAKE_PREFIX_PATH=${CMAKE_INSTALL_PREFIX}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_CXX_STANDARD_REQUIRED=ON" + "-DCMAKE_CXX_EXTENSIONS=OFF" + "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") + +message(STATUS "Installing third-party packages....") +message(STATUS " opentelemetry-cpp_SOURCE_DIR = ${OTELCPP_SOURCE_DIR}") +message(STATUS " third-party packages = ${_THIRDPARTY_PACKAGE_LIST}") +message(STATUS " third-party tags file = ${OTELCPP_THIRDPARTY_TAGS_FILE}") +message(STATUS " opentelemetry-proto path = ${OTELCPP_PROTO_PATH}") +message(STATUS " CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}") +message(STATUS " CMAKE_OPTIONS=${CMAKE_OPTIONS}") +message(STATUS " USE_SUBMODULES=${USE_SUBMODULES}") + +# ------------------------------------------------------------------------ +# ---- zlib ---- +if(zlib IN_LIST _THIRDPARTY_PACKAGE_LIST) + if(NOT zlib_GIT_TAG) + message(FATAL_ERROR "zlib_GIT_TAG is not set") + endif() + + ExternalProject_Add( + zlib + STEP_TARGETS install + GIT_REPOSITORY "https://github.com/madler/zlib.git" + GIT_TAG ${zlib_GIT_TAG} + GIT_SHALLOW ON + PREFIX ${CMAKE_BINARY_DIR}/external/zlib + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DZLIB_BUILD_EXAMPLES=OFF") +endif() + +# ------------------------------------------------------------------------ +# ---- curl ---- +if(curl IN_LIST _THIRDPARTY_PACKAGE_LIST) + if(NOT curl_GIT_TAG) + message(FATAL_ERROR "curl_GIT_TAG is not set") + endif() + ExternalProject_Add( + curl + DEPENDS zlib + STEP_TARGETS build install + GIT_REPOSITORY "https://github.com/curl/curl.git" + GIT_TAG ${curl_GIT_TAG} + GIT_SHALLOW ON + PREFIX ${CMAKE_BINARY_DIR}/external/curl + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" + "-DCURL_USE_LIBPSL=OFF" + "-DBUILD_CURL_EXE=OFF" + "-DBUILD_LIBCURL_DOCS=OFF" + "-DBUILD_MISC_DOCS=OFF" + "-DENABLE_CURL_MANUAL=OFF" + "-DBUILD_SHARED_LIBS=ON") + + add_dependencies(curl-build zlib-install) +endif() + +# ------------------------------------------------------------------------ +# ---- abseil-cpp ---- +if(abseil IN_LIST _THIRDPARTY_PACKAGE_LIST) + if(NOT abseil_GIT_TAG) + message(FATAL_ERROR "abseil_GIT_TAG is not set") + endif() + ExternalProject_Add( + abseil + STEP_TARGETS install + GIT_REPOSITORY "https://github.com/abseil/abseil-cpp.git" + GIT_TAG ${abseil_GIT_TAG} + GIT_SHALLOW ON + PREFIX ${CMAKE_BINARY_DIR}/external/abseil + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DABSL_BUILD_TESTING=OFF" + "-DABSL_ENABLE_INSTALL=ON") +endif() + +# ------------------------------------------------------------------------ +# ---- protobuf ---- + +if(protobuf IN_LIST _THIRDPARTY_PACKAGE_LIST) + if(NOT protobuf_GIT_TAG) + message(FATAL_ERROR "protobuf_GIT_TAG is not set") + endif() + ExternalProject_Add( + protobuf + STEP_TARGETS build install + DEPENDS zlib abseil + GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git" + GIT_TAG ${protobuf_GIT_TAG} + GIT_SHALLOW ON + GIT_SUBMODULES "" + PREFIX ${CMAKE_BINARY_DIR}/external/protobuf + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" + "-Dprotobuf_WITH_ZLIB=ON" + "-Dprotobuf_ZLIB_PROVIDER=package" + "-Dprotobuf_ABSL_PROVIDER=package" + "-Dprotobuf_INSTALL=ON" + "-Dprotobuf_BUILD_TESTS=OFF" + "-Dprotobuf_BUILD_EXAMPLES=OFF") + + add_dependencies(protobuf-build zlib-install abseil-install) +endif() +# ------------------------------------------------------------------------ +# ---- grpc ---- +if(grpc IN_LIST _THIRDPARTY_PACKAGE_LIST) + if(NOT grpc_GIT_TAG) + message(FATAL_ERROR "grpc_GIT_TAG is not set") + endif() + ExternalProject_Add( + grpc + DEPENDS zlib abseil protobuf + STEP_TARGETS build + GIT_REPOSITORY "https://github.com/grpc/grpc.git" + GIT_TAG ${grpc_GIT_TAG} + GIT_SHALLOW ON + GIT_SUBMODULES "third_party/re2" "third_party/cares/cares" + "third_party/boringssl-with-bazel" + PREFIX ${CMAKE_BINARY_DIR}/external/grpc + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" + "-DgRPC_INSTALL=ON" + "-DgRPC_BUILD_TESTS=OFF" + "-DgRPC_BUILD_GRPC_CPP_PLUGIN=ON" + "-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF" + "-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF" + "-DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=OFF" + "-DRE2_BUILD_TESTING=OFF" + "-DgRPC_ZLIB_PROVIDER=package" + "-DgRPC_PROTOBUF_PROVIDER=package" + "-DgRPC_ABSL_PROVIDER=package") + + add_dependencies(grpc-build zlib-install abseil-install protobuf-install) +endif() +# ------------------------------------------------------------------------ +# ---- benchmark ---- +if(benchmark IN_LIST _THIRDPARTY_PACKAGE_LIST) + set(benchmark_ARGS "") + if(USE_SUBMODULES AND EXISTS + "${OTELCPP_SOURCE_DIR}/third_party/benchmark/.git") + message(STATUS "Using submodule for benchmark") + list(APPEND benchmark_ARGS SOURCE_DIR + "${OTELCPP_SOURCE_DIR}/third_party/benchmark") + else() + if(NOT benchmark_GIT_TAG) + message(FATAL_ERROR "benchmark_GIT_TAG is not set") + endif() + list( + APPEND + benchmark_ARGS + SOURCE_DIR + GIT_REPOSITORY + "https://github.com/google/benchmark.git" + GIT_TAG + ${benchmark_GIT_TAG} + GIT_SHALLOW + ON) + endif() + + ExternalProject_Add( + benchmark + ${benchmark_ARGS} + PREFIX ${CMAKE_BINARY_DIR}/external/benchmark + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DBENCHMARK_ENABLE_TESTING=OFF" + "-DBENCHMARK_ENABLE_INSTALL=ON" "-DBUILD_SHARED_LIBS=ON" + "-DBENCHMARK_INSTALL_DOCS=OFF") +endif() + +# ----------------------------------------------------------------------- +# ---- googletest ---- + +if(googletest IN_LIST _THIRDPARTY_PACKAGE_LIST) + set(googletest_ARGS "") + if(USE_SUBMODULES AND EXISTS + "${OTELCPP_SOURCE_DIR}/third_party/googletest/.git") + message(STATUS "Using submodule for googletest") + list(APPEND googletest_ARGS SOURCE_DIR + "${OTELCPP_SOURCE_DIR}/third_party/googletest") + else() + if(NOT googletest_GIT_TAG) + message(FATAL_ERROR "googletest_GIT_TAG is not set") + endif() + list( + APPEND + googletest_ARGS + GIT_REPOSITORY + "https://github.com/google/googletest.git" + GIT_TAG + ${googletest_GIT_TAG} + GIT_SHALLOW + ON) + endif() + + ExternalProject_Add( + googletest + ${googletest_ARGS} + PREFIX ${CMAKE_BINARY_DIR}/external/googletest + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DINSTALL_GTEST=ON" "-DBUILD_GMOCK=ON" + "-DBUILD_SHARED_LIBS=ON") +endif() + +# ---------------------------------------------------------------------- +# ---- Microsoft.GSL ---- + +if(ms-gsl IN_LIST _THIRDPARTY_PACKAGE_LIST) + set(ms-gsl_ARGS "") + if(USE_SUBMODULES AND EXISTS "${OTELCPP_SOURCE_DIR}/third_party/ms-gsl/.git") + message(STATUS "Using submodule for ms-gsl") + list(APPEND ms-gsl_ARGS SOURCE_DIR + "${OTELCPP_SOURCE_DIR}/third_party/ms-gsl") + else() + if(NOT ms-gsl_GIT_TAG) + message(FATAL_ERROR "ms-gsl_GIT_TAG is not set") + endif() + list( + APPEND + ms-gsl_ARGS + GIT_REPOSITORY + "https://github.com/microsoft/GSL.git" + GIT_TAG + ${ms-gsl_GIT_TAG} + GIT_SHALLOW + ON) + endif() + + ExternalProject_Add( + ms-gsl + ${ms-gsl_ARGS} + PREFIX ${CMAKE_BINARY_DIR}/external/ms-gsl + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DGSL_TEST=OFF" "-DGSL_INSTALL=ON") +endif() + +# ---------------------------------------------------------------------- +# ---- nlohmann-json ---- + +if(nlohmann-json IN_LIST _THIRDPARTY_PACKAGE_LIST) + + set(nlohmann-json_ARGS "") + if(USE_SUBMODULES AND EXISTS + "${OTELCPP_SOURCE_DIR}/third_party/nlohmann-json/.git") + message(STATUS "Using submodule for nlohmann-json") + list(APPEND nlohmann-json_ARGS SOURCE_DIR + "${OTELCPP_SOURCE_DIR}/third_party/nlohmann-json") + else() + if(NOT nlohmann-json_GIT_TAG) + message(FATAL_ERROR "nlohmann-json_GIT_TAG is not set") + endif() + list( + APPEND + nlohmann-json_ARGS + GIT_REPOSITORY + "https://github.com/nlohmann/json.git" + GIT_TAG + ${nlohmann-json_GIT_TAG} + GIT_SHALLOW + ON) + endif() + + ExternalProject_Add( + nlohmann-json + ${nlohmann-json_ARGS} + PREFIX ${CMAKE_BINARY_DIR}/external/nlohmann-json + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DJSON_BuildTests=OFF" "-DJSON_Install=ON" + "-DJSON_MultipleHeaders=OFF") +endif() + +# ---------------------------------------------------------------------- +# ---- opentelemetry-proto ---- +if(OTELCPP_PROTO_PATH AND opentelemetry-proto IN_LIST _THIRDPARTY_PACKAGE_LIST) + if(NOT opentelemetry-proto_GIT_TAG) + message(FATAL_ERROR "opentelemetry-proto_GIT_TAG is not set") + endif() + ExternalProject_Add( + opentelemetry-proto + GIT_REPOSITORY "https://github.com/open-telemetry/opentelemetry-proto.git" + GIT_TAG ${opentelemetry-proto_GIT_TAG} + GIT_SHALLOW ON + SOURCE_DIR ${OTELCPP_PROTO_PATH} + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "") +endif() + +# ---------------------------------------------------------------------- +# ---- opentracing-cpp ---- + +if(opentracing-cpp IN_LIST _THIRDPARTY_PACKAGE_LIST) + set(opentracing-cpp_ARGS "") + if(USE_SUBMODULES + AND EXISTS "${OTELCPP_SOURCE_DIR}/third_party/opentracing-cpp/.git") + message(STATUS "Using submodule for opentracing-cpp") + list(APPEND opentracing-cpp_ARGS SOURCE_DIR + "${OTELCPP_SOURCE_DIR}/third_party/opentracing-cpp" + ${opentracing-cpp_ARGS}) + else() + if(NOT opentracing-cpp_GIT_TAG) + message(FATAL_ERROR "opentracing-cpp_GIT_TAG is not set") + endif() + list( + APPEND + opentracing-cpp_ARGS + GIT_REPOSITORY + "https://github.com/opentracing/opentracing-cpp.git" + GIT_TAG + ${opentracing-cpp_GIT_TAG} + GIT_SHALLOW + ON) + endif() + + ExternalProject_Add( + opentracing-cpp + ${opentracing-cpp_ARGS} + PREFIX ${CMAKE_BINARY_DIR}/external/opentracing-cpp + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DBUILD_TESTING=OFF") +endif() + +# ---------------------------------------------------------------------- +# ---- prometheus-cpp ---- + +if(prometheus-cpp IN_LIST _THIRDPARTY_PACKAGE_LIST) + + set(prometheus-cpp_ARGS "") + if(USE_SUBMODULES AND EXISTS + "${OTELCPP_SOURCE_DIR}/third_party/prometheus-cpp/.git") + message(STATUS "Using submodule for prometheus-cpp") + list(APPEND prometheus-cpp_ARGS SOURCE_DIR + "${OTELCPP_SOURCE_DIR}/third_party/prometheus-cpp") + else() + if(NOT prometheus-cpp_GIT_TAG) + message(FATAL_ERROR "prometheus-cpp_GIT_TAG is not set") + endif() + list( + APPEND + prometheus-cpp_ARGS + GIT_REPOSITORY + "https://github.com/jupp0r/prometheus-cpp.git" + GIT_TAG + "${prometheus-cpp_GIT_TAG}" + GIT_SHALLOW + ON + GIT_SUBMODULES + "3rdparty/civetweb") + endif() + + ExternalProject_Add( + prometheus-cpp + ${prometheus-cpp_ARGS} + PREFIX ${CMAKE_BINARY_DIR}/external/prometheus-cpp + INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + STEP_TARGETS build + DEPENDS zlib curl + CMAKE_ARGS "${CMAKE_OPTIONS}" "-DENABLE_TESTING=OFF" "-DENABLE_PUSH=ON" + "-DENABLE_PULL=ON") + + add_dependencies(prometheus-cpp-build zlib-install curl-install) +endif() diff --git a/install/cmake/third_party_latest b/install/cmake/third_party_latest new file mode 100644 index 0000000000..3c86596928 --- /dev/null +++ b/install/cmake/third_party_latest @@ -0,0 +1,18 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +# Latest version git tags of third-party dependencies +# Format: = + +abseil=20240722.1 +zlib=v1.3.1 +curl=curl-8_14_1 +protobuf=v6.30.2 +grpc=v1.72.1 +benchmark=v1.9.4 +googletest=v1.17.0 +ms-gsl=v4.2.0 +nlohmann-json=v3.12.0 +opentelemetry-proto=v1.7.0 +opentracing-cpp=v1.6.0 +prometheus-cpp=v1.3.0 diff --git a/install/cmake/third_party_minimum b/install/cmake/third_party_minimum new file mode 100644 index 0000000000..004c8e597a --- /dev/null +++ b/install/cmake/third_party_minimum @@ -0,0 +1,18 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +# Minimum supported version git tags of third-party dependencies +# Format: = + +abseil=20220623.2 +zlib=v1.2.11 +curl=curl-7_81_0 +protobuf=v3.21.6 +grpc=v1.49.2 +benchmark=v1.6.1 +googletest=v1.12.0 +ms-gsl=v3.1.0 +nlohmann-json=v3.10.5 +opentelemetry-proto=v1.6.0 +opentracing-cpp=v1.6.0 +prometheus-cpp=v1.1.0 diff --git a/install/cmake/third_party_stable b/install/cmake/third_party_stable new file mode 100644 index 0000000000..9201ee4f10 --- /dev/null +++ b/install/cmake/third_party_stable @@ -0,0 +1,18 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +# "Stable" version git tags for third-party dependencies +# Format: = + +abseil=20230125.3 +zlib=v1.3.1 +curl=curl-8_12_0 +protobuf=v4.23.1 +grpc=v1.55.0 +benchmark=v1.8.3 +googletest=v1.14.0 +ms-gsl=v4.0.0 +nlohmann-json=v3.11.3 +opentelemetry-proto=v1.6.0 +opentracing-cpp=v1.6.0 +prometheus-cpp=v1.3.0 diff --git a/third_party_release b/third_party_release index ace5c74cd2..93b6ce47a5 100644 --- a/third_party_release +++ b/third_party_release @@ -4,20 +4,24 @@ # MAINTAINER # # This file is used for the CMake build. +# Format: = # # When changing (add, upgrade, remove) dependencies # please update: -# - the Bazel build, see file -# /bazel/repository.bzl -# - git submodule, see command -# git submodule status -# +# - manually edit the release git tag below. +# - update the matching git submodule to the new tag. +# - update the Bazel build files +# - opentelemetry-cpp/MODULE.bazel +# - opentelemetry-cpp/bazel/repository.bzl -gRPC=v1.49.2 -abseil=20240116.1 +abseil=20220623.2 +zlib=v1.3.1 +curl=curl-8_12_0 +protobuf=v3.21.6 +grpc=v1.49.2 benchmark=v1.8.3 -googletest=1.14.0 -ms-gsl=v3.1.0-67-g6f45293 +googletest=v1.14.0 +ms-gsl=v3.1.0 nlohmann-json=v3.12.0 opentelemetry-proto=v1.7.0 opentracing-cpp=v1.6.0