#!/bin/bash # Copyright (c) Huawei Technologies Co., Ltd. 2020-2025. All rights reserved. # descript: Compile and pack openGauss declare LOG_FILE="${SCRIPT_DIR}/makemppdb_pkg.log" declare product_name='openGauss' declare PLATFORM_ARCH=$(uname -p) declare package_path=${ROOT_DIR}/output declare install_package_format="tar" declare PLATFORM=32 bit=$(getconf LONG_BIT) if [ "$bit" -eq 64 ]; then declare PLATFORM=64 fi # 公共方法 ####################################################################### ##putout the version of gaussdb ####################################################################### function print_version() { echo "$version_number" } ####################################################################### # Print log. ####################################################################### function log() { echo "[makegaussdb] $(date +%y-%m-%d' '%T): $@" echo "[makegaussdb] $(date +%y-%m-%d' '%T): $@" >> "$LOG_FILE" 2>&1 } ####################################################################### # print log and exit. ####################################################################### function die() { log "$@" echo "$@" exit $ERR_FAILED } ####################################################################### ##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" ;; esac } select_package_command ####################################################################### ##get os dist version ####################################################################### os_name=$(cat /etc/os-release | grep -w NAME | awk -F '"' '{print $2}') if [[ -f "/etc/openEuler-release" ]]; then os_name="openEuler" elif [[ -f "/etc/euleros-release" ]]; then os_name="EulerOS" elif [[ -f "/etc/centos-release" ]]; then os_name="CentOS" elif [[ -f "/etc/FusionOS-release" ]]; then os_name="FusionOS" elif [[ -f "/etc/kylin-release" ]]; then os_name="Kylin" elif [[ -f "/etc/asianux-release" ]]; then os_name="Asianux" elif [[ -f "/etc/CSIOS-release" ]]; then os_name="CSIOS" else os_name=$(lsb_release -d | awk -F ' ' '{print $2}'| tr A-Z a-z | sed 's/.*/\L&/; s/[a-z]*/\u&/g') fi os_version=$(cat /etc/os-release | grep -w VERSION_ID | awk -F '"' '{print $2}') if [ "$os_name"X == ""X ]; then echo "os name is empty" exit 1 fi ##add platform architecture information if [ "$PLATFORM_ARCH"X == "aarch64"X ] ; then GAUSSDB_EXTRA_FLAGS=" -D__USE_NUMA" fi if [ "${binarylib_dir}" != 'None' ] && [ -d "${binarylib_dir}" ]; then BUILD_TOOLS_PATH="${binarylib_dir}/buildtools" PLATFORM_PATH="${binarylib_dir}/kernel/platform" BINARYLIBS_PATH="${binarylib_dir}/kernel/dependency" else die "${binarylib_dir} doesn't exist." fi declare INSTALL_TOOLS_DIR=${binarylib_dir}/install_tools declare UNIX_ODBC="${BINARYLIBS_PATH}/unixodbc" # Comment 编译相关 if [ -d "${USE_CCACHE}$BUILD_TOOLS_PATH/gcc10.3" ]; then gcc_version="10.3" else gcc_version="7.3" fi if [ "$PLATFORM_ARCH"X == "loongarch64"X ];then gcc_version="8.3" fi if [ "$PLATFORM_ARCH"X == "aarch64"X ] && [ "$gcc_version" == "10.3" ]; then gcc_sub_version="1" else gcc_sub_version="0" fi ccache -V >/dev/null 2>&1 && USE_CCACHE="ccache " ENABLE_CCACHE="--enable-ccache" export CC="${USE_CCACHE}$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/gcc" export CXX="${USE_CCACHE}$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/g++" export LD_LIBRARY_PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/lib64:$BUILD_TOOLS_PATH/gcc$gcc_version/isl/lib:$BUILD_TOOLS_PATH/gcc$gcc_version/mpc/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/mpfr/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/gmp/lib/:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$BINARYLIBS_PATH/zstd/lib:$LD_LIBRARY_PATH export PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin:$PATH export JAVA_HOME=${PLATFORM_PATH}/huaweijdk8/${PLATFORM_ARCH}/jdk declare ERR_FAILED=1 declare ERR_OK=0 gaussdb_200_file="${BUILD_TOOLS_PATH}/license_control/gaussdb.version.GaussDB200" gaussdb_300_file="${BUILD_TOOLS_PATH}/license_control/gaussdb.version.GaussDB300" gaussdb_200_standard_file="${BUILD_TOOLS_PATH}/license_control/gaussdb.license.GaussDB200_Standard" gaussdb_version_file="${ROOT_DIR}/src/gausskernel/process/postmaster/gaussdb_version.cpp" if [ -f "$SCRIPT_DIR/gaussdb.ver" ];then declare version_number=$(cat ${SCRIPT_DIR}/gaussdb.ver | grep 'VERSION' | awk -F "=" '{print $2}') else echo "gaussdb.ver not found!" exit 1 fi declare release_file_list="${PLATFORM_ARCH}_${product_mode}_list" ####################################################################### ## declare all package name ####################################################################### declare package_version_name="${version_number}-${os_name}${os_version}-${PLATFORM_ARCH}" declare libpq_package_name="${product_name}-Libpq-${package_version_name}.tar.gz" declare tools_package_name="${product_name}-Tools-${package_version_name}.tar.gz" declare kernel_package_name="${product_name}-Server-${package_version_name}.tar.bz2" declare symbol_package_name="${product_name}-Symbol-${package_version_name}.tar.gz" declare sha256_name="${product_name}-Server-${package_version_name}.sha256"