compile-and-run-windows.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #!/bin/bash
  2. RUN_AS_SERVICE=0
  3. # On MSYS2, install these dependencies to build netdata:
  4. install_dependencies() {
  5. pacman -S \
  6. git cmake ninja clang base-devel msys2-devel \
  7. libyaml-devel libzstd-devel libutil-linux libutil-linux-devel \
  8. mingw-w64-x86_64-toolchain mingw-w64-ucrt-x86_64-toolchain \
  9. mingw64/mingw-w64-x86_64-mold ucrt64/mingw-w64-ucrt-x86_64-mold \
  10. msys/gdb ucrt64/mingw-w64-ucrt-x86_64-gdb mingw64/mingw-w64-x86_64-gdb \
  11. msys/zlib-devel mingw64/mingw-w64-x86_64-zlib ucrt64/mingw-w64-ucrt-x86_64-zlib \
  12. msys/libuv-devel ucrt64/mingw-w64-ucrt-x86_64-libuv mingw64/mingw-w64-x86_64-libuv \
  13. liblz4-devel mingw64/mingw-w64-x86_64-lz4 ucrt64/mingw-w64-ucrt-x86_64-lz4 \
  14. openssl-devel mingw64/mingw-w64-x86_64-openssl ucrt64/mingw-w64-ucrt-x86_64-openssl \
  15. protobuf-devel mingw64/mingw-w64-x86_64-protobuf ucrt64/mingw-w64-ucrt-x86_64-protobuf \
  16. msys/pcre2-devel mingw64/mingw-w64-x86_64-pcre2 ucrt64/mingw-w64-ucrt-x86_64-pcre2 \
  17. msys/brotli-devel mingw64/mingw-w64-x86_64-brotli ucrt64/mingw-w64-ucrt-x86_64-brotli \
  18. msys/ccache ucrt64/mingw-w64-ucrt-x86_64-ccache mingw64/mingw-w64-x86_64-ccache \
  19. mingw64/mingw-w64-x86_64-go ucrt64/mingw-w64-ucrt-x86_64-go \
  20. mingw64/mingw-w64-x86_64-nsis \
  21. msys/libcurl msys/libcurl-devel
  22. }
  23. BUILD_FOR_PACKAGING="Off"
  24. if [ "${1}" = "install" ]
  25. then
  26. install_dependencies || exit 1
  27. exit 0
  28. fi
  29. if [ "${1}" = "service" ]
  30. then
  31. RUN_AS_SERVICE=1
  32. BUILD_FOR_PACKAGING="On"
  33. shift
  34. fi
  35. if [ "${1}" = "package" ]
  36. then
  37. BUILD_FOR_PACKAGING="On"
  38. fi
  39. export PATH="/usr/local/bin:${PATH}"
  40. WT_ROOT="$(pwd)"
  41. BUILD_TYPE="Debug"
  42. NULL=""
  43. if [ -z "${MSYSTEM}" ]; then
  44. build="${WT_ROOT}/build-${OSTYPE}"
  45. else
  46. build="${WT_ROOT}/build-${OSTYPE}-${MSYSTEM}"
  47. fi
  48. if [ "$USER" = "vk" ]; then
  49. build="${WT_ROOT}/build"
  50. fi
  51. set -exu -o pipefail
  52. if [ ! -d "${build}" ]
  53. then
  54. /usr/bin/cmake -S "${WT_ROOT}" -B "${build}" \
  55. -G Ninja \
  56. -DCMAKE_INSTALL_PREFIX="/opt/netdata" \
  57. -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
  58. -DCMAKE_C_FLAGS="-fstack-protector-all -O0 -ggdb -Wall -Wextra -Wno-char-subscripts -Wa,-mbig-obj -pipe -DNETDATA_INTERNAL_CHECKS=1 -D_FILE_OFFSET_BITS=64 -D__USE_MINGW_ANSI_STDIO=1" \
  59. -DBUILD_FOR_PACKAGING=${BUILD_FOR_PACKAGING} \
  60. -DUSE_MOLD=Off \
  61. -DNETDATA_USER="${USER}" \
  62. -DDEFAULT_FEATURE_STATE=Off \
  63. -DENABLE_H2O=Off \
  64. -DENABLE_ML=On \
  65. -DENABLE_BUNDLED_JSONC=On \
  66. -DENABLE_BUNDLED_PROTOBUF=Off \
  67. -DENABLE_PLUGIN_APPS=On \
  68. ${NULL}
  69. fi
  70. echo "Compiling Netdata..."
  71. ninja -v -C "${build}" || ninja -v -C "${build}" -j 1
  72. echo "Stopping service Netdata..."
  73. sc stop "Netdata" || echo "stop Failed, ok"
  74. if [ $RUN_AS_SERVICE -eq 1 ]; then
  75. sc delete "Netdata" || echo "delete Failed, ok"
  76. fi
  77. rm -f /opt/netdata/usr/bin/*.dll || echo "deleting old .dll files failed, ok"
  78. ninja -v -C "${build}" install
  79. # register the event log publisher
  80. cmd.exe //c "$(cygpath -w -a "/opt/netdata/usr/bin/wevt_netdata_install.bat")"
  81. #echo
  82. #echo "Compile with:"
  83. #echo "ninja -v -C \"${build}\" install || ninja -v -C \"${build}\" -j 1"
  84. if [ $RUN_AS_SERVICE -eq 1 ]; then
  85. echo
  86. echo "Copying library files to /opt/netdata/usr/bin ..."
  87. ldd /opt/netdata/usr/bin/netdata |\
  88. grep " => /usr/bin/" |\
  89. sed -e 's|\s\+| |g' -e 's|^ ||g' |\
  90. cut -d ' ' -f 3 |\
  91. while read x; do
  92. cp $x /opt/netdata/usr/bin/
  93. done
  94. echo
  95. echo "Registering Netdata service..."
  96. sc create "Netdata" binPath= "$(cygpath.exe -w /opt/netdata/usr/bin/netdata.exe)" start= auto
  97. echo "Starting Netdata service..."
  98. sc start "Netdata"
  99. else
  100. echo "Starting netdata..."
  101. # enable JIT debug with gdb
  102. export MSYS="error_start:$(cygpath -w /usr/bin/gdb)"
  103. rm -rf /opt/netdata/var/log/netdata/*.log || echo
  104. /opt/netdata/usr/bin/netdata -D
  105. fi