@@ -48,7 +48,8 @@ FROM base-builder AS deps-builder
4848
4949ARG PG_VERSION
5050
51- WORKDIR /build/ruvector-postgres
51+ # Use workspace layout: /build is the workspace root
52+ WORKDIR /build/crates/ruvector-postgres
5253
5354# Copy only dependency files first for better caching
5455COPY crates/ruvector-postgres/Cargo.toml ./
@@ -70,8 +71,70 @@ FROM deps-builder AS extension-builder
7071
7172ARG PG_VERSION
7273
74+ # Create a minimal workspace Cargo.toml so dependency crates can resolve
75+ # workspace inheritance (edition.workspace, version.workspace, etc.)
76+ RUN cat > /build/Cargo.toml << 'WORKSPACE_EOF'
77+ [workspace]
78+ members = [
79+ "crates/ruvector-postgres" ,
80+ "crates/ruvector-solver" ,
81+ "crates/ruvector-math" ,
82+ "crates/ruvector-attention" ,
83+ "crates/sona" ,
84+ "crates/ruvector-domain-expansion" ,
85+ "crates/ruvector-mincut-gated-transformer" ,
86+ ]
87+ resolver = "2"
88+
89+ [workspace.package]
90+ version = "2.0.4"
91+ edition = "2021"
92+ rust-version = "1.77"
93+ license = "MIT"
94+ authors = ["Ruvector Team" ]
95+ repository = "https://github.com/ruvnet/ruvector"
96+
97+ [workspace.dependencies]
98+ serde = { version = "1.0" , features = ["derive" ] }
99+ serde_json = "1.0"
100+ thiserror = "2.0"
101+ rand = "0.8"
102+ rand_distr = "0.4"
103+ tracing = "0.1"
104+ rayon = "1.10"
105+ crossbeam = "0.8"
106+ dashmap = "6.1"
107+ parking_lot = "0.12"
108+ once_cell = "1.20"
109+ criterion = { version = "0.5" , features = ["html_reports" ] }
110+ proptest = "1.5"
111+ nalgebra = { version = "0.33" , default-features = false, features = ["std" ] }
112+ ndarray = "0.16"
113+ chrono = "0.4"
114+ anyhow = "1.0"
115+
116+ [profile.release]
117+ opt-level = 3
118+ lto = "fat"
119+ codegen-units = 1
120+ strip = true
121+ panic = "unwind"
122+ WORKSPACE_EOF
123+
73124# Copy the ruvector-mincut-gated-transformer dependency (required for gated-transformer feature)
74- COPY crates/ruvector-mincut-gated-transformer /build/ruvector-mincut-gated-transformer/
125+ COPY crates/ruvector-mincut-gated-transformer /build/crates/ruvector-mincut-gated-transformer/
126+
127+ # Copy v0.3 dependencies (workspace layout preserves inheritance resolution)
128+ COPY crates/ruvector-solver /build/crates/ruvector-solver/
129+ COPY crates/ruvector-math /build/crates/ruvector-math/
130+ COPY crates/ruvector-attention /build/crates/ruvector-attention/
131+ COPY crates/sona /build/crates/sona/
132+ COPY crates/ruvector-domain-expansion /build/crates/ruvector-domain-expansion/
133+
134+ # Copy rvf crates (optional path deps of ruvector-domain-expansion, Cargo validates they exist)
135+ COPY crates/rvf/rvf-types /build/crates/rvf/rvf-types/
136+ COPY crates/rvf/rvf-wire /build/crates/rvf/rvf-wire/
137+ COPY crates/rvf/rvf-crypto /build/crates/rvf/rvf-crypto/
75138
76139# Copy actual source code
77140COPY crates/ruvector-postgres/Cargo.toml ./
@@ -81,13 +144,16 @@ COPY crates/ruvector-postgres/src ./src/
81144COPY crates/ruvector-postgres/sql ./sql/
82145COPY crates/ruvector-postgres/benches ./benches/
83146
84- # Build the extension with all features including gated-transformer
147+ # Build the extension with all features including v0.3 modules
85148RUN cargo pgrx package \
86149 --pg-config /usr/lib/postgresql/${PG_VERSION}/bin/pg_config \
87- --features pg${PG_VERSION},graph-complete,gated-transformer
150+ --features pg${PG_VERSION},graph-complete,gated-transformer,analytics-complete,attention-extended,sona-learning,domain-expansion
88151
89- # pgrx generates .control and .so but not SQL - copy our hand-written SQL file
90- RUN cp sql/ruvector--2.0.0.sql target/release/ruvector-pg${PG_VERSION}/usr/share/postgresql/${PG_VERSION}/extension/ 2>/dev/null || true
152+ # pgrx generates .control and .so but not SQL - copy our hand-written SQL files
153+ # In a workspace, target/ is at the workspace root /build/target/, not per-crate
154+ RUN cp sql/ruvector--0.3.0.sql /build/target/release/ruvector-pg${PG_VERSION}/usr/share/postgresql/${PG_VERSION}/extension/ 2>/dev/null || true && \
155+ cp sql/ruvector--2.0.0.sql /build/target/release/ruvector-pg${PG_VERSION}/usr/share/postgresql/${PG_VERSION}/extension/ 2>/dev/null || true && \
156+ cp sql/ruvector--2.0.0--0.3.0.sql /build/target/release/ruvector-pg${PG_VERSION}/usr/share/postgresql/${PG_VERSION}/extension/ 2>/dev/null || true
91157
92158# ============================================================================
93159# Stage 4: Runtime (Production)
@@ -101,9 +167,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
101167 libssl3 \
102168 && rm -rf /var/lib/apt/lists/*
103169
104- # Copy built extension from builder
105- COPY --from=extension-builder /build/ruvector-postgres/ target/release/ruvector-pg${PG_VERSION}/usr/share/postgresql/${PG_VERSION}/extension/* /usr/share/postgresql/${PG_VERSION}/extension/
106- COPY --from=extension-builder /build/ruvector-postgres/ target/release/ruvector-pg${PG_VERSION}/usr/lib/postgresql/${PG_VERSION}/lib/* /usr/lib/postgresql/${PG_VERSION}/lib/
170+ # Copy built extension from builder (workspace target is at /build/target/)
171+ COPY --from=extension-builder /build/target/release/ruvector-pg${PG_VERSION}/usr/share/postgresql/${PG_VERSION}/extension/* /usr/share/postgresql/${PG_VERSION}/extension/
172+ COPY --from=extension-builder /build/target/release/ruvector-pg${PG_VERSION}/usr/lib/postgresql/${PG_VERSION}/lib/* /usr/lib/postgresql/${PG_VERSION}/lib/
107173
108174# Copy initialization script with proper permissions
109175COPY --chmod=644 crates/ruvector-postgres/docker/init.sql /docker-entrypoint-initdb.d/
@@ -118,13 +184,13 @@ ENV PG_VERSION=${PG_VERSION}
118184ENV POSTGRES_INITDB_ARGS="--data-checksums"
119185
120186# Labels for version tracking
121- LABEL org.opencontainers.image.title="RuVector PostgreSQL Extension v2 "
122- LABEL org.opencontainers.image.description="High-performance vector database extension for PostgreSQL with 230+ SQL functions, Flash Attention, GNN, hybrid search, multi-tenancy , and self-healing "
123- LABEL org.opencontainers.image.version="2.0.4 "
187+ LABEL org.opencontainers.image.title="RuVector PostgreSQL Extension v0.3 "
188+ LABEL org.opencontainers.image.description="High-performance vector database extension for PostgreSQL with 143 SQL functions, Solver, Math, TDA, Extended Attention, Sona , and Domain Expansion "
189+ LABEL org.opencontainers.image.version="0.3.0 "
124190LABEL org.opencontainers.image.vendor="ruv.io"
125191LABEL org.opencontainers.image.source="https://github.com/ruvnet/ruvector"
126192LABEL ruvector.pg.version="${PG_VERSION}"
127- LABEL ruvector.features="attention,gnn,hybrid,tenancy,healing,learning,hyperbolic,graph"
193+ LABEL ruvector.features="attention,gnn,hybrid,tenancy,healing,learning,hyperbolic,graph,solver,math,tda,sona,domain-expansion "
128194
129195# Health check
130196HEALTHCHECK --interval=5s --timeout=5s --start-period=10s --retries=5 \
0 commit comments