37 lines
1.4 KiB
Bash
37 lines
1.4 KiB
Bash
#!/bin/bash
|
|
set -e # 任何命令失败时立即退出
|
|
|
|
echo "--- 开始构建 RPM 包 ---"
|
|
|
|
# 1. 获取脚本自身的绝对路径
|
|
# SCRIPT_PATH 是脚本的完整路径 (例如: /home/smart/smarttms-rpm-build/smarttms-rpm-build.sh)
|
|
SCRIPT_PATH=$(readlink -f "${BASH_SOURCE[0]}")
|
|
# PROJECT_ROOT 是脚本所在的目录,也是整个项目的根目录 (例如: /home/smart/smarttms-rpm-build)
|
|
PROJECT_ROOT=$(dirname "$SCRIPT_PATH")
|
|
|
|
# 2. 根据项目根目录确定 rpmbuild 的顶层目录
|
|
# TOP_DIR 是 rpmbuild 的根目录 (例如: /home/smart/smarttms-rpm-build/rpmbuild)
|
|
TOP_DIR="$PROJECT_ROOT/rpmbuild"
|
|
|
|
# 3. 定义其他重要目录的绝对路径
|
|
SOURCES_DIR="$TOP_DIR/SOURCES"
|
|
SPECS_DIR="$TOP_DIR/SPECS"
|
|
SPEC_FILE="$SPECS_DIR/smarttms-mysql.spec" # SPEC 文件的绝对路径
|
|
# 应用程序源代码的实际目录,它位于 SOURCES_DIR 下面
|
|
SOURCE_CODE_ORIGINAL_DIR="$SOURCES_DIR/smarttms-mysql"
|
|
|
|
echo "脚本路径: $SCRIPT_PATH"
|
|
echo "项目根目录: $PROJECT_ROOT"
|
|
echo "RPM构建顶层目录 (_topdir): $TOP_DIR"
|
|
echo "SOURCES目录: $SOURCES_DIR"
|
|
echo "SPEC文件: $SPEC_FILE"
|
|
|
|
# 9. 执行 rpmbuild
|
|
echo "执行 rpmbuild 命令..."
|
|
# 使用 --define _topdir 明确告诉 rpmbuild 它的顶层目录
|
|
rpmbuild --define "_topdir $TOP_DIR" -ba "$SPEC_FILE"
|
|
|
|
echo "--- RPM 包构建完成! ---"
|
|
echo "生成的 RPM 包在: $TOP_DIR/RPMS/"
|
|
echo "生成的 SRPM 包在: $TOP_DIR/SRPMS/"
|