#!/bin/bash
set -e
CURRENT_PATH=$(dirname $(readlink -f $0))
source "${CURRENT_PATH}"/common.sh
OGDB_CODE_PATH="${CURRENT_PATH}"/..
BUILD_TARGET_NAME="ograc_connector"
BUILD_PACK_NAME="openGauss_oGRAC"
ENV_TYPE=$(uname -p)
TMP_PKG_PATH=${OGDB_CODE_PATH}/package
OGDB_TARGET_PATH=${OGRACDB_BIN}/${BUILD_TARGET_NAME}/ogracKernel
OGRAC_IMAGE="${OGDB_CODE_PATH}/image"
mkdir -p ${TMP_PKG_PATH}
function packageTarget() {
echo "Start packageTarget..."
cd "${OGRACDB_BIN}"
echo "当前目录: $(pwd)"
echo "目录内容:"
ls -la
tar -zcf ograc.tar.gz ${BUILD_TARGET_NAME}/
if [ -d ${OGRAC_IMAGE} ]; then
rm -rf ${OGRAC_IMAGE}
fi
mkdir -p ${OGRAC_IMAGE}
mv -f ograc.tar.gz ${OGRAC_IMAGE}
cd ${CURRENT_PATH}
bash "${CURRENT_PATH}"/packet_build_ograc.sh
}
function buildCtOmPackage() {
bash "${CURRENT_PATH}"/build_ograc_om.sh
bash "${CURRENT_PATH}"/packet_build_og_om.sh
if [ $? -ne 0 ]; then
echo "build og_om fail"
return 1
fi
}
function buildDssPackage() {
echo "wget openGauss third party"
if [[ x"${proxy_user}" != x"" ]];then
export http_proxy=http://${proxy_user}:${proxy_pwd}@${proxy_url}
export https_proxy=${http_proxy}
export no_proxy=127.0.0.1,.huawei.com,localhost,local,.local
fi
cd ${OGDB_CODE_PATH}
if [[ ${ENV_TYPE} == "aarch64" ]];then
wget --no-check-certificate https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/gcc10.3/openGauss-third_party_binarylibs_openEuler_2203_arm.tar.gz
tar -zxf openGauss-third_party_binarylibs_openEuler_2203_arm.tar.gz
else
wget --no-check-certificate https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/gcc10.3/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
tar -zxf openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
fi
sh "${CURRENT_PATH}"/build_dss.sh ${BUILD_TYPE}
}
function newPackageTarget() {
echo "Start newPackageTarget..."
local current_time=$(date "+%Y%m%d%H%M%S")
local pkg_dir_name="${BUILD_TARGET_NAME}"
local build_type_upper=$(echo "${BUILD_TYPE}" | tr [:lower:] [:upper:])
if [[ ${COMPILE_TYPE} == "ASAN" ]]; then
build_type_upper="${COMPILE_TYPE}"
fi
local pkg_name="${BUILD_PACK_NAME}_${ENV_TYPE}_${build_type_upper}.tgz"
if [[ ${BUILD_MODE} == "single" ]]; then
pkg_name="${BUILD_PACK_NAME}_${BUILD_MODE}_${ENV_TYPE}_${build_type_upper}.tgz"
fi
local pkg_real_path=${TMP_PKG_PATH}/${pkg_dir_name}
echo "当前目录: $(pwd)"
echo "目录内容:"
ls -la
mkdir -p ${pkg_real_path}/{action,repo,config,common,dss}
B_VERSION=$(grep -oP '<Bversion>\K[^<]+' "${OGDB_CODE_PATH}"/../ProductComm_DoradoAA/CI/conf/cmc/dbstore/archive_cmc_versions.xml | sed 's/oGRAC //g')
B_VERSION_SUFFIX="${B_VERSION##*.}"
echo "B_VERSION_SUFFIX: ${B_VERSION_SUFFIX}"
if [[ x"${B_VERSION}" != x"" ]];then
sed -i "s/\(Version: .*\)\.[A-Z].*/\1.${B_VERSION_SUFFIX}/" "${CURRENT_PATH}"/versions.yml
fi
sed -i 's#ChangeVersionTime: .*#ChangeVersionTime: '"$(date +%Y/%m/%d\ %H:%M)"'#' "${CURRENT_PATH}"/versions.yml
echo "当前目录: $(pwd)"
echo "目录内容:"
ls -la
cp -arf "${CURRENT_PATH}"/versions.yml ${pkg_real_path}/
cp -arf "${OGRACDB_BIN}"/ograc*.tar.gz ${pkg_real_path}/repo/
cp -arf "${OGDB_CODE_PATH}"/temp/og_om/og_om*.tar.gz ${pkg_real_path}/repo/
cp -arf "${OGDB_CODE_PATH}"/pkg/deploy/action/* ${pkg_real_path}/action/
cp -arf "${OGDB_CODE_PATH}"/pkg/deploy/config/* ${pkg_real_path}/config/
cp -arf "${OGDB_CODE_PATH}"/common/* ${pkg_real_path}/common/
if [[ ${BUILD_MODE} == "single" ]]; then
cp -rf "${OGDB_CODE_PATH}"/pkg/deploy/single_options/* ${pkg_real_path}/action/oGRAC
fi
cp -arf "${OGDB_CODE_PATH}"/dss/* ${pkg_real_path}/dss/
echo "目录内容:"
sed -i "/main \$@/i CSTOOL_TYPE=${BUILD_TYPE}" ${pkg_real_path}/action/storage_deploy/dbstor/check_usr_pwd.sh
sed -i "/main \$@/i CSTOOL_TYPE=${BUILD_TYPE}" ${pkg_real_path}/action/storage_deploy/dbstor/check_dbstor_compat.sh
sed -i "/main \$@/i CSTOOL_TYPE=${BUILD_TYPE}" ${pkg_real_path}/action/storage_deploy/inspection/inspection_scripts/kernal/check_link_cnt.sh
echo "Start pkg ${pkg_name}..."
cd ${TMP_PKG_PATH}
echo "当前目录: $(pwd)"
echo "目录内容:"
ls -la
tar -zcf "${pkg_name}" ${pkg_dir_name}
rm -rf ${TMP_PKG_PATH}/${pkg_dir_name}
rm -rf ${pkg_dir_name}
echo "Packing ${pkg_name} success"
}
function seperateSymbol() {
so_path=$1
sh "${CURRENT_PATH}"/seperate_dbg_symbol.sh ${so_path}
}
function prepare_path() {
cd ${WORKSPACE}
mkdir -p oGRAC/build_dependence/libaio/include/
cp libaio.h oGRAC/build_dependence/libaio/include/
cd -
}
function prepare() {
prepare_path
if [[ ${BUILD_MODE} == "multiple" ]] || [[ -z ${BUILD_MODE} ]]; then
echo "compiling multiple process"
if [[ ${BUILD_TYPE} == "debug" ]]; then
if [[ ${COMPILE_TYPE} == "ASAN" ]]; then
echo "compiling multiple process asan"
sh "${CURRENT_PATH}"/Makefile_ci.sh "${OG_BUILD_TYPE} asan=1"
else
echo "compiling multiple process debug"
sh "${CURRENT_PATH}"/Makefile_ci.sh "${OG_BUILD_TYPE}"
fi
else
echo "compiling multiple process release"
sh "${CURRENT_PATH}"/Makefile_ci.sh "${OG_BUILD_TYPE}"
fi
elif [[ ${BUILD_MODE} == "single" ]]; then
echo "compiling single process"
if [[ ${BUILD_TYPE} == "debug" ]]; then
if [[ ${COMPILE_TYPE} == "ASAN" ]]; then
echo "compiling single process asan"
sh "${CURRENT_PATH}"/Makefile_ci.sh "${OG_BUILD_TYPE} asan=1"
else
echo "compiling single process debug"
sh "${CURRENT_PATH}"/Makefile_ci.sh "${OG_BUILD_TYPE}"
fi
else
echo "compiling single process release"
sh "${CURRENT_PATH}"/Makefile_ci.sh "${OG_BUILD_TYPE}"
fi
else
echo "unsupported build mode"
exit 1
fi
if [ ! -d "${OGDB_TARGET_PATH}" ];then
mkdir -p "${OGDB_TARGET_PATH}"
chmod 700 "${OGDB_TARGET_PATH}"
fi
cp -arf "${OGDB_CODE_PATH}"/oGRAC-DATABASE* "${OGDB_TARGET_PATH}"/
}
BUILD_TYPE=${1,,}
if [[ ${BUILD_TYPE} != "debug" ]] && [[ ${BUILD_TYPE} != "release" ]]; then
echo "Usage: ${0##*/} {debug|release}."
exit 0
fi
OG_BUILD_TYPE="package-${BUILD_TYPE}"
prepare
buildCtOmPackage
packageTarget
buildDssPackage
newPackageTarget