diff --git a/ci/cloudbuild/builds/clang-7.0.sh b/ci/cloudbuild/builds/clang-14.0.sh similarity index 100% rename from ci/cloudbuild/builds/clang-7.0.sh rename to ci/cloudbuild/builds/clang-14.0.sh diff --git a/ci/cloudbuild/dockerfiles/ubuntu-22.04-install.Dockerfile b/ci/cloudbuild/dockerfiles/ubuntu-22.04-install.Dockerfile new file mode 100644 index 0000000000000..b4fe54f4bbd65 --- /dev/null +++ b/ci/cloudbuild/dockerfiles/ubuntu-22.04-install.Dockerfile @@ -0,0 +1,202 @@ +# Copyright 2021 Google LLC +# +# 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 +# +# https://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. + +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && \ + apt-get --no-install-recommends install -y \ + automake \ + build-essential \ + clang \ + cmake \ + curl \ + gawk \ + git \ + gcc \ + g++ \ + libcurl4-openssl-dev \ + libssl-dev \ + libtool \ + lsb-release \ + make \ + ninja-build \ + patch \ + pkg-config \ + python3 \ + python3-dev \ + python3-pip \ + tar \ + unzip \ + zip \ + wget \ + zlib1g-dev \ + apt-utils \ + ca-certificates \ + apt-transport-https + +# Install Python packages used in the integration tests. +RUN update-alternatives --install /usr/bin/python python $(which python3) 10 +RUN pip3 install setuptools wheel +# The Cloud Pub/Sub emulator needs Java :shrug: +RUN apt update && apt install -y openjdk-11-jre + +# Install all the direct (and indirect) dependencies for google-cloud-cpp. +# Use a different directory for each build, and remove the downloaded +# files and any temporary artifacts after a successful build to keep the +# image smaller (and with fewer layers) + +WORKDIR /var/tmp/build/abseil-cpp +RUN curl -fsSL https://github.com/abseil/abseil-cpp/archive/20250814.1.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_BUILD_TYPE="Release" \ + -DCMAKE_CXX_STANDARD=17 \ + -DABSL_BUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=yes \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/googletest +RUN curl -fsSL https://github.com/google/googletest/archive/v1.16.0.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_BUILD_TYPE="Release" \ + -DCMAKE_CXX_STANDARD=17 \ + -DBUILD_SHARED_LIBS=yes \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/benchmark +RUN curl -fsSL https://github.com/google/benchmark/archive/v1.9.2.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_BUILD_TYPE="Release" \ + -DBUILD_SHARED_LIBS=yes \ + -DBENCHMARK_ENABLE_TESTING=OFF \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/nlohmann-json +RUN curl -fsSL https://github.com/nlohmann/json/archive/v3.11.3.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_BUILD_TYPE="Release" \ + -DBUILD_SHARED_LIBS=yes \ + -DBUILD_TESTING=OFF \ + -DJSON_BuildTests=OFF \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + + +WORKDIR /var/tmp/build/protobuf +RUN curl -fsSL https://github.com/protocolbuffers/protobuf/archive/v33.1.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_STANDARD=17 \ + -DBUILD_SHARED_LIBS=yes \ + -Dprotobuf_BUILD_TESTS=OFF \ + -Dprotobuf_ABSL_PROVIDER=package \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/c-ares +RUN curl -fsSL https://github.com/c-ares/c-ares/archive/refs/tags/cares-1_17_1.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=yes \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/re2 +RUN curl -fsSL https://github.com/google/re2/archive/2025-07-22.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=ON \ + -DRE2_BUILD_TESTING=OFF \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/ +RUN curl -fsSL https://github.com/open-telemetry/opentelemetry-cpp/archive/v1.24.0.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_CXX_STANDARD=17 \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \ + -DBUILD_SHARED_LIBS=ON \ + -DWITH_EXAMPLES=OFF \ + -DWITH_STL=CXX17 \ + -DBUILD_TESTING=OFF \ + -DOPENTELEMETRY_INSTALL=ON \ + -DOPENTELEMETRY_ABI_VERSION_NO=2 \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/grpc +RUN curl -fsSL https://github.com/grpc/grpc/archive/v1.76.0.tar.gz | \ + tar -xzf - --strip-components=1 && \ + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_STANDARD=17 \ + -DBUILD_SHARED_LIBS=ON \ + -DgRPC_INSTALL=ON \ + -DgRPC_BUILD_TESTS=OFF \ + -DgRPC_ABSL_PROVIDER=package \ + -DgRPC_CARES_PROVIDER=package \ + -DgRPC_PROTOBUF_PROVIDER=package \ + -DgRPC_RE2_PROVIDER=package \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_OPENTELEMETRY_PROVIDER=package \ + -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON \ + -S . -B cmake-out -GNinja && \ + cmake --build cmake-out --target install && \ + ldconfig && \ + cd /var/tmp && rm -fr build + +# Install the Cloud SDK and some of the emulators. We use the emulators to run +# integration tests for the client libraries. +COPY . /var/tmp/ci +WORKDIR /var/tmp/downloads +RUN /var/tmp/ci/install-cloud-sdk.sh +ENV CLOUD_SDK_LOCATION=/usr/local/google-cloud-sdk +ENV PATH=${CLOUD_SDK_LOCATION}/bin:${PATH} + +WORKDIR /var/tmp/sccache +RUN curl -fsSL https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-x86_64-unknown-linux-musl.tar.gz | \ + tar -zxf - --strip-components=1 && \ + mkdir -p /usr/local/bin && \ + mv sccache /usr/local/bin/sccache && \ + chmod +x /usr/local/bin/sccache + +# Update the ld.conf cache in case any libraries were installed in /usr/local/lib* +RUN ldconfig /usr/local/lib* diff --git a/ci/cloudbuild/dockerfiles/ubuntu-22.04.Dockerfile b/ci/cloudbuild/dockerfiles/ubuntu-22.04.Dockerfile index a0a7abf0b63c0..226536688ab2a 100644 --- a/ci/cloudbuild/dockerfiles/ubuntu-22.04.Dockerfile +++ b/ci/cloudbuild/dockerfiles/ubuntu-22.04.Dockerfile @@ -1,4 +1,4 @@ -# Copyright 2021 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/ci/cloudbuild/dockerfiles/ubuntu-focal.Dockerfile b/ci/cloudbuild/dockerfiles/ubuntu-focal.Dockerfile deleted file mode 100644 index 32026618237cd..0000000000000 --- a/ci/cloudbuild/dockerfiles/ubuntu-focal.Dockerfile +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2021 Google LLC -# -# 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 -# -# https://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. - -FROM ubuntu:focal -ARG NCPU=4 -ARG ARCH=amd64 - -ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update && \ - apt-get --no-install-recommends install -y \ - automake \ - build-essential \ - clang \ - clang-9 \ - cmake \ - ctags \ - curl \ - gawk \ - git \ - gcc \ - g++ \ - cmake \ - libcurl4-openssl-dev \ - libssl-dev \ - libtool \ - llvm-9 \ - lsb-release \ - make \ - ninja-build \ - patch \ - pkg-config \ - python3 \ - python3-dev \ - python3-pip \ - tar \ - unzip \ - zip \ - wget \ - zlib1g-dev \ - apt-utils \ - ca-certificates \ - apt-transport-https - -# Install Python packages used in the integration tests. -RUN update-alternatives --install /usr/bin/python python $(which python3) 10 -RUN pip3 install setuptools wheel - -# The Cloud Pub/Sub emulator needs Java :shrug: -RUN apt update && (apt install -y openjdk-11-jre || apt install -y openjdk-9-jre) - -# Install the Cloud SDK and some of the emulators. We use the emulators to run -# integration tests for the client libraries. -COPY . /var/tmp/ci -WORKDIR /var/tmp/downloads -RUN /var/tmp/ci/install-cloud-sdk.sh -ENV CLOUD_SDK_LOCATION=/usr/local/google-cloud-sdk -ENV PATH=${CLOUD_SDK_LOCATION}/bin:${PATH} - -RUN curl -o /usr/bin/bazelisk -sSL "https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${ARCH}" && \ - chmod +x /usr/bin/bazelisk && \ - ln -s /usr/bin/bazelisk /usr/bin/bazel diff --git a/ci/cloudbuild/triggers/clang-7-0-ci.yaml b/ci/cloudbuild/triggers/clang-14-0-ci.yaml similarity index 89% rename from ci/cloudbuild/triggers/clang-7-0-ci.yaml rename to ci/cloudbuild/triggers/clang-14-0-ci.yaml index b828c24d2a77e..1d1d25f6b079c 100644 --- a/ci/cloudbuild/triggers/clang-7-0-ci.yaml +++ b/ci/cloudbuild/triggers/clang-14-0-ci.yaml @@ -19,10 +19,10 @@ github: push: branch: prepare-for-v3.0.0 includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS -name: prepare-for-v3-0-0-clang-7-0-ci +name: prepare-for-v3-0-0-clang-14-0-ci substitutions: - _BUILD_NAME: clang-7.0 - _DISTRO: ubuntu-20.04-install + _BUILD_NAME: clang-14.0 + _DISTRO: ubuntu-22.04-install _TRIGGER_TYPE: ci tags: - ci diff --git a/ci/cloudbuild/triggers/clang-7-0-pr.yaml b/ci/cloudbuild/triggers/clang-14-0-pr.yaml similarity index 90% rename from ci/cloudbuild/triggers/clang-7-0-pr.yaml rename to ci/cloudbuild/triggers/clang-14-0-pr.yaml index 244cff91b4fcd..6138a054b6cd8 100644 --- a/ci/cloudbuild/triggers/clang-7-0-pr.yaml +++ b/ci/cloudbuild/triggers/clang-14-0-pr.yaml @@ -20,10 +20,10 @@ github: branch: prepare-for-v3.0.0 commentControl: COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS -name: prepare-for-v3-0-0-clang-7-0-pr +name: prepare-for-v3-0-0-clang-14-0-pr substitutions: - _BUILD_NAME: clang-7.0 - _DISTRO: ubuntu-20.04-install + _BUILD_NAME: clang-14.0 + _DISTRO: ubuntu-22.04-install _TRIGGER_TYPE: pr tags: - pr diff --git a/ci/cloudbuild/triggers/demo-ubuntu-focal-ci.yaml b/ci/cloudbuild/triggers/demo-ubuntu-focal-ci.yaml deleted file mode 100644 index 995d197ea7b9a..0000000000000 --- a/ci/cloudbuild/triggers/demo-ubuntu-focal-ci.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2021 Google LLC -# -# 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 -# -# https://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. - -filename: ci/cloudbuild/cloudbuild.yaml -github: - name: google-cloud-cpp - owner: googleapis - push: - branch: prepare-for-v3.0.0 -includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS -name: prepare-for-v3-0-0-demo-ubuntu-focal-ci -substitutions: - _BUILD_NAME: demo-install - _DISTRO: demo-ubuntu-focal - _TRIGGER_TYPE: ci -tags: -- ci diff --git a/ci/cloudbuild/triggers/demo-ubuntu-focal-pr.yaml b/ci/cloudbuild/triggers/demo-ubuntu-focal-pr.yaml deleted file mode 100644 index e63f7d7ed29ad..0000000000000 --- a/ci/cloudbuild/triggers/demo-ubuntu-focal-pr.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright 2021 Google LLC -# -# 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 -# -# https://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. - -filename: ci/cloudbuild/cloudbuild.yaml -github: - name: google-cloud-cpp - owner: googleapis - pullRequest: - branch: prepare-for-v3.0.0 - commentControl: COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY -includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS -name: prepare-for-v3-0-0-demo-ubuntu-focal-pr -substitutions: - _BUILD_NAME: demo-install - _DISTRO: demo-ubuntu-focal - _TRIGGER_TYPE: pr -tags: -- pr diff --git a/ci/cloudbuild/triggers/quickstart-cmake-ci.yaml b/ci/cloudbuild/triggers/quickstart-cmake-ci.yaml index dffe86ebb5886..4511be26aab4a 100644 --- a/ci/cloudbuild/triggers/quickstart-cmake-ci.yaml +++ b/ci/cloudbuild/triggers/quickstart-cmake-ci.yaml @@ -22,7 +22,7 @@ includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS name: prepare-for-v3-0-0-quickstart-cmake-ci substitutions: _BUILD_NAME: quickstart-cmake - _DISTRO: ubuntu-focal + _DISTRO: ubuntu-22.04 _TRIGGER_TYPE: ci tags: - ci diff --git a/ci/cloudbuild/triggers/quickstart-cmake-pr.yaml b/ci/cloudbuild/triggers/quickstart-cmake-pr.yaml index 6284043f383b0..12ddfe0634431 100644 --- a/ci/cloudbuild/triggers/quickstart-cmake-pr.yaml +++ b/ci/cloudbuild/triggers/quickstart-cmake-pr.yaml @@ -23,7 +23,7 @@ includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS name: prepare-for-v3-0-0-quickstart-cmake-pr substitutions: _BUILD_NAME: quickstart-cmake - _DISTRO: ubuntu-focal + _DISTRO: ubuntu-22.04 _TRIGGER_TYPE: pr tags: - pr diff --git a/ci/generate-markdown/generate-packaging.sh b/ci/generate-markdown/generate-packaging.sh index 634ab67318ae8..17a4ce101abd4 100755 --- a/ci/generate-markdown/generate-packaging.sh +++ b/ci/generate-markdown/generate-packaging.sh @@ -37,7 +37,6 @@ file="doc/packaging.md" "demo-opensuse-leap.Dockerfile,openSUSE (Leap)" "demo-ubuntu-24.04.Dockerfile,Ubuntu (24.04 LTS - Noble Numbat)" "demo-ubuntu-jammy.Dockerfile,Ubuntu (22.04 LTS - Jammy Jellyfish)" - "demo-ubuntu-focal.Dockerfile,Ubuntu (20.04 LTS - Focal Fossa)" "demo-debian-bookworm.Dockerfile,Debian (12 - Bookworm)" "demo-debian-bullseye.Dockerfile,Debian (11 - Bullseye)" "demo-rockylinux-9.Dockerfile,Rocky Linux (9)" diff --git a/doc/packaging.md b/doc/packaging.md index 78d9a35c50c3b..3b11c5c6f4612 100644 --- a/doc/packaging.md +++ b/doc/packaging.md @@ -674,173 +674,6 @@ cmake --build cmake-out --target install -
-Ubuntu (20.04 LTS - Focal Fossa) -
- -Install the minimal development tools, libcurl, OpenSSL and libc-ares: - -```bash -export DEBIAN_FRONTEND=noninteractive -sudo apt-get update && \ -sudo apt-get --no-install-recommends install -y apt-transport-https apt-utils \ - automake build-essential cmake ca-certificates curl git \ - gcc g++ libc-ares-dev libc-ares2 libcurl4-openssl-dev \ - libssl-dev m4 make pkg-config tar wget zlib1g-dev -``` - -#### Abseil - -```bash -mkdir -p $HOME/Downloads/abseil-cpp && cd $HOME/Downloads/abseil-cpp -curl -fsSL https://github.com/abseil/abseil-cpp/archive/20250814.1.tar.gz | \ - tar -xzf - --strip-components=1 && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=17 \ - -DABSL_BUILD_TESTING=OFF \ - -DBUILD_SHARED_LIBS=yes \ - -S . -B cmake-out && \ - cmake --build cmake-out -- -j ${NCPU:-4} && \ -sudo cmake --build cmake-out --target install -- -j ${NCPU:-4} && \ -sudo ldconfig -``` - -#### Protobuf - -We need to install a version of Protobuf that is recent enough to support the -Google Cloud Platform proto files: - -```bash -mkdir -p $HOME/Downloads/protobuf && cd $HOME/Downloads/protobuf -curl -fsSL https://github.com/protocolbuffers/protobuf/archive/v31.1.tar.gz | \ - tar -xzf - --strip-components=1 && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=17 \ - -DBUILD_SHARED_LIBS=yes \ - -Dprotobuf_BUILD_TESTS=OFF \ - -Dprotobuf_ABSL_PROVIDER=package \ - -S . -B cmake-out && \ - cmake --build cmake-out -- -j ${NCPU:-4} && \ -sudo cmake --build cmake-out --target install -- -j ${NCPU:-4} && \ -sudo ldconfig -``` - -#### RE2 - -The version of RE2 included with this distro hard-codes C++11 in its pkg-config -file. You can skip this build and use the system's package if you are not -planning to use pkg-config. - -```bash -mkdir -p $HOME/Downloads/re2 && cd $HOME/Downloads/re2 -curl -fsSL https://github.com/google/re2/archive/2025-07-22.tar.gz | \ - tar -xzf - --strip-components=1 && \ - cmake -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=ON \ - -DRE2_BUILD_TESTING=OFF \ - -S . -B cmake-out && \ - cmake --build cmake-out -- -j ${NCPU:-4} && \ -sudo cmake --build cmake-out --target install -- -j ${NCPU:-4} && \ -sudo ldconfig -``` - -#### gRPC - -We also need a version of gRPC that is recent enough to support the Google Cloud -Platform proto files. We install it using: - -```bash -mkdir -p $HOME/Downloads/grpc && cd $HOME/Downloads/grpc -curl -fsSL https://github.com/grpc/grpc/archive/v1.74.1.tar.gz | \ - tar -xzf - --strip-components=1 && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=17 \ - -DBUILD_SHARED_LIBS=yes \ - -DgRPC_INSTALL=ON \ - -DgRPC_BUILD_TESTS=OFF \ - -DgRPC_ABSL_PROVIDER=package \ - -DgRPC_CARES_PROVIDER=package \ - -DgRPC_PROTOBUF_PROVIDER=package \ - -DgRPC_RE2_PROVIDER=package \ - -DgRPC_SSL_PROVIDER=package \ - -DgRPC_ZLIB_PROVIDER=package \ - -S . -B cmake-out && \ - cmake --build cmake-out -- -j ${NCPU:-4} && \ -sudo cmake --build cmake-out --target install -- -j ${NCPU:-4} && \ -sudo ldconfig -``` - -#### nlohmann_json library - -The project depends on the nlohmann_json library. We use CMake to install it as -this installs the necessary CMake configuration files. Note that this is a -header-only library, and often installed manually. This leaves your environment -without support for CMake pkg-config. - -```bash -mkdir -p $HOME/Downloads/json && cd $HOME/Downloads/json -curl -fsSL https://github.com/nlohmann/json/archive/v3.11.3.tar.gz | \ - tar -xzf - --strip-components=1 && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=yes \ - -DBUILD_TESTING=OFF \ - -DJSON_BuildTests=OFF \ - -S . -B cmake-out && \ -sudo cmake --build cmake-out --target install -- -j ${NCPU:-4} && \ -sudo ldconfig -``` - -#### opentelemetry-cpp - -The project has an **optional** dependency on the OpenTelemetry library. We -recommend installing this library because: - -- the dependency will become required in the google-cloud-cpp v3.x series. -- it is needed to produce distributed traces of the library. - -```bash -mkdir -p $HOME/Downloads/opentelemetry-cpp && cd $HOME/Downloads/opentelemetry-cpp -curl -fsSL https://github.com/open-telemetry/opentelemetry-cpp/archive/v1.24.0.tar.gz | \ - tar -xzf - --strip-components=1 && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=17 \ - -DBUILD_SHARED_LIBS=yes \ - -DWITH_EXAMPLES=OFF \ - -DWITH_STL=CXX17 \ - -DBUILD_TESTING=OFF \ - -DOPENTELEMETRY_INSTALL=ON \ - -DOPENTELEMETRY_ABI_VERSION_NO=2 \ - -S . -B cmake-out && \ -sudo cmake --build cmake-out --target install -- -j ${NCPU:-4} && \ -sudo ldconfig -``` - -#### Compile and install the main project - -We can now compile and install `google-cloud-cpp`: - -```bash -# Pick a location to install the artifacts, e.g., `/usr/local` or `/opt` -PREFIX="${HOME}/google-cloud-cpp-installed" -cmake -S . -B cmake-out \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=17 \ - -DCMAKE_INSTALL_PREFIX="${PREFIX}" \ - -DBUILD_TESTING=OFF \ - -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry -cmake --build cmake-out -- -j "$(nproc)" -cmake --build cmake-out --target install -``` - -
-
Debian (12 - Bookworm)