release.sh 8.3 KB
Newer Older
H
hzcheng 已提交
1 2 3 4 5
#!/bin/bash
#
# Generate the deb package for ubunt, or rpm package for centos, or tar.gz package for other linux os

set -e
S
slguan 已提交
6
#set -x
L
lihui 已提交
7

L
lihui 已提交
8 9 10 11 12
# releash.sh  -v [cluster | edge]  
#             -c [aarch32 | aarch64 | x64 | x86 | mips64 ...] 
#             -o [Linux | Kylin | Alpine | Raspberrypi | Darwin | Windows | ...]  
#             -V [stable | beta]
#             -l [full | lite]
H
Hui Li 已提交
13
#             -s [static | dynamic]
H
Hui Li 已提交
14
#             -n [2.0.0.3]
L
lihui 已提交
15 16

# set parameters by default value
L
lihui 已提交
17
verMode=edge     # [cluster, edge]
L
lihui 已提交
18 19 20
verType=stable   # [stable, beta]
cpuType=x64      # [aarch32 | aarch64 | x64 | x86 | mips64 ...]
osType=Linux     # [Linux | Kylin | Alpine | Raspberrypi | Darwin | Windows | ...]
L
lihui 已提交
21
pagMode=full     # [full | lite]
H
Hui Li 已提交
22
soMode=dynamic   # [static | dynamic]
H
Hui Li 已提交
23
verNumber=""
L
lihui 已提交
24

H
Hui Li 已提交
25
while getopts "hv:V:c:o:l:s:n:" arg
L
lihui 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39
do
  case $arg in
    v)
      #echo "verMode=$OPTARG"
      verMode=$( echo $OPTARG )
      ;;
    V)
      #echo "verType=$OPTARG"
      verType=$(echo $OPTARG)
      ;;
    c)
      #echo "cpuType=$OPTARG"
      cpuType=$(echo $OPTARG)
      ;;
L
lihui 已提交
40 41 42 43
    l)
      #echo "pagMode=$OPTARG"
      pagMode=$(echo $OPTARG)
      ;;
H
Hui Li 已提交
44 45 46 47
    s)
      #echo "soMode=$OPTARG"
      soMode=$(echo $OPTARG)
      ;;
H
Hui Li 已提交
48 49 50 51
    n)
      #echo "verNumber=$OPTARG"
      verNumber=$(echo $OPTARG)
      ;;
L
lihui 已提交
52 53 54 55 56
    o)
      #echo "osType=$OPTARG"
      osType=$(echo $OPTARG)
      ;;
    h)
H
Hui Li 已提交
57 58 59 60 61
      echo "Usage: `basename $0` -v [cluster | edge] "
      echo "                  -c [aarch32 | aarch64 | x64 | x86 | mips64 ...] "
      echo "                  -o [Linux | Kylin | Alpine | Raspberrypi | Darwin | Windows | ...] "
      echo "                  -V [stable | beta] "
      echo "                  -l [full | lite] "
H
Hui Li 已提交
62
      echo "                  -s [static | dynamic] "
H
Hui Li 已提交
63
      echo "                  -n [version number] "
L
lihui 已提交
64 65 66 67 68 69 70 71 72
      exit 0
      ;;
    ?) #unknow option 
      echo "unkonw argument"
      exit 1
      ;;
  esac
done

H
Hui Li 已提交
73
echo "verMode=${verMode} verType=${verType} cpuType=${cpuType} osType=${osType} pagMode=${pagMode} soMode=${soMode} verNumber=${verNumber}"
H
hzcheng 已提交
74 75

curr_dir=$(pwd)
S
slguan 已提交
76 77 78 79 80 81 82 83 84 85 86

if [ "$osType" != "Darwin" ]; then
    script_dir="$(dirname $(readlink -f $0))"
    top_dir="$(readlink -f ${script_dir}/..)"
else
    script_dir=`dirname $0`
    cd ${script_dir}
    script_dir="$(pwd)"
    top_dir=${script_dir}/..
fi

S
slguan 已提交
87
versioninfo="${top_dir}/src/util/src/version.c"
H
hzcheng 已提交
88

P
plum-lihui 已提交
89 90 91 92 93
csudo=""
if command -v sudo > /dev/null; then
    csudo="sudo"
fi

H
hzcheng 已提交
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
function is_valid_version() {
    [ -z $1 ] && return 1 || :

    rx='^([0-9]+\.){3}(\*|[0-9]+)$'
    if [[ $1 =~ $rx ]]; then
        return 0
    fi
    return 1
}

function vercomp () {
    if [[ $1 == $2 ]]; then
        echo 0
        exit 0
    fi
H
Hui Li 已提交
109
    
H
hzcheng 已提交
110 111
    local IFS=.
    local i ver1=($1) ver2=($2)
H
Hui Li 已提交
112

H
hzcheng 已提交
113 114 115 116 117 118
    # fill empty fields in ver1 with zeros
    for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
        ver1[i]=0
    done

    for ((i=0; i<${#ver1[@]}; i++)); do
H
Hui Li 已提交
119
        if [[ -z ${ver2[i]} ]]; then
H
hzcheng 已提交
120 121 122
            # fill empty fields in ver2 with zeros
            ver2[i]=0
        fi
H
Hui Li 已提交
123
        if ((10#${ver1[i]} > 10#${ver2[i]})); then
H
hzcheng 已提交
124 125 126
            echo 1
            exit 0
        fi
H
Hui Li 已提交
127
        if ((10#${ver1[i]} < 10#${ver2[i]})); then
H
hzcheng 已提交
128 129 130 131 132 133 134 135 136 137 138
            echo 2
            exit 0
        fi
    done
    echo 0
}

# 1. Read version information
version=$(cat ${versioninfo} | grep " version" | cut -d '"' -f2)
compatible_version=$(cat ${versioninfo} | grep " compatible_version" | cut -d '"' -f2)

H
Hui Li 已提交
139 140 141
if [ -z ${verNumber} ]; then
  while true; do
    read -p "Do you want to release a new version? [y/N]: " is_version_change
H
hzcheng 已提交
142

H
Hui Li 已提交
143
    if [[ ( "${is_version_change}" == "y") || ( "${is_version_change}" == "Y") ]]; then
H
hzcheng 已提交
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
      read -p "Please enter the new version: " tversion
      while true; do
          if (! is_valid_version $tversion) || [ "$(vercomp $tversion $version)" = '2' ]; then
              read -p "Please enter a correct version: " tversion
              continue
          fi
          version=${tversion}
          break
      done

      echo

      read -p "Enter the oldest compatible version: " tversion
      while true; do

          if [ -z $tversion ]; then
              break
          fi

          if (! is_valid_version $tversion) || [ "$(vercomp $version $tversion)" = '2' ]; then
              read -p "enter correct compatible version: " tversion
          else
              compatible_version=$tversion
              break
          fi
      done

      break
H
Hui Li 已提交
172
    elif [[ ( "${is_version_change}" == "n") || ( "${is_version_change}" == "N") ]]; then
H
hzcheng 已提交
173 174
      echo "Use old version: ${version} compatible version: ${compatible_version}."
      break
H
Hui Li 已提交
175
    else
H
hzcheng 已提交
176
      continue
H
Hui Li 已提交
177 178 179 180 181 182 183 184 185 186 187 188 189
    fi
  done
else 
  echo "old version: $version, new version: $verNumber"
  #if ( ! is_valid_version $verNumber ) || [[ "$(vercomp $version $verNumber)" == '2' ]]; then
  #  echo "please enter correct version"
  #  exit 0
  #else
    version=${verNumber}
  #fi  
fi  

echo "=======================new version number: ${version}======================================"
H
hzcheng 已提交
190 191 192

# output the version info to the buildinfo file.
build_time=$(date +"%F %R")
H
Hui Li 已提交
193 194 195
echo "char version[12] = \"${version}\";"                             > ${versioninfo}
echo "char compatible_version[12] = \"${compatible_version}\";"      >> ${versioninfo}
echo "char gitinfo[48] = \"$(git rev-parse --verify HEAD)\";"       >> ${versioninfo}
S
slguan 已提交
196
if [ "$verMode" != "cluster" ]; then
H
Hui Li 已提交
197
  echo "char gitinfoOfInternal[48] = \"\";"                         >> ${versioninfo}
S
slguan 已提交
198 199 200
else
  enterprise_dir="${top_dir}/../enterprise"
  cd ${enterprise_dir}
H
Hui Li 已提交
201
  echo "char gitinfoOfInternal[48] = \"$(git rev-parse --verify HEAD)\";"  >> ${versioninfo}
S
slguan 已提交
202 203
  cd ${curr_dir}
fi
H
Hui Li 已提交
204
echo "char buildinfo[64] = \"Built by ${USER} at ${build_time}\";"  >> ${versioninfo}
L
lihui 已提交
205 206
echo ""                                                              >> ${versioninfo}
tmp_version=$(echo $version | tr -s "." "_")
L
lihui 已提交
207 208 209 210 211 212 213 214 215
if [ "$verMode" == "cluster" ]; then
  libtaos_info=${tmp_version}_${osType}_${cpuType}
else
  libtaos_info=edge_${tmp_version}_${osType}_${cpuType}
fi
if [ "$verType" == "beta" ]; then
  libtaos_info=${libtaos_info}_${verType}
fi
echo "void libtaos_${libtaos_info}() {};"        >> ${versioninfo}
L
lihui 已提交
216

H
hzcheng 已提交
217
# 2. cmake executable file
L
lihui 已提交
218
compile_dir="${top_dir}/debug"
H
hzcheng 已提交
219
if [ -d ${compile_dir} ]; then
L
lihui 已提交
220
    ${csudo} rm -rf ${compile_dir}
H
hzcheng 已提交
221 222
fi

S
slguan 已提交
223 224 225 226 227
if [ "$osType" != "Darwin" ]; then
    ${csudo} mkdir -p ${compile_dir}
else
    mkdir -p ${compile_dir}
fi
H
hzcheng 已提交
228
cd ${compile_dir}
L
lihui 已提交
229

L
lihui 已提交
230 231
# check support cpu type
if [[ "$cpuType" == "x64" ]] || [[ "$cpuType" == "aarch64" ]] || [[ "$cpuType" == "aarch32" ]] || [[ "$cpuType" == "mips64" ]] ; then
S
slguan 已提交
232
    if [ "$verMode" != "cluster" ]; then
H
Hui Li 已提交
233
      cmake ../ -DCPUTYPE=${cpuType} -DPAGMODE=${pagMode} -DSOMODE=${soMode}
S
slguan 已提交
234
    else
H
Hui Li 已提交
235
      cmake ../../ -DCPUTYPE=${cpuType} -DSOMODE=${soMode}
S
slguan 已提交
236
    fi
L
lihui 已提交
237
else
S
slguan 已提交
238 239
    echo "input cpuType=${cpuType} error!!!"
    exit 1
L
lihui 已提交
240 241 242
fi

make
H
hzcheng 已提交
243 244 245 246

cd ${curr_dir}

# 3. judge the operating system type, then Call the corresponding script for packaging
H
[NONE]  
huili 已提交
247
#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
H
hzcheng 已提交
248 249 250
#osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2)
#echo "osinfo: ${osinfo}"

S
slguan 已提交
251
if [ "$osType" != "Darwin" ]; then
H
huili 已提交
252
    if [[ "$verMode" != "cluster" ]] && [[ "$cpuType" == "x64" ]]; then
S
slguan 已提交
253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
        echo "====do deb package for the ubuntu system===="
        output_dir="${top_dir}/debs"
        if [ -d ${output_dir} ]; then
            ${csudo} rm -rf ${output_dir}
        fi
        ${csudo} mkdir -p ${output_dir}
        cd ${script_dir}/deb
        ${csudo} ./makedeb.sh ${compile_dir} ${output_dir} ${version} ${cpuType} ${osType} ${verMode} ${verType}

        echo "====do rpm package for the centos system===="
        output_dir="${top_dir}/rpms"
        if [ -d ${output_dir} ]; then
            ${csudo} rm -rf ${output_dir}
        fi
        ${csudo} mkdir -p ${output_dir}
        cd ${script_dir}/rpm
        ${csudo} ./makerpm.sh ${compile_dir} ${output_dir} ${version} ${cpuType} ${osType} ${verMode} ${verType}
    fi
	
    echo "====do tar.gz package for all systems===="
    cd ${script_dir}/tools
    
L
lihui 已提交
275 276
	${csudo} ./makepkg.sh    ${compile_dir} ${version} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode}
	${csudo} ./makeclient.sh ${compile_dir} ${version} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode}
S
slguan 已提交
277 278 279
else
    cd ${script_dir}/tools
    ./makeclient.sh ${compile_dir} ${version} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType}
H
hzcheng 已提交
280 281 282
fi

# 4. Clean up temporary compile directories
P
plum-lihui 已提交
283
#${csudo} rm -rf ${compile_dir}
H
hzcheng 已提交
284