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