Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 03 May 2026 19:32:57 +0000
From:      Yuri Victorovich <yuri@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 9e53b3ebfe18 - main - databases/sqlite-ext-vec: New port: Vector search SQLite extension
Message-ID:  <69f7a2e9.3e6b0.4f783d9b@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9e53b3ebfe18096f2440b08c176d13117abd91b4

commit 9e53b3ebfe18096f2440b08c176d13117abd91b4
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-05-03 19:31:27 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-05-03 19:32:47 +0000

    databases/sqlite-ext-vec: New port: Vector search SQLite extension
---
 databases/Makefile                            |  1 +
 databases/sqlite-ext-vec/Makefile             | 52 +++++++++++++++++++
 databases/sqlite-ext-vec/distinfo             |  3 ++
 databases/sqlite-ext-vec/files/patch-Makefile | 73 +++++++++++++++++++++++++++
 databases/sqlite-ext-vec/pkg-descr            |  7 +++
 5 files changed, 136 insertions(+)

diff --git a/databases/Makefile b/databases/Makefile
index cd0d649143f3..c9abe8089c12 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -1110,6 +1110,7 @@
     SUBDIR += sqlite-ext-pcre
     SUBDIR += sqlite-ext-regexp
     SUBDIR += sqlite-ext-spellfix
+    SUBDIR += sqlite-ext-vec
     SUBDIR += sqlite-jdbc
     SUBDIR += sqlite2
     SUBDIR += sqlite3
diff --git a/databases/sqlite-ext-vec/Makefile b/databases/sqlite-ext-vec/Makefile
new file mode 100644
index 000000000000..b5f212d77604
--- /dev/null
+++ b/databases/sqlite-ext-vec/Makefile
@@ -0,0 +1,52 @@
+PORTNAME=	sqlite-ext-vec
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.1.9
+CATEGORIES=	databases
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Vector search SQLite extension
+WWW=		https://github.com/asg017/sqlite-vec
+
+LICENSE=	APACHE20 MIT
+LICENSE_COMB=	dual
+
+USES=		gmake localbase:ldflags sqlite:3
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	asg017
+GH_PROJECT=	sqlite-vec
+
+ALL_TARGET=	loadable shared static # 'static' and 'shared' are the static and shared libs with this extension
+CFLAGS+=	-include sys/types.h # workaround for https://github.com/asg017/sqlite-vec/issues/287
+MAKE_ARGS=	VERSION=${DISTVERSION}
+
+BINARY_ALIAS=	gcc=${CC}
+
+PLIST_FILES=	include/sqlite-vec.h \
+		lib/libsqlite_vec0.a \
+		lib/libsqlite_vec0.so \
+		libexec/sqlite-ext/vec0.so
+
+do-install:
+	# install the extension
+	${MKDIR} ${STAGEDIR}${PREFIX}/libexec/sqlite-ext
+	${INSTALL_LIB} ${WRKSRC}/dist/vec0.so ${STAGEDIR}${PREFIX}/libexec/sqlite-ext
+	# install the header and static library for users who want to build theor own SQLite code with this extension
+	${MKDIR} ${STAGEDIR}${PREFIX}/include
+	${INSTALL_DATA} ${WRKSRC}/sqlite-vec.h ${STAGEDIR}${PREFIX}/include/
+	${INSTALL_LIB} ${WRKSRC}/dist/libsqlite_vec0.so ${STAGEDIR}${PREFIX}/lib/
+	${INSTALL_DATA} ${WRKSRC}/dist/libsqlite_vec0.a ${STAGEDIR}${PREFIX}/lib/
+
+do-test:
+	@cd ${WRKSRC}/tests/minimum && \
+		${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} \
+			-DSQLITE_CORE \
+			-I${WRKSRC} \
+			demo.c \
+			${WRKSRC}/dist/libsqlite_vec0.a \
+			-lsqlite3 -lm -lpthread \
+			-o demo && \
+		./demo
+
+.include <bsd.port.mk>
diff --git a/databases/sqlite-ext-vec/distinfo b/databases/sqlite-ext-vec/distinfo
new file mode 100644
index 000000000000..47d480de8f81
--- /dev/null
+++ b/databases/sqlite-ext-vec/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1777830242
+SHA256 (asg017-sqlite-vec-v0.1.9_GH0.tar.gz) = 9823e737d9934dcbe85dff75d3fca81018a9beee803d70fa77b16faab5d61dc9
+SIZE (asg017-sqlite-vec-v0.1.9_GH0.tar.gz) = 617543
diff --git a/databases/sqlite-ext-vec/files/patch-Makefile b/databases/sqlite-ext-vec/files/patch-Makefile
new file mode 100644
index 000000000000..380103423d20
--- /dev/null
+++ b/databases/sqlite-ext-vec/files/patch-Makefile
@@ -0,0 +1,73 @@
+--- Makefile.orig	2026-03-31 07:59:06 UTC
++++ Makefile
+@@ -62,22 +62,28 @@ TARGET_STATIC=$(prefix)/libsqlite_vec0.a
+ 
+ TARGET_LOADABLE=$(prefix)/vec0.$(LOADABLE_EXTENSION)
+ TARGET_STATIC=$(prefix)/libsqlite_vec0.a
++TARGET_SHARED=$(prefix)/libsqlite_vec0.so
+ TARGET_STATIC_H=$(prefix)/sqlite-vec.h
+ TARGET_CLI=$(prefix)/sqlite3
+ 
+ loadable: $(TARGET_LOADABLE)
+ static: $(TARGET_STATIC)
++shared: $(TARGET_SHARED)
+ cli: $(TARGET_CLI)
+ 
+ all: loadable static cli
+ 
+ OBJS_DIR=$(prefix)/.objs
++OBJS_DIR_SHARED=$(prefix)/.objs-shared
+ LIBS_DIR=$(prefix)/.libs
+ BUILD_DIR=$(prefix)/.build
+ 
+ $(OBJS_DIR): $(prefix)
+ 	mkdir -p $@
+ 
++$(OBJS_DIR_SHARED): $(prefix)
++	mkdir -p $@
++
+ $(LIBS_DIR): $(prefix)
+ 	mkdir -p $@
+ 
+@@ -87,24 +93,29 @@ $(TARGET_LOADABLE): sqlite-vec.c sqlite-vec.h $(prefix
+ 
+ $(TARGET_LOADABLE): sqlite-vec.c sqlite-vec.h $(prefix)
+ 	$(CC) \
++		$(CFLAGS) \
+ 		-fPIC -shared \
+ 		-Wall -Wextra \
+ 		-Ivendor/ \
+-		-O3 \
+ 		$(CFLAGS) \
+ 		$< -o $@
+ 
+ $(TARGET_STATIC): sqlite-vec.c sqlite-vec.h $(prefix) $(OBJS_DIR)
+ 	$(CC) -Ivendor/ $(CFLAGS) -DSQLITE_CORE -DSQLITE_VEC_STATIC \
+-	-O3 -c  $< -o $(OBJS_DIR)/vec.o
++	-c  $< -o $(OBJS_DIR)/vec.o
+ 	$(AR) rcs $@ $(OBJS_DIR)/vec.o
+ 
++$(TARGET_SHARED): sqlite-vec.c sqlite-vec.h $(prefix) $(OBJS_DIR_SHARED)
++	$(CC) -fPIC -Ivendor/ $(CFLAGS) -DSQLITE_CORE -DSQLITE_VEC_STATIC \
++	-c  $< -o $(OBJS_DIR_SHARED)/vec.o
++	$(CC) -shared $(LDFLAGS) -o $@ $(OBJS_DIR_SHARED)/vec.o
++
+ $(TARGET_STATIC_H): sqlite-vec.h $(prefix)
+ 	cp $< $@
+ 
+ 
+ $(OBJS_DIR)/sqlite3.o: vendor/sqlite3.c $(OBJS_DIR)
+-	$(CC) -c -g3 -O3 -DSQLITE_EXTRA_INIT=core_init -DSQLITE_CORE -DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -I./vendor $< -o $@
++	$(CC) $(CFLAGS) -c -g3 -DSQLITE_EXTRA_INIT=core_init -DSQLITE_CORE -DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -I./vendor $< -o $@
+ 
+ $(LIBS_DIR)/sqlite3.a: $(OBJS_DIR)/sqlite3.o $(LIBS_DIR)
+ 	$(AR) rcs $@ $<
+@@ -113,7 +124,7 @@ $(OBJS_DIR)/shell.o: $(BUILD_DIR)/shell-new.c $(OBJS_D
+ 	sed 's/\/\*extra-version-info\*\//EXTRA_TODO/g' $< > $@
+ 
+ $(OBJS_DIR)/shell.o: $(BUILD_DIR)/shell-new.c $(OBJS_DIR)
+-	$(CC) -c -g3 -O3 \
++	$(CC) $(CFLAGS) -c \
+ 		-I./vendor \
+ 		-DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
+ 		-DEXTRA_TODO="\"CUSTOMBUILD:sqlite-vec\n\"" \
diff --git a/databases/sqlite-ext-vec/pkg-descr b/databases/sqlite-ext-vec/pkg-descr
new file mode 100644
index 000000000000..b5206a6f1951
--- /dev/null
+++ b/databases/sqlite-ext-vec/pkg-descr
@@ -0,0 +1,7 @@
+sqlite-vec is an extremely small, "fast enough" vector search SQLite extension.
+
+Features:
+- Store and query float, int8, and binary vectors in vec0 virtual tables
+- Written in pure C, no dependencies, runs anywhere SQLite runs
+- Supports Linux/MacOS/Windows, in the browser with WASM, Raspberry Pis, etc.
+- Store non-vector data in metadata, auxiliary, or partition key columns


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f7a2e9.3e6b0.4f783d9b>