From bf308d6da09b94ceddaf4194bf3a80c56689e2a1 Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Mon, 18 May 2026 17:38:31 -0400 Subject: [PATCH 1/8] ci: update to fedora 44 --- .../dockerfiles/demo-fedora.Dockerfile | 54 +++++++++++++++++-- .../fedora-latest-bazel.Dockerfile | 2 +- .../fedora-latest-cmake.Dockerfile | 6 +-- .../fedora-latest-cxx20.Dockerfile | 12 +++-- .../fedora-latest-publish-docs.Dockerfile | 43 +++++++++++++-- .../dockerfiles/fedora-msan.Dockerfile | 2 +- 6 files changed, 102 insertions(+), 17 deletions(-) diff --git a/ci/cloudbuild/dockerfiles/demo-fedora.Dockerfile b/ci/cloudbuild/dockerfiles/demo-fedora.Dockerfile index 302e5b7bf392a..9651f1ea79e51 100644 --- a/ci/cloudbuild/dockerfiles/demo-fedora.Dockerfile +++ b/ci/cloudbuild/dockerfiles/demo-fedora.Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM fedora:40 +FROM fedora:44 ARG NCPU=4 ## [BEGIN packaging.md] @@ -26,13 +26,14 @@ RUN dnf makecache && \ RUN dnf makecache && dnf debuginfo-install -y glibc # ``` -# Fedora:40 includes packages, with recent enough versions, for most of the +# Fedora:44 includes packages, with recent enough versions, for most of the # direct dependencies of `google-cloud-cpp`. # ```bash RUN dnf makecache && \ - dnf install -y protobuf-compiler protobuf-devel grpc-cpp grpc-devel \ - json-devel libcurl-devel openssl-devel + dnf install -y \ + json-devel libcurl-devel libpfm-devel \ + openssl-devel openssl-devel-engine # ``` # #### Patching pkg-config @@ -63,6 +64,23 @@ RUN curl -fsSL https://distfiles.ariadne.space/pkgconf/pkgconf-2.2.0.tar.gz | \ ENV PKG_CONFIG_PATH=/usr/local/share/pkgconfig:/usr/lib64/pkgconfig:/usr/local/lib64/pkgconfig # ``` +# #### Protobuf + +# ```bash +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 \ + -GNinja -S . -B cmake-out && \ + cmake --build cmake-out --target install && \ + ldconfig && cd /var/tmp && rm -fr build +# ``` + # #### opentelemetry-cpp # ```bash @@ -83,6 +101,33 @@ RUN curl -fsSL https://github.com/open-telemetry/opentelemetry-cpp/archive/v1.24 ldconfig # ``` +# #### gRPC + +# ```bash +WORKDIR /var/tmp/build/grpc +RUN dnf makecache && dnf install -y c-ares-devel re2-devel +RUN curl -fsSL https://github.com/grpc/grpc/archive/v1.71.2.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_PROTOBUF_PACKAGE_TYPE=CONFIG \ + -DgRPC_RE2_PROVIDER=package \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_OPENTELEMETRY_PROVIDER=package \ + -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON \ + -GNinja -S . -B cmake-out && \ + cmake --build cmake-out --target install && \ + ldconfig && cd /var/tmp && rm -fr build +# ``` + ## [DONE packaging.md] RUN dnf makecache && dnf install -y gdb @@ -95,4 +140,5 @@ RUN curl -fsSL https://github.com/mozilla/sccache/releases/download/v0.10.0/scca chmod +x /usr/local/bin/sccache # Update the ld.conf cache in case any libraries were installed in /usr/local/lib* +RUN (echo /usr/local/lib; echo /usr/local/lib64) | tee /etc/ld.so.conf.d/local.conf RUN ldconfig /usr/local/lib* diff --git a/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile index 492d24d9e74f4..0cbe84798e768 100644 --- a/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM fedora:40 +FROM fedora:44 ARG NCPU=4 ARG ARCH=amd64 diff --git a/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile index a5ebcfac33e4a..589226ddd5ae9 100644 --- a/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM fedora:40 +FROM fedora:44 ARG NCPU=4 ARG ARCH=amd64 @@ -23,8 +23,8 @@ RUN dnf makecache && \ dnf install -y abi-compliance-checker autoconf automake \ clang clang-analyzer clang-tools-extra \ cmake diffutils findutils gcc-c++ git \ - libcurl-devel llvm make ninja-build \ - openssl-devel patch python python3 \ + libcurl-devel libpfm-devel llvm make ninja-build \ + openssl-devel openssl-devel-engine patch python python3 \ python-pip tar unzip w3m wget which zip zlib-devel # Install the Python modules needed to run the storage emulator diff --git a/ci/cloudbuild/dockerfiles/fedora-latest-cxx20.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-cxx20.Dockerfile index 05c72c0054291..435b87f5bf666 100644 --- a/ci/cloudbuild/dockerfiles/fedora-latest-cxx20.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-latest-cxx20.Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM fedora:40 +FROM fedora:44 ARG NCPU=4 ARG ARCH=amd64 @@ -22,7 +22,8 @@ ARG ARCH=amd64 RUN dnf makecache && \ dnf install -y autoconf automake \ clang cmake diffutils findutils gcc-c++ git \ - make ninja-build patch python3 \ + libpfm-devel make ninja-build \ + openssl-devel openssl-devel-engine patch python3 \ python-pip tar unzip wget which zip zlib-devel # Install the development packages for libcurl and OpenSSL. Neither are affected @@ -185,6 +186,10 @@ RUN curl -fsSL https://github.com/mozilla/sccache/releases/download/v0.10.0/scca 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 (echo /usr/local/lib; echo /usr/local/lib64) | tee /etc/ld.so.conf.d/local.conf +RUN ldconfig /usr/local/lib* + # 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 @@ -195,6 +200,3 @@ ENV CLOUDSDK_PYTHON=python3.10 RUN /var/tmp/ci/install-cloud-sdk.sh ENV CLOUD_SDK_LOCATION=/usr/local/google-cloud-sdk ENV PATH=${CLOUD_SDK_LOCATION}/bin:${PATH} - -# 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/fedora-latest-publish-docs.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-publish-docs.Dockerfile index 9d1e232b3d416..d7072b23d35d0 100644 --- a/ci/cloudbuild/dockerfiles/fedora-latest-publish-docs.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-latest-publish-docs.Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM fedora:40 +FROM fedora:44 ARG NCPU=4 ARG ARCH=amd64 @@ -27,12 +27,12 @@ RUN dnf makecache && \ dnf install -y \ gmock-devel \ google-benchmark-devel \ - grpc-devel \ gtest-devel \ json-devel \ libcurl-devel \ + libpfm-devel \ openssl-devel \ - protobuf-devel \ + openssl-devel-engine \ pugixml-devel # This is used in the `publish-docs` build @@ -89,6 +89,42 @@ RUN curl -fsSL https://github.com/open-telemetry/opentelemetry-cpp/archive/v1.24 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 \ + -GNinja -S . -B cmake-out && \ + cmake --build cmake-out --target install && \ + ldconfig && cd /var/tmp && rm -fr build + +WORKDIR /var/tmp/build/grpc +RUN dnf makecache && dnf install -y c-ares-devel re2-devel +RUN curl -fsSL https://github.com/grpc/grpc/archive/v1.71.2.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_PROTOBUF_PACKAGE_TYPE=CONFIG \ + -DgRPC_RE2_PROVIDER=package \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_OPENTELEMETRY_PROVIDER=package \ + -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON \ + -GNinja -S . -B cmake-out && \ + cmake --build cmake-out --target install && \ + ldconfig && cd /var/tmp && rm -fr build + 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 && \ @@ -97,6 +133,7 @@ RUN curl -fsSL https://github.com/mozilla/sccache/releases/download/v0.10.0/scca chmod +x /usr/local/bin/sccache # Update the ld.conf cache in case any libraries were installed in /usr/local/lib* +RUN (echo /usr/local/lib; echo /usr/local/lib64) | tee /etc/ld.so.conf.d/local.conf RUN ldconfig /usr/local/lib* # Install the Google Cloud CLI (formerly Google Cloud SDK). diff --git a/ci/cloudbuild/dockerfiles/fedora-msan.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-msan.Dockerfile index d3f84f83a3f75..30ec3161d77e6 100644 --- a/ci/cloudbuild/dockerfiles/fedora-msan.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-msan.Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM fedora:40 +FROM fedora:44 ARG NCPU=4 ARG ARCH=amd64 From 443bafff5f416b353f4a2b93ba8b451df8aa5147 Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Mon, 18 May 2026 18:14:57 -0400 Subject: [PATCH 2/8] default Cord workaround off --- ci/cloudbuild/builds/demo-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/cloudbuild/builds/demo-install.sh b/ci/cloudbuild/builds/demo-install.sh index 4f9ccd0343eae..4b85221429311 100755 --- a/ci/cloudbuild/builds/demo-install.sh +++ b/ci/cloudbuild/builds/demo-install.sh @@ -53,7 +53,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install From 7f80923c2e719a07678eb6664c4ff60070c7f4dc Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Mon, 18 May 2026 18:17:43 -0400 Subject: [PATCH 3/8] disable new clang-tidy readability checks for now --- .clang-tidy | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 2a8ade0ec8e20..c82bb808f4dae 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -115,7 +115,10 @@ Checks: > -bugprone-implicit-widening-of-multiplication-result, -bugprone-unchecked-optional-access, -bugprone-unused-local-non-trivial-variable, - -bugprone-unused-return-value + -bugprone-unused-return-value, + -readability-use-concise-preprocessor-directives, + -readability-math-missing-parentheses, + -readability-enum-initial-value # Turn all the warnings from the checks above into errors. WarningsAsErrors: "*" From 1ceda56722636e97559b759155beb27bfecf88da Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Mon, 18 May 2026 18:17:56 -0400 Subject: [PATCH 4/8] regenerate packaging.md --- doc/packaging.md | 67 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/doc/packaging.md b/doc/packaging.md index 2abb07b2bda6d..5a2e0023a426f 100644 --- a/doc/packaging.md +++ b/doc/packaging.md @@ -218,7 +218,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install @@ -239,13 +239,14 @@ sudo dnf install -y cmake curl findutils gcc-c++ git make ninja-build \ sudo dnf makecache && sudo dnf debuginfo-install -y glibc ``` -Fedora:40 includes packages, with recent enough versions, for most of the direct +Fedora:44 includes packages, with recent enough versions, for most of the direct dependencies of `google-cloud-cpp`. ```bash sudo dnf makecache && \ -sudo dnf install -y protobuf-compiler protobuf-devel grpc-cpp grpc-devel \ - json-devel libcurl-devel openssl-devel +sudo dnf install -y \ + json-devel libcurl-devel libpfm-devel \ + openssl-devel openssl-devel-engine ``` #### Patching pkg-config @@ -276,6 +277,23 @@ the search path. export PKG_CONFIG_PATH=/usr/local/share/pkgconfig:/usr/lib64/pkgconfig:/usr/local/lib64/pkgconfig ``` +#### Protobuf + +```bash +mkdir -p $HOME/Downloads/protobuf && cd $HOME/Downloads/protobuf +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 \ + -GNinja -S . -B cmake-out && \ +sudo cmake --build cmake-out --target install && \ +sudo ldconfig && cd /var/tmp && rm -fr build +``` + #### opentelemetry-cpp ```bash @@ -296,6 +314,33 @@ sudo cmake --build cmake-out --target install -- -j ${NCPU:-4} && \ sudo ldconfig ``` +#### gRPC + +```bash +mkdir -p $HOME/Downloads/grpc && cd $HOME/Downloads/grpc +sudo dnf makecache && sudo dnf install -y c-ares-devel re2-devel +curl -fsSL https://github.com/grpc/grpc/archive/v1.71.2.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_PROTOBUF_PACKAGE_TYPE=CONFIG \ + -DgRPC_RE2_PROVIDER=package \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_OPENTELEMETRY_PROVIDER=package \ + -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON \ + -GNinja -S . -B cmake-out && \ +sudo cmake --build cmake-out --target install && \ +sudo ldconfig && cd /var/tmp && rm -fr build +``` + #### Compile and install the main project We can now compile and install `google-cloud-cpp`: @@ -310,7 +355,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install @@ -478,7 +523,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install @@ -650,7 +695,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install @@ -793,7 +838,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install @@ -964,7 +1009,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install @@ -1118,7 +1163,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install @@ -1323,7 +1368,7 @@ cmake -S . -B cmake-out \ -DBUILD_TESTING=OFF \ -DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF \ -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=OFF \ - -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-ON}" \ + -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_CORD_WORKAROUND="${DEMO_CORD_WORKAROUND:-OFF}" \ -DGOOGLE_CLOUD_CPP_ENABLE=__ga_libraries__,opentelemetry cmake --build cmake-out -- -j "$(nproc)" cmake --build cmake-out --target install From c4726d9fde566fee62e2f74ab1a0999694e77977 Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Tue, 19 May 2026 10:48:43 -0400 Subject: [PATCH 5/8] update cert path and Wno-error on boringssl --- ci/cloudbuild/builds/bazel-oldest.sh | 2 ++ ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile | 3 +++ 2 files changed, 5 insertions(+) diff --git a/ci/cloudbuild/builds/bazel-oldest.sh b/ci/cloudbuild/builds/bazel-oldest.sh index c1697dde77971..6740c3edf5549 100755 --- a/ci/cloudbuild/builds/bazel-oldest.sh +++ b/ci/cloudbuild/builds/bazel-oldest.sh @@ -33,5 +33,7 @@ args+=( --enable_workspace # Only run the unit tests, no need to waste time running everything. --test_tag_filters=-integration-test + # Disable warnings as errors for boringssl. + --per_file_copt=boringssl//@-Wno-error ) io::run bazel test "${args[@]}" -- "${BAZEL_TARGETS[@]}" diff --git a/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile index 0cbe84798e768..b430fe4dee694 100644 --- a/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile @@ -64,3 +64,6 @@ RUN go version WORKDIR /var/tmp/downloads/cloud-bigtable-clients-test RUN curl -fsSL https://github.com/googleapis/cloud-bigtable-clients-test/archive/v0.0.4.tar.gz | \ tar -xzf - --strip-components=1 + +# Fedora 44 changed where it stores CA certs. +RUN ln -sf /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/pki/tls/certs/ca-certificates.crt From b22c75cc1bee2b6e4a94d90b9d489c8bac965102 Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Tue, 19 May 2026 12:36:49 -0400 Subject: [PATCH 6/8] more fedora44 adjustments --- ci/cloudbuild/builds/clang-cxx20.sh | 4 +++- ci/cloudbuild/builds/cxx20.sh | 4 +++- .../fedora-latest-bazel.Dockerfile | 1 + .../fedora-latest-cmake.Dockerfile | 22 +++++++++---------- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/ci/cloudbuild/builds/clang-cxx20.sh b/ci/cloudbuild/builds/clang-cxx20.sh index 1b73392eb762c..8aa512d8fe269 100755 --- a/ci/cloudbuild/builds/clang-cxx20.sh +++ b/ci/cloudbuild/builds/clang-cxx20.sh @@ -32,10 +32,12 @@ read -r ENABLED_FEATURES < <(features::always_build_cmake) ENABLED_FEATURES="${ENABLED_FEATURES},__ga_libraries__" readonly ENABLED_FEATURES +# Enabling deprecated-declarations requires operator<=>() io::run cmake "${cmake_args[@]}" \ -DCMAKE_CXX_STANDARD=20 \ -DGOOGLE_CLOUD_CPP_ENABLE_CLANG_ABI_COMPAT_17=ON \ - -DGOOGLE_CLOUD_CPP_ENABLE="${ENABLED_FEATURES}" + -DGOOGLE_CLOUD_CPP_ENABLE="${ENABLED_FEATURES}" \ + -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" io::run cmake --build cmake-out mapfile -t ctest_args < <(ctest::common_args) io::run env -C cmake-out ctest "${ctest_args[@]}" -LE "integration-test" diff --git a/ci/cloudbuild/builds/cxx20.sh b/ci/cloudbuild/builds/cxx20.sh index a6f5ceda9ef2a..c56d77a38575d 100755 --- a/ci/cloudbuild/builds/cxx20.sh +++ b/ci/cloudbuild/builds/cxx20.sh @@ -32,10 +32,12 @@ read -r ENABLED_FEATURES < <(features::always_build_cmake) ENABLED_FEATURES="${ENABLED_FEATURES},__ga_libraries__" readonly ENABLED_FEATURES +# Enabling deprecated-declarations requires operator<=>() io::run cmake "${cmake_args[@]}" \ -DCMAKE_CXX_STANDARD=20 \ -DGOOGLE_CLOUD_CPP_ENABLE_CLANG_ABI_COMPAT_17=ON \ - -DGOOGLE_CLOUD_CPP_ENABLE="${ENABLED_FEATURES}" + -DGOOGLE_CLOUD_CPP_ENABLE="${ENABLED_FEATURES}" \ + -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" io::run cmake --build cmake-out mapfile -t ctest_args < <(ctest::common_args) io::run env -C cmake-out ctest "${ctest_args[@]}" -LE "integration-test" diff --git a/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile index b430fe4dee694..0a3a58194ef82 100644 --- a/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile @@ -67,3 +67,4 @@ RUN curl -fsSL https://github.com/googleapis/cloud-bigtable-clients-test/archive # Fedora 44 changed where it stores CA certs. RUN ln -sf /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/pki/tls/certs/ca-certificates.crt + diff --git a/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile index 589226ddd5ae9..515c29ab6095b 100644 --- a/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile +++ b/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile @@ -83,17 +83,17 @@ ENV PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib # We disable the inline namespace because otherwise Abseil LTS updates break our # `check-api` build. -WORKDIR /var/tmp/build -RUN curl -fsSL https://github.com/abseil/abseil-cpp/archive/20250814.2.tar.gz | \ - tar -xzf - --strip-components=1 && \ - cmake \ - -DCMAKE_BUILD_TYPE="Release" \ - -DCMAKE_CXX_STANDARD=17 \ - -DABSL_BUILD_TESTING=OFF \ - -DBUILD_SHARED_LIBS=yes \ - -GNinja -S . -B cmake-out && \ - cmake --build cmake-out --target install && \ - ldconfig && cd /var/tmp && rm -fr build +#WORKDIR /var/tmp/build +#RUN curl -fsSL https://github.com/abseil/abseil-cpp/archive/20250814.2.tar.gz | \ +# tar -xzf - --strip-components=1 && \ +# cmake \ +# -DCMAKE_BUILD_TYPE="Release" \ +# -DCMAKE_CXX_STANDARD=17 \ +# -DABSL_BUILD_TESTING=OFF \ +# -DBUILD_SHARED_LIBS=yes \ +# -GNinja -S . -B cmake-out && \ +# cmake --build cmake-out --target install && \ +# ldconfig && cd /var/tmp && rm -fr build WORKDIR /var/tmp/build RUN curl -fsSL https://github.com/google/googletest/archive/v1.16.0.tar.gz | \ From 57c69ff27b3d7194085a6cd294196cbe1be00d7c Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Tue, 19 May 2026 14:02:06 -0400 Subject: [PATCH 7/8] more fixes --- .clang-tidy | 2 ++ ci/cloudbuild/builds/coverage.sh | 6 ++++-- google/cloud/bigtable/client.cc | 7 +++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index c82bb808f4dae..0b333d27de065 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -119,6 +119,8 @@ Checks: > -readability-use-concise-preprocessor-directives, -readability-math-missing-parentheses, -readability-enum-initial-value + -modernize-use-scoped-lock + -readability-redundant-parentheses # Turn all the warnings from the checks above into errors. WarningsAsErrors: "*" diff --git a/ci/cloudbuild/builds/coverage.sh b/ci/cloudbuild/builds/coverage.sh index e60e3ab160307..3c1758ff19b5d 100755 --- a/ci/cloudbuild/builds/coverage.sh +++ b/ci/cloudbuild/builds/coverage.sh @@ -21,8 +21,10 @@ source module ci/cloudbuild/builds/lib/bazel.sh source module ci/cloudbuild/builds/lib/cloudcxxrc.sh source module ci/cloudbuild/builds/lib/integration.sh -export CC=gcc -export CXX=g++ +#export CC=gcc +#export CXX=g++ +export CC=clang +export CXX=clang++ # Explicitly list the patterns that match hand-crafted code. Excluding the # generated code results in a longer list and more maintenance. diff --git a/google/cloud/bigtable/client.cc b/google/cloud/bigtable/client.cc index 893683bdadf4f..12e70978a0c9c 100644 --- a/google/cloud/bigtable/client.cc +++ b/google/cloud/bigtable/client.cc @@ -21,25 +21,24 @@ namespace cloud { namespace bigtable { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN -using ::google::cloud::bigtable_internal::MergeOptions; using ::google::cloud::internal::OptionsSpan; StatusOr Client::PrepareQuery(InstanceResource const& instance, SqlStatement const& statement, Options opts) { - OptionsSpan span(MergeOptions(std::move(opts), opts_)); + OptionsSpan span(bigtable_internal::MergeOptions(std::move(opts), opts_)); return conn_->PrepareQuery({instance, statement}); } future> Client::AsyncPrepareQuery( InstanceResource const& instance, SqlStatement const& statement, Options opts) { - OptionsSpan span(MergeOptions(std::move(opts), opts_)); + OptionsSpan span(bigtable_internal::MergeOptions(std::move(opts), opts_)); return conn_->AsyncPrepareQuery({instance, statement}); } RowStream Client::ExecuteQuery(BoundQuery&& bound_query, Options opts) { - OptionsSpan span(MergeOptions(std::move(opts), opts_)); + OptionsSpan span(bigtable_internal::MergeOptions(std::move(opts), opts_)); return conn_->ExecuteQuery({std::move(bound_query)}); } From c4e7f951c25dd239ff86c922ccbc430987332e2c Mon Sep 17 00:00:00 2001 From: Scott Hart Date: Wed, 20 May 2026 10:13:39 -0400 Subject: [PATCH 8/8] clang tidy update --- .clang-tidy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 0b333d27de065..eb727b3bf02ab 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -118,8 +118,8 @@ Checks: > -bugprone-unused-return-value, -readability-use-concise-preprocessor-directives, -readability-math-missing-parentheses, - -readability-enum-initial-value - -modernize-use-scoped-lock + -readability-enum-initial-value, + -modernize-use-scoped-lock, -readability-redundant-parentheses # Turn all the warnings from the checks above into errors.