1 Star 0 Fork 53

zhangtingtingting/openGauss-connector-odbc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
build.sh 9.45 KB
一键复制 编辑 原始数据 按行查看 历史
zhangxubo 提交于 2022-08-04 19:59 . odbc编译前现构建原生的unixODBC
#!/bin/bash
#######################################################################
# Copyright (c): 2020-2025, Huawei Tech. Co., Ltd.
# descript: Compile and pack MPPDB
# Return 0 means OK.
# Return 1 means failed.
# version: 2.0
# date: 2020-08-09
#######################################################################
declare install_package_format='tar'
declare serverlib_dir='None'
#detect platform information.
PLATFORM=32
bit=$(getconf LONG_BIT)
if [ "$bit" -eq 64 ]; then
PLATFORM=64
fi
#get OS distributed version.
kernel=""
version=""
if [ -f "/etc/euleros-release" ]; then
kernel=$(cat /etc/euleros-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
version=$(cat /etc/euleros-release | awk -F '(' '{print $2}'| awk -F ')' '{print $1}' | tr A-Z a-z)
elif [ -f "/etc/openEuler-release" ]; then
kernel=$(cat /etc/openEuler-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
version=$(cat /etc/openEuler-release | awk -F '(' '{print $2}'| awk -F ')' '{print $1}' | tr A-Z a-z)
elif [ -f "/etc/centos-release" ]; then
kernel=$(cat /etc/centos-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
version=$(cat /etc/centos-release | awk -F '(' '{print $2}'| awk -F ')' '{print $1}' | tr A-Z a-z)
elif [ -f "/etc/kylin-release" ]; then
kernel=$(cat /etc/kylin-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
version=$(cat /etc/kylin-release | awk '{print $6}' | tr A-Z a-z)
else
kernel=$(lsb_release -d | awk -F ' ' '{print $2}'| tr A-Z a-z)
version=$(lsb_release -r | awk -F ' ' '{print $2}')
fi
if [ X"$kernel" == X"euleros" ]; then
dist_version="EULER"
elif [ X"$kernel" == X"centos" ]; then
dist_version="CENTOS"
elif [ X"$kernel" == X"openeuler" ]; then
dist_version="OPENEULER"
elif [ X"$kernel" == X"kylin" ]; then
dist_version="KYLIN"
elif [ X"$kernel" == X"suse" ]; then
dist_version="SUSE"
elif [ X"$kernel" = X"redflag" ]; then
dist_version="Asianux"
elif [ X"$kernel" = X"asianux" ]; then
dist_version="Asianux"
else
echo "We only support EulerOS, OPENEULER(aarch64) SUSE, CentOS and Asianux platform."
echo "Kernel is $kernel"
exit 1
fi
##default install version storage path
declare mppdb_version='GaussDB Kernel'
declare mppdb_name_for_package="$(echo ${mppdb_version} | sed 's/ /-/g')"
declare version_number='V500R002C10'
#######################################################################
## print help information
#######################################################################
function print_help()
{
echo "Usage: $0 [OPTION]
-h|--help show help information.
-bd|--serverlib_dir the directory of sever binarylibs.
"
}
if [ $# = 0 ] ; then
echo "missing option"
print_help
exit 1
fi
LOCAL_PATH=${0}
FIRST_CHAR=$(expr substr "$LOCAL_PATH" 1 1)
if [ "$FIRST_CHAR" = "/" ]; then
LOCAL_PATH=${0}
else
LOCAL_PATH="$(pwd)/${LOCAL_PATH}"
fi
LOCAL_DIR=$(dirname "${LOCAL_PATH}")
#########################################################################
##read command line paramenters
#######################################################################
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
print_help
exit 1
;;
-bd|--serverlib_dir)
if [ "$2"X = X ]; then
echo "no given binarylib directory values"
exit 1
fi
serverlib_dir=$2
shift 2
;;
-ud|--unixodbc_dir)
if [ "$2"X = X ]; then
echo "no given unixodbc directory values"
exit 1
fi
UNIX_ODBC=$2
shift 2
;;
*)
echo "Internal Error: option processing error: $1" 1>&2
echo "please input right paramtenter, the following command may help you"
echo "./mpp_package.sh --help or ./mpp_package.sh -h"
exit 1
esac
done
#######################################################################
## declare all package name
#######################################################################
declare version_string="${mppdb_name_for_package}-${version_number}"
declare package_pre_name="${version_string}-${dist_version}-${PLATFORM}bit"
declare odbc_package_name="${package_pre_name}-Odbc.${install_package_format}.gz"
declare windows_odbc_package_name="${version_string}-Windows-Odbc.tar.gz"
echo "[makeodbc] $(date +%y-%m-%d' '%T): script dir : ${LOCAL_DIR}"
declare LOG_FILE="${LOCAL_DIR}/build.log"
declare BUILD_DIR="${LOCAL_DIR}/tmp_odbc"
declare ODBC_INSTALL_DIR="${BUILD_DIR}/odbc"
declare ERR_MKGS_FAILED=1
declare MKGS_OK=0
if [ "$UNIX_ODBC"X = X ]; then
UNIX_ODBC="${LOCAL_DIR}/third_party/unixodbc/install_comm/unixODBC-2.3.9"
fi
SERVERLIBS_PATH="${serverlib_dir}"
###################################
# build parameter about enable-llt
##################################
COMPLIE_TYPE="comm"
echo "[makeodbc] $(date +%y-%m-%d' '%T): Work root dir : ${LOCAL_DIR}"
#######################################################################
# Print log.
#######################################################################
log()
{
echo "[Build unixODBC] $(date +%y-%m-%d' '%T): $@"
echo "[Build unixODBC] $(date +%y-%m-%d' '%T): $@" >> "$LOG_FILE" 2>&1
}
#######################################################################
# print log and exit.
#######################################################################
die()
{
log "$@"
echo "$@"
exit $ERR_MKGS_FAILED
}
function clean_environment()
{
if [ -d "$BUILD_DIR" ]; then
rm -rf "$BUILD_DIR"
fi
if [ -f "$LOG_FILE" ]; then
rm -rf "$LOG_FILE"
fi
echo "clean completely"
}
#######################################################################
##install odbc
#######################################################################
function install_odbc()
{
cd ${LOCAL_DIR}
cd ${LOCAL_DIR}/third_party/unixodbc/
sh ./build_unixodbc.sh -m build >> "$LOG_FILE" 2>&1
cd ${LOCAL_DIR}
export GAUSSHOME=$SERVERLIBS_PATH
export LD_LIBRARY_PATH=$SERVERLIBS_PATH/lib:$LD_LIBRARY_PATH
if [ "$version_mode"x == "memcheck"x ]; then
export LIBS="-lrt -ldl -lm -lpthread -lasan"
fi
./configure CFLAGS='-fstack-protector-all -Wl,-z,relro,-z,now -Wl,-z,noexecstack -fPIC' --prefix=${ODBC_INSTALL_DIR} --with-libpq=${SERVERLIBS_PATH} --with-unixodbc=${UNIX_ODBC} >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
die "configure odbc failed."
fi
make -sj >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
die "make odbc failed."
fi
make install -sj >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
die "make install odbc failed."
fi
echo "End make odbc" >> "$LOG_FILE" 2>&1
}
declare package_command
#######################################################################
##select package command accroding to install_package_format
#######################################################################
function select_package_command()
{
case "$install_package_format" in
tar)
tar='tar'
option=' -zcvf'
package_command="$tar$option"
;;
rpm)
rpm='rpm'
option=' -i'
package_command="$rpm$option"
;;
esac
}
###############################################################
## copy the target to set path
###############################################################
function target_file_copy()
{
rm -rf ${BUILD_DIR}/lib
mkdir ${BUILD_DIR}/lib
#copy libraries into lib
cp $SERVERLIBS_PATH/lib/libpq* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libssl* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libcrypto* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libgssapi_krb5_gauss* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libgssrpc_gauss* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libkrb5_gauss* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libkrb5support_gauss* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libk5crypto_gauss* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libconfig* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libpgport_tool* ${BUILD_DIR}/lib
cp $SERVERLIBS_PATH/lib/libcom_err_gauss* ${BUILD_DIR}/lib
cp $UNIX_ODBC/lib/libodb* ${BUILD_DIR}/lib
}
#######################################################################
##function make_package have tree actions
##1.copy target file into a newly created temporary directory temp
##2.package all file in the temp directory and renome to destination package_path
#######################################################################
function make_package()
{
cd ${BUILD_DIR}
target_file_copy
select_package_command
echo "packaging odbc..."
$package_command "${odbc_package_name}" ./lib ./odbc >>"$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
die "$package_command ${odbc_package_name} failed"
fi
mv ${odbc_package_name} ${BUILD_DIR}/
echo "install odbc tools is ${odbc_package_name} of ${BUILD_DIR} directory " >> "$LOG_FILE" 2>&1
echo "success!"
}
#############################################################
# main function
#############################################################
# 1. build odbc
install_odbc
# 2. make odbc package
make_package
# 3. cp odbc package to output
mkdir ${LOCAL_DIR}/output
mv ${BUILD_DIR}/*.tar.gz ${LOCAL_DIR}/output/
# 4. clean environment
echo "clean enviroment"
echo "[makemppdb] $(date +%y-%m-%d' '%T): remove ${BUILD_DIR}" >>"$LOG_FILE" 2>&1
clean_environment
echo "now, odbc package has finished!"
exit 0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/zhangtingtingting/openGauss-connector-odbc.git
git@gitee.com:zhangtingtingting/openGauss-connector-odbc.git
zhangtingtingting
openGauss-connector-odbc
openGauss-connector-odbc
master

搜索帮助