fix(release): provide sqlite3.h for sqlite-vec cgo builds on Linux - #1027
Merged
Conversation
roborev: Combined Review (
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The v0.37.0 Release and Docker workflows failed on both Linux build paths: the semantic search merge (#999) pulled in
github.com/asg017/sqlite-vec-go-bindings/cgo(viago.kenn.io/kit/vector/sqlitevec), whose C sources#include "sqlite3.h". GitHub's hosted ubuntu/macos/windows images provide SQLite headers, but the manylinux_2_28 release containers and thegolang:bookwormDocker build stage do not, sogo builddied withfatal error: sqlite3.h: No such file or directory. That blocked the CLI release assets and the PyPI publish.Instead of installing distro headers, both Linux build paths now compile sqlite-vec against the header of the exact SQLite amalgamation bundled and statically linked by mattn/go-sqlite3 (
sqlite3-binding.h, currently 3.53.2), exposed viaCGO_CFLAGS. This keeps the compile-time header and the linked library at the same version everywhere. It also avoids a silent behavior difference: manylinux_2_28 (AlmaLinux 8) ships SQLite 3.26 headers, and sqlite-vec compiles out itssqlite3_vtab_insupport when built against headers older than 3.38, which would have made PyPI wheels behave differently from every other build.Reviewers should look at the new header-staging step in
.github/workflows/release.yml(build-linux) and the equivalentRUN/ENVpair inDockerfile. macOS and Windows builds are unchanged; they already build against SDK/toolchain headers newer than 3.38.