You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
These binaries are dynamically linked. This is problematic, especially on Linux systems, because different distributions and systems have wildly different dependency versions.
Describe the solution you'd like
We should probably release static binaries, at least for Linux. This would remove specific runtime glibc requirements.
Describe alternatives you've considered
Maybe we can pin a specific glibc version (and other dynamic libraries) that is most compatible with most systems and keep dynamic linking. But this is still a lot more fragile than delivering static binaries.
Additional context
I figured the easiest way to build statically is to build on musl. Sadly, some of our dependencies are incompatible with this.
For example, jemalloc must be removed in musl builds. We should probably do this with compile time conditionals.
I've done some local experimenting in an Alpine Docker image which uses musl. After removing jemalloc code, the following still fails to build with librocksdb-sys due to dynamic linking:
Hi! Now that MUSL binary builds are implemented in the dev branch after the PR #3334 was merged, are static binaries something that can now be made available? Thanks!
Hi! Now that MUSL binary builds are implemented in the dev branch after the PR #3334 was merged, are static binaries something that can now be made available? Thanks!
You'd be right saying that we don't have MUSL binaries for 1.7.4 yet. That is because it was a small patch release. Our next minor release should have them though.
Closing this now, as I believe it is properly implemented.
Is your feature request related to a problem? Please describe.
With each release we provide a set of prebuilt binaries. For example: https://github.com/qdrant/qdrant/releases/tag/v1.5.1
These binaries are dynamically linked. This is problematic, especially on Linux systems, because different distributions and systems have wildly different dependency versions.
Describe the solution you'd like
We should probably release static binaries, at least for Linux. This would remove specific runtime glibc requirements.
Describe alternatives you've considered
Maybe we can pin a specific glibc version (and other dynamic libraries) that is most compatible with most systems and keep dynamic linking. But this is still a lot more fragile than delivering static binaries.
Additional context
I figured the easiest way to build statically is to build on musl. Sadly, some of our dependencies are incompatible with this.
For example, jemalloc must be removed in musl builds. We should probably do this with compile time conditionals.
I've done some local experimenting in an Alpine Docker image which uses musl. After removing jemalloc code, the following still fails to build with librocksdb-sys due to dynamic linking:
The text was updated successfully, but these errors were encountered: