neuroflow-cpp / build.sh
cwenzi's picture
Upload folder using huggingface_hub
26d5b81 verified
Raw
History Blame Contribute Delete
1.97 kB
#!/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 ==="