180 lines
4.0 KiB
Bash
Executable File
180 lines
4.0 KiB
Bash
Executable File
#!/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
|