From e9f4c769d8d753c18f79f7d3c9d077683fc57e12 Mon Sep 17 00:00:00 2001 From: xiaolei li <85657333+xleili@users.noreply.github.com> Date: Tue, 25 Apr 2023 19:20:42 +0800 Subject: [PATCH] enhance: packaging keeper in deb rpm main (#21071) * enhance: community package include taoskeeper * enhance: community rpm package add taoskeeper --- packaging/deb/DEBIAN/preinst | 37 ++++++++++++++++++++++++++++++++++ packaging/deb/DEBIAN/prerm | 1 + packaging/deb/makedeb.sh | 26 ++++++++++++++++++++++++ packaging/rpm/makerpm.sh | 24 +++++++++++++++++++++- packaging/rpm/tdengine.spec | 21 +++++++++++++++++-- packaging/tools/post.sh | 39 ++++++++++++++++++++++++++---------- packaging/tools/preun.sh | 17 +++++++++++++++- 7 files changed, 150 insertions(+), 15 deletions(-) diff --git a/packaging/deb/DEBIAN/preinst b/packaging/deb/DEBIAN/preinst index 8a1a7d4d81..904a946e20 100644 --- a/packaging/deb/DEBIAN/preinst +++ b/packaging/deb/DEBIAN/preinst @@ -26,6 +26,38 @@ if pidof taosd &> /dev/null; then sleep 1 fi +# Stop adapter service if running +if pidof taosadapter &> /dev/null; then + if pidof systemd &> /dev/null; then + ${csudo}systemctl stop taosadapter || : + elif $(which service &> /dev/null); then + ${csudo}service taosadapter stop || : + else + pid=$(ps -ef | grep "taosadapter" | grep -v "grep" | awk '{print $2}') + if [ -n "$pid" ]; then + ${csudo}kill -9 $pid || : + fi + fi + echo "Stop taosadapter service success!" + sleep 1 +fi + +# Stop keeper service if running +if pidof taoskeeper &> /dev/null; then + if pidof systemd &> /dev/null; then + ${csudo}systemctl stop taoskeeper || : + elif $(which service &> /dev/null); then + ${csudo}service taoskeeper stop || : + else + pid=$(ps -ef | grep "taoskeeper" | grep -v "grep" | awk '{print $2}') + if [ -n "$pid" ]; then + ${csudo}kill -9 $pid || : + fi + fi + echo "Stop taoskeeper service success!" + sleep 1 +fi + # if taos.cfg already softlink, remove it cfg_install_dir="/etc/taos" install_main_dir="/usr/local/taos" @@ -41,6 +73,11 @@ if [ -f "${install_main_dir}/taosadapter.service" ]; then ${csudo}rm -f ${install_main_dir}/cfg/taosadapter.service || : fi +if [ -f "${install_main_dir}/taoskeeper.toml" ]; then + ${csudo}rm -f ${install_main_dir}/cfg/taoskeeper.toml || : +fi + + # there can not libtaos.so*, otherwise ln -s error ${csudo}rm -f ${install_main_dir}/driver/libtaos.* || : [ -f ${install_main_dir}/driver/libtaosws.so ] && ${csudo}rm -f ${install_main_dir}/driver/libtaosws.so || : diff --git a/packaging/deb/DEBIAN/prerm b/packaging/deb/DEBIAN/prerm index 65f261db2c..0d63115a04 100644 --- a/packaging/deb/DEBIAN/prerm +++ b/packaging/deb/DEBIAN/prerm @@ -32,6 +32,7 @@ else ${csudo}rm -f ${bin_link_dir}/udfd || : ${csudo}rm -f ${bin_link_dir}/taosadapter || : ${csudo}rm -f ${bin_link_dir}/taosdemo || : + ${csudo}rm -f ${bin_link_dir}/taoskeeper || : ${csudo}rm -f ${cfg_link_dir}/* || : ${csudo}rm -f ${inc_link_dir}/taos.h || : ${csudo}rm -f ${inc_link_dir}/taosdef.h || : diff --git a/packaging/deb/makedeb.sh b/packaging/deb/makedeb.sh index 94a24a4148..9f49cf345a 100755 --- a/packaging/deb/makedeb.sh +++ b/packaging/deb/makedeb.sh @@ -44,8 +44,31 @@ mkdir -p ${pkg_dir}${install_home_path}/include #mkdir -p ${pkg_dir}${install_home_path}/init.d mkdir -p ${pkg_dir}${install_home_path}/script +# download taoskeeper and build +if [ "$cpuType" = "x64" ] || [ "$cpuType" = "x86_64" ] || [ "$cpuType" = "amd64" ]; then + arch=amd64 +elif [ "$cpuType" = "x32" ] || [ "$cpuType" = "i386" ] || [ "$cpuType" = "i686" ]; then + arch=386 +elif [ "$cpuType" = "arm" ] || [ "$cpuType" = "aarch32" ]; then + arch=arm +elif [ "$cpuType" = "arm64" ] || [ "$cpuType" = "aarch64" ]; then + arch=arm64 +else + arch=$cpuType +fi + +echo "${top_dir}/../enterprise/packaging/build_taoskeeper.sh -r ${arch} -e taoskeeper" +echo "$top_dir=${top_dir}" +taoskeeper_binary=`${top_dir}/../enterprise/packaging/build_taoskeeper.sh -r $arch -e taoskeeper` +echo "taoskeeper_binary: ${taoskeeper_binary}" + +# copy config files +cp $(dirname ${taoskeeper_binary})/config/taoskeeper.toml ${pkg_dir}${install_home_path}/cfg +cp $(dirname ${taoskeeper_binary})/taoskeeper.service ${pkg_dir}${install_home_path}/cfg + cp ${compile_dir}/../packaging/cfg/taos.cfg ${pkg_dir}${install_home_path}/cfg cp ${compile_dir}/../packaging/cfg/taosd.service ${pkg_dir}${install_home_path}/cfg + if [ -f "${compile_dir}/test/cfg/taosadapter.toml" ]; then cp ${compile_dir}/test/cfg/taosadapter.toml ${pkg_dir}${install_home_path}/cfg || : fi @@ -53,6 +76,7 @@ if [ -f "${compile_dir}/test/cfg/taosadapter.service" ]; then cp ${compile_dir}/test/cfg/taosadapter.service ${pkg_dir}${install_home_path}/cfg || : fi +cp ${taoskeeper_binary} ${pkg_dir}${install_home_path}/bin #cp ${compile_dir}/../packaging/deb/taosd ${pkg_dir}${install_home_path}/init.d cp ${compile_dir}/../packaging/tools/post.sh ${pkg_dir}${install_home_path}/script cp ${compile_dir}/../packaging/tools/preun.sh ${pkg_dir}${install_home_path}/script @@ -143,6 +167,7 @@ else exit 1 fi +rm -rf ${pkg_dir}/build-taoskeeper # make deb package dpkg -b ${pkg_dir} $debname echo "make deb package success!" @@ -150,4 +175,5 @@ echo "make deb package success!" cp ${pkg_dir}/*.deb ${output_dir} # clean temp dir + rm -rf ${pkg_dir} diff --git a/packaging/rpm/makerpm.sh b/packaging/rpm/makerpm.sh index 4ac67ec754..9cf00364aa 100755 --- a/packaging/rpm/makerpm.sh +++ b/packaging/rpm/makerpm.sh @@ -35,14 +35,16 @@ function cp_rpm_package() { local cur_dir cd $1 cur_dir=$(pwd) - + echo "cp_rpm_package cd: ${cur_dir}" for dirlist in "$(ls ${cur_dir})"; do if test -d ${dirlist}; then cd ${dirlist} + echo 'cp_rpm_package ${cur_dir}/${dirlist}' cp_rpm_package ${cur_dir}/${dirlist} cd .. fi if test -e ${dirlist}; then + echo "${cur_dir}/${dirlist} ${output_dir}/TDengine-${tdengine_ver}.rpm" cp ${cur_dir}/${dirlist} ${output_dir}/TDengine-${tdengine_ver}.rpm fi done @@ -54,6 +56,25 @@ fi ${csudo}mkdir -p ${pkg_dir} cd ${pkg_dir} +# download taoskeeper and build +if [ "$cpuType" = "x64" ] || [ "$cpuType" = "x86_64" ] || [ "$cpuType" = "amd64" ]; then + arch=amd64 +elif [ "$cpuType" = "x32" ] || [ "$cpuType" = "i386" ] || [ "$cpuType" = "i686" ]; then + arch=386 +elif [ "$cpuType" = "arm" ] || [ "$cpuType" = "aarch32" ]; then + arch=arm +elif [ "$cpuType" = "arm64" ] || [ "$cpuType" = "aarch64" ]; then + arch=arm64 +else + arch=$cpuType +fi + +cd ${top_dir} +echo "${top_dir}/../enterprise/packaging/build_taoskeeper.sh -r ${arch} -e taoskeeper" +taoskeeper_binary=`${top_dir}/../enterprise/packaging/build_taoskeeper.sh -r $arch -e taoskeeper` +echo "taoskeeper_binary: ${taoskeeper_binary}" +cd ${package_dir} + ${csudo}mkdir -p BUILD BUILDROOT RPMS SOURCES SPECS SRPMS ${csudo}rpmbuild --define="_version ${tdengine_ver}" --define="_topdir ${pkg_dir}" --define="_compiledir ${compile_dir}" -bb ${spec_file} @@ -85,3 +106,4 @@ mv ${output_dir}/TDengine-${tdengine_ver}.rpm ${output_dir}/${rpmname} cd .. ${csudo}rm -rf ${pkg_dir} +rm -rf ${top_dir}/build-taoskeeper \ No newline at end of file diff --git a/packaging/rpm/tdengine.spec b/packaging/rpm/tdengine.spec index c21063e6a4..52d5335003 100644 --- a/packaging/rpm/tdengine.spec +++ b/packaging/rpm/tdengine.spec @@ -3,6 +3,7 @@ %define cfg_install_dir /etc/taos %define __strip /bin/true %global __python /usr/bin/python3 +%global _build_id_links none Name: tdengine Version: %{_version} @@ -62,6 +63,15 @@ fi if [ -f %{_compiledir}/test/cfg/taosadapter.service ]; then cp %{_compiledir}/test/cfg/taosadapter.service %{buildroot}%{homepath}/cfg fi + +if [ -f %{_compiledir}/../build-taoskeeper/config/taoskeeper.toml ]; then + cp %{_compiledir}/../build-taoskeeper/config/taoskeeper.toml %{buildroot}%{homepath}/cfg ||: +fi + +if [ -f %{_compiledir}/../build-taoskeeper/taoskeeper.service ]; then + cp %{_compiledir}/../build-taoskeeper/taoskeeper.service %{buildroot}%{homepath}/cfg ||: +fi + #cp %{_compiledir}/../packaging/rpm/taosd %{buildroot}%{homepath}/init.d cp %{_compiledir}/../packaging/tools/post.sh %{buildroot}%{homepath}/script cp %{_compiledir}/../packaging/tools/preun.sh %{buildroot}%{homepath}/script @@ -73,8 +83,12 @@ cp %{_compiledir}/build/bin/taosd %{buildroot}%{homepath}/bin cp %{_compiledir}/build/bin/udfd %{buildroot}%{homepath}/bin cp %{_compiledir}/build/bin/taosBenchmark %{buildroot}%{homepath}/bin +if [ -f %{_compiledir}/../build-taoskeeper/taoskeeper ]; then + cp %{_compiledir}/../build-taoskeeper/taoskeeper %{buildroot}%{homepath}/bin +fi + if [ -f %{_compiledir}/build/bin/taosadapter ]; then - cp %{_compiledir}/build/bin/taosadapter %{buildroot}%{homepath}/bin ||: + cp %{_compiledir}/build/bin/taosadapter %{buildroot}%{homepath}/bin fi cp %{_compiledir}/build/lib/${libfile} %{buildroot}%{homepath}/driver [ -f %{_compiledir}/build/lib/${wslibfile} ] && cp %{_compiledir}/build/lib/${wslibfile} %{buildroot}%{homepath}/driver ||: @@ -119,7 +133,9 @@ if [ -f %{_compiledir}/build/bin/jemalloc-config ]; then cp %{_compiledir}/build/lib/pkgconfig/jemalloc.pc %{buildroot}%{homepath}/jemalloc/lib/pkgconfig fi fi - +ls -al %{buildroot}%{homepath}/bin +tree -L 5 +echo "==============================copying files done" #Scripts executed before installation %pre if [ -f /var/lib/taos/dnode/dnodeCfg.json ]; then @@ -196,6 +212,7 @@ if [ $1 -eq 0 ];then ${csudo}rm -f ${bin_link_dir}/taosd || : ${csudo}rm -f ${bin_link_dir}/udfd || : ${csudo}rm -f ${bin_link_dir}/taosadapter || : + ${csudo}rm -f ${bin_link_dir}/taoskeeper || : ${csudo}rm -f ${cfg_link_dir}/* || : ${csudo}rm -f ${inc_link_dir}/taos.h || : ${csudo}rm -f ${inc_link_dir}/taosdef.h || : diff --git a/packaging/tools/post.sh b/packaging/tools/post.sh index 3a013ade2c..fc392c9684 100755 --- a/packaging/tools/post.sh +++ b/packaging/tools/post.sh @@ -436,7 +436,7 @@ function local_fqdn_check() { function install_taosadapter_config() { if [ ! -f "${cfg_install_dir}/taosadapter.toml" ]; then - [ ! -d %{cfg_install_dir} ] && + [ ! -d ${cfg_install_dir} ] && ${csudo}${csudo}mkdir -p ${cfg_install_dir} [ -f ${cfg_dir}/taosadapter.toml ] && ${csudo}cp ${cfg_dir}/taosadapter.toml ${cfg_install_dir} [ -f ${cfg_install_dir}/taosadapter.toml ] && @@ -451,19 +451,26 @@ function install_taosadapter_config() { } function install_taoskeeper_config() { - if [ ! -f "${cfg_install_dir}/keeper.toml" ]; then - [ ! -d %{cfg_install_dir} ] && - ${csudo}${csudo}mkdir -p ${cfg_install_dir} - [ -f ${cfg_dir}/keeper.toml ] && ${csudo}cp ${cfg_dir}/keeper.toml ${cfg_install_dir} - [ -f ${cfg_install_dir}/keeper.toml ] && - ${csudo}chmod 644 ${cfg_install_dir}/keeper.toml + # if new environment without taoskeeper + if [[ ! -f "${cfg_install_dir}/keeper.toml" ]] && [[ ! -f "${cfg_install_dir}/taoskeeper.toml" ]]; then + [ ! -d ${cfg_install_dir} ] && ${csudo}${csudo}mkdir -p ${cfg_install_dir} + [ -f ${cfg_dir}/taoskeeper.toml ] && ${csudo}cp ${cfg_dir}/taoskeeper.toml ${cfg_install_dir} + [ -f ${cfg_install_dir}/taoskeeper.toml ] && + ${csudo}chmod 644 ${cfg_install_dir}/taoskeeper.toml + fi + # if old machine with taoskeeper.toml file + if [ -f ${cfg_install_dir}/taoskeeper.toml ]; then + ${csudo}mv ${cfg_dir}/taoskeeper.toml ${cfg_dir}/taoskeeper.toml.new fi - [ -f ${cfg_dir}/keeper.toml ] && - ${csudo}mv ${cfg_dir}/keeper.toml ${cfg_dir}/keeper.toml.new + if [ -f ${cfg_install_dir}/keeper.toml ]; then + echo "The file keeper.toml will be renamed to taoskeeper.toml" + ${csudo}mv ${cfg_install_dir}/keeper.toml ${cfg_install_dir}/taoskeeper.toml + ${csudo}mv ${cfg_dir}/taoskeeper.toml ${cfg_dir}/taoskeeper.toml.new + fi - [ -f ${cfg_install_dir}/keeper.toml ] && - ${csudo}ln -s ${cfg_install_dir}/keeper.toml ${cfg_dir} + [ -f ${cfg_install_dir}/taoskeeper.toml ] && + ${csudo}ln -s ${cfg_install_dir}/taoskeeper.toml ${cfg_dir} } function install_config() { @@ -655,6 +662,15 @@ function install_taosadapter_service() { fi } +function install_taoskeeper_service() { + if ((${service_mod}==0)); then + [ -f ${script_dir}/../cfg/taoskeeper.service ] &&\ + ${csudo}cp ${script_dir}/../cfg/taoskeeper.service \ + ${service_config_dir}/ || : + ${csudo}systemctl daemon-reload + fi +} + function install_service() { log_print "start install service" if [ "$osType" != "Darwin" ]; then @@ -732,6 +748,7 @@ function install_TDengine() { install_taosadapter_config install_taoskeeper_config install_taosadapter_service + install_taoskeeper_service install_service install_app diff --git a/packaging/tools/preun.sh b/packaging/tools/preun.sh index 0e96c71d5d..68f6b53c45 100755 --- a/packaging/tools/preun.sh +++ b/packaging/tools/preun.sh @@ -17,7 +17,7 @@ cfg_link_dir="/usr/local/taos/cfg" service_config_dir="/etc/systemd/system" taos_service_name="taosd" - +taoskeeper_service_name="taoskeeper" csudo="" if command -v sudo > /dev/null; then csudo="sudo " @@ -57,6 +57,13 @@ function kill_taosd() { fi } +function kill_taoskeeper() { + pid=$(ps -ef | grep "taoskeeper" | grep -v "grep" | awk '{print $2}') + if [ -n "$pid" ]; then + ${csudo}kill -9 $pid || : + fi +} + function clean_service_on_systemd() { taosadapter_service_config="${service_config_dir}/taosadapter.service" if systemctl is-active --quiet taosadapter; then @@ -76,6 +83,12 @@ function clean_service_on_systemd() { [ -f ${taosadapter_service_config} ] && ${csudo}rm -f ${taosadapter_service_config} + taoskeeper_service_config="${service_config_dir}/${taoskeeper_service_name}.service" + if systemctl is-active --quiet ${taoskeeper_service_name}; then + echo "TDengine taoskeeper is running, stopping it..." + ${csudo}systemctl stop ${taoskeeper_service_name} &> /dev/null || echo &> /dev/null + fi + [ -f ${taoskeeper_service_config} ] && ${csudo}rm -f ${taoskeeper_service_config} } function clean_service_on_sysvinit() { @@ -111,6 +124,7 @@ function clean_service() { # must manual stop taosd kill_taosadapter kill_taosd + kill_taoskeeper fi } @@ -124,6 +138,7 @@ ${csudo}rm -f ${bin_link_dir}/taosadapter || : ${csudo}rm -f ${bin_link_dir}/taosBenchmark || : ${csudo}rm -f ${bin_link_dir}/taosdemo || : ${csudo}rm -f ${bin_link_dir}/set_core || : +${csudo}rm -f ${bin_link_dir}/taoskeeper || : ${csudo}rm -f ${cfg_link_dir}/*.new || : ${csudo}rm -f ${inc_link_dir}/taos.h || : ${csudo}rm -f ${inc_link_dir}/taosdef.h || : -- GitLab