Quellcode durchsuchen

build: add lmdb build + runtime dependency (v2.0 scaffolding)

Wire liblmdb-dev / liblmdb0 into the build + packaging dep graph for the
v2.0 storage engine substrate. No source uses LMDB symbols yet; subsequent
commits add the service/src/storage/ module.

- packaging/Dockerfile.base: append liblmdb-dev; bump base-image stamp v4 -> v5
- packaging/deb/templates/control.server: append liblmdb0 to Depends
- service/CMakeLists.txt: find_path/find_library for LMDB (no pkg-config on
  Debian 13) and wire ${LMDB_LIBRARY} / ${LMDB_INCLUDE_DIR} into the
  smartbotic-database target
fszontagh vor 2 Monaten
Ursprung
Commit
4ff093258b
3 geänderte Dateien mit 16 neuen und 2 gelöschten Zeilen
  1. 2 1
      packaging/Dockerfile.base
  2. 1 1
      packaging/deb/templates/control.server
  3. 13 0
      service/CMakeLists.txt

+ 2 - 1
packaging/Dockerfile.base

@@ -19,6 +19,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
     liblz4-dev \
     libsystemd-dev \
     libjemalloc-dev \
+    liblmdb-dev \
     protobuf-compiler \
     libprotobuf-dev \
     libgrpc++-dev \
@@ -37,4 +38,4 @@ ENV CCACHE_COMPRESSLEVEL=6
 
 WORKDIR /build
 
-RUN echo "smartbotic-db-build-base:debian13:v4" > /etc/smartbotic-db-build-base
+RUN echo "smartbotic-db-build-base:debian13:v5" > /etc/smartbotic-db-build-base

+ 1 - 1
packaging/deb/templates/control.server

@@ -14,5 +14,5 @@ License: proprietary
 Provides: shadowman-database, callerai-storage
 Conflicts: shadowman-database, callerai-storage
 Replaces: shadowman-database, callerai-storage
-Depends: libsmartbotic-db-client (= {{VERSION}}), libssl3t64, liblz4-1, libsystemd0, libjemalloc2, libyyjson0
+Depends: libsmartbotic-db-client (= {{VERSION}}), libssl3t64, liblz4-1, libsystemd0, libjemalloc2, libyyjson0, liblmdb0
 Installed-Size: {{INSTALLED_SIZE}}

+ 13 - 0
service/CMakeLists.txt

@@ -26,6 +26,15 @@ pkg_check_modules(LZ4 QUIET liblz4)
 # no LD_PRELOAD needed.
 pkg_check_modules(JEMALLOC QUIET jemalloc)
 
+# LMDB — v2.0 storage substrate. liblmdb does not ship a pkg-config file on
+# Debian 13 (`pkg-config --modversion lmdb` fails), so resolve via find_path /
+# find_library. Hard dependency.
+find_path(LMDB_INCLUDE_DIR lmdb.h)
+find_library(LMDB_LIBRARY NAMES lmdb)
+if(NOT LMDB_INCLUDE_DIR OR NOT LMDB_LIBRARY)
+    message(FATAL_ERROR "LMDB not found. Install liblmdb-dev.")
+endif()
+
 # Source files
 set(DATABASE_SERVICE_SOURCES
     src/main.cpp
@@ -94,6 +103,10 @@ endif()
 target_link_libraries(smartbotic-database PRIVATE ${yyjson_LIBRARIES})
 target_include_directories(smartbotic-database PRIVATE ${yyjson_INCLUDE_DIRS})
 
+# LMDB — v2.0 storage substrate
+target_link_libraries(smartbotic-database PRIVATE ${LMDB_LIBRARY})
+target_include_directories(smartbotic-database PRIVATE ${LMDB_INCLUDE_DIR})
+
 # v1.9.4 — jemalloc allocator (overrides glibc malloc/free)
 if(JEMALLOC_FOUND)
     target_compile_definitions(smartbotic-database PRIVATE HAVE_JEMALLOC)