Skip to content

Tags: streamnative/pulsar-client-cpp

Tags

v3.7.1.1

Toggle v3.7.1.1's commit message
Build RPM packages only

v3.6.0.1-debug

Toggle v3.6.0.1-debug's commit message
Build rpm packages only

v3.4.1.2-rpm-debug

Toggle v3.4.1.2-rpm-debug's commit message
Build rpm packages only

v3.4.1.2

Toggle v3.4.1.2's commit message
Integrate vcpkg to manage dependencies for all platforms (apache#371)

### Motivation

Currently we manage dependencies by ourselves:
- When running unit tests in CI, dependencies are installed from the
  Debian package management tool `apt`
- When verifying macOS build, dependencies are installed from the
  Homebrew package manager
- When verifying Windows build, dependencies are installed via vcpkg but
  no versions are specified
- When building pre-built binaries to release, dependencies are
  installed by scripts under `pkg/` directories. These scripts download
  the source code according to `dependencies.yaml` and build

It makes the pre-built binaries never tested except for the simple
manual tests when voting for a new release. As a result, regression like
apache#363 could happen.

This patch aims at integrating vcpkg to manage dependencies for all
platforms, not only for Windows.

### Modifications

Integrate the CMakeLists.txt with vcpkg by:
1. Introduce vcpkg as a submodule of this project
2. Update `vcpkg.json` to specify dependency versions.
3. Set `CMAKE_TOOLCHAIN_FILE` with the `vcpkg.cmake` in the submodule.

Then, we can simply use `find_package` to find all dependencies and
depend on them via a target like `CURL::libcurl` to have all include
directores and link libraries.

Update the `unit-tests` workflow to verify building the binaries via
vcpkg to test. The README is also updated to show how much simpler to
build with vcpkg now.

### TODO

There are still some tasks that cannot be done by vcpkg:
1. The static library (e.g. `libpulsarwithdeps.a`) that bundles all
   3rd-party dependencies.
2. The pre-built binaries are still built by scripts under `./pkg`
   directory. Specifically, vcpkg does not work with GCC 4.8 so on
   CentOS 7 we still need to build dependencies manually.

So the previous CMakeLists.txt are retained and will be used if
`INTEGRATE_VCPKG` is OFF (by default). They will be removed until the
task above can be done by vcpkg in future.

We also need to update `dependencies.yaml` to be consistent with
`vcpkg.json` if all tasks above cannot be replaced by vcpkg.

(cherry picked from commit 7baa312)

v3.5.0-rc1

Toggle v3.5.0-rc1's commit message
Bumped version to 3.5.0-rc1

v3.4.1.1-gcc-11

Toggle v3.4.1.1-gcc-11's commit message
Use Rocky Linux to build RPM packages

The RPM packages will be built with GCC 5 ABI to be compatible with new
GCC versions.

v3.4.1.1

Toggle v3.4.1.1's commit message
Fix Protobuf symbols not found in libpulsarwithdeps.a when building o…

…n macOS (apache#354)

### Motivation

apache#290 brings a regression
that on macOS, Protobuf is always found with CMake Config mode, which
does not set the `Protobuf_LIBRARIES` variable so that the
libpulsarwithdeps.a misses the symbols of Protobuf.

### Modifications

When `LINK_STATIC` is ON, use CMake Module mode to find the Protobuf.

Add `build-static-library.sh` to build libraries with static
dependencies and verify these libraries in PR workflow. Upload the
pre-built binaries in the build workflow.

(cherry picked from commit f75b39b)

v3.4.1-pre-1

Toggle v3.4.1-pre-1's commit message
Add warning logs for reconnection

(cherry picked from commit 3d84e76)

v3.4.0-pre-8

Toggle v3.4.0-pre-8's commit message
Add warning logs for reconnection

v3.4.0-pre-7

Toggle v3.4.0-pre-7's commit message
Add more logs for reconnection