-
Notifications
You must be signed in to change notification settings - Fork 1
IMPLEMENTATION_CHECKLIST
Diese Anleitung behebt die CMake find_package() Fehler für FAISS und gRPC auf Windows (x64).
Status: 🟢 Bereit zur Implementierung
Betroffene CMakeLists.txt Dateien: 2
Geschätzte Implementierungszeit: 10 Minuten
Test-Zeit: 15 Minuten
# Terminal öffnen und ins Projektverzeichnis navigieren
cd C:\VCC\themis
# Diagnose durchführen
.\scripts\fix-cmake-prefix-path.ps1 -Action diagnoseErwartet Output wenn alles falsch ist:
❌ FAISS config NOT found: ...
❌ gRPC config NOT found: ...
⚠️ CMake Cache missing faiss_DIR entry
⚠️ CMake Cache missing gRPC_DIR entry
# FAISS Check
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\share\faiss\faiss-config.cmake"
# Erwartet: True
# gRPC Check
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\share\grpc\gRPCConfig.cmake"
# Erwartet: True
# Libraries Check
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\faiss.lib" # True erwartet
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\grpc.lib" # True erwartetDatei: CMakeLists.txt
Zeile zu patchen: 40-50 (nach set(CMAKE_EXPORT_COMPILE_COMMANDS ON))
Vor (Zeile 40-47):
# Export compile commands for IDE support
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# vcpkg integration
if(DEFINED ENV{VCPKG_ROOT})
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")Nach (Zeile 40-60):
# Export compile commands for IDE support
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# ============================================================================
# v1.3.5: Fix CMAKE_PREFIX_PATH for vcpkg packages (faiss, gRPC, etc)
# Explanation: vcpkg.cmake sets PREFIX_PATH but it may be cleared by IDE builds
# SOLUTION: Explicitly prepend vcpkg installed directory to PREFIX_PATH
# GitHub Issues: microsoft/vcpkg#xxxxx, grpc/grpc#38623
# ============================================================================
if(DEFINED ENV{VCPKG_ROOT})
list(PREPEND CMAKE_PREFIX_PATH
"$ENV{VCPKG_ROOT}/installed/x64-windows/share"
"$ENV{VCPKG_ROOT}/installed/x64-windows")
message(STATUS "v1.3.5: CMAKE_PREFIX_PATH set to ${CMAKE_PREFIX_PATH}")
endif()
# vcpkg integration
if(DEFINED ENV{VCPKG_ROOT})
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")Implementation:
- VS Code öffnen: Datei
CMakeLists.txt(Line 1) - Zu Zeile 40 navigieren (Ctrl+G → "40")
- Nach Zeile 46 (nach
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)) neue Zeilen einfügen - Obigen Code einfügen
- Speichern (Ctrl+S)
Vor:
# Optional: Faiss for GPU support (graceful degradation if not found)
if(THEMIS_ENABLE_GPU)
find_package(faiss CONFIG)
if(NOT faiss_FOUND)
message(WARNING "Faiss nicht gefunden – GPU-Unterstützung wird automatisch deaktiviert.")
set(THEMIS_ENABLE_GPU OFF CACHE BOOL "Enable GPU acceleration for vector search" FORCE)
endif()
endif()Nach:
# Optional: Faiss for GPU support (graceful degradation if not found)
if(THEMIS_ENABLE_GPU)
find_package(faiss CONFIG QUIET)
if(NOT faiss_FOUND)
# v1.3.5: Fallback with HINTS if CMAKE_PREFIX_PATH wasn't propagated
find_package(faiss CONFIG
HINTS "${CMAKE_PREFIX_PATH}"
QUIET)
endif()
if(NOT faiss_FOUND)
message(WARNING "Faiss nicht gefunden – GPU-Unterstützung wird automatisch deaktiviert.")
set(THEMIS_ENABLE_GPU OFF CACHE BOOL "Enable GPU acceleration for vector search" FORCE)
else()
message(STATUS "v1.3.5: faiss found at ${faiss_DIR}")
endif()
endif()Implementation:
- Zu Zeile 502 navigieren
- Die if-block mit den Fallback-find_package Calls ersetzen
- Speichern
Vor:
find_package(gRPC CONFIG QUIET)
if(gRPC_FOUND)
message(STATUS "gRPC found - enabling LLM gRPC service")
list(APPEND THEMIS_CORE_SOURCES
src/server/llm_grpc_service.cpp
proto/llm_service.proto
)
# Note: Proto generation should be configured in a separate section when needed
else()
message(STATUS "gRPC not found - disabling LLM gRPC service and proto generation")
endif()Nach:
find_package(gRPC CONFIG QUIET)
if(NOT gRPC_FOUND)
# v1.3.5: Fallback with HINTS if CMAKE_PREFIX_PATH wasn't propagated
find_package(gRPC CONFIG
HINTS "${CMAKE_PREFIX_PATH}"
QUIET)
endif()
if(gRPC_FOUND)
message(STATUS "v1.3.5: gRPC found at ${gRPC_DIR} - enabling LLM gRPC service")
list(APPEND THEMIS_CORE_SOURCES
src/server/llm_grpc_service.cpp
proto/llm_service.proto
)
# Note: Proto generation should be configured in a separate section when needed
else()
message(WARNING "gRPC not found - disabling LLM gRPC service and proto generation")
endif()Implementation:
- Zu Zeile 925 navigieren
- Die find_package Calls ersetzen
- Speichern
Datei: plugins/rpc/grpc/CMakeLists.txt
Zeile: 8-20
Vor:
# Find gRPC package
find_package(gRPC CONFIG)
if(NOT gRPC_FOUND)
find_package(gRPC)
endif()
if(NOT gRPC_FOUND)
message(WARNING "gRPC not found - skipping gRPC plugin build")
message(WARNING "Install with: apt install libgrpc++-dev or brew install grpc or vcpkg install grpc")
return()
endif()Nach:
# v1.3.5 Hotfix: Ensure gRPC_DIR is set from vcpkg
if(NOT DEFINED gRPC_DIR AND DEFINED ENV{VCPKG_ROOT})
set(gRPC_DIR "$ENV{VCPKG_ROOT}/installed/x64-windows/share/grpc" CACHE PATH "gRPC directory")
endif()
# Find gRPC package
find_package(gRPC CONFIG QUIET)
if(NOT gRPC_FOUND)
# Fallback with HINTS
find_package(gRPC CONFIG
HINTS "${CMAKE_PREFIX_PATH}"
QUIET)
endif()
if(NOT gRPC_FOUND)
message(WARNING "gRPC not found - skipping gRPC plugin build")
message(WARNING "To fix: Set gRPC_DIR to <vcpkg>/installed/x64-windows/share/grpc")
message(WARNING "Or install with: apt install libgrpc++-dev | brew install grpc | vcpkg install grpc")
return()
else()
message(STATUS "v1.3.5: gRPC found at ${gRPC_DIR}")
endif()Implementation:
- Datei öffnen: plugins/rpc/grpc/CMakeLists.txt
- Zu Zeile 8 navigieren
- Code ersetzen
- Speichern
cd C:\VCC\themis
# Option 1: Einfach mit Standard-Optionen
.\scripts\fix-cmake-prefix-path.ps1 -Action build
# Option 2: Mit GPU-Support
.\scripts\fix-cmake-prefix-path.ps1 -Action build -EnableGPU $true
# Option 3: Mit GPU + LLM
.\scripts\fix-cmake-prefix-path.ps1 -Action build -EnableGPU $true -EnableLLM $true
# Option 4: Clean (Remove alt build dir) + Build
.\scripts\fix-cmake-prefix-path.ps1 -Action cleancd C:\VCC\themis
$VCPKG = "C:\VCC\themis\vcpkg_installed\x64-windows"
cmake -S . -B build-msvc `
-G "Visual Studio 17 2022" `
-A x64 `
-DCMAKE_TOOLCHAIN_FILE="$PWD\vcpkg\scripts\buildsystems\vcpkg.cmake" `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DCMAKE_PREFIX_PATH="$VCPKG;$VCPKG\share" `
-Dfaiss_DIR="$VCPKG\share\faiss" `
-DgRPC_DIR="$VCPKG\share\grpc" `
-DTHEMIS_ENABLE_GPU=ON `
-DTHEMIS_ENABLE_LLM=ON `
-DTHEMIS_BUILD_TESTS=ONErfolgreiches Zeichen:
...
-- v1.3.5: CMAKE_PREFIX_PATH set to ...
...
-- Found faiss: ...faiss-config.cmake (found version "1.8.0")
-- v1.3.5: faiss found at ...
...
-- v1.3.5: gRPC found at ... - enabling LLM gRPC service
...
-- Configuring done (10.5s)
-- Generating done (0.5s)
-- Build files have been generated to: C:\VCC\themis\build-msvc
Fehler-Zeichen:
CMake Error: Could NOT find faiss (missing: faiss_DIR)
CMake Error: Could NOT find gRPC (missing: gRPC_DIR)
Falls Fehler: Gehe zu Phase 4 Debugging.
cd C:\VCC\themis
# Option 1: CMAKE
cmake --build build-msvc --config Release --target themis_server --parallel 8
# Option 2: MSBuild direkt
msbuild build-msvc\Themis.sln /p:Configuration=Release /m:8 /t:themis_server# Sollte existieren
Test-Path "C:\VCC\themis\build-msvc\Release\themis_server.exe" # True erwartet
# Optional: Mit GPU auch
Test-Path "C:\VCC\themis\build-msvc\Release\themis_core.lib" # True erwartet# Wenn GPU-Features gebaut wurden, überprüfen ob FAISS geladen wird
C:\VCC\themis\build-msvc\Release\themis_server.exe --help | Select-String -Pattern "faiss|gpu"
# Wenn keine Fehler: ✅ FAISS Integration erfolgreich# Überprüfe dass Pfade im Cache korrekt sind
Select-String -Path "C:\VCC\themis\build-msvc\CMakeCache.txt" `
-Pattern "faiss|gRPC" | Select-Object -First 20
# Sollte enthalten:
# faiss_DIR:PATH=...share\faiss
# gRPC_DIR:PATH=...share\grpc# Script erneut laufen lassen für Bestätigung
.\scripts\fix-cmake-prefix-path.ps1 -Action diagnose
# Sollte ALLE grünen ✅ Checks zeigenUrsache: CMAKE_PREFIX_PATH wurde nicht richtig propagiert
Lösung:
# 1. Überprüfe VCPKG_ROOT
$env:VCPKG_ROOT
# 2. Wenn leer, setzen
$env:VCPKG_ROOT = "C:\VCC\themis\vcpkg"
# 3. Erneut CMake Config mit explizitem faiss_DIR
cmake -S . -B build-msvc `
... `
-Dfaiss_DIR="C:\VCC\themis\vcpkg_installed\x64-windows\share\faiss" `
...Ursache: Protobuf Abhängigkeit nicht gefunden
Lösung:
# vcpkg protobuf neu bauen
cd C:\VCC\themis
.\vcpkg\vcpkg install protobuf:x64-windows
# dann erneut gRPC
.\vcpkg\vcpkg install grpc:x64-windows
# Dann CMake Config neu mit explizitem gRPC_DIR
cmake -S . -B build-msvc `
... `
-DgRPC_DIR="C:\VCC\themis\vcpkg_installed\x64-windows\share\grpc" `
...Ursache: gRPC auf Windows MUSS statisch sein
Überprüfung:
# MUSS für Windows sein:
Select-String -Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\grpc.lib"
# Sollte statische Library sein, nicht .dll
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\grpc.dll" # FALSE erwartet!Fix wenn DLL vorhanden:
# gRPC mit statischen Libraries neu bauen
cd C:\VCC\themis
Remove-Item -Recurse -Force "vcpkg_installed\x64-windows\*" -Force
.\vcpkg\vcpkg install grpc:x64-windows --triplet x64-windowsUrsache: FAISS Config-Datei hat Abhängigkeitsfehler
Debug:
# Lese die config datei
Get-Content "C:\VCC\themis\vcpkg_installed\x64-windows\share\faiss\faiss-config.cmake"
# Sollte mit find_dependency(OpenMP) und find_dependency(BLAS) starten
# Wenn Fehler: Überprüfe OpenMP und BLAS installation
# Neu bauen wenn nötig
.\vcpkg\vcpkg install faiss:x64-windows- Workspace geöffnet in VS Code
- Terminal verfügbar
- Diagnose durchgeführt und Probleme identifiziert
- CMakeLists.txt Line 40-60 gepatchot ✅
- FAISS find_package (Line 502-510) gepatchot ✅
- gRPC find_package (Line 925-940) gepatchot ✅
- gRPC Plugin CMakeLists.txt gepatchot ✅
- Alle Dateien gespeichert (Ctrl+S) ✅
- CMake Configure erfolgreich:
configure donemessage ✅ - Build erfolgreich:
themis_server.exeexistiert ✅ - Keine Linker-Fehler ✅
- Diagnose-Script zeigt alle ✅ Checks ✅
- CMake Cache enthält faiss_DIR und gRPC_DIR ✅
- themis_server.exe lädt FAISS/gRPC ohne Fehler ✅
Falls Probleme nach Implementierung:
-
Logs sammeln:
cmake --build build-msvc --config Release 2>&1 | Tee-Object -FilePath "build_errors.log"
-
Diagnose durchführen:
.\scripts\fix-cmake-prefix-path.ps1 -Action diagnose > diagnostics.txt
-
CMake verbose:
cmake -S . -B build-msvc --debug-output
-
Ref. Dokumente konsultieren:
Version: 1.3.5
Datum: 2025-12-26
Status: 🟢 Ready
Geschätzte Implementierungszeit: 20 Minuten total
- Architecture-ACCESS-MODEL-IMPLEMENTATION-SUMMARY
- Architecture-ADR-003-pg-dump-sql-parser
- Architecture-BASEENTITY-PRINCIPLE
- Architecture-CACHE-STORAGE-INTEGRATION
- Architecture-CMAKE-ARCHITECTURE
- Architecture-CMAKE-FLAGS-REFERENCE
- Architecture-CMAKE-MODULAR-ARCHITECTURE
- Architecture-CONCERNS-ARCHITECTURE-DIAGRAM
- Architecture-CONCERNS-IMPLEMENTATION-SUMMARY
- Architecture-CONTENT-MODEL
- Architecture-COPILOT-THEMISDB-GRAPH-RAG-BACKEND-ARCHITECTURE
- Architecture-CRYPTO-AND-KEYS
- Architecture-FEATURE-FLAGS-REFERENCE
- Architecture-GPU-ARCHITECTURE-REVIEW-TEMPLATE
- Architecture-HTTP-SHUTDOWN-HARDENING
- Architecture-MIGRATION-GUIDE-CONCERNS
- Architecture-MIGRATION-GUIDE-v13-v14
- Architecture-MODULARIZATION-GUIDE
- Architecture-MODULAR-ARCHITECTURE-ROADMAP
- Architecture-MODULE-ARCHITECTURE-INDEX
- Architecture-P1D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D08-MAMBA-GOVERNANCE-CONTRACT
- Architecture-P1-P2-IMPLEMENTATION-COMPLETION-INDEX
- Architecture-PHASE0-COMPLETION-ASSESSMENT
- Architecture-PHASE3-QUERYENGINE-DI-ARCHITECTURE
- Architecture-PHASE4-INDEX-MANAGER-DI
- Architecture-POSTGRESQL-WIRE-PROTOCOL
- Architecture-QUERYENGINE-IMPLEMENTATION-GUIDE
- Architecture-QUERY-SCHEDULING
- Architecture-RAFT-CONSENSUS-DESIGN
- Architecture-README
- Architecture-README-SSM-HYBRID-IMPLEMENTATION
- Architecture-REFACTORING-SUMMARY
- Architecture-RESOURCE-POOLING
- Architecture-SOURCE-DIRECTORY-GUIDE
- Architecture-THEMIS-CORE-GUIDE
- Architecture-UNIFIED-ACCESS-MODEL
- Architecture-WAL-GRPC-MTLS-CONFIGURATION
- Architecture-WIRE-PROTOCOL-RETRY
- Architecture-boltzmann-observability-draft
- Architecture-experimental-logarithmic-vector-storage
- Architecture-llm-wiki-mvp-adr
- Architecture-rewrite-engine-architecture
- Architecture-rope-api-architecture
- Architecture-ssm-gguf-mamba-status
- Architecture-ssm-hybrid-analysis
- Architecture-ssm-hybrid-rollout-plan
- Architecture-ssm-plugin-interface-design-review
- Architecture-transaction-coordinators
- Architecture-wiki-secondary-index
- Architecture-wire-protocol
- Governance-DISABLED-STUB-POLICY
- Governance-DOCS-PR-POLICY
- Governance-GA-PROMOTION-SIGN-OFF
- Governance-GITHUB-MILESTONES-SETUP
- Governance-MATURITY-CLAIM-VERIFICATION-CHECKLIST
- Governance-MATURITY-EVIDENCE-REGISTRY
- Governance-MERGE-GATE-BOT-CONFIG
- Governance-MERGE-GATE-STATUS-LIVE
- Governance-PHASE3-ENFORCEMENT-RUNBOOK
- Governance-PHASE-1-CLOSURE-REPORT
- Governance-PHASE-CLOSURE-POLICY
- Governance-PHASE-DEPENDENCY-GRAPH
- Governance-PLUGIN-SUBMODULE-ROLLBACK
- Governance-PRODUCTION-READY-2026-DELIVERY-PLAN
- Governance-PR-VERSION-TARGETING
- Governance-PR-VERSION-TARGETING-BACKFILL
- Governance-QUERY-MODULE-STATUS
- Governance-README
- Governance-RELEASE-PROMOTION-GATE-POLICY
- Governance-RELEASE-VALIDATION-CHECKLIST
- Governance-SECURITY-MODULE-5671-EVIDENCE-SUMMARY
- Governance-SHARDING-P6-RESIDUAL-RISK-ACCEPTANCE
- Governance-SOURCECODE-COMPLIANCE-GOVERNANCE
- Governance-UPDATES-DEVELOPMENT-STATUS-SIGN-OFF
- Governance-WAVE-C-IMPLEMENTATION-COMPLETE
- Module-acceleration-Roadmap
- Module-access-model-Roadmap
- Module-ai-Roadmap
- Module-analytics-Roadmap
- Module-api-Roadmap
- Module-aql-Roadmap
- Module-auth-Roadmap
- Module-base-Roadmap
- Module-cache-Roadmap
- Module-cdc-Roadmap
- Module-chaos-Roadmap
- Module-chimera-Roadmap
- Module-config-Roadmap
- Module-content-Roadmap
- Module-core-Roadmap
- Module-distributed-knowledge-Roadmap
- Module-distributed-tensor-Roadmap
- Module-document-Roadmap
- Module-ethics-ai-Roadmap
- Module-evaluation-Roadmap
- Module-execution-Roadmap
- Module-exporters-Roadmap
- Module-failover-Roadmap
- Module-geo-Roadmap
- Module-governance-Roadmap
- Module-gpu-Roadmap
- Module-graph-Roadmap
- Module-image-analysis-Roadmap
- Module-importers-Roadmap
- Module-index-Roadmap
- Module-ingestion-Roadmap
- Module-llama-cpp-Roadmap
- Module-llm-Roadmap
- Module-llm-streaming-Roadmap
- Module-llm-wiki-Roadmap
- Module-maintenance-Roadmap
- Module-metadata-Roadmap
- Module-network-Roadmap
- Module-observability-Roadmap
- Module-onnx-clip-Roadmap
- Module-performance-Roadmap
- Module-plugins-Roadmap
- Module-process-Roadmap
- Module-projects-Roadmap
- Module-prompt-engineering-Roadmap
- Module-query-Roadmap
- Module-rag-Roadmap
- Module-replication-Roadmap
- Module-retrieval-Roadmap
- Module-rpc-grpc-Roadmap
- Module-scheduler-Roadmap
- Module-scraper-Roadmap
- Module-search-Roadmap
- Module-security-Roadmap
- Module-server-Roadmap
- Module-sharding-Roadmap
- Module-stable-diffusion-Roadmap
- Module-storage-Roadmap
- Module-temporal-Roadmap
- Module-tensor-Roadmap
- Module-themis-Roadmap
- Module-timeseries-Roadmap
- Module-toolbox-Roadmap
- Module-training-Roadmap
- Module-transaction-Roadmap
- Module-updates-Roadmap
- Module-user-storage-encrypted-Roadmap
- Module-utils-Roadmap
- Module-vector-search-Roadmap
- Module-voice-Roadmap
- Module-whisper-Roadmap