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

set -e
6 7 8 9 10 11
#set -x
source ./sed_power.sh
source ./sed_tq.sh
source ./sed_pro.sh
source ./sed_kh.sh
source ./sed_jh.sh
L
lihui 已提交
12

13
# release.sh  -v [cluster | edge]
14
#             -c [aarch32 | aarch64 | x64 | x86 | mips64 ...]
H
Hui Li 已提交
15
#             -o [Linux | Kylin | Alpine | Raspberrypi | Darwin | Windows | Ningsi60 | Ningsi80 |...]
L
lihui 已提交
16 17
#             -V [stable | beta]
#             -l [full | lite]
H
Hui Li 已提交
18
#             -s [static | dynamic]
19
#             -d [taos | power | tq | pro | kh | jh]
H
Hui Li 已提交
20
#             -n [2.0.0.3]
H
Hui Li 已提交
21
#             -m [2.0.0.0]
22
#             -H [ false | true]
L
lihui 已提交
23 24

# set parameters by default value
L
lihui 已提交
25
verMode=edge     # [cluster, edge]
L
lihui 已提交
26 27
verType=stable   # [stable, beta]
cpuType=x64      # [aarch32 | aarch64 | x64 | x86 | mips64 ...]
H
Hui Li 已提交
28
osType=Linux     # [Linux | Kylin | Alpine | Raspberrypi | Darwin | Windows | Ningsi60 | Ningsi80 |...]
L
lihui 已提交
29
pagMode=full     # [full | lite]
H
Hui Li 已提交
30
soMode=dynamic   # [static | dynamic]
31
dbName=taos      # [taos | power | tq | pro | kh | jh]
32
allocator=glibc  # [glibc | jemalloc]
H
Hui Li 已提交
33
verNumber=""
34
verNumberComp="1.0.0.0"
35
httpdBuild=false
L
lihui 已提交
36

37
while getopts "hv:V:c:o:l:s:d:a:n:m:H:" arg
L
lihui 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51
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 已提交
52 53 54 55
    l)
      #echo "pagMode=$OPTARG"
      pagMode=$(echo $OPTARG)
      ;;
H
Hui Li 已提交
56 57 58 59
    s)
      #echo "soMode=$OPTARG"
      soMode=$(echo $OPTARG)
      ;;
H
Hui Li 已提交
60 61 62 63
    d)
      #echo "dbName=$OPTARG"
      dbName=$(echo $OPTARG)
      ;;
64 65 66 67
    a)
      #echo "allocator=$OPTARG"
      allocator=$(echo $OPTARG)
      ;;
H
Hui Li 已提交
68 69 70 71
    n)
      #echo "verNumber=$OPTARG"
      verNumber=$(echo $OPTARG)
      ;;
H
Hui Li 已提交
72 73 74 75
    m)
      #echo "verNumberComp=$OPTARG"
      verNumberComp=$(echo $OPTARG)
      ;;
L
lihui 已提交
76 77 78 79
    o)
      #echo "osType=$OPTARG"
      osType=$(echo $OPTARG)
      ;;
80 81 82 83
    H)
      #echo "httpdBuild=$OPTARG"
      httpdBuild=$(echo $OPTARG)
      ;;
L
lihui 已提交
84
    h)
H
Hui Li 已提交
85 86
      echo "Usage: `basename $0` -v [cluster | edge] "
      echo "                  -c [aarch32 | aarch64 | x64 | x86 | mips64 ...] "
H
Hui Li 已提交
87
      echo "                  -o [Linux | Kylin | Alpine | Raspberrypi | Darwin | Windows | Ningsi60 | Ningsi80 |...] "
H
Hui Li 已提交
88 89
      echo "                  -V [stable | beta] "
      echo "                  -l [full | lite] "
90
      echo "                  -a [glibc | jemalloc] "
H
Hui Li 已提交
91
      echo "                  -s [static | dynamic] "
92
      echo "                  -d [taos | power | tq | pro | kh | jh] "
H
Hui Li 已提交
93
      echo "                  -n [version number] "
H
Hui Li 已提交
94
      echo "                  -m [compatible version number] "
95
      echo "                  -H [false | true] "
L
lihui 已提交
96 97
      exit 0
      ;;
98
    ?) #unknow option
L
lihui 已提交
99 100 101 102 103 104
      echo "unkonw argument"
      exit 1
      ;;
  esac
done

105
echo "verMode=${verMode} verType=${verType} cpuType=${cpuType} osType=${osType} pagMode=${pagMode} soMode=${soMode} dbName=${dbName} allocator=${allocator} verNumber=${verNumber} verNumberComp=${verNumberComp} httpdBuild=${httpdBuild}"
H
hzcheng 已提交
106 107

curr_dir=$(pwd)
S
slguan 已提交
108 109

if [ "$osType" != "Darwin" ]; then
H
Hui Li 已提交
110 111
  script_dir="$(dirname $(readlink -f $0))"
  top_dir="$(readlink -f ${script_dir}/..)"
S
slguan 已提交
112
else
H
Hui Li 已提交
113 114 115 116
  script_dir=`dirname $0`
  cd ${script_dir}
  script_dir="$(pwd)"
  top_dir=${script_dir}/..
S
slguan 已提交
117 118
fi

P
plum-lihui 已提交
119
csudo=""
H
Hui Li 已提交
120
#if command -v sudo > /dev/null; then
121
#  csudo="sudo "
H
Hui Li 已提交
122
#fi
P
plum-lihui 已提交
123

H
hzcheng 已提交
124
function is_valid_version() {
H
Hui Li 已提交
125
  [ -z $1 ] && return 1 || :
H
hzcheng 已提交
126

H
Hui Li 已提交
127 128 129 130 131
  rx='^([0-9]+\.){3}(\*|[0-9]+)$'
  if [[ $1 =~ $rx ]]; then
    return 0
  fi
  return 1
H
hzcheng 已提交
132 133 134
}

function vercomp () {
H
Hui Li 已提交
135
  if [[ $1 == $2 ]]; then
H
hzcheng 已提交
136
    echo 0
H
Hui Li 已提交
137 138
    exit 0
  fi
139

H
Hui Li 已提交
140 141 142 143 144 145 146
  local IFS=.
  local i ver1=($1) ver2=($2)

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

H
Hui Li 已提交
148 149 150 151 152 153 154 155 156 157 158 159
  for ((i=0; i<${#ver1[@]}; i++)); do
    if [[ -z ${ver2[i]} ]]; then
      # fill empty fields in ver2 with zeros
      ver2[i]=0
    fi
    if ((10#${ver1[i]} > 10#${ver2[i]})); then
      echo 1
      exit 0
    fi
    if ((10#${ver1[i]} < 10#${ver2[i]})); then
      echo 2
      exit 0
H
Hui Li 已提交
160 161
    fi
  done
H
Hui Li 已提交
162 163 164 165
  echo 0
}

# 1. check version information
166
if ( ( ! is_valid_version $verNumber ) || ( ! is_valid_version $verNumberComp ) || [[ "$(vercomp $verNumber $verNumberComp)" == '2' ]] ); then
H
Hui Li 已提交
167 168 169
  echo "please enter correct version"
  exit 0
fi
H
Hui Li 已提交
170

H
Hui Li 已提交
171
echo "=======================new version number: ${verNumber}, compatible version: ${verNumberComp}======================================"
H
hzcheng 已提交
172 173

build_time=$(date +"%F %R")
H
Hui Li 已提交
174 175 176

# get commint id from git
gitinfo=$(git rev-parse --verify HEAD)
P
plum-lihui 已提交
177 178 179 180 181 182 183 184

if [[ "$verMode" == "cluster" ]]; then
  enterprise_dir="${top_dir}/../enterprise"
  cd ${enterprise_dir}
  gitinfoOfInternal=$(git rev-parse --verify HEAD)
else
  gitinfoOfInternal=NULL
fi
185

H
Hui Li 已提交
186
cd ${curr_dir}
L
lihui 已提交
187

H
hzcheng 已提交
188
# 2. cmake executable file
L
lihui 已提交
189
compile_dir="${top_dir}/debug"
H
hzcheng 已提交
190
if [ -d ${compile_dir} ]; then
191
  ${csudo}rm -rf ${compile_dir}
H
hzcheng 已提交
192 193
fi

S
slguan 已提交
194
if [ "$osType" != "Darwin" ]; then
195
  ${csudo}mkdir -p ${compile_dir}
S
slguan 已提交
196
else
H
Hui Li 已提交
197
  mkdir -p ${compile_dir}
S
slguan 已提交
198
fi
H
hzcheng 已提交
199
cd ${compile_dir}
L
lihui 已提交
200

201 202 203 204 205 206
if [[ "$allocator" == "jemalloc" ]]; then
    allocator_macro="-DJEMALLOC_ENABLED=true"
else
    allocator_macro=""
fi

207 208
if [[ "$dbName" != "taos" ]]; then
  replace_community_$dbName
209 210
fi

211
if [[ "$httpdBuild" == "true" ]]; then
212
    BUILD_HTTP=true
213 214
else
    BUILD_HTTP=false
215 216
fi

217 218 219 220
if [[ "$verMode" == "cluster" ]]; then
    BUILD_HTTP=internal
fi

221
if [[ "$pagMode" == "full" ]]; then
222
    BUILD_TOOLS=true
223 224
else
    BUILD_TOOLS=false
225
fi
226

L
lihui 已提交
227 228
# check support cpu type
if [[ "$cpuType" == "x64" ]] || [[ "$cpuType" == "aarch64" ]] || [[ "$cpuType" == "aarch32" ]] || [[ "$cpuType" == "mips64" ]] ; then
H
Hui Li 已提交
229
  if [ "$verMode" != "cluster" ]; then
230
    # community-version compile
231
    cmake ../    -DCPUTYPE=${cpuType} -DOSTYPE=${osType} -DSOMODE=${soMode} -DDBNAME=${dbName} -DVERTYPE=${verType} -DVERDATE="${build_time}" -DGITINFO=${gitinfo} -DGITINFOI=${gitinfoOfInternal} -DVERNUMBER=${verNumber} -DVERCOMPATIBLE=${verNumberComp} -DPAGMODE=${pagMode} -DBUILD_HTTP=${BUILD_HTTP} -DBUILD_TOOLS=${BUILD_TOOLS} ${allocator_macro}
H
Hui Li 已提交
232
  else
233 234
    if [[ "$dbName" != "taos" ]]; then
      replace_enterprise_$dbName
235
    fi
236
    cmake ../../ -DCPUTYPE=${cpuType} -DOSTYPE=${osType} -DSOMODE=${soMode} -DDBNAME=${dbName} -DVERTYPE=${verType} -DVERDATE="${build_time}" -DGITINFO=${gitinfo} -DGITINFOI=${gitinfoOfInternal} -DVERNUMBER=${verNumber} -DVERCOMPATIBLE=${verNumberComp} -DBUILD_HTTP=${BUILD_HTTP} -DBUILD_TOOLS=${BUILD_TOOLS} ${allocator_macro}
H
Hui Li 已提交
237
  fi
L
lihui 已提交
238
else
H
Hui Li 已提交
239 240
  echo "input cpuType=${cpuType} error!!!"
  exit 1
L
lihui 已提交
241 242
fi

243 244
CORES=`grep -c ^processor /proc/cpuinfo`

245 246
if [[ "$allocator" == "jemalloc" ]]; then
    # jemalloc need compile first, so disable parallel build
247
    make -j ${CORES} && ${csudo}make install
248
else
249
    make -j ${CORES} && ${csudo}make install
250
fi
H
hzcheng 已提交
251 252 253

cd ${curr_dir}

H
Hui Li 已提交
254
# 3. Call the corresponding script for packaging
S
slguan 已提交
255
if [ "$osType" != "Darwin" ]; then
H
Hui Li 已提交
256
  if [[ "$verMode" != "cluster" ]] && [[ "$cpuType" == "x64" ]] && [[ "$dbName" == "taos" ]]; then
257
    ret='0'
P
plum-lihui 已提交
258
    command -v dpkg >/dev/null 2>&1 || { ret='1'; }
259
    if [ "$ret" -eq 0 ]; then
P
plum-lihui 已提交
260 261 262
      echo "====do deb package for the ubuntu system===="
      output_dir="${top_dir}/debs"
      if [ -d ${output_dir} ]; then
263
        ${csudo}rm -rf ${output_dir}
P
plum-lihui 已提交
264
      fi
265
      ${csudo}mkdir -p ${output_dir}
P
plum-lihui 已提交
266
      cd ${script_dir}/deb
267
      ${csudo}./makedeb.sh ${compile_dir} ${output_dir} ${verNumber} ${cpuType} ${osType} ${verMode} ${verType}
268

269 270 271 272
      if [[ "$pagMode" == "full" ]]; then
          if [ -d ${top_dir}/src/kit/taos-tools/packaging/deb ]; then
              cd ${top_dir}/src/kit/taos-tools/packaging/deb
              [ -z "$taos_tools_ver" ] && taos_tools_ver="0.1.0"
273

274
              taos_tools_ver=$(git describe --tags|sed -e 's/ver-//g'|awk -F '-' '{print $1}')
275
              ${csudo}./make-taos-tools-deb.sh ${top_dir} \
276 277
                  ${compile_dir} ${output_dir} ${taos_tools_ver} ${cpuType} ${osType} ${verMode} ${verType}
          fi
278
      fi
279
  else
P
plum-lihui 已提交
280
      echo "==========dpkg command not exist, so not release deb package!!!"
H
Hui Li 已提交
281
    fi
282
    ret='0'
P
plum-lihui 已提交
283
    command -v rpmbuild >/dev/null 2>&1 || { ret='1'; }
284
    if [ "$ret" -eq 0 ]; then
P
plum-lihui 已提交
285 286 287
      echo "====do rpm package for the centos system===="
      output_dir="${top_dir}/rpms"
      if [ -d ${output_dir} ]; then
288
        ${csudo}rm -rf ${output_dir}
P
plum-lihui 已提交
289
      fi
290
      ${csudo}mkdir -p ${output_dir}
P
plum-lihui 已提交
291
      cd ${script_dir}/rpm
292
      ${csudo}./makerpm.sh ${compile_dir} ${output_dir} ${verNumber} ${cpuType} ${osType} ${verMode} ${verType}
293

294 295 296 297
      if [[ "$pagMode" == "full" ]]; then
          if [ -d ${top_dir}/src/kit/taos-tools/packaging/rpm ]; then
              cd ${top_dir}/src/kit/taos-tools/packaging/rpm
              [ -z "$taos_tools_ver" ] && taos_tools_ver="0.1.0"
298

299
              taos_tools_ver=$(git describe --tags|sed -e 's/ver-//g'|awk -F '-' '{print $1}'|sed -e 's/-/_/g')
300
              ${csudo}./make-taos-tools-rpm.sh ${top_dir} \
301 302
                  ${compile_dir} ${output_dir} ${taos_tools_ver} ${cpuType} ${osType} ${verMode} ${verType}
          fi
303
      fi
304
  else
P
plum-lihui 已提交
305
      echo "==========rpmbuild command not exist, so not release rpm package!!!"
S
slguan 已提交
306
    fi
H
Hui Li 已提交
307
  fi
308

H
Hui Li 已提交
309 310
  echo "====do tar.gz package for all systems===="
  cd ${script_dir}/tools
311
  
312
  if [[ "$dbName" == "taos" ]]; then
313 314 315
    ${csudo} ./makepkg.sh    ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${verNumberComp}
    ${csudo} ./makeclient.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode}
    ${csudo} ./makearbi.sh   ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode}
H
Hui Li 已提交
316
  else
317 318 319
    ${csudo} ./makepkg_$dbName.sh    ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName} ${verNumberComp}
    ${csudo} ./makeclient_$dbName.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName}
    ${csudo} ./makearbi_$dbName.sh   ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode}
H
Hui Li 已提交
320
  fi
321

S
slguan 已提交
322
else
323
  # only make client for Darwin
H
Hui Li 已提交
324
  cd ${script_dir}/tools
H
Hui Li 已提交
325
  ./makeclient.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${dbName}
H
hzcheng 已提交
326
fi