Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ for details on updating existing applications using v1.x.y or v2.x.y.

## v3.9.0 - TBD

### Dependency version update

- Updated minimum version of libcurl from 7.74.0 to 8.7.1. This was done primarily to avoid a known bug introduced in libcurl 8.5.0. For more information, see [Issue #16343](https://github.com/googleapis/google-cloud-cpp/issues/16343).

@seankungrubrik seankungrubrik Aug 24, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

One caveat on the phrase introduced in libcurl 8.5.0:
I mentioned libcurl 8.5.0 because it is the version we use. I'm not sure which version introduced this bug.


### New Libraries

We are happy to announce the following GA libraries. Unless specifically noted,
Expand Down
24 changes: 23 additions & 1 deletion ci/cloudbuild/dockerfiles/demo-debian-bookworm.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ RUN apt-get update && \
# ```bash
RUN apt-get update && \
apt-get --no-install-recommends install -y \
libcurl4-openssl-dev libssl-dev nlohmann-json3-dev
libnghttp2-dev libssl-dev nlohmann-json3-dev
# ```

# #### Patching pkg-config
Expand All @@ -55,6 +55,28 @@ RUN curl -fsSL https://distfiles.ariadne.space/pkgconf/pkgconf-2.2.0.tar.gz | \
ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig
# ```

# #### curl
#
# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
#
# ```bash
WORKDIR /var/tmp/build/curl
Comment thread
scotthart marked this conversation as resolved.
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-GNinja -S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build
# ```

# #### Abseil

# ```bash
Expand Down
26 changes: 24 additions & 2 deletions ci/cloudbuild/dockerfiles/demo-debian-bullseye.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ ARG NCPU=4

## [BEGIN packaging.md]

# Install the minimal development tools, libcurl, and OpenSSL:
# Install the minimal development tools, OpenSSL, and libnghttp2:

# ```bash
RUN apt-get update && \
apt-get --no-install-recommends install -y apt-transport-https apt-utils \
automake build-essential ca-certificates curl git \
gcc g++ libc-ares-dev libc-ares2 libcurl4-openssl-dev \
gcc g++ libc-ares-dev libc-ares2 libnghttp2-dev \
libssl-dev m4 make ninja-build pkg-config tar wget zlib1g-dev libc6-dbg
# ```

Expand All @@ -33,6 +33,28 @@ RUN curl -fsSL https://github.com/Kitware/cmake/archive/v3.31.12.tar.gz | \
tar -xzf - --strip-components=1 && \
./bootstrap && make -j ${NCPU:-4} && make install

# #### curl
#
# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
#
# ```bash
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-GNinja -S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build
# ```

# #### Abseil

# ```bash
Expand Down
24 changes: 23 additions & 1 deletion ci/cloudbuild/dockerfiles/demo-fedora.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ RUN dnf makecache && dnf debuginfo-install -y glibc

# ```bash
RUN dnf makecache && \
dnf install -y json-devel libcurl-devel openssl-devel
dnf install -y json-devel libnghttp2-devel openssl-devel
# ```

# #### Patching pkg-config
Expand Down Expand Up @@ -62,6 +62,28 @@ 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
# ```

# #### curl
#
# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
#
# ```bash
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-GNinja -S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build
# ```

# #### Protobuf

# ```bash
Expand Down
27 changes: 25 additions & 2 deletions ci/cloudbuild/dockerfiles/demo-rockylinux-9.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,17 @@ ARG NCPU=4

## [BEGIN packaging.md]

# Install the minimal development tools, libcurl, OpenSSL, and the c-ares
# Install the minimal development tools, OpenSSL, and the c-ares
# library (required by gRPC):

# ```bash
RUN dnf makecache && \
dnf update -y && \
dnf install -y epel-release && \
dnf config-manager --set-enabled crb && \
dnf makecache && \
dnf install -y cmake findutils gcc-c++ git make openssl-devel \
patch zlib-devel libcurl-devel c-ares-devel tar wget which \
patch zlib-devel libnghttp2-devel c-ares-devel tar wget which \
autoconf automake libtool binutils dnf-utils
RUN dnf makecache && dnf debuginfo-install -y glibc

Expand Down Expand Up @@ -68,6 +69,28 @@ ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib
ENV PATH=/usr/local/bin:${PATH}
# ```

# #### curl
#
# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
#
# ```bash
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build
# ```

# #### Abseil

# ```bash
Expand Down
26 changes: 24 additions & 2 deletions ci/cloudbuild/dockerfiles/demo-ubuntu-24.04.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ ARG NCPU=4

## [BEGIN packaging.md]

# Install the minimal development tools, libcurl, OpenSSL and libc-ares:
# Install the minimal development tools, OpenSSL and libc-ares:

# ```bash
ENV DEBIAN_FRONTEND=noninteractive
Expand All @@ -33,7 +33,7 @@ RUN apt-get update && \
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get --no-install-recommends install -y \
libssl-dev libcurl4-openssl-dev nlohmann-json3-dev zlib1g-dev \
libssl-dev libnghttp2-dev nlohmann-json3-dev zlib1g-dev \
libsystemd-dev
# ```

Expand All @@ -59,6 +59,28 @@ RUN curl -fsSL https://distfiles.ariadne.space/pkgconf/pkgconf-2.2.0.tar.gz | \
RUN ln -s /usr/bin/pkgconf /usr/bin/pkg-config
# ```

# #### curl
#
# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
#
# ```bash
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build
# ```

# #### Abseil

# ```bash
Expand Down
26 changes: 24 additions & 2 deletions ci/cloudbuild/dockerfiles/demo-ubuntu-jammy.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,39 @@ ARG NCPU=4

## [BEGIN packaging.md]

# Install the minimal development tools, libcurl, OpenSSL and libc-ares:
# Install the minimal development tools, OpenSSL and libc-ares:

# ```bash
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
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 libre2-dev \
gcc g++ libc-ares-dev libc-ares2 libnghttp2-dev libre2-dev \
libssl-dev m4 make pkg-config tar wget zlib1g-dev libc6-dbg
# ```

# #### curl
#
# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
#
# ```bash
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build
# ```

# #### Abseil

# ```bash
Expand Down
21 changes: 19 additions & 2 deletions ci/cloudbuild/dockerfiles/fedora-cmake-quickstart.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ FROM fedora:40
ARG NCPU=4
ARG ARCH=amd64

# Fedora includes packages for libcurl and OpenSSL that are recent enough
# Fedora includes packages for OpenSSL that are recent enough
# for `google-cloud-cpp`. Install these packages and additional development
# tools to compile the dependencies:
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 \
libnghttp2-devel llvm make ninja-build \
openssl-devel patch python python3 \
python-pip tar unzip w3m wget which zip zlib-devel

Expand Down Expand Up @@ -81,6 +81,23 @@ RUN curl -fsSL https://distfiles.ariadne.space/pkgconf/pkgconf-2.2.0.tar.gz | \
# set the search path.
ENV PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib64/pkgconfig

# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-GNinja -S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build

# We disable the inline namespace because otherwise Abseil LTS updates break our
# `check-api` build.
WORKDIR /var/tmp/build
Expand Down
21 changes: 19 additions & 2 deletions ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ FROM fedora:40
ARG NCPU=4
ARG ARCH=amd64

# Fedora includes packages for libcurl and OpenSSL that are recent enough
# Fedora includes packages for OpenSSL that are recent enough
# for `google-cloud-cpp`. Install these packages and additional development
# tools to compile the dependencies:
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 \
libnghttp2-devel llvm make ninja-build \
openssl-devel patch python python3 \
python-pip tar unzip w3m wget which zip zlib-devel

Expand Down Expand Up @@ -81,6 +81,23 @@ RUN curl -fsSL https://distfiles.ariadne.space/pkgconf/pkgconf-2.2.0.tar.gz | \
# set the search path.
ENV PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib64/pkgconfig

# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-GNinja -S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build

# We disable the inline namespace because otherwise Abseil LTS updates break our
# `check-api` build.
WORKDIR /var/tmp/build
Expand Down
23 changes: 20 additions & 3 deletions ci/cloudbuild/dockerfiles/fedora-latest-cxx20.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ FROM fedora:40
ARG NCPU=4
ARG ARCH=amd64

# Fedora includes packages for gRPC, libcurl, and OpenSSL that are recent enough
# Fedora includes packages for gRPC and OpenSSL that are recent enough
# for `google-cloud-cpp`. Install these packages and additional development
# tools to compile the dependencies:
RUN dnf makecache && \
Expand All @@ -25,10 +25,10 @@ RUN dnf makecache && \
make ninja-build patch python3 \
python-pip tar unzip wget which zip zlib-devel

# Install the development packages for libcurl and OpenSSL. Neither are affected
# Install the development packages for OpenSSL and libnghttp2. Neither are affected
# by the C++ version, so we can use the pre-built binaries.
RUN dnf makecache && \
dnf install -y libcurl-devel openssl-devel
dnf install -y libnghttp2-devel openssl-devel

# Install the Python modules needed to run the storage emulator
RUN dnf makecache && dnf install -y python3-devel
Expand Down Expand Up @@ -67,6 +67,23 @@ RUN curl -fsSL https://distfiles.ariadne.space/pkgconf/pkgconf-2.2.0.tar.gz | \
# set the search path.
ENV PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib64/pkgconfig

# Install curl from source to avoid a libcurl bug present in older versions.
# See https://github.com/googleapis/google-cloud-cpp/issues/16343 for more
# details.
WORKDIR /var/tmp/build/curl
RUN curl -fsSL https://github.com/curl/curl/releases/download/curl-8_7_1/curl-8.7.1.tar.gz | \
tar -xzf - --strip-components=1 && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=20 \
-DBUILD_SHARED_LIBS=ON \
-DCURL_USE_OPENSSL=ON \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-GNinja -S . -B cmake-out && \
cmake --build cmake-out --target install && \
ldconfig && cd /var/tmp && rm -fr build

# Download and install direct dependencies of `google-cloud-cpp`. Including
# development dependencies. In each case, remove the downloaded files and the
# temporary artifacts after a successful build to keep the image smaller (and
Expand Down
Loading
Loading