Allow usage of shared libraries during build / make Linux packaging easier
- 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