aboutsummaryrefslogtreecommitdiff
path: root/databases/sqlite-ext-vec
diff options
context:
space:
mode:
Diffstat (limited to 'databases/sqlite-ext-vec')
-rw-r--r--databases/sqlite-ext-vec/Makefile52
-rw-r--r--databases/sqlite-ext-vec/distinfo3
-rw-r--r--databases/sqlite-ext-vec/files/patch-Makefile73
-rw-r--r--databases/sqlite-ext-vec/pkg-descr7
4 files changed, 135 insertions, 0 deletions
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