#!/bin/bash
# ============================================================
# 在【离线麒麟V10 Server】机器上以 root 运行
# 前提：本目录下已有 rpms/、gmt-6.1.0-src.tar.xz、
#       gshhg-gmt-2.3.7.tar.gz、dcw-gmt-2.1.2.tar.gz
# 功能：装依赖 -> 编译 GMT 6.1.0 -> 安装到 /opt/gmt -> 配置环境变量
# ============================================================
set -e
BASE=$(cd "$(dirname "$0")" && pwd)
PREFIX=/opt/gmt

echo "==== [1/6] 安装编译依赖 RPM ===="
if [ -d "$BASE/rpms" ]; then
    rpm -Uvh --force --nodeps "$BASE"/rpms/*.rpm 2>&1 | tail -5 || true
    # --nodeps 兜底：alldeps 全量下载时可能有版本冲突，强制升级即可
else
    echo "警告: 未找到 rpms/ 目录，假定依赖已装好"
fi

echo "==== [2/6] 检查编译环境 ===="
for c in gcc g++ make cmake nc-config; do
    command -v $c >/dev/null || { echo "缺少 $c，请检查 rpms/ 是否完整"; exit 1; }
done
gcc --version | head -1
cmake --version | head -1
nc-config --version 2>/dev/null || nc-config --has-nc4

echo "==== [3/6] 解压岸线(GSHHG)与国界(DCW)数据 ===="
mkdir -p $PREFIX/share
tar -xzf "$BASE/gshhg-gmt-2.3.7.tar.gz" -C $PREFIX/share
tar -xzf "$BASE/dcw-gmt-2.1.2.tar.gz"  -C $PREFIX/share

echo "==== [4/6] 解压源码并编译 ===="
cd "$BASE"
tar -xJf gmt-6.1.0-src.tar.xz
cd gmt-6.1.0
rm -rf build && mkdir build && cd build
cmake .. \
  -DCMAKE_INSTALL_PREFIX=$PREFIX \
  -DCMAKE_BUILD_TYPE=Release \
  -DGSHHG_ROOT=$PREFIX/share/gshhg-gmt-2.3.7 \
  -DDCW_ROOT=$PREFIX/share/dcw-gmt-2.1.2
make -j$(nproc)
make install

echo "==== [5/6] 配置环境变量 ===="
cat > /etc/profile.d/gmt.sh <<EOF
export GMT6DIR=$PREFIX
export PATH=$PREFIX/bin:\$PATH
export LD_LIBRARY_PATH=$PREFIX/lib64:$PREFIX/lib:\$LD_LIBRARY_PATH
EOF
chmod +x /etc/profile.d/gmt.sh

echo "==== [6/6] 验证 ===="
export PATH=$PREFIX/bin:$PATH
export LD_LIBRARY_PATH=$PREFIX/lib64:$PREFIX/lib:$LD_LIBRARY_PATH
gmt --version
gmt --show-datadir
echo ""
echo "安装完成！新开终端或执行 source /etc/profile.d/gmt.sh 后即可使用 gmt 命令"
