utils/rpm_build_incontainer.sh

#!/bin/bash
#进入到用户的根目录
cd ~
#useradd test -u 1001

#检查是否存在目标目录
if [ -d ~/rpmbuild/RPMS ] ; then
    echo "Previous RPM build still exists, so it might be necessary to clear them before building new one"
fi
#通过uname -m 执行结果判断当前shell之前的平台是否是arm64
if [ "$(uname -m)" != "aarch64" ] ; then
    echo "Please build this package on arm64 platform"
    exit 1
fi
#执行清理工作
yum clean all
	
yum install expect yum-utils -y
#通过which 检测是否安装了rpmsign这个包,没有安装的话,则安装这个包
if [ -z "$(which rpmsign 2>/dev/null)" ] ; then
    yum install rpm-sign -y
fi

SRC_DIR=$1
SPEC_FILE=$2
uid=$3
gid=$4
#检测目录下是否有scl_package 这个字符串。这里通过飘键得到cat执行的结果
scl=`cat ${SRC_DIR}/${SPEC_FILE} | grep "scl_package"`
#安装包,并通过source 增加环境变量
if [ ! -z "${scl}" ] ; then
	yum install -y scl-utils scl-utils-build
	yum install -y devtoolset-4-gcc
	yum install -y devtoolset-4-gcc-c++
	yum install -y devtoolset-4-libstdc++-devel
	source /opt/rh/devtoolset-4/enable
fi

#增加group和 user  这两个都是标准的linux命令
groupadd test -g ${gid}
useradd test -u ${uid} -g ${gid}
#目标目录不存在,则退出
if [ ! -d ${SRC_DIR} ] ; then
    echo "${SRC_DIR} directory does not exist !"
    exit 1
fi

# execute prepare script
#字符串赋值
RPM_BUILD_PRE_SCRIPT="rpm_build_pre.sh"
#字符串截取并通过.执行脚本
RPM_DIR=${SRC_DIR%/*}
if [ -f ${RPM_DIR}/${RPM_BUILD_PRE_SCRIPT} ] ; then
    echo "==================================begin to execute prepare script"
    . ${RPM_DIR}/${RPM_BUILD_PRE_SCRIPT}
fi
#使用yum-builddep来解决依赖问题
yum-builddep -y ${SRC_DIR}/${SPEC_FILE}
#对已经生成的rpm 包进行sign 的动作.
passphrase=`cat /root/KEY_PASSPHRASE`
expect <<-END
        set timeout -1
        spawn rpmbuild --sign  --target aarch64 -ba ${SRC_DIR}/${SPEC_FILE} "--define=_sourcedir ${SRC_DIR}" "--define=_specdir ${SRC_DIR}" ${@:5} 
        expect {
                "Enter pass phrase:" {send "${passphrase}\r"}
                timeout {send_user "Enter pass phrase timeout\n"}
        }
        expect eof
END
echo "Please check rpm under ~/rpmbuild/RPMS/ or ~/rpmbuild/SRPMS/ directory !"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值