From 82090d53426d2773ac81f6c935a39b8776b30e0a Mon Sep 17 00:00:00 2001 From: zhang_xubo <2578876417@qq.com> Date: Tue, 6 Sep 2022 17:15:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=BD=BB=E9=87=8F=E7=89=88?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E8=84=9A=E6=9C=AC=E4=BB=A5=E5=8F=8A=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E4=B8=89=E6=96=B9=E5=BA=93=E4=BA=8C=E8=BF=9B=E5=88=B6?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- build/script/cmake_package_mini.sh | 791 +++++++++++++++++++++++++++++ liteom/install.sh | 2 +- liteom/upgrade_common.sh | 2 +- 4 files changed, 795 insertions(+), 3 deletions(-) create mode 100644 build/script/cmake_package_mini.sh diff --git a/README.md b/README.md index 8a2431fa4..d8feb021d 100644 --- a/README.md +++ b/README.md @@ -413,7 +413,8 @@ https://opengauss.org/zh/ | 2.0.0 2.0.1 | https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.0/openGauss-third_party_binarylibs.tar.gz | | 2.1.0 | https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.1.0/openGauss-third_party_binarylibs.tar.gz | | 3.0.0 | https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/openGauss-third_party_binarylibs.tar.gz | -| master | https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/openGauss-third_party_binarylibs.tar.gz | +| 3.1.0 | **openEuler_arm:** https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_openEuler_arm.tar.gz
**openEuler_x86:** https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_openEuler_x86_64.tar.gz
**Centos_x86:** https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz | +| master | **openEuler_arm:** https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_openEuler_arm.tar.gz
**openEuler_x86:** https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_openEuler_x86_64.tar.gz
**Centos_x86:** https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz | 现在我们已经拥有完整的openGauss代码,把它存储在以下目录中(以sda为例)。 diff --git a/build/script/cmake_package_mini.sh b/build/script/cmake_package_mini.sh new file mode 100644 index 000000000..9eb599534 --- /dev/null +++ b/build/script/cmake_package_mini.sh @@ -0,0 +1,791 @@ +#!/bin/bash +####################################################################### +# Copyright (c): 2020-2021, Huawei Tech. Co., Ltd. +# descript: Compile and pack MPPDB +# Return 0 means OK. +# Return 1 means failed. +# version: 2.0 +# date: 2021-12-12 +####################################################################### + +##default package type is server +declare package_type='server' +declare install_package_format='tar' +##default version mode is relase +declare version_mode='release' +declare binarylib_dir='None' +declare separate_symbol='on' + +#detect platform information. +PLATFORM=32 +bit=$(getconf LONG_BIT) +if [ "$bit" -eq 64 ]; then + PLATFORM=64 +fi + +#get OS distributed version. +kernel="" +version="" +ext_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) + ext_version=$version +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) +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" +else + dist_version="Platform" +fi + +show_package=false +gcc_version="7.3.0" + +##add platform architecture information +cpus_num=$(grep -w processor /proc/cpuinfo|wc -l) +PLATFORM_ARCH=$(uname -p) +if [ "$PLATFORM_ARCH"X == "aarch64"X ] ; then + ARCHITECTURE_EXTRA_FLAG=_euleros2.0_${ext_version}_$PLATFORM_ARCH + release_file_list="aarch64_lite_list" +else + ARCHITECTURE_EXTRA_FLAG=_euleros2.0_sp5_${PLATFORM_ARCH} + release_file_list="x86_64_lite_list" +fi + +##default install version storage path +declare mppdb_version='openGauss Lite' +declare mppdb_name_for_package="$(echo ${mppdb_version} | sed 's/ /-/g')" +declare package_path='./' +declare version_number='' +declare make_check='off' +declare zip_package='on' +declare extra_config_opt='' + +####################################################################### +##putout the version of mppdb +####################################################################### +function print_version() +{ + echo "$version_number" +} + +####################################################################### +## print help information +####################################################################### +function print_help() +{ + echo "Usage: $0 [OPTION] + -h|--help show help information. + -V|--version show version information. + -f|--file provide the file list released. + -3rd|--binarylib_dir the directory of third party binarylibs. + -pkg|--package provode type of installation packages, values parameter is all, server, jdbc, odbc, agent. + -pm product mode, values parameter is single, multiple or opengauss, default value is multiple. + -p|--path generation package storage path. + -t packaging format, values parameter is tar or rpm, the default value is tar. + -m|--version_mode this values of paramenter is debug, release, memcheck, the default value is release. + -mc|--make_check this values of paramenter is on or off, the default value is on. + -s|--symbol_mode whether separate symbol in debug mode, the default value is on. + -cv|--gcc_version gcc-version option: 7.3.0. + -nopkg|--no_package don't zip binaries into packages + -co|--config_opt more config options + -S|--show_pkg show server package name and Bin name base on current configuration. +" +} + +if [ $# = 0 ] ; then + echo "missing option" + print_help + exit 1 +fi + +SCRIPT_PATH=${0} +FIRST_CHAR=$(expr substr "$SCRIPT_PATH" 1 1) +if [ "$FIRST_CHAR" = "/" ]; then + SCRIPT_PATH=${0} +else + SCRIPT_PATH="$(pwd)/${SCRIPT_PATH}" +fi +SCRIPT_NAME=$(basename $SCRIPT_PATH) +SCRIPT_DIR=$(dirname "${SCRIPT_PATH}") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") + +if [ ! -f "$SCRIPT_DIR/$SCRIPT_NAME" ] ; then + SCRIPT_DIR=$SCRIPT_DIR/script +fi + +package_path=$SCRIPT_DIR + +####################################################################### +##read version from $release_file_list +####################################################################### +function read_mpp_version() +{ + cd $SCRIPT_DIR + local head=$(cat $release_file_list | grep "\[version\]" -n | awk -F: '{print $1}') + if [ ! -n "$head" ]; then + echo "error: no find version in the $release_file_list file " + exit 1 + fi + local tail=$(cat $release_file_list | sed "1,$head d" | grep "^\[" -n | sed -n "1p" | awk -F: '{print $1}') + if [ ! -n "$tail" ]; then + local all=$(cat $release_file_list | wc -l) + let tail=$all+1-$head + fi + version_number=$(cat $release_file_list | awk "NR==$head+1,NR==$tail+$head-1") + echo "${mppdb_name_for_package}-${version_number}">version.cfg + #auto read the number from kernal globals.cpp, no need to change it here +} + +######################################################################### +##read command line paramenters +####################################################################### +while [ $# -gt 0 ]; do + case "$1" in + -h|--help) + print_help + exit 1 + ;; + -V|--version) + print_version + exit 1 + ;; + -f|--file) + if [ "$2"X = X ]; then + echo "no given file name" + exit 1 + fi + release_file_list=$2 + shift 2 + ;; + -3rd|--binarylib_dir) + if [ "$2"X = X ]; then + echo "no given binarylib directory values" + exit 1 + fi + binarylib_dir=$2 + shift 2 + ;; + -p|--path) + if [ "$2"X = X ]; then + echo "no given generration package path" + exit 1 + fi + package_path=$2 + if [ ! -d "$package_path" ]; then + mkdir -p $package_path + fi + shift 2 + ;; + -pkg) + if [ "$2"X = X ]; then + echo "no given package type name" + exit 1 + fi + package_type=$2 + shift 2 + ;; + -s|--symbol_mode) + if [ "$2"X = X ]; then + echo "no given symbol parameter" + exit 1 + fi + separate_symbol=$2 + shift 2 + ;; + -t) + if [ "$2"X = X ]; then + echo "no given installation package format values" + exit 1 + fi + if [ "$2" = rpm ]; then + echo "error: do not suport rpm package now!" + exit 1 + fi + install_package_format=$2 + shift 1 + ;; + -m|--version_mode) + if [ "$2"X = X ]; then + echo "no given version number values" + exit 1 + fi + version_mode=$2 + shift 2 + ;; + -mc|--make_check) + if [ "$2"X = X ]; then + echo "no given make check values" + exit 1 + fi + make_check=$2 + shift 2 + ;; + -cv|--gcc_version) + if [ "$2"X = X ]; then + echo "no given gcc version" + exit 1 + fi + gcc_version=$2 + shift 2 + ;; + -nopkg|--no_package) + zip_package='off' + shift 1 + ;; + -co|--config_opt) + if [ "$2"X = X ]; then + echo "no extra configure options provided" + exit 1 + fi + extra_config_opt=$2 + shift 2 + ;; + -S|--show_pkg) + show_package=true + shift + ;; + *) + echo "Internal Error: option processing error: $1" 1>&2 + echo "please input right paramtenter, the following command may help you" + echo "./cmake_package_internal.sh --help or ./cmake_package_internal.sh -h" + exit 1 + esac +done + +read_mpp_version + +if [ "$gcc_version" = "7.3.0" ]; then + gcc_version=${gcc_version:0:3} +else + echo "Unknown gcc version $gcc_version" + exit 1 +fi + +####################################################################### +## declare all package name +####################################################################### +declare version_string="${mppdb_name_for_package}-${version_number}" +declare package_pre_name="${version_string}-${dist_version}-${PLATFORM_ARCH}" +declare server_package_name="${package_pre_name}.${install_package_format}.gz" + +declare libpq_package_name="${package_pre_name}-Libpq.${install_package_format}.gz" +declare symbol_package_name="${package_pre_name}-symbol.${install_package_format}.gz" + +echo "[makemppdb] $(date +%y-%m-%d' '%T): script dir : ${SCRIPT_DIR}" +ROOT_DIR=$(dirname "$SCRIPT_DIR") +ROOT_DIR=$(dirname "$ROOT_DIR") + +CMAKE_BUILD_DIR=${ROOT_DIR}/tmp_build +declare LOG_FILE="${ROOT_DIR}/build/script/makemppdb_pkg.log" +declare BUILD_DIR="${ROOT_DIR}/mppdb_temp_install" +declare ERR_MKGS_FAILED=1 +declare MKGS_OK=0 +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 + BUILD_TOOLS_PATH="${ROOT_DIR}/buildtools/" + PLATFORM_PATH="${ROOT_DIR}/kernel/platform/" + BINARYLIBS_PATH="${ROOT_DIR}/binarylibs" +fi + +declare UPGRADE_SQL_DIR="${ROOT_DIR}/src/include/catalog/upgrade_sql" + +export CC="$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/gcc" +export CXX="$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 PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin:$PATH +jdkpath=${binarylib_dir}/kernel/platform/huaweijdk8/${PLATFORM_ARCH}/jdk +if [ ! -d "${jdkpath}" ]; then + jdkpath=${binarylib_dir}/kernel/platform/openjdk8/${PLATFORM_ARCH}/jdk +fi +export JAVA_HOME=${jdkpath} + +declare p7zpath="${BUILD_TOOLS_PATH}/p7z/bin" + +################################### +# build parameter about enable-llt +################################## +echo "[makemppdb] $(date +%y-%m-%d' '%T): Work root dir : ${ROOT_DIR}" + +################################### +# get version number from globals.cpp +################################## +function read_mpp_number() +{ + global_kernal="${ROOT_DIR}/src/common/backend/utils/init/globals.cpp" + version_name="GRAND_VERSION_NUM" + version_num="" + line=$(cat $global_kernal | grep ^const* | grep $version_name) + version_num1=${line#*=} + #remove the symbol; + version_num=$(echo $version_num1 | tr -d ";") + #remove the blank + version_num=$(echo $version_num) + + if echo $version_num | grep -qE '^92[0-9]+$' + then + # get the last three number + latter=${version_num:2} + echo "92.${latter}" >>${SCRIPT_DIR}/version.cfg + else + echo "Cannot get the version number from globals.cpp." + exit 1 + fi +} +read_mpp_number + +####################################################################### +# Print log. +####################################################################### +log() +{ + echo "[makegaussdb] $(date +%y-%m-%d' '%T): $@" + echo "[makegaussdb] $(date +%y-%m-%d' '%T): $@" >> "$LOG_FILE" 2>&1 +} + +####################################################################### +# print log and exit. +####################################################################### +die() +{ + log "$@" + echo "$@" + exit $ERR_MKGS_FAILED +} + +####################################################################### +## Check the installation package production environment +####################################################################### +function mpp_pkg_pre_check() +{ + if [ -d "$BUILD_DIR" ]; then + rm -rf $BUILD_DIR + fi + if [ -d "$LOG_FILE" ]; then + rm -rf $LOG_FILE + fi +} + +####################################################################### +# Install all SQL files from distribute/include/catalog/upgrade_sql +# to INSTALL_DIR/bin/script/upgrade_sql. +# Package all SQL files and then verify them with SHA256. +####################################################################### +function package_upgrade_sql() +{ + echo "Begin to install upgrade_sql files..." + UPGRADE_SQL_TAR="upgrade_sql.tar.gz" + UPGRADE_SQL_SHA256="upgrade_sql.sha256" + MULTIP_IGNORE_VERSION=(289 294 296) + cp -r "${UPGRADE_SQL_DIR}" . + [ $? -ne 0 ] && die "Failed to cp upgrade_sql files" + tar -czf ${UPGRADE_SQL_TAR} upgrade_sql + [ $? -ne 0 ] && die "Failed to package ${UPGRADE_SQL_TAR}" + rm -rf ./upgrade_sql > /dev/null 2>&1 + + sha256sum ${UPGRADE_SQL_TAR} | awk -F" " '{print $1}' > "${UPGRADE_SQL_SHA256}" + [ $? -ne 0 ] && die "Failed to generate sha256 sum file for ${UPGRADE_SQL_TAR}" + + chmod 600 ${UPGRADE_SQL_TAR} + chmod 600 ${UPGRADE_SQL_SHA256} + echo "Successfully packaged upgrade_sql files." +} + +####################################################################### +##install gaussdb database and others +##select to install something according to variables package_type need +####################################################################### +function mpp_pkg_bld() +{ + install_gaussdb +} + +####################################################################### +##install gaussdb database contained server,client and libpq +####################################################################### +function install_gaussdb() +{ + # Generate the license control file, and set md5sum string to the code. + echo "Modify gaussdb_version.cpp file." >> "$LOG_FILE" 2>&1 + echo "Modify gaussdb_version.cpp file success." >> "$LOG_FILE" 2>&1 + cd "$ROOT_DIR/" + if [ $? -ne 0 ]; then + die "change dir to $SRC_DIR failed." + fi + + if [ "$version_mode" = "debug" -a "$separate_symbol" = "on" ]; then + echo "WARNING: do not separate symbol in debug mode!" + fi + + binarylibs_path=${ROOT_DIR}/binarylibs + if [ "${binarylib_dir}"x != "None"x ]; then + binarylibs_path=${binarylib_dir} + fi + + export BUILD_TUPLE=${PLATFORM_ARCH} + export THIRD_BIN_PATH="${binarylibs_path}" + export PREFIX_HOME="${BUILD_DIR}" + + if [ "$version_mode"x == "release"x ]; then + CMAKE_OPT="-DENABLE_MULTIPLE_NODES=OFF -DENABLE_PRIVATEGAUSS=OFF -DENABLE_THREAD_SAFETY=ON -DENABLE_LITE_MODE=ON" + export DEBUG_TYPE=release + elif [ "$version_mode"x == "memcheck"x ]; then + CMAKE_OPT="-DENABLE_MULTIPLE_NODES=OFF -DENABLE_PRIVATEGAUSS=OFF -DENABLE_THREAD_SAFETY=ON -DENABLE_LITE_MODE=ON" + export DEBUG_TYPE=memcheck + else + CMAKE_OPT="-DENABLE_MULTIPLE_NODES=OFF -DENABLE_PRIVATEGAUSS=OFF -DENABLE_THREAD_SAFETY=ON -DENABLE_LITE_MODE=ON" + export DEBUG_TYPE=debug + fi + + echo "Begin run cmake for gaussdb server" >> "$LOG_FILE" 2>&1 + echo "CMake options: ${CMAKE_OPT}" >> "$LOG_FILE" 2>&1 + echo "CMake release: ${DEBUG_TYPE}" >> "$LOG_FILE" 2>&1 + + export GAUSSHOME=${BUILD_DIR} + export LD_LIBRARY_PATH=${BUILD_DIR}/lib:${BUILD_DIR}/lib/postgresql:${LD_LIBRARY_PATH} + + cd ${ROOT_DIR} + [ -d "${CMAKE_BUILD_DIR}" ] && rm -rf ${CMAKE_BUILD_DIR} + [ -d "${BUILD_DIR}" ] && rm -rf ${BUILD_DIR} + mkdir -p ${CMAKE_BUILD_DIR} + cd ${CMAKE_BUILD_DIR} + cmake .. ${CMAKE_OPT} + echo "Begin make and install gaussdb server" >> "$LOG_FILE" 2>&1 + make VERBOSE=1 -sj ${cpus_num} + if [ $? -ne 0 ]; then + die "make failed." + fi + make install -sj ${cpus_num} + if [ $? -ne 0 ]; then + die "make install failed." + fi + + ## check build specification + spec="gaussdbkernel" + if ( cat $SCRIPT_DIR/gauss.spec | grep 'PRODUCT' | grep 'GaussDB Kernel' >/dev/null 2>&1 ); then + spec="gaussdbkernel" + elif ( cat $SCRIPT_DIR/gauss.spec | grep 'PRODUCT' | grep 'openGauss' >/dev/null 2>&1 ); then + spec="opengauss" + fi + + chmod 444 ${BUILD_DIR}/bin/cluster_guc.conf + dos2unix ${BUILD_DIR}/bin/cluster_guc.conf > /dev/null 2>&1 + + #back to separate_debug_symbol.sh dir + cd $SCRIPT_DIR + if [ "$version_mode" = "release" -a "$separate_symbol" = "on" -a "$zip_package" = "on" ]; then + chmod +x ./separate_debug_information.sh + ./separate_debug_information.sh + cd $SCRIPT_DIR + mv symbols.tar.gz $symbol_package_name + fi + + #back to root dir + cd $ROOT_DIR + + #insert the commitid to version.cfg as the upgrade app path specification + export PATH=${BUILD_DIR}:$PATH + export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH + + commitid=$(LD_PRELOAD='' ${BUILD_DIR}/bin/gaussdb -V | cut -d ")" -f 1 | awk '{print $NF}') + echo "${commitid}" >>${SCRIPT_DIR}/version.cfg + echo "End insert commitid into version.cfg" >> "$LOG_FILE" 2>&1 +} + +####################################################################### +##select package type according to variable package_type +####################################################################### +function mpp_pkg_make() +{ + case "$package_type" in + server) + echo "file list: $release_file_list" + make_package $release_file_list 'server' + make_package $release_file_list 'libpq' + ;; + libpq) + make_package $release_file_list 'libpq' + ;; + esac +} + +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 +} + +############################################################### +## client tools package +## Roach no +## sslcert no +## Data Studio no +## Database Manager no +## Migration Toolkit no +## Cluster Configuration Assistant (CCA) no +## CAT no +############################################################### +function target_file_copy_for_non_server() +{ + for file in $(echo $1) + do + tar -cpf - $file | ( cd $2; tar -xpf - ) + done +} + +declare bin_name="${package_pre_name}.bin" +declare sha256_name='' +declare script_dir="${ROOT_DIR}/script" + +####################################################################### +##copy target file into temporary directory temp +####################################################################### +function target_file_copy() +{ + ################################################### + # make bin package + ################################################### + for file in $(echo $1) + do + tar -cpf - $file | ( cd $2; tar -xpf - ) + done + cd $BUILD_DIR + if [ "$PLATFORM_ARCH"X == "aarch64"X ] ; then + # do nothing in current version + echo "" + else + sed -i '/^process_cpu_affinity|/d' $2/bin/cluster_guc.conf + fi + if [ "$(ls -A /lib64/libaio.so*)" != "" ] + then + cp /lib64/libaio.so* $2/lib/ + elif [ "$(ls -A /lib/libaio.so*)" != "" ] + then + cp /lib/libaio.so* $2/lib/ + fi + + if [ "$(ls -A /lib64/libnuma.so*)" != "" ] + then + cp /lib64/libnuma.so* $2/lib/ + elif [ "$(ls -A /lib/libnuma.so*)" != "" ] + then + cp /lib/libnuma.so* $2/lib/ + fi + + #generate bin file + echo "Begin generate ${bin_name} bin file..." >> "$LOG_FILE" 2>&1 + curpath=$(pwd) + cd $2 + tar -zcf ${curpath}/${bin_name} . >> "$LOG_FILE" 2>&1 + cd ${curpath} + if [ $? -ne 0 ]; then + echo "Please check and makesure '7z' exist. " + die "generate ${bin_name} failed." + fi + echo "End generate ${bin_name} bin file" >> "$LOG_FILE" 2>&1 + + #generate sha256 file + sha256_name="${package_pre_name}.sha256" + echo "Begin generate ${sha256_name} sha256 file..." >> "$LOG_FILE" 2>&1 + sha256sum "${bin_name}" | awk -F" " '{print $1}' > "$sha256_name" + if [ $? -ne 0 ]; then + die "generate sha256 file failed." + fi + echo "End generate ${sha256_name} sha256 file" >> "$LOG_FILE" 2>&1 + + cp $2/lib/libstdc++.so.6 ./ + + ################################################### + # make server package + ################################################### + if [ -d "${2}" ]; then + rm -rf ${2} + fi + mkdir -p ${2} + mkdir -p $2/dependency + cp libstdc++.so.6 $2/dependency + mv ${bin_name} ${sha256_name} $2 +} + + +####################################################################### +##function make_package have three actions +##1.parse release_file_list variable represent file +##2.copy target file into a newly created temporary directory temp +##3.package all file in the temp directory and renome to destination package_path +####################################################################### +function make_package() +{ + cd $SCRIPT_DIR + releasefile=$1 + pkgname=$2 + + local head=$(cat $releasefile | grep "\[$pkgname\]" -n | awk -F: '{print $1}') + if [ ! -n "$head" ]; then + die "error: ono find $pkgname in the $releasefile file " + fi + + local tail=$(cat $releasefile | sed "1,$head d" | grep "^\[" -n | sed -n "1p" | awk -F: '{print $1}') + if [ ! -n "$tail" ]; then + local all=$(cat $releasefile | wc -l) + let tail=$all+1-$head + fi + + dest=$(cat $releasefile | awk "NR==$head+1,NR==$tail+$head-1") + if [ "$pkgname"x = "libpq"x -a \( "$version_mode" = "debug" -o "$version_mode" = "release" \) ]; then + # copy include file + head=$(cat $releasefile | grep "\[header\]" -n | awk -F: '{print $1}') + if [ ! -n "$head" ]; then + die "error: ono find header in the $releasefile file " + fi + + tail=$(cat $releasefile | sed "1,$head d" | grep "^\[" -n | sed -n "1p" | awk -F: '{print $1}') + if [ ! -n "$tail" ]; then + all=$(cat $releasefile | wc -l) + let tail=$all+1-$head + fi + + dest1=$(cat $releasefile | awk "NR==$head+1,NR==$tail+$head-1") + dest=$(echo "$dest";echo "$dest1") + fi + + mkdir -p ${BUILD_DIR} + cd ${BUILD_DIR} + rm -rf temp + mkdir temp + + case "$pkgname" in + server) + mkdir -p ${BUILD_DIR}/temp/etc + target_file_copy "$dest" ${BUILD_DIR}/temp + ;; + *) + target_file_copy_for_non_server "$dest" ${BUILD_DIR}/temp $pkgname + ;; + esac + + cd ${BUILD_DIR}/temp + select_package_command + + case "$pkgname" in + server) + echo "packaging server..." + cp ${SCRIPT_DIR}/version.cfg ${BUILD_DIR}/temp + if [ $? -ne 0 ]; then + die "copy ${SCRIPT_DIR}/version.cfg to ${BUILD_DIR}/temp failed" + fi + cp ${ROOT_DIR}/${open_gauss}/liteom/install.sh ./ + if [ $? -ne 0 ] + then + die "copy ${ROOT_DIR}/${open_gauss}/liteom/install.sh to ${BUILD_DIR}/temp failed" + fi + + cp ${ROOT_DIR}/${open_gauss}/liteom/uninstall.sh ./ + if [ $? -ne 0 ] + then + die "copy ${ROOT_DIR}/${open_gauss}/liteom/uninstall.sh to ${BUILD_DIR}/temp failed" + fi + + cp ${ROOT_DIR}/${open_gauss}/liteom/opengauss_lite.conf ./ + if [ $? -ne 0 ] + then + die "copy ${ROOT_DIR}/${open_gauss}/liteom/opengauss_lite.conf to ${BUILD_DIR}/temp failed" + fi + + # pkg upgrade scripts:upgrade_GAUSSV5.sh, upgrade_common.sh, upgrade_config.sh, upgrade_errorcode.sh + for filename in upgrade_GAUSSV5.sh upgrade_common.sh upgrade_config.sh upgrade_errorcode.sh + do + if ! cp ${ROOT_DIR}/${open_gauss}/liteom/${filename} ./ ; then + die "copy ${ROOT_DIR}/${open_gauss}/liteom/${filename} to ${BUILD_DIR}/temp failed" + fi + done + # install upgrade_sql.* files. + package_upgrade_sql + + $package_command "${server_package_name}" ./* >>"$LOG_FILE" 2>&1 + if [ $? -ne 0 ]; then + die "$package_command ${server_package_name} failed" + fi + mv ${server_package_name} ${package_path} + echo "install $pkgname tools is ${server_package_name} of ${package_path} directory " >> "$LOG_FILE" 2>&1 + echo "success!" + ;; + libpq) + echo "packaging libpq..." + $package_command "${libpq_package_name}" ./* >>"$LOG_FILE" 2>&1 + if [ $? -ne 0 ]; then + die "$package_command ${libpq_package_name} failed" + fi + mv ${libpq_package_name} ${package_path} + echo "install $pkgname tools is ${libpq_package_name} of ${package_path} directory " >> "$LOG_FILE" 2>&1 + echo "success!" + ;; + esac +} + + +############################################################# +# show package for hotpatch sdv. +############################################################# +if [ "$show_package" = true ]; then + echo "package: "$server_package_name + echo "bin: "$bin_name + exit 0 +fi + +############################################################# +# main function +############################################################# +# 1. clean install path and log file +mpp_pkg_pre_check + +# 2. chose action +mpp_pkg_bld +if [ "$zip_package" = "off" ]; then + echo "The option 'nopkg' is on, no package will be zipped." + exit 0 +fi + +# 3. make package +mpp_pkg_make + +#clean mpp_install directory +echo "clean enviroment" +echo "[makemppdb] $(date +%y-%m-%d' '%T): remove ${BUILD_DIR}" >>"$LOG_FILE" 2>&1 + +mkdir ${ROOT_DIR}/output +mv ${ROOT_DIR}/build/script/*.tar.gz ${ROOT_DIR}/output/ +echo "now, all packages has finished!" +exit 0 \ No newline at end of file diff --git a/liteom/install.sh b/liteom/install.sh index 26440815f..b07fa22c0 100644 --- a/liteom/install.sh +++ b/liteom/install.sh @@ -551,7 +551,7 @@ function decompress() { cd $root_path # get OS distributed version. - declare -c kernel="" + kernel="" if [ -f "/etc/euleros-release" ] then kernel=$(cat /etc/euleros-release | awk -F ' ' '{print $1}' | tr a-z A-Z) diff --git a/liteom/upgrade_common.sh b/liteom/upgrade_common.sh index 69560de53..40ea07b5f 100644 --- a/liteom/upgrade_common.sh +++ b/liteom/upgrade_common.sh @@ -383,7 +383,7 @@ function check_pkg() { fi #get OS distributed version. - declare -c kernel="" + kernel="" if [[ -f "/etc/euleros-release" ]]; then kernel=$(cat /etc/euleros-release | awk -F ' ' '{print $1}' | tr a-z A-Z) if [[ "${kernel}" = "Euleros" ]]; then