1 # makefile to manage collectd package
4 # Copyright 2016-2021 Intel Corporation, Anuket and others.
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
21 # Aihua Li, Huawei Technologies.
22 # Maryam Tahhan, Intel Corporation.
23 # Emma Foley, Red Hat.
25 include ../mk/master.mk
26 include ../package-list.mk
29 # $COLLECTD_TAG can contain "/", which is being replaced with "-" here
30 TAG_DONE_FLAG := $(WORK_DIR)/.$(subst /,-,$(COLLECTD_TAG)).done
31 BUILD_CMD = ./build.sh
33 CONFIG_CMD += ./configure
35 LIBPQOS_DIR = $(shell echo $$LIBPQOS_DIR)
36 ifeq ($(LIBPQOS_DIR),)
40 XDG_CACHE_HOME_DIR = $(shell echo $$XDG_CACHE_HOME)
41 ifeq ($(XDG_CACHE_HOME_DIR),)
42 XDG_CACHE_HOME_DIR = $(shell echo $$HOME)
45 ifeq ($(COLLECTD_FLAVOR),collectd-6)
46 CONFIG_CMD += --enable-cpu
47 CONFIG_CMD += --enable-interface
48 CONFIG_CMD += --enable-memory
49 CONFIG_CMD += --enable-ping
50 CONFIG_CMD += --enable-uptime
52 CONFIG_CMD += --disable-aggregation
53 CONFIG_CMD += --disable-amqp
54 CONFIG_CMD += --disable-amqp1
55 #CONFIG_CMD += --disable-apache
56 #CONFIG_CMD += --disable-apcups
57 #CONFIG_CMD += --disable-apple_sensors
58 #CONFIG_CMD += --disable-aquaero
59 CONFIG_CMD += --disable-barometer
60 #CONFIG_CMD += --disable-battery
61 #CONFIG_CMD += --disable-bind
62 #CONFIG_CMD += --disable-buddyinfo
63 #CONFIG_CMD += --disable-capabilities
64 #CONFIG_CMD += --disable-ceph
65 #CONFIG_CMD += --disable-cgroups
66 #CONFIG_CMD += --disable-chrony
67 CONFIG_CMD += --disable-check_uptime
68 #CONFIG_CMD += --disable-connectivity
69 #CONFIG_CMD += --disable-conntrack
70 #CONFIG_CMD += --disable-contextswitch
71 #CONFIG_CMD += --disable-cpufreq
72 #CONFIG_CMD += --disable-cpusleep
73 CONFIG_CMD += --disable-csv
74 #CONFIG_CMD += --disable-curl
75 #CONFIG_CMD += --disable-curl_json
76 CONFIG_CMD += --disable-curl_xml
77 #CONFIG_CMD += --disable-dbi
78 #CONFIG_CMD += --disable-dcpmm
79 #CONFIG_CMD += --disable-df
80 #CONFIG_CMD += --disable-disk
81 #CONFIG_CMD += --disable-dns
82 #CONFIG_CMD += --disable-dpdkevents
83 #CONFIG_CMD += --disable-dpdkstat
84 #CONFIG_CMD += --disable-dpdk_telemetry
85 #CONFIG_CMD += --disable-drbd
86 #CONFIG_CMD += --disable-email
87 #CONFIG_CMD += --disable-entropy
88 #CONFIG_CMD += --disable-ethstat
89 #CONFIG_CMD += --disable-exec
90 #CONFIG_CMD += --disable-fhcount
91 #CONFIG_CMD += --disable-filecount
92 #CONFIG_CMD += --disable-fscache
93 CONFIG_CMD += --disable-gmond
94 #CONFIG_CMD += --disable-gps
95 #CONFIG_CMD += --disable-gpu_nvidia
96 CONFIG_CMD += --disable-grpc
97 #CONFIG_CMD += --disable-hddtemp
98 #CONFIG_CMD += --disable-hugepages
99 #CONFIG_CMD += --disable-infiniband
100 #CONFIG_CMD += --disable-intel_pmu
101 #CONFIG_CMD += --disable-intel_rdt
102 #CONFIG_CMD += --disable-ipc
103 #CONFIG_CMD += --disable-ipmi
104 #CONFIG_CMD += --disable-iptables
105 #CONFIG_CMD += --disable-ipstats
106 #CONFIG_CMD += --disable-ipvs
107 #CONFIG_CMD += --disable-irq
108 CONFIG_CMD += --disable-java
109 #CONFIG_CMD += --disable-load
110 #CONFIG_CMD += --disable-log_logstash
111 #CONFIG_CMD += --disable-logfile
112 #CONFIG_CMD += --disable-logparser
113 #CONFIG_CMD += --disable-lpar
114 CONFIG_CMD += --disable-lua
115 #CONFIG_CMD += --disable-madwifi
116 CONFIG_CMD += --disable-match_empty_counter
117 CONFIG_CMD += --disable-match_hashed
118 CONFIG_CMD += --disable-match_regex
119 CONFIG_CMD += --disable-match_timediff
120 CONFIG_CMD += --disable-match_value
121 #CONFIG_CMD += --disable-mbmon
122 #CONFIG_CMD += --disable-mcelog
123 #CONFIG_CMD += --disable-md
124 #CONFIG_CMD += --disable-mdevents
125 #CONFIG_CMD += --disable-memcachec
126 #CONFIG_CMD += --disable-memcached
127 #CONFIG_CMD += --disable-mic
128 CONFIG_CMD += --disable-modbus
129 CONFIG_CMD += --disable-mqtt
130 #CONFIG_CMD += --disable-multimeter
131 #CONFIG_CMD += --disable-mysql
132 #CONFIG_CMD += --disable-netapp
133 #CONFIG_CMD += --disable-netlink
134 #CONFIG_CMD += --disable-netstat_udp
135 CONFIG_CMD += --disable-network
136 #CONFIG_CMD += --disable-nfs
137 #CONFIG_CMD += --disable-nginx
138 #CONFIG_CMD += --disable-notify_desktop
139 #CONFIG_CMD += --disable-notify_email
140 #CONFIG_CMD += --disable-notify_nagios
141 #CONFIG_CMD += --disable-ntpd
142 #CONFIG_CMD += --disable-numa
143 #CONFIG_CMD += --disable-nut
144 #CONFIG_CMD += --disable-olsrd
145 #CONFIG_CMD += --disable-onewire
146 CONFIG_CMD += --disable-openldap
147 #CONFIG_CMD += --disable-openvpn
148 #CONFIG_CMD += --disable-oracle
149 #CONFIG_CMD += --disable-ovs_events
150 #CONFIG_CMD += --disable-ovs_stats
151 #CONFIG_CMD += --disable-pcie_errors
152 CONFIG_CMD += --disable-perl
153 #CONFIG_CMD += --disable-pf
154 #CONFIG_CMD += --disable-pinba
155 CONFIG_CMD += --disable-postgresql
156 #CONFIG_CMD += --disable-powerdns
157 #CONFIG_CMD += --disable-processes
158 #CONFIG_CMD += --disable-procevent
159 #CONFIG_CMD += --disable-protocols
160 CONFIG_CMD += --disable-python
161 #CONFIG_CMD += --disable-redfish
162 CONFIG_CMD += --disable-redis
163 #CONFIG_CMD += --disable-routeros
164 CONFIG_CMD += --disable-rrdcached
165 CONFIG_CMD += --disable-rrdtool
166 #CONFIG_CMD += --disable-sensors
167 #CONFIG_CMD += --disable-serial
168 #CONFIG_CMD += --disable-sigrok
169 #CONFIG_CMD += --disable-slurm
170 #CONFIG_CMD += --disable-smart
171 CONFIG_CMD += --disable-snmp
172 CONFIG_CMD += --disable-snmp_agent
173 CONFIG_CMD += --disable-statsd
174 #CONFIG_CMD += --disable-swap
175 #CONFIG_CMD += --disable-synproxy
176 #CONFIG_CMD += --disable-sysevent
177 #CONFIG_CMD += --disable-syslog
178 #CONFIG_CMD += --disable-table
179 #CONFIG_CMD += --disable-tail
180 #CONFIG_CMD += --disable-tail_csv
181 #CONFIG_CMD += --disable-tape
182 CONFIG_CMD += --disable-target_notification
183 CONFIG_CMD += --disable-target_replace
184 CONFIG_CMD += --disable-target_scale
185 CONFIG_CMD += --disable-target_set
186 CONFIG_CMD += --disable-target_v5upgrade
187 #CONFIG_CMD += --disable-tcpconns
188 #CONFIG_CMD += --disable-teamspeak2
189 #CONFIG_CMD += --disable-ted
190 #CONFIG_CMD += --disable-thermal
191 CONFIG_CMD += --disable-threshold
192 #CONFIG_CMD += --disable-tokyotyrant
193 #CONFIG_CMD += --disable-turbostat
194 #CONFIG_CMD += --disable-ubi
195 #CONFIG_CMD += --disable-unixsock
196 #CONFIG_CMD += --disable-users
197 #CONFIG_CMD += --disable-uuid
198 #CONFIG_CMD += --disable-varnish
199 #CONFIG_CMD += --disable-virt
200 #CONFIG_CMD += --disable-vmem
201 #CONFIG_CMD += --disable-vserver
202 #CONFIG_CMD += --disable-wireless
203 CONFIG_CMD += --disable-write_graphite
204 #CONFIG_CMD += --disable-write_http
205 CONFIG_CMD += --disable-write_influxdb_udp
206 CONFIG_CMD += --disable-write_kafka
207 #CONFIG_CMD += --disable-write_log
208 CONFIG_CMD += --disable-write_mongodb
209 CONFIG_CMD += --disable-write_prometheus
210 CONFIG_CMD += --disable-write_redis
211 CONFIG_CMD += --disable-write_riemann
212 CONFIG_CMD += --disable-write_sensu
213 #CONFIG_CMD += --disable-write_stackdriver
214 CONFIG_CMD += --disable-write_syslog
215 CONFIG_CMD += --disable-write_tsdb
216 #CONFIG_CMD += --disable-xencpu
217 #CONFIG_CMD += --disable-zfs_arc
218 #CONFIG_CMD += --disable-zone
219 #CONFIG_CMD += --disable-zookeeper
220 CONFIG_CMD += --enable-debug
222 CONFIG_CMD += --enable-syslog
223 CONFIG_CMD += --enable-logfile
224 CONFIG_CMD += --with-libpqos=$(LIBPQOS_DIR)
225 CONFIG_CMD += --enable-hugepages
226 CONFIG_CMD += --with-libjevents=/usr/local
227 CONFIG_CMD += --enable-exec
228 CONFIG_CMD += --enable-python
229 CONFIG_CMD += --enable-threshold
230 CONFIG_CMD += --enable-write_redis
231 CONFIG_CMD += --disable-perl
232 CONFIG_CMD += --with-librdkafka=/usr
233 CONFIG_CMD += --disable-lvm
237 CONFIG_CMD += LIBDPDK_CFLAGS='-mssse3'
240 CONFIG_CMD += $(COLLECTD_CONFIG_CMD_ARGS)
242 .PHONY: install force_install config force_make
244 # install depends on make
245 force_install: force_make
248 @echo "Finished making $(WORK_DIR)"
250 config $(WORK_DIR)/Makefile: $(WORK_DIR)/configure
251 @echo "Configuring with: " $(CONFIG_CMD)
252 $(AT)cd $(WORK_DIR); $(CONFIG_CMD)
253 @echo "Configure done"
255 force_make: $(WORK_DIR)/Makefile
256 $(AT) $(MAKE) -C $(WORK_DIR) $(MORE_MAKE_FLAGS)
260 $(AT)$(MAKE) -C $(WORK_DIR) install
262 $(AT)cp $(WORK_DIR)/contrib/systemd.collectd.service /etc/systemd/system/
263 $(AT)mv /etc/systemd/system/systemd.collectd.service /etc/systemd/system/collectd.service
264 $(AT)sed -i -e 's/ExecStart=\/usr\/sbin\/collectd/ExecStart=\/opt\/collectd\/sbin\/collectd/g' /etc/systemd/system/collectd.service
265 $(AT)sed -i -e 's/CapabilityBoundingSet=/CapabilityBoundingSet=CAP_SETUID CAP_SETGID CAP_SYS_RAWIO CAP_SYS_ADMIN/g' /etc/systemd/system/collectd.service
266 $(AT)sed -i -e 's|Environment=\(.*\)|Environment=XDG_CACHE_HOME='$(XDG_CACHE_HOME_DIR)' \1|g' /etc/systemd/system/collectd.service
267 $(AT)systemctl daemon-reload
269 $(AT)sudo ./ovs_pmd_stats_config.sh
270 $(AT)sudo ./snmp_mib_config.sh
272 @echo "Using sample configs: $(SAMPLE_CONF_VARIANT_NAME)"
273 $(AT)sudo ./include_config.sh $(SAMPLE_CONF_VARIANT_NAME)
274 @echo "Make install done"
276 install: force_install
279 # hard way to clean and clobber
281 $(AT)cd $(WORK_DIR) && git clean -xfd *.o
283 $(AT)rm -rf $(WORK_DIR)
285 # distclean is for developer who would like to keep the
286 # clone git repo, saving time to fetch again from url
288 $(AT)cd $(WORK_DIR) && git clean -xfd && git checkout -f
291 @echo "Make test in $(WORK_DIR) (stub) "
294 @echo "Make sanity in $(WORK_DIR) (stub) "
297 # boot collectd is the process to produce the script 'configure'
298 boot $(WORK_DIR)/configure: $(TAG_DONE_FLAG)
299 @echo "booting up collectd"
300 $(AT)cd $(WORK_DIR); $(BUILD_CMD)
301 @echo "done booting collectd"
304 $(AT)git clone $(COLLECTD_URL)
306 $(TAG_DONE_FLAG): $(WORK_DIR)
307 @echo "Checking out collectd from tag: $(COLLECTD_TAG)"
308 $(AT)cd collectd; git fetch origin $(COLLECTD_TAG); git checkout FETCH_HEAD
309 ifneq ($(PATCH_FILE),)
310 $(AT)cd $(WORK_DIR); patch -p1 < ../$(PATCH_FILE)
312 ifeq ($(COLLECTD_USE_EXPERIMENTAL_PR), y)
313 @echo "Applying experimental pull requests"
314 $(AT)cd $(WORK_DIR); ../collectd_apply_pull_request.sh