makepkg.sh 14.3 KB
Newer Older
H
hzcheng 已提交
1 2
#!/bin/bash
#
L
lihui 已提交
3 4 5
# Generate tar.gz package for all os system

set -e
6
#set -x
H
hzcheng 已提交
7 8 9 10 11

curr_dir=$(pwd)
compile_dir=$1
version=$2
build_time=$3
L
lihui 已提交
12 13 14 15
cpuType=$4
osType=$5
verMode=$6
verType=$7
L
lihui 已提交
16
pagMode=$8
17
versionComp=$9
18
dbName=${10}
H
hzcheng 已提交
19 20

script_dir="$(dirname $(readlink -f $0))"
F
Frozen 已提交
21
top_dir="$(readlink -f ${script_dir}/../..)"
H
hzcheng 已提交
22

23 24 25 26 27
productName="TDengine"
serverName="taosd"
clientName="taos"
configFile="taos.cfg"
tarName="taos.tar.gz"
28 29 30 31 32
dumpName="taosdump"
benchmarkName="taosBenchmark"
toolsName="taostools"
adapterName="taosadapter"
defaultPasswd="taosdata"
33

H
hzcheng 已提交
34 35 36 37 38
# create compressed install file.
build_dir="${compile_dir}/build"
code_dir="${top_dir}/src"
release_dir="${top_dir}/release"

L
lihui 已提交
39
#package_name='linux'
S
slguan 已提交
40
if [ "$verMode" == "cluster" ]; then
41
  install_dir="${release_dir}/${productName}-enterprise-server-${version}"
S
slguan 已提交
42
else
43
  install_dir="${release_dir}/${productName}-server-${version}"
S
slguan 已提交
44
fi
H
hzcheng 已提交
45

46
if [ -d ${top_dir}/src/kit/taos-tools/packaging/deb ]; then
47 48
  cd ${top_dir}/src/kit/taos-tools/packaging/deb
  [ -z "$taos_tools_ver" ] && taos_tools_ver="0.1.0"
49

50 51
  taostools_ver=$(git describe --tags | sed -e 's/ver-//g' | awk -F '-' '{print $1}')
  taostools_install_dir="${release_dir}/${clientName}Tools-${taostools_ver}"
52

53
  cd ${curr_dir}
54
else
55
  taostools_install_dir="${release_dir}/${clientName}Tools-${version}"
56 57
fi

58
# Directories and files
L
lihui 已提交
59
if [ "$pagMode" == "lite" ]; then
60 61
  strip ${build_dir}/bin/${serverName}
  strip ${build_dir}/bin/${clientName}
62
  # lite version doesn't include taosadapter,  which will lead to no restful interface
63
  bin_files="${build_dir}/bin/${serverName} ${build_dir}/bin/${clientName} ${script_dir}/remove.sh ${script_dir}/startPre.sh ${build_dir}/bin/taosBenchmark"
64
  taostools_bin_files=""
65
else
66 67 68 69

  wget https://github.com/taosdata/grafanaplugin/releases/latest/download/TDinsight.sh -O ${build_dir}/bin/TDinsight.sh \
      && echo "TDinsight.sh downloaded!" \
      || echo "failed to download TDinsight.sh"
70 71 72 73 74 75 76 77
  # download TDinsight caches
  orig_pwd=$(pwd)
  tdinsight_caches=""
  cd ${build_dir}/bin/ && \
    chmod +x TDinsight.sh
  tdinsight_caches=$(./TDinsight.sh --download-only | xargs -i printf "${build_dir}/bin/{} ")
  cd $orig_pwd
  echo "TDinsight caches: $tdinsight_caches"
78 79

  taostools_bin_files=" ${build_dir}/bin/taosdump \
80
      ${build_dir}/bin/taosBenchmark \
81 82
      ${build_dir}/bin/TDinsight.sh \
      $tdinsight_caches"
83

84 85
  bin_files="${build_dir}/bin/${serverName} \
      ${build_dir}/bin/${clientName} \
86
      ${taostools_bin_files} \
87
      ${build_dir}/bin/taosadapter \
88 89 90
      ${build_dir}/bin/tarbitrator\
      ${script_dir}/remove.sh \
      ${script_dir}/set_core.sh \
91
      ${script_dir}/run_taosd_and_taosadapter.sh \
92 93
      ${script_dir}/startPre.sh \
      ${script_dir}/taosd-dump-cfg.gdb"
L
lihui 已提交
94 95
fi

L
lihui 已提交
96
lib_files="${build_dir}/lib/libtaos.so.${version}"
97
header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taosdef.h ${code_dir}/inc/taoserror.h"
98 99

if [ "$dbName" != "taos" ]; then
100 101 102 103 104
  cfg_dir="${top_dir}/../enterprise/packaging/cfg"
else
  cfg_dir="${top_dir}/packaging/cfg"
fi

L
lihui 已提交
105
install_files="${script_dir}/install.sh"
L
lihui 已提交
106
nginx_dir="${code_dir}/../../enterprise/src/plugins/web"
H
hzcheng 已提交
107

L
lihui 已提交
108 109
init_file_deb=${script_dir}/../deb/taosd
init_file_rpm=${script_dir}/../rpm/taosd
H
Hui Li 已提交
110 111
init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
H
hzcheng 已提交
112 113 114 115

# make directories.
mkdir -p ${install_dir}
mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
116
mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/${configFile} ${install_dir}/cfg/${configFile}
117

118
if [ -f "${compile_dir}/test/cfg/taosadapter.toml" ]; then
119
  cp ${compile_dir}/test/cfg/taosadapter.toml ${install_dir}/cfg || :
120 121 122
fi

if [ -f "${compile_dir}/test/cfg/taosadapter.service" ]; then
123
  cp ${compile_dir}/test/cfg/taosadapter.service ${install_dir}/cfg || :
124
fi
125

126
if [ -f "${cfg_dir}/${serverName}.service" ]; then
127
  cp ${cfg_dir}/${serverName}.service ${install_dir}/cfg || :
128
fi
129

130 131
if [ -f "${top_dir}/packaging/cfg/tarbitratord.service" ]; then
  cp ${top_dir}/packaging/cfg/tarbitratord.service ${install_dir}/cfg || :
132
fi
133

134 135
if [ -f "${top_dir}/packaging/cfg/nginxd.service" ]; then
  cp ${top_dir}/packaging/cfg/nginxd.service ${install_dir}/cfg || :
136 137
fi

H
Hui Li 已提交
138
mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* || :
139 140
mkdir -p ${install_dir}/init.d && cp ${init_file_deb} ${install_dir}/init.d/${serverName}.deb
mkdir -p ${install_dir}/init.d && cp ${init_file_rpm} ${install_dir}/init.d/${serverName}.rpm
H
Hui Li 已提交
141 142
mkdir -p ${install_dir}/init.d && cp ${init_file_tarbitrator_deb} ${install_dir}/init.d/tarbitratord.deb || :
mkdir -p ${install_dir}/init.d && cp ${init_file_tarbitrator_rpm} ${install_dir}/init.d/tarbitratord.rpm || :
H
hzcheng 已提交
143

144 145 146 147
if [ $adapterName != "taosadapter" ]; then
  mv ${install_dir}/cfg/taosadapter.toml ${install_dir}/cfg/$adapterName.toml
  sed -i "s/path = \"\/var\/log\/taos\"/path = \"\/var\/log\/${productName}\"/g" ${install_dir}/cfg/$adapterName.toml
  sed -i "s/password = \"taosdata\"/password = \"${defaultPasswd}\"/g" ${install_dir}/cfg/$adapterName.toml
148

149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
  mv ${install_dir}/cfg/taosadapter.service ${install_dir}/cfg/$adapterName.service
  sed -i "s/TDengine/${productName}/g" ${install_dir}/cfg/$adapterName.service
  sed -i "s/taosAdapter/${adapterName}/g" ${install_dir}/cfg/$adapterName.service
  sed -i "s/taosadapter/${adapterName}/g" ${install_dir}/cfg/$adapterName.service

  mv ${install_dir}/bin/taosadapter ${install_dir}/bin/${adapterName}
  mv ${install_dir}/bin/run_taosd_and_taosadapter.sh ${install_dir}/bin/run_${serverName}_and_${adapterName}.sh
  mv ${install_dir}/bin/taosd-dump-cfg.gdb ${install_dir}/bin/${serverName}-dump-cfg.gdb
fi

if [ -n "${taostools_bin_files}" ]; then
    mkdir -p ${taostools_install_dir} || echo -e "failed to create ${taostools_install_dir}"
    mkdir -p ${taostools_install_dir}/bin \
        && cp ${taostools_bin_files} ${taostools_install_dir}/bin \
        && chmod a+x ${taostools_install_dir}/bin/* || :

    if [ -f ${top_dir}/src/kit/taos-tools/packaging/tools/install-taostools.sh ]; then
        cp ${top_dir}/src/kit/taos-tools/packaging/tools/install-taostools.sh \
            ${taostools_install_dir}/ > /dev/null \
            && chmod a+x ${taostools_install_dir}/install-taostools.sh \
            || echo -e "failed to copy install-taostools.sh"
    else
        echo -e "install-taostools.sh not found"
172
    fi
173 174 175 176 177 178 179 180

    if [ -f ${top_dir}/src/kit/taos-tools/packaging/tools/uninstall-taostools.sh ]; then
        cp ${top_dir}/src/kit/taos-tools/packaging/tools/uninstall-taostools.sh \
            ${taostools_install_dir}/ > /dev/null \
            && chmod a+x ${taostools_install_dir}/uninstall-taostools.sh \
            || echo -e "failed to copy uninstall-taostools.sh"
    else
        echo -e "uninstall-taostools.sh not found"
181
    fi
182 183 184 185 186

    if [ -f ${build_dir}/lib/libavro.so.23.0.0 ]; then
        mkdir -p ${taostools_install_dir}/avro/{lib,lib/pkgconfig} || echo -e "failed to create ${taostools_install_dir}/avro"
        cp ${build_dir}/lib/libavro.* ${taostools_install_dir}/avro/lib
        cp ${build_dir}/lib/pkgconfig/avro-c.pc ${taostools_install_dir}/avro/lib/pkgconfig
187 188 189
    fi
fi

190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
if [ -f ${build_dir}/bin/jemalloc-config ]; then
  mkdir -p ${install_dir}/jemalloc/{bin,lib,lib/pkgconfig,include/jemalloc,share/doc/jemalloc,share/man/man3}
  cp ${build_dir}/bin/jemalloc-config ${install_dir}/jemalloc/bin
  if [ -f ${build_dir}/bin/jemalloc.sh ]; then
    cp ${build_dir}/bin/jemalloc.sh ${install_dir}/jemalloc/bin
  fi
  if [ -f ${build_dir}/bin/jeprof ]; then
    cp ${build_dir}/bin/jeprof ${install_dir}/jemalloc/bin
  fi
  if [ -f ${build_dir}/include/jemalloc/jemalloc.h ]; then
    cp ${build_dir}/include/jemalloc/jemalloc.h ${install_dir}/jemalloc/include/jemalloc
  fi
  if [ -f ${build_dir}/lib/libjemalloc.so.2 ]; then
    cp ${build_dir}/lib/libjemalloc.so.2 ${install_dir}/jemalloc/lib
    ln -sf libjemalloc.so.2 ${install_dir}/jemalloc/lib/libjemalloc.so
  fi
  if [ -f ${build_dir}/lib/libjemalloc.a ]; then
    cp ${build_dir}/lib/libjemalloc.a ${install_dir}/jemalloc/lib
  fi
  if [ -f ${build_dir}/lib/libjemalloc_pic.a ]; then
    cp ${build_dir}/lib/libjemalloc_pic.a ${install_dir}/jemalloc/lib
  fi
  if [ -f ${build_dir}/lib/pkgconfig/jemalloc.pc ]; then
    cp ${build_dir}/lib/pkgconfig/jemalloc.pc ${install_dir}/jemalloc/lib/pkgconfig
  fi
  if [ -f ${build_dir}/share/doc/jemalloc/jemalloc.html ]; then
    cp ${build_dir}/share/doc/jemalloc/jemalloc.html ${install_dir}/jemalloc/share/doc/jemalloc
  fi
  if [ -f ${build_dir}/share/man/man3/jemalloc.3 ]; then
    cp ${build_dir}/share/man/man3/jemalloc.3 ${install_dir}/jemalloc/share/man/man3
  fi
fi

S
slguan 已提交
223
if [ "$verMode" == "cluster" ]; then
224 225
  sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/bin/remove.sh >>remove_temp.sh
  mv remove_temp.sh ${install_dir}/bin/remove.sh
226

227 228 229
  mkdir -p ${install_dir}/nginxd && cp -r ${nginx_dir}/* ${install_dir}/nginxd
  cp ${nginx_dir}/png/taos.png ${install_dir}/nginxd/admin/images/taos.png
  rm -rf ${install_dir}/nginxd/png
S
slguan 已提交
230

231 232 233 234 235 236
  if [ "$cpuType" == "aarch64" ]; then
    cp -f ${install_dir}/nginxd/sbin/arm/64bit/nginx ${install_dir}/nginxd/sbin/
  elif [ "$cpuType" == "aarch32" ]; then
    cp -f ${install_dir}/nginxd/sbin/arm/32bit/nginx ${install_dir}/nginxd/sbin/
  fi
  rm -rf ${install_dir}/nginxd/sbin/arm
S
slguan 已提交
237 238
fi

H
hzcheng 已提交
239
cd ${install_dir}
240
tar -zcv -f ${tarName} * --remove-files || :
L
lihui 已提交
241 242
exitcode=$?
if [ "$exitcode" != "0" ]; then
243 244
  echo "tar ${tarName} error !!!"
  exit $exitcode
L
lihui 已提交
245
fi
H
hzcheng 已提交
246 247

cd ${curr_dir}
S
slguan 已提交
248 249
cp ${install_files} ${install_dir}
if [ "$verMode" == "cluster" ]; then
250 251
  sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/install.sh >>install_temp.sh
  mv install_temp.sh ${install_dir}/install.sh
L
lihui 已提交
252 253
fi
if [ "$pagMode" == "lite" ]; then
254 255
  sed 's/pagMode=full/pagMode=lite/g' ${install_dir}/install.sh >>install_temp.sh
  mv install_temp.sh ${install_dir}/install.sh
S
slguan 已提交
256 257
fi
chmod a+x ${install_dir}/install.sh
H
hzcheng 已提交
258

259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
if [[ $dbName == "taos" ]]; then
  # Copy example code
  mkdir -p ${install_dir}/examples
  examples_dir="${top_dir}/examples"
  cp -r ${examples_dir}/c ${install_dir}/examples
  if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
    if [ -d ${examples_dir}/JDBC/connectionPools/target ]; then
      rm -rf ${examples_dir}/JDBC/connectionPools/target
    fi
    if [ -d ${examples_dir}/JDBC/JDBCDemo/target ]; then
      rm -rf ${examples_dir}/JDBC/JDBCDemo/target
    fi
    if [ -d ${examples_dir}/JDBC/mybatisplus-demo/target ]; then
      rm -rf ${examples_dir}/JDBC/mybatisplus-demo/target
    fi
    if [ -d ${examples_dir}/JDBC/springbootdemo/target ]; then
      rm -rf ${examples_dir}/JDBC/springbootdemo/target
    fi
    if [ -d ${examples_dir}/JDBC/SpringJdbcTemplate/target ]; then
      rm -rf ${examples_dir}/JDBC/SpringJdbcTemplate/target
    fi
    if [ -d ${examples_dir}/JDBC/taosdemo/target ]; then
      rm -rf ${examples_dir}/JDBC/taosdemo/target
    fi
283

284 285 286 287 288 289 290
    cp -r ${examples_dir}/JDBC ${install_dir}/examples
    cp -r ${examples_dir}/matlab ${install_dir}/examples
    cp -r ${examples_dir}/python ${install_dir}/examples
    cp -r ${examples_dir}/R ${install_dir}/examples
    cp -r ${examples_dir}/go ${install_dir}/examples
    cp -r ${examples_dir}/nodejs ${install_dir}/examples
    cp -r ${examples_dir}/C# ${install_dir}/examples
291
    mkdir -p ${install_dir}/examples/taosbenchmark-json && cp ${examples_dir}/../src/kit/taos-tools/example/* ${install_dir}/examples/taosbenchmark-json
292
  fi
L
lihui 已提交
293
fi
294

H
hzcheng 已提交
295
# Copy driver
296
mkdir -p ${install_dir}/driver && cp ${lib_files} ${install_dir}/driver && echo "${versionComp}" >${install_dir}/driver/vercomp.txt
H
hzcheng 已提交
297 298

# Copy connector
299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324
if [ "$verMode" == "cluster" ]; then
    connector_dir="${code_dir}/connector"
    mkdir -p ${install_dir}/connector
    if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
        cp ${build_dir}/lib/*.jar ${install_dir}/connector || :
        if find ${connector_dir}/go -mindepth 1 -maxdepth 1 | read; then
            cp -r ${connector_dir}/go ${install_dir}/connector
        else
            echo "WARNING: go connector not found, please check if want to use it!"
        fi
        git clone --depth 1 https://github.com/taosdata/taos-connector-python ${install_dir}/connector/python
        rm -rf ${install_dir}/connector/python/.git ||:

        git clone --depth 1 https://github.com/taosdata/taos-connector-node ${install_dir}/connector/nodejs
        rm -rf ${install_dir}/connector/nodejs/.git ||:

        git clone --depth 1 https://github.com/taosdata/taos-connector-dotnet ${install_dir}/connector/dotnet
        rm -rf ${install_dir}/connector/dotnet/.git ||:

        git clone --depth 1 https://github.com/taosdata/libtaos-rs ${install_dir}/connector/rust
        rm -rf ${install_dir}/connector/rust/.git ||:
        # cp -r ${connector_dir}/python ${install_dir}/connector
        # cp -r ${connector_dir}/nodejs ${install_dir}/connector
    fi
fi

H
hzcheng 已提交
325
# Copy release note
326
cp ${script_dir}/release_note ${install_dir}
H
hzcheng 已提交
327 328 329

# exit 1

330
cd ${release_dir}
L
lihui 已提交
331

332 333 334
#  install_dir has been distinguishes  cluster from  edege, so comments this code
pkg_name=${install_dir}-${osType}-${cpuType}

335 336
taostools_pkg_name=${taostools_install_dir}-${osType}-${cpuType}

337 338 339 340 341 342 343 344
# if [ "$verMode" == "cluster" ]; then
#   pkg_name=${install_dir}-${osType}-${cpuType}
# elif [ "$verMode" == "edge" ]; then
#   pkg_name=${install_dir}-${osType}-${cpuType}
# else
#   echo "unknow verMode, nor cluster or edge"
#   exit 1
# fi
L
lihui 已提交
345

haoranc's avatar
haoranc 已提交
346
if [[ "$verType" == "beta" ]] || [[ "$verType" == "preRelease" ]]; then
347
  pkg_name=${install_dir}-${verType}-${osType}-${cpuType}
348
  taostools_pkg_name=${taostools_install_dir}-${verType}-${osType}-${cpuType}
349 350
elif [ "$verType" == "stable" ]; then
  pkg_name=${pkg_name}
351
  taostools_pkg_name=${taostools_pkg_name}
L
lihui 已提交
352 353 354 355 356
else
  echo "unknow verType, nor stabel or beta"
  exit 1
fi

357 358 359 360
if [ "$pagMode" == "lite" ]; then
  pkg_name=${pkg_name}-Lite
fi

361
tar -zcv -f "$(basename ${pkg_name}).tar.gz" "$(basename ${install_dir})" --remove-files || :
L
lihui 已提交
362 363
exitcode=$?
if [ "$exitcode" != "0" ]; then
364 365
  echo "tar ${pkg_name}.tar.gz error !!!"
  exit $exitcode
L
lihui 已提交
366
fi
L
lihui 已提交
367

368 369 370 371 372 373 374 375 376
if [ -n "${taostools_bin_files}" ]; then
    wget https://github.com/taosdata/grafanaplugin/releases/latest/download/TDinsight.sh -O ${taostools_install_dir}/bin/TDinsight.sh && echo "TDinsight.sh downloaded!"|| echo "failed to download TDinsight.sh"
    tar -zcv -f "$(basename ${taostools_pkg_name}).tar.gz" "$(basename ${taostools_install_dir})" --remove-files || :
    exitcode=$?
    if [ "$exitcode" != "0" ]; then
        echo "tar ${taostools_pkg_name}.tar.gz error !!!"
        exit $exitcode
    fi
fi
377

L
lihui 已提交
378
cd ${curr_dir}