138 lines
3.7 KiB
Bash
138 lines
3.7 KiB
Bash
#!/bin/bash
|
|
# EG Linux 构建环境检查脚本
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
ISSUES=()
|
|
WARNINGS=()
|
|
|
|
echo "========================================"
|
|
echo -e "${BLUE} EG 构建环境检查${NC}"
|
|
echo "========================================"
|
|
|
|
# 检查 Python
|
|
echo ""
|
|
echo "[1/6] 检查 Python..."
|
|
if command -v python3 &> /dev/null; then
|
|
VERSION=$(python3 --version 2>&1)
|
|
echo -e " ${GREEN}✓${NC} $VERSION"
|
|
else
|
|
echo -e " ${RED}✗${NC} Python3 未找到"
|
|
ISSUES+=("需要安装 Python 3.8+")
|
|
fi
|
|
|
|
# 检查 pip
|
|
echo ""
|
|
echo "[2/6] 检查 pip..."
|
|
if command -v pip3 &> /dev/null; then
|
|
VERSION=$(pip3 --version 2>&1 | awk '{print $2}')
|
|
echo -e " ${GREEN}✓${NC} pip $VERSION"
|
|
else
|
|
echo -e " ${RED}✗${NC} pip3 未找到"
|
|
ISSUES+=("需要安装 pip3")
|
|
fi
|
|
|
|
# 检查 GCC
|
|
echo ""
|
|
echo "[3/6] 检查 GCC..."
|
|
if command -v gcc &> /dev/null; then
|
|
VERSION=$(gcc --version 2>&1 | head -1)
|
|
echo -e " ${GREEN}✓${NC} $VERSION"
|
|
else
|
|
echo -e " ${RED}✗${NC} GCC 未找到"
|
|
ISSUES+=("需要安装 GCC: sudo apt-get install build-essential")
|
|
fi
|
|
|
|
# 检查 G++
|
|
echo ""
|
|
echo "[4/6] 检查 G++..."
|
|
if command -v g++ &> /dev/null; then
|
|
VERSION=$(g++ --version 2>&1 | head -1)
|
|
echo -e " ${GREEN}✓${NC} $VERSION"
|
|
else
|
|
echo -e " ${RED}✗${NC} G++ 未找到"
|
|
ISSUES+=("需要安装 G++: sudo apt-get install build-essential")
|
|
fi
|
|
|
|
# 检查 Python 模块
|
|
echo ""
|
|
echo "[5/6] 检查 Python 模块..."
|
|
MODULES=("nuitka" "pyinstaller")
|
|
for mod in "${MODULES[@]}"; do
|
|
if pip3 show "$mod" &> /dev/null; then
|
|
VERSION=$(pip3 show "$mod" 2>/dev/null | grep Version | awk '{print $2}')
|
|
echo -e " ${GREEN}✓${NC} $mod $VERSION"
|
|
else
|
|
echo -e " ${YELLOW}⚠${NC} $mod 未安装 (将自动安装)"
|
|
fi
|
|
done
|
|
|
|
# 检查项目依赖
|
|
echo ""
|
|
echo "[6/6] 检查项目依赖..."
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
REQ_FILE="$SCRIPT_DIR/../requirements/requirements.txt"
|
|
|
|
if [ -f "$REQ_FILE" ]; then
|
|
echo -e " ${GREEN}✓${NC} 找到 requirements.txt"
|
|
|
|
# 检查关键包
|
|
KEY_PKGS=("Panda3D" "PyQt5" "openvr" "imgui-bundle")
|
|
for pkg in "${KEY_PKGS[@]}"; do
|
|
# 转换为小写检查
|
|
pkg_lower=$(echo "$pkg" | tr '[:upper:]' '[:lower:]')
|
|
if pip3 show "$pkg_lower" &> /dev/null; then
|
|
echo -e " ${GREEN}✓${NC} $pkg"
|
|
else
|
|
echo -e " ${YELLOW}⚠${NC} $pkg 未安装"
|
|
fi
|
|
done
|
|
else
|
|
echo -e " ${YELLOW}⚠${NC} 未找到 requirements.txt"
|
|
WARNINGS+=("未找到依赖文件")
|
|
fi
|
|
|
|
# 检查额外工具
|
|
echo ""
|
|
echo "[7/6] 检查额外工具..."
|
|
if command -v wget &> /dev/null; then
|
|
echo -e " ${GREEN}✓${NC} wget"
|
|
else
|
|
echo -e " ${YELLOW}⚠${NC} wget 未安装 (用于下载 appimagetool)"
|
|
WARNINGS+=("建议安装 wget")
|
|
fi
|
|
|
|
# 检查 dpkg (用于构建 deb)
|
|
if command -v dpkg-deb &> /dev/null; then
|
|
echo -e " ${GREEN}✓${NC} dpkg-deb (可构建 DEB 包)"
|
|
else
|
|
echo -e " ${YELLOW}⚠${NC} dpkg-deb 未安装 (无法构建 DEB 包)"
|
|
fi
|
|
|
|
# 总结
|
|
echo ""
|
|
echo "========================================"
|
|
if [ ${#ISSUES[@]} -eq 0 ] && [ ${#WARNINGS[@]} -eq 0 ]; then
|
|
echo -e "${GREEN} ✓ 环境检查通过!${NC}"
|
|
echo -e "${GREEN} 可以开始构建${NC}"
|
|
exit 0
|
|
else
|
|
if [ ${#ISSUES[@]} -gt 0 ]; then
|
|
echo -e "${RED} 发现问题 (${#ISSUES[@]}):${NC}"
|
|
for issue in "${ISSUES[@]}"; do
|
|
echo -e " ${RED}- $issue${NC}"
|
|
done
|
|
fi
|
|
if [ ${#WARNINGS[@]} -gt 0 ]; then
|
|
echo -e "${YELLOW} 警告 (${#WARNINGS[@]}):${NC}"
|
|
for warn in "${WARNINGS[@]}"; do
|
|
echo -e " ${YELLOW}- $warn${NC}"
|
|
done
|
|
fi
|
|
exit 1
|
|
fi
|