From ab6940407fe313b12395c668c4a86f79dcc7f23a Mon Sep 17 00:00:00 2001 From: NAC Development Team Date: Mon, 16 Feb 2026 20:23:04 -0500 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=8C=E6=95=B4=E7=9A=84?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E9=93=BE=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加rust-toolchain.toml锁定Rust 1.75.0 - 添加.go-version锁定Go 1.21.0 - 添加Makefile简化编译命令 - 添加scripts/setup_env.sh一键安装环境 - 添加scripts/verify_env.sh验证环境配置 - 添加scripts/build_all.sh编译所有模块 - 添加scripts/test_all.sh测试所有模块 - 添加scripts/clean_all.sh清理编译产物 作者:NAC公链开发小组 --- .go-version | 1 + Makefile | 107 ++++++++++++++++++++++++ rust-toolchain.toml | 5 ++ scripts/build_all.sh | 114 +++++++++++++++++++++++++ scripts/clean_all.sh | 63 ++++++++++++++ scripts/setup_env.sh | 187 ++++++++++++++++++++++++++++++++++++++++++ scripts/test_all.sh | 95 +++++++++++++++++++++ scripts/verify_env.sh | 179 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 751 insertions(+) create mode 100644 .go-version create mode 100644 Makefile create mode 100644 rust-toolchain.toml create mode 100755 scripts/build_all.sh create mode 100755 scripts/clean_all.sh create mode 100755 scripts/setup_env.sh create mode 100755 scripts/test_all.sh create mode 100755 scripts/verify_env.sh diff --git a/.go-version b/.go-version new file mode 100644 index 0000000..3500250 --- /dev/null +++ b/.go-version @@ -0,0 +1 @@ +1.21.0 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6a328d9 --- /dev/null +++ b/Makefile @@ -0,0 +1,107 @@ +# NAC区块链 Makefile +# 作者:NAC公链开发小组 +# 版本:v1.0.0 + +.PHONY: all build test clean help install check fmt clippy doc + +# 默认目标 +all: build + +# 帮助信息 +help: + @echo "NAC区块链开发工具" + @echo "" + @echo "可用命令:" + @echo " make install - 安装开发环境" + @echo " make check - 验证环境配置" + @echo " make build - 编译所有模块(release模式)" + @echo " make build-dev - 编译所有模块(debug模式)" + @echo " make test - 运行所有测试" + @echo " make fmt - 格式化代码" + @echo " make clippy - 运行代码检查" + @echo " make doc - 生成文档" + @echo " make clean - 清理编译产物" + @echo " make help - 显示此帮助信息" + @echo "" + +# 安装开发环境 +install: + @echo "正在安装NAC开发环境..." + @chmod +x scripts/setup_env.sh + @./scripts/setup_env.sh + +# 验证环境配置 +check: + @echo "正在验证环境配置..." + @chmod +x scripts/verify_env.sh + @./scripts/verify_env.sh + +# 编译所有模块(release模式) +build: + @echo "正在编译所有模块(release模式)..." + @chmod +x scripts/build_all.sh + @./scripts/build_all.sh --release + +# 编译所有模块(debug模式) +build-dev: + @echo "正在编译所有模块(debug模式)..." + @chmod +x scripts/build_all.sh + @./scripts/build_all.sh + +# 运行所有测试 +test: + @echo "正在运行所有测试..." + @chmod +x scripts/test_all.sh + @./scripts/test_all.sh + +# 格式化代码 +fmt: + @echo "正在格式化代码..." + @cd nac-udm && cargo fmt + @if [ -d "charter-compiler" ]; then cd charter-compiler && cargo fmt; fi + @if [ -d "nvm_v2" ]; then cd nvm_v2 && cargo fmt; fi + @if [ -d "nac-nvm" ]; then cd nac-nvm && cargo fmt; fi + @if [ -d "nac-cbpp" ]; then cd nac-cbpp && cargo fmt; fi + @if [ -d "nac-gnacs" ]; then cd nac-gnacs && cargo fmt; fi + @if [ -d "nac-acc" ]; then cd nac-acc && cargo fmt; fi + @if [ -d "nac-rpc" ]; then cd nac-rpc && cargo fmt; fi + @if [ -d "nac-storage" ]; then cd nac-storage && cargo fmt; fi + @echo "✓ 代码格式化完成" + +# 运行代码检查 +clippy: + @echo "正在运行代码检查..." + @cd nac-udm && cargo clippy -- -D warnings + @if [ -d "charter-compiler" ]; then cd charter-compiler && cargo clippy -- -D warnings; fi + @if [ -d "nvm_v2" ]; then cd nvm_v2 && cargo clippy -- -D warnings; fi + @if [ -d "nac-nvm" ]; then cd nac-nvm && cargo clippy -- -D warnings; fi + @if [ -d "nac-cbpp" ]; then cd nac-cbpp && cargo clippy -- -D warnings; fi + @if [ -d "nac-gnacs" ]; then cd nac-gnacs && cargo clippy -- -D warnings; fi + @if [ -d "nac-acc" ]; then cd nac-acc && cargo clippy -- -D warnings; fi + @if [ -d "nac-rpc" ]; then cd nac-rpc && cargo clippy -- -D warnings; fi + @if [ -d "nac-storage" ]; then cd nac-storage && cargo clippy -- -D warnings; fi + @echo "✓ 代码检查完成" + +# 生成文档 +doc: + @echo "正在生成文档..." + @cd nac-udm && cargo doc --no-deps + @if [ -d "charter-compiler" ]; then cd charter-compiler && cargo doc --no-deps; fi + @if [ -d "nvm_v2" ]; then cd nvm_v2 && cargo doc --no-deps; fi + @echo "✓ 文档生成完成" + @echo "文档位置: target/doc/index.html" + +# 清理编译产物 +clean: + @echo "正在清理编译产物..." + @chmod +x scripts/clean_all.sh + @./scripts/clean_all.sh + @echo "✓ 清理完成" + +# 快速开发循环 +dev: fmt clippy test + @echo "✓ 开发检查完成" + +# 完整构建流程 +full: clean build test doc + @echo "✓ 完整构建完成" diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..8f4161b --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,5 @@ +[toolchain] +channel = "1.75.0" +components = ["rustfmt", "clippy", "rust-src"] +targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"] +profile = "default" diff --git a/scripts/build_all.sh b/scripts/build_all.sh new file mode 100755 index 0000000..ddef149 --- /dev/null +++ b/scripts/build_all.sh @@ -0,0 +1,114 @@ +#!/bin/bash +# NAC区块链统一编译脚本 +# 作者:NAC公链开发小组 + +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +# 默认为debug模式 +BUILD_MODE="debug" +CARGO_FLAGS="" + +# 解析参数 +while [[ $# -gt 0 ]]; do + case $1 in + --release|-r) + BUILD_MODE="release" + CARGO_FLAGS="--release" + shift + ;; + *) + echo "未知参数: $1" + exit 1 + ;; + esac +done + +echo "=========================================" +echo " NAC区块链统一编译脚本" +echo " 模式: ${BUILD_MODE}" +echo "=========================================" +echo "" + +SUCCESS=0 +FAILED=0 + +# 编译模块函数 +build_module() { + local module=$1 + local name=$2 + + if [ -d "$module" ]; then + echo -e "${YELLOW}正在编译 ${name}...${NC}" + cd "$module" + + if cargo build $CARGO_FLAGS 2>&1 | tee /tmp/build_${name}.log; then + echo -e "${GREEN}✓ ${name} 编译成功${NC}" + ((SUCCESS++)) + else + echo -e "${RED}✗ ${name} 编译失败${NC}" + echo "错误日志: /tmp/build_${name}.log" + ((FAILED++)) + fi + + cd .. + echo "" + else + echo -e "${YELLOW}跳过 ${name}(目录不存在)${NC}" + echo "" + fi +} + +# 开始编译 +START_TIME=$(date +%s) + +# 1. 编译nac-udm(核心模块) +build_module "nac-udm" "NAC统一数据模型" + +# 2. 编译charter-compiler +build_module "charter-compiler" "Charter编译器" + +# 3. 编译nvm_v2 +build_module "nvm_v2" "NAC虚拟机v2" + +# 4. 编译其他模块(如果存在) +build_module "nac-nvm" "NAC虚拟机" +build_module "nac-cbpp" "CBPP共识协议" +build_module "nac-gnacs" "GNACS资产分类" +build_module "nac-acc" "ACC协议" +build_module "nac-acc20c" "ACC-20C合规协议" +build_module "nac-rpc" "NAC RPC接口" +build_module "nac-storage" "NAC存储层" + +# 计算耗时 +END_TIME=$(date +%s) +DURATION=$((END_TIME - START_TIME)) + +# 输出统计 +echo "=========================================" +echo "编译完成" +echo "=========================================" +echo -e "成功: ${GREEN}${SUCCESS}${NC}" +echo -e "失败: ${RED}${FAILED}${NC}" +echo "耗时: ${DURATION}秒" +echo "" + +if [ $FAILED -eq 0 ]; then + echo -e "${GREEN}✓ 所有模块编译成功!${NC}" + echo "" + echo "编译产物位置:" + if [ "$BUILD_MODE" == "release" ]; then + echo " target/release/" + else + echo " target/debug/" + fi + exit 0 +else + echo -e "${RED}✗ 部分模块编译失败,请检查错误日志${NC}" + exit 1 +fi diff --git a/scripts/clean_all.sh b/scripts/clean_all.sh new file mode 100755 index 0000000..bc33993 --- /dev/null +++ b/scripts/clean_all.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# NAC区块链统一清理脚本 +# 作者:NAC公链开发小组 + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +echo "=========================================" +echo " NAC区块链统一清理脚本" +echo "=========================================" +echo "" + +CLEANED=0 + +# 清理模块函数 +clean_module() { + local module=$1 + local name=$2 + + if [ -d "$module" ]; then + echo -e "${YELLOW}正在清理 ${name}...${NC}" + cd "$module" + + if [ -d "target" ]; then + rm -rf target + echo -e "${GREEN}✓ ${name} 清理完成${NC}" + ((CLEANED++)) + else + echo -e "${YELLOW} ${name} 无需清理${NC}" + fi + + cd .. + fi +} + +# 清理所有模块 +clean_module "nac-udm" "NAC统一数据模型" +clean_module "charter-compiler" "Charter编译器" +clean_module "nvm_v2" "NAC虚拟机v2" +clean_module "nac-nvm" "NAC虚拟机" +clean_module "nac-cbpp" "CBPP共识协议" +clean_module "nac-gnacs" "GNACS资产分类" +clean_module "nac-acc" "ACC协议" +clean_module "nac-acc20c" "ACC-20C合规协议" +clean_module "nac-rpc" "NAC RPC接口" +clean_module "nac-storage" "NAC存储层" + +# 清理临时文件 +echo "" +echo "正在清理临时文件..." +rm -f /tmp/build_*.log +rm -f /tmp/test_*.log +echo -e "${GREEN}✓ 临时文件清理完成${NC}" + +echo "" +echo "=========================================" +echo "清理完成" +echo "=========================================" +echo "已清理 ${CLEANED} 个模块" +echo "" diff --git a/scripts/setup_env.sh b/scripts/setup_env.sh new file mode 100755 index 0000000..69bf75a --- /dev/null +++ b/scripts/setup_env.sh @@ -0,0 +1,187 @@ +#!/bin/bash +# NAC区块链开发环境自动配置脚本 +# 作者:NAC公链开发小组 +# 版本:v1.0.0 +# 日期:2026-02-17 + +set -e + +echo "=========================================" +echo " NAC区块链开发环境配置脚本" +echo "=========================================" +echo "" + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# 检测操作系统 +OS="$(uname -s)" +case "${OS}" in + Linux*) MACHINE=Linux;; + Darwin*) MACHINE=Mac;; + *) MACHINE="UNKNOWN:${OS}" +esac + +echo -e "${GREEN}检测到操作系统: ${MACHINE}${NC}" +echo "" + +# 1. 安装Rust工具链 +echo "=========================================" +echo "1. 安装Rust工具链" +echo "=========================================" + +if command -v rustc &> /dev/null; then + RUST_VERSION=$(rustc --version | awk '{print $2}') + echo -e "${YELLOW}已安装Rust版本: ${RUST_VERSION}${NC}" +else + echo "正在安装Rust..." + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source $HOME/.cargo/env + echo -e "${GREEN}✓ Rust安装完成${NC}" +fi + +# 安装指定版本的Rust +REQUIRED_RUST_VERSION="1.75.0" +echo "正在安装Rust ${REQUIRED_RUST_VERSION}..." +rustup install ${REQUIRED_RUST_VERSION} +rustup default ${REQUIRED_RUST_VERSION} + +# 安装必要组件 +echo "正在安装Rust组件..." +rustup component add rustfmt clippy rust-src + +# 添加WASM目标 +echo "正在添加WASM编译目标..." +rustup target add wasm32-unknown-unknown + +echo -e "${GREEN}✓ Rust工具链配置完成${NC}" +echo "" + +# 2. 安装Go工具链(可选) +echo "=========================================" +echo "2. 安装Go工具链(可选)" +echo "=========================================" + +if command -v go &> /dev/null; then + GO_VERSION=$(go version | awk '{print $3}') + echo -e "${YELLOW}已安装Go版本: ${GO_VERSION}${NC}" +else + echo "Go未安装,正在安装..." + REQUIRED_GO_VERSION="1.21.0" + + if [ "$MACHINE" == "Linux" ]; then + wget https://go.dev/dl/go${REQUIRED_GO_VERSION}.linux-amd64.tar.gz + sudo tar -C /usr/local -xzf go${REQUIRED_GO_VERSION}.linux-amd64.tar.gz + rm go${REQUIRED_GO_VERSION}.linux-amd64.tar.gz + + # 添加到PATH + if ! grep -q "/usr/local/go/bin" ~/.bashrc; then + echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc + echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc + fi + + export PATH=$PATH:/usr/local/go/bin + export PATH=$PATH:$HOME/go/bin + + echo -e "${GREEN}✓ Go安装完成${NC}" + elif [ "$MACHINE" == "Mac" ]; then + if command -v brew &> /dev/null; then + brew install go@1.21 + echo -e "${GREEN}✓ Go安装完成${NC}" + else + echo -e "${YELLOW}请手动安装Homebrew后再运行此脚本${NC}" + fi + fi +fi + +echo "" + +# 3. 安装系统依赖 +echo "=========================================" +echo "3. 安装系统依赖" +echo "=========================================" + +if [ "$MACHINE" == "Linux" ]; then + echo "正在安装Linux系统依赖..." + if command -v apt-get &> /dev/null; then + sudo apt-get update + sudo apt-get install -y build-essential pkg-config libssl-dev git curl wget + echo -e "${GREEN}✓ 系统依赖安装完成${NC}" + elif command -v yum &> /dev/null; then + sudo yum groupinstall -y "Development Tools" + sudo yum install -y openssl-devel git curl wget + echo -e "${GREEN}✓ 系统依赖安装完成${NC}" + fi +elif [ "$MACHINE" == "Mac" ]; then + echo "正在安装macOS系统依赖..." + if command -v brew &> /dev/null; then + brew install openssl pkg-config git curl wget + echo -e "${GREEN}✓ 系统依赖安装完成${NC}" + else + echo -e "${YELLOW}请先安装Homebrew: /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"${NC}" + fi +fi + +echo "" + +# 4. 编译Charter编译器 +echo "=========================================" +echo "4. 编译Charter编译器" +echo "=========================================" + +if [ -d "charter-compiler" ]; then + echo "正在编译Charter编译器..." + cd charter-compiler + cargo build --release + cd .. + echo -e "${GREEN}✓ Charter编译器编译完成${NC}" + echo "Charter编译器位置: ./charter-compiler/target/release/charter-compiler" +else + echo -e "${YELLOW}未找到charter-compiler目录,跳过${NC}" +fi + +echo "" + +# 5. 验证安装 +echo "=========================================" +echo "5. 验证安装" +echo "=========================================" + +echo "Rust版本:" +rustc --version +echo "" + +echo "Cargo版本:" +cargo --version +echo "" + +if command -v go &> /dev/null; then + echo "Go版本:" + go version + echo "" +fi + +echo "Git版本:" +git --version +echo "" + +# 6. 环境变量提示 +echo "=========================================" +echo "环境配置完成!" +echo "=========================================" +echo "" +echo -e "${GREEN}✓ 所有依赖已安装完成${NC}" +echo "" +echo "请运行以下命令使环境变量生效:" +echo -e "${YELLOW}source ~/.bashrc${NC}" +echo "" +echo "或者重新打开终端。" +echo "" +echo "接下来可以运行:" +echo " ./scripts/build_all.sh # 编译所有模块" +echo " ./scripts/test_all.sh # 运行所有测试" +echo " ./scripts/verify_env.sh # 验证环境配置" +echo "" diff --git a/scripts/test_all.sh b/scripts/test_all.sh new file mode 100755 index 0000000..0fdbcaf --- /dev/null +++ b/scripts/test_all.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# NAC区块链统一测试脚本 +# 作者:NAC公链开发小组 + +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +echo "=========================================" +echo " NAC区块链统一测试脚本" +echo "=========================================" +echo "" + +SUCCESS=0 +FAILED=0 +TOTAL_TESTS=0 +TOTAL_PASSED=0 +TOTAL_FAILED=0 + +# 测试模块函数 +test_module() { + local module=$1 + local name=$2 + + if [ -d "$module" ]; then + echo -e "${YELLOW}正在测试 ${name}...${NC}" + cd "$module" + + if cargo test 2>&1 | tee /tmp/test_${name}.log; then + # 提取测试统计 + TESTS=$(grep "test result:" /tmp/test_${name}.log | tail -1 || echo "") + echo -e "${GREEN}✓ ${name} 测试通过${NC}" + if [ -n "$TESTS" ]; then + echo " $TESTS" + fi + ((SUCCESS++)) + else + echo -e "${RED}✗ ${name} 测试失败${NC}" + echo "错误日志: /tmp/test_${name}.log" + ((FAILED++)) + fi + + cd .. + echo "" + else + echo -e "${YELLOW}跳过 ${name}(目录不存在)${NC}" + echo "" + fi +} + +# 开始测试 +START_TIME=$(date +%s) + +# 1. 测试nac-udm(核心模块) +test_module "nac-udm" "NAC统一数据模型" + +# 2. 测试charter-compiler +test_module "charter-compiler" "Charter编译器" + +# 3. 测试nvm_v2 +test_module "nvm_v2" "NAC虚拟机v2" + +# 4. 测试其他模块(如果存在) +test_module "nac-nvm" "NAC虚拟机" +test_module "nac-cbpp" "CBPP共识协议" +test_module "nac-gnacs" "GNACS资产分类" +test_module "nac-acc" "ACC协议" +test_module "nac-acc20c" "ACC-20C合规协议" +test_module "nac-rpc" "NAC RPC接口" +test_module "nac-storage" "NAC存储层" + +# 计算耗时 +END_TIME=$(date +%s) +DURATION=$((END_TIME - START_TIME)) + +# 输出统计 +echo "=========================================" +echo "测试完成" +echo "=========================================" +echo -e "成功: ${GREEN}${SUCCESS}${NC}" +echo -e "失败: ${RED}${FAILED}${NC}" +echo "耗时: ${DURATION}秒" +echo "" + +if [ $FAILED -eq 0 ]; then + echo -e "${GREEN}✓ 所有模块测试通过!${NC}" + exit 0 +else + echo -e "${RED}✗ 部分模块测试失败,请检查错误日志${NC}" + exit 1 +fi diff --git a/scripts/verify_env.sh b/scripts/verify_env.sh new file mode 100755 index 0000000..2bef941 --- /dev/null +++ b/scripts/verify_env.sh @@ -0,0 +1,179 @@ +#!/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