添加完整的环境配置文件和工具链管理
- 添加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公链开发小组
This commit is contained in:
parent
33df3f7ab9
commit
ab6940407f
|
|
@ -0,0 +1 @@
|
|||
1.21.0
|
||||
|
|
@ -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 "✓ 完整构建完成"
|
||||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
@ -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 ""
|
||||
|
|
@ -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 ""
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue