apache / apache/kvrocks

Allow usage of shared libraries during build / make Linux packaging easier

Open
#2,432 1 comment 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
C++
Stars
4.4k
Forks
658
Avg merge
1d 20h
Merged PRs (30d)
10

Description

### Search before asking

- [X] I had searched in the [issues](https://github.com/apache/kvrocks/issues) and found no similar issues.

### Motivation

While the primary use case of kvrocks lies in containerized environments, it would be great to make it easier to use in normal OS environments. One way would be to provide RPM & DEB files, but in https://github.com/apache/kvrocks/discussions/1152#discussioncomment-4297513 it was made clear that this won't happen, which is okay. But the only alternatives are OS packages (which are only provided by Arch AUR at this point) or building binaries yourself, which could be an obstacle for some.

My main issue with the build process is that all needed libraries are downloaded and built as static libraries, this is usually a no-go for Linux packagers. For some things like RocksDB it probably makes sense to use a pinned version, but zstd and snappy should be easy targets to use dynamically.

### Solution

Make it possible to use locally available libraries and headers instead of downloading all dependencies during the build.

### Are you willing to submit a PR?

- [X] I'm willing to submit a PR!

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the build configuration and dependency declarations that download and build libraries, then inspect how zstd and snappy are selected. Done means the build can use locally available libraries and headers, while the issue's stated need for a Linux-packager-friendly workflow is met.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.