NAC_Blockchain/scripts/verify_env.sh

180 lines
4.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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