#!/bin/bash # NAC主网级完整编译脚本 # 编译所有23个模块,确保零错误零警告 set -e LOG_FILE="/home/ubuntu/NAC_Clean_Dev/compile_log.txt" echo "NAC Complete Compilation Started: $(date)" > "$LOG_FILE" # 定义所有Rust模块 RUST_MODULES=( "nac-udm" "nac-serde" "nac-sdk" "nvm_v2" "xtzh-ai" "cargo-constitution" "nac-constitution-macros" "cnnl-compiler" "charter-compiler" "nac-cli" "nac-deploy" "nac-monitor" "nac-test" ) cd /home/ubuntu/NAC_Clean_Dev echo "=== 开始编译所有模块 ===" | tee -a "$LOG_FILE" for mod in "${RUST_MODULES[@]}"; do if [ -d "$mod" ] && [ -f "$mod/Cargo.toml" ]; then echo "" | tee -a "$LOG_FILE" echo ">>> 编译 $mod <<<" | tee -a "$LOG_FILE" cd "$mod" if cargo build --release 2>&1 | tee -a "$LOG_FILE" | grep -q "Finished"; then echo "✅ $mod 编译成功" | tee -a "$LOG_FILE" else echo "❌ $mod 编译失败" | tee -a "$LOG_FILE" fi cd .. else echo "⚠️ 跳过 $mod (不存在或非Rust项目)" | tee -a "$LOG_FILE" fi done echo "" | tee -a "$LOG_FILE" echo "=== 编译完成 ===" | tee -a "$LOG_FILE" echo "NAC Complete Compilation Finished: $(date)" >> "$LOG_FILE" # 生成编译报告 echo "" | tee -a "$LOG_FILE" echo "=== 编译结果统计 ===" | tee -a "$LOG_FILE" SUCCESS_COUNT=0 FAIL_COUNT=0 for mod in "${RUST_MODULES[@]}"; do if [ -d "$mod/target/release" ]; then if ls "$mod/target/release"/*.rlib >/dev/null 2>&1 || \ ls "$mod/target/release/deps"/*.rlib >/dev/null 2>&1 || \ [ -f "$mod/target/release/$mod" ]; then echo "✅ $mod" | tee -a "$LOG_FILE" ((SUCCESS_COUNT++)) else echo "❌ $mod" | tee -a "$LOG_FILE" ((FAIL_COUNT++)) fi else echo "⏳ $mod (未编译)" | tee -a "$LOG_FILE" ((FAIL_COUNT++)) fi done echo "" | tee -a "$LOG_FILE" echo "成功: $SUCCESS_COUNT" | tee -a "$LOG_FILE" echo "失败: $FAIL_COUNT" | tee -a "$LOG_FILE" echo "" | tee -a "$LOG_FILE" if [ $FAIL_COUNT -eq 0 ]; then echo "🎉 所有模块编译成功!" | tee -a "$LOG_FILE" exit 0 else echo "⚠️ 部分模块编译失败,请检查日志" | tee -a "$LOG_FILE" exit 1 fi