258 lines
9.0 KiB
Bash
258 lines
9.0 KiB
Bash
#!/bin/bash
|
|
|
|
declare binarylib_dir='None'
|
|
declare gcc_version='10.3'
|
|
declare module_name="openGauss-OM"
|
|
declare version_number='7.0.0-RC1'
|
|
declare version_Kernel='92.298'
|
|
ROOT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
|
echo "ROOT_DIR : $ROOT_DIR"
|
|
declare ERR_MKGS_FAILED=1
|
|
declare LOG_FILE="${ROOT_DIR}/build.log"
|
|
declare PKG_DIR="${ROOT_DIR}/package"
|
|
declare PKG_TMP_DIR="${ROOT_DIR}/package/temp"
|
|
declare version_string="${module_name}-${version_number}"
|
|
|
|
#########################################################################
|
|
##read command line paramenters
|
|
#######################################################################
|
|
|
|
function print_help()
|
|
{
|
|
echo "Usage: $0 [OPTION]
|
|
-h|--help show help information
|
|
-3rd|--binarylib_dir the parent directory of binarylibs
|
|
-cv|--gcc_version the gcc version only accepts 7.3 and 10.3
|
|
"
|
|
}
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
-h|--help)
|
|
print_help
|
|
exit 1
|
|
;;
|
|
-3rd|--binarylib_dir)
|
|
if [ "$2"X = X ]; then
|
|
echo "no given binarylib directory values"
|
|
exit 1
|
|
fi
|
|
binarylib_dir=$2
|
|
shift 2
|
|
;;
|
|
-cv|--gcc_version)
|
|
gcc_version=$2
|
|
shift 2
|
|
;;
|
|
*)
|
|
echo "Internal Error: option processing error: $1" 1>&2
|
|
echo "please input right paramtenter, the following command may help you"
|
|
echo "./build.sh --help or ./build.sh -h"
|
|
exit 1
|
|
esac
|
|
done
|
|
|
|
PLAT_FORM_STR=$(sh "${ROOT_DIR}/build/get_PlatForm_str.sh")
|
|
if [ "${PLAT_FORM_STR}"x == "Failed"x ]; then
|
|
echo "We only support openEuler(aarch64), EulerOS(aarch64), FusionOS, CentOS, UOS, H3Linux, NingOS platform."
|
|
exit 1;
|
|
fi
|
|
|
|
PLATFORM=32
|
|
bit=$(getconf LONG_BIT)
|
|
if [ "$bit" -eq 64 ]; then
|
|
PLATFORM=64
|
|
fi
|
|
|
|
if [ X$(echo $PLAT_FORM_STR | grep "centos") != X"" ]; then
|
|
dist_version="CentOS"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "openeuler") != X"" ]; then
|
|
dist_version="openEuler"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "fusionos") != X"" ]; then
|
|
dist_version="FusionOS"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "euleros") != X"" ]; then
|
|
dist_version="EulerOS"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "ubuntu") != X"" ]; then
|
|
dist_version="Ubuntu"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "asianux") != X"" ]; then
|
|
dist_version="Asianux"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "kylin") != X"" ]; then
|
|
dist_version="Kylin"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "uos") != X"" ]; then
|
|
dist_version="UOS"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "h3linux") != X"" ]; then
|
|
dist_version="H3Linux"
|
|
elif [ X$(echo $PLAT_FORM_STR | grep "ningos") != X"" ]; then
|
|
dist_version="NingOS"
|
|
else
|
|
echo "We only support openEuler(aarch64), EulerOS(aarch64), FusionOS, CentOS, Ubuntu(x86), UOS, H3Linux, NingOS platform."
|
|
echo "Kernel is $kernel"
|
|
exit 1
|
|
fi
|
|
os_version=$(cat /etc/os-release | grep -w VERSION_ID | awk -F '"' '{print $2}')
|
|
|
|
PLATFORM_ARCH=$(uname -p)
|
|
declare package_pre_name="${version_string}-${dist_version}${os_version}-${PLATFORM_ARCH}"
|
|
declare package_name="${package_pre_name}.tar.gz"
|
|
declare sha256_name="${package_pre_name}.sha256"
|
|
|
|
if [ ${binarylib_dir} != 'None' ] && [ -d ${binarylib_dir} ]; then
|
|
BINARYLIBS_PATH_INSTALL_TOOLS="${binarylib_dir}/install_tools"
|
|
BINARYLIBS_PATH="${binarylib_dir}/kernel/dependency/"
|
|
BUILD_TOOLS_PATH="${binarylib_dir}/buildtools/"
|
|
else
|
|
BINARYLIBS_PATH_INSTALL_TOOLS="${ROOT_DIR}/install_tools"
|
|
BINARYLIBS_PATH="${ROOT_DIR}/binarylibs/kernel/dependency/"
|
|
BUILD_TOOLS_PATH="${ROOT_DIR}/binarylibs/buildtools/"
|
|
fi
|
|
|
|
log()
|
|
{
|
|
echo "[makegaussdb] $(date +%y-%m-%d' '%T): $@"
|
|
echo "[makegaussdb] $(date +%y-%m-%d' '%T): $@" >> "$LOG_FILE" 2>&1
|
|
}
|
|
|
|
die()
|
|
{
|
|
log "$@"
|
|
echo "$@"
|
|
exit $ERR_MKGS_FAILED
|
|
}
|
|
|
|
function env_check()
|
|
{
|
|
if [ -d "$PKG_DIR" ]; then
|
|
rm -rf ${PKG_DIR}
|
|
fi
|
|
mkdir -p ${PKG_TMP_DIR}
|
|
if [ -d "$LOG_FILE" ]; then
|
|
rm -rf $LOG_FILE
|
|
fi
|
|
if [ $? -eq 0 ]; then
|
|
echo "Everything is ready."
|
|
else
|
|
echo "clean enviroment failed."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function copy_script_file()
|
|
{
|
|
cp -rf $ROOT_DIR/script $PKG_TMP_DIR/ &&
|
|
if [ -f $PKG_TMP_DIR/script/gspylib/common/py_pstree.py ]; then
|
|
mv $PKG_TMP_DIR/script/gspylib/common/py_pstree.py $PKG_TMP_DIR/script/py_pstree.py
|
|
fi
|
|
cp -rf $ROOT_DIR/other/transfer.py $PKG_TMP_DIR/script/ &&
|
|
find $PKG_TMP_DIR/script/ -type f -print0 | xargs -0 -n 10 -r dos2unix > /dev/null 2>&1 &&
|
|
find $PKG_TMP_DIR/script/gspylib/inspection/ -name d2utmp* -print0 | xargs -0 rm -rf &&
|
|
if [ $? -ne 0 ]; then
|
|
die "cp -r $ROOT_DIR/script $PKG_TMP_DIR failed "
|
|
fi
|
|
chmod -R +x $PKG_TMP_DIR/script/
|
|
}
|
|
|
|
function version_cfg()
|
|
{
|
|
gitversion=$(git log | grep commit | head -1 | awk '{print $2}' | cut -b 1-8)
|
|
commits=$(git log | grep "See in merge request" | wc -l)
|
|
mrid=$(git log | grep "See in merge request" | head -1 | awk -F! '{print $2}' | grep -o '[0-9]\+')
|
|
om_version="(openGauss OM ${version_number} build $gitversion) compiled at `date -d today +\"%Y-%m-%d %H:%M:%S\"` commit $commits last mr $mrid"
|
|
version_file=${PKG_TMP_DIR}/version.cfg
|
|
touch ${version_file}
|
|
echo "${module_name}-${version_number}">${version_file}
|
|
echo "${version_Kernel}" >>${version_file}
|
|
echo "${gitversion}" >>${version_file}
|
|
|
|
if [ -f ${PKG_TMP_DIR}/script/domain_utils/cluster_file/version_info.py ] ; then
|
|
sed -i -e "s/COMMON_VERSION = \"Gauss200 OM VERSION\"/COMMON_VERSION = \"$(echo ${om_version})\"/g" ${PKG_TMP_DIR}/script/domain_utils/cluster_file/version_info.py
|
|
if [ $? -ne 0 ]; then
|
|
die "Failed to replace OM tools version number."
|
|
fi
|
|
else
|
|
sed -i "s/COMMON_VERSION = \"Gauss200 OM VERSION\"/COMMON_VERSION = \"$(echo ${om_version})\"/g" ${PKG_TMP_DIR}/script/gspylib/os/gsOSlib.py
|
|
if [ $? -ne 0 ]; then
|
|
die "Failed to replace OM tools version number."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function clib_copy()
|
|
{
|
|
rm -rf $PKG_TMP_DIR/script/gspylib/clib
|
|
mkdir -p $PKG_TMP_DIR/script/gspylib/clib
|
|
cp $BUILD_TOOLS_PATH/gcc${gcc_version}/gcc/lib64/libstdc++.so.6 $PKG_TMP_DIR/script/gspylib/clib
|
|
cp $BINARYLIBS_PATH/openssl/comm/lib/libssl.so.1.1 $PKG_TMP_DIR/script/gspylib/clib
|
|
cp $BINARYLIBS_PATH/openssl/comm/lib/libcrypto.so.1.1 $PKG_TMP_DIR/script/gspylib/clib
|
|
if [ -f $BINARYLIBS_PATH_INSTALL_TOOLS/libpython3.*m.so.1.0 ]
|
|
then
|
|
cp $BINARYLIBS_PATH_INSTALL_TOOLS/libpython3.*m.so.1.0 $PKG_TMP_DIR/script/gspylib/clib
|
|
fi
|
|
#cp $BUILD_DIR/bin/encrypt $BUILD_DIR/script/gspylib/clib
|
|
}
|
|
|
|
function lib_copy()
|
|
{
|
|
mkdir -p ${PKG_TMP_DIR}/script/gspylib/inspection/output/log
|
|
mkdir -p ${PKG_TMP_DIR}/script/gspylib/inspection/output/nodes
|
|
mkdir -p ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/asn1crypto ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/bcrypt ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/cffi ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/cryptography ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/idna ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/nacl ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/pyasn1 ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/pycparser ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/OpenSSL ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/ipaddress.py ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/six.py ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/_cffi_backend.py ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/_cffi_backend.so* ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/_cffi_backend_* ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/paramiko ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/psutil ${PKG_TMP_DIR}/lib
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/netifaces ${PKG_TMP_DIR}/lib
|
|
|
|
if [ -d "${BINARYLIBS_PATH_INSTALL_TOOLS}/psycopg2" ]; then
|
|
cp -rf ${BINARYLIBS_PATH_INSTALL_TOOLS}/psycopg2 ${PKG_TMP_DIR}/lib
|
|
fi
|
|
|
|
}
|
|
|
|
function main()
|
|
{
|
|
# 1. clean install path and log file
|
|
env_check
|
|
|
|
# 2. copy script file
|
|
copy_script_file
|
|
|
|
# 3. copy clib file
|
|
clib_copy
|
|
|
|
# 4. copy lib file
|
|
lib_copy
|
|
|
|
# 5. make version file
|
|
version_cfg
|
|
|
|
cd $PKG_TMP_DIR
|
|
tar -zvcf "${package_name}" ./* >>"$LOG_FILE" 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
die "$package_command ${package_name} failed"
|
|
fi
|
|
|
|
sha256sum "${package_name}" | awk -F" " '{print $1}' > "$sha256_name"
|
|
if [ $? -ne 0 ]; then
|
|
die "generate sha256 file failed."
|
|
fi
|
|
mv $package_name $sha256_name ../
|
|
cd $PKG_DIR
|
|
rm -rf $PKG_TMP_DIR
|
|
echo "success!"
|
|
}
|
|
|
|
main
|
|
exit 0
|
|
|