File size: 1,967 Bytes
26d5b81 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #!/bin/bash
# NeuroFlow C++ 编译脚本 — 自动暂停/恢复 cron 防止冲突
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
BUILD_DIR="$SCRIPT_DIR/build"
DEST="/mnt/d/neuroflow-model/neuroflow/_core.cpython-311-x86_64-linux-gnu.so"
VENV_PYTHON="$HOME/.hermes/hermes-agent/venv/bin/python3"
PYBIND11_DIR="$($VENV_PYTHON -c 'import pybind11; print(pybind11.get_cmake_dir())')"
CRON_LEARN="bd007dc2fe14"
CRON_REPORT="5d4dac90ff0d"
echo "=== NeuroFlow C++ Build ==="
# 1. 暂停 cron 任务
echo "[1/5] Pausing cron jobs..."
hermes cron pause "$CRON_LEARN" 2>/dev/null || echo " ($CRON_LEARN already paused)"
hermes cron pause "$CRON_REPORT" 2>/dev/null || echo " ($CRON_REPORT already paused)"
sleep 2 # 等正在运行的任务结束
# 2. 编译
echo "[2/5] Building with ninja..."
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
cmake .. -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DNEUROFLOW_BUILD_TESTS=OFF \
-DNEUROFLOW_BUILD_PYTHON=ON \
-DPython3_EXECUTABLE="$VENV_PYTHON" \
-Dpybind11_DIR="$PYBIND11_DIR"
ninja -j$(nproc)
# 3. 部署 so 到 neuroflow 包目录
echo "[3/5] Deploying .so to neuroflow package..."
cp "$BUILD_DIR/_core.cpython-311-x86_64-linux-gnu.so" "$DEST"
# 4. 验证
echo "[4/5] Verifying..."
"$VENV_PYTHON" -c "
import sys; sys.path.insert(0, '/mnt/d/neuroflow-model')
from neuroflow._core import create_multimodal
m = create_multimodal()
import numpy as np
x = np.random.randn(1, 512).astype(np.float32)
out = m.forward_text(x)
print(f' forward_text OK, output shape: {out.decision.shape}')
m.save('/tmp/nf_build_test.bin')
m2 = create_multimodal()
m2.load('/tmp/nf_build_test.bin')
print(' save/load roundtrip OK')
print(' ✅ Verification passed')
"
# 5. 恢复 cron
echo "[5/5] Resuming cron jobs..."
hermes cron resume "$CRON_LEARN" 2>/dev/null || echo " ($CRON_LEARN already running)"
hermes cron resume "$CRON_REPORT" 2>/dev/null || echo " ($CRON_REPORT already running)"
echo "=== Build complete ==="
|