#!/bin/bash # NAC区块链开发环境验证脚本 # 作者:NAC公链开发小组 set -e echo "=========================================" echo " NAC开发环境验证" echo "=========================================" echo "" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' PASS=0 FAIL=0 # 检查函数 check_command() { if command -v $1 &> /dev/null; then echo -e "${GREEN}✓${NC} $1: $(command -v $1)" ((PASS++)) return 0 else echo -e "${RED}✗${NC} $1: 未安装" ((FAIL++)) return 1 fi } check_version() { echo -e "${YELLOW}检查 $1 版本...${NC}" $2 echo "" } # 1. 检查必需工具 echo "1. 检查必需工具" echo "-------------------" check_command rustc check_command cargo check_command git echo "" # 2. 检查可选工具 echo "2. 检查可选工具" echo "-------------------" check_command go || echo -e "${YELLOW} (Go是可选的,部分模块需要)${NC}" echo "" # 3. 检查Rust版本 echo "3. 检查Rust工具链" echo "-------------------" check_version "Rust" "rustc --version" check_version "Cargo" "cargo --version" # 检查Rust组件 echo "检查Rust组件:" if rustup component list | grep -q "rustfmt.*installed"; then echo -e "${GREEN}✓${NC} rustfmt: 已安装" ((PASS++)) else echo -e "${RED}✗${NC} rustfmt: 未安装" ((FAIL++)) fi if rustup component list | grep -q "clippy.*installed"; then echo -e "${GREEN}✓${NC} clippy: 已安装" ((PASS++)) else echo -e "${RED}✗${NC} clippy: 未安装" ((FAIL++)) fi if rustup component list | grep -q "rust-src.*installed"; then echo -e "${GREEN}✓${NC} rust-src: 已安装" ((PASS++)) else echo -e "${RED}✗${NC} rust-src: 未安装" ((FAIL++)) fi # 检查WASM目标 if rustup target list | grep -q "wasm32-unknown-unknown (installed)"; then echo -e "${GREEN}✓${NC} wasm32-unknown-unknown: 已安装" ((PASS++)) else echo -e "${RED}✗${NC} wasm32-unknown-unknown: 未安装" ((FAIL++)) fi echo "" # 4. 检查Go版本(如果安装了) if command -v go &> /dev/null; then echo "4. 检查Go工具链" echo "-------------------" check_version "Go" "go version" fi # 5. 检查系统依赖 echo "5. 检查系统依赖" echo "-------------------" check_command gcc || check_command clang check_command pkg-config echo "" # 6. 检查NAC模块 echo "6. 检查NAC模块" echo "-------------------" if [ -d "nac-udm" ]; then echo -e "${GREEN}✓${NC} nac-udm: 存在" ((PASS++)) else echo -e "${RED}✗${NC} nac-udm: 不存在" ((FAIL++)) fi if [ -d "charter-compiler" ]; then echo -e "${GREEN}✓${NC} charter-compiler: 存在" ((PASS++)) else echo -e "${YELLOW}⚠${NC} charter-compiler: 不存在(可选)" fi if [ -d "nvm_v2" ]; then echo -e "${GREEN}✓${NC} nvm_v2: 存在" ((PASS++)) else echo -e "${YELLOW}⚠${NC} nvm_v2: 不存在(可选)" fi echo "" # 7. 测试编译 echo "7. 测试编译能力" echo "-------------------" echo "正在测试Rust编译..." cat > /tmp/test_nac.rs << 'EOF' fn main() { println!("NAC环境测试成功!"); } EOF if rustc /tmp/test_nac.rs -o /tmp/test_nac && /tmp/test_nac; then echo -e "${GREEN}✓${NC} Rust编译测试通过" ((PASS++)) rm -f /tmp/test_nac.rs /tmp/test_nac else echo -e "${RED}✗${NC} Rust编译测试失败" ((FAIL++)) fi echo "" # 8. 总结 echo "=========================================" echo "验证结果" echo "=========================================" echo -e "通过: ${GREEN}${PASS}${NC}" echo -e "失败: ${RED}${FAIL}${NC}" echo "" if [ $FAIL -eq 0 ]; then echo -e "${GREEN}✓ 环境配置完整,可以开始开发!${NC}" echo "" echo "接下来可以运行:" echo " ./scripts/build_all.sh # 编译所有模块" echo " ./scripts/test_all.sh # 运行所有测试" exit 0 else echo -e "${RED}✗ 环境配置不完整,请运行 ./scripts/setup_env.sh 安装缺失的依赖${NC}" exit 1 fi