aboutsummaryrefslogtreecommitdiff
path: root/net-mgmt/netdata/Makefile
blob: 06cb32a2bfe9887efc2aade51aa3e9c8b593f915 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
PORTNAME=	netdata
DISTVERSIONPREFIX=	v
DISTVERSION=	2.5.4
CATEGORIES=	net-mgmt
MASTER_SITES=	https://github.com/${PORTNAME}/${PORTNAME}/releases/download/v${DISTVERSION}/:netdata \
		https://raw.githubusercontent.com/netdata/netdata/refs/tags/v${DISTVERSION}/src/go/:goplugin \
		https://dl.nkeor.me/freebsd/netdata/:nkeor
DISTFILES=	${DISTNAME}${EXTRACT_SUFX}:netdata
DIST_SUBDIR=	${PORTNAME}
EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}

MAINTAINER=	nk@nkeor.me
COMMENT=	Scalable distributed realtime performance and health monitoring
WWW=		https://github.com/netdata/netdata

LICENSE=	GPLv3
LICENSE_FILE=	${WRKSRC}/LICENSE

BUILD_DEPENDS=	${LOCALBASE}/bin/mmv:misc/mmv \
		${LOCALBASE}/lib/libbacktrace.a:devel/libbacktrace
LIB_DEPENDS=	libabsl_base.so:devel/abseil \
		libbrotlicommon.so:archivers/brotli \
		libcurl.so:ftp/curl \
		libjson-c.so:devel/json-c \
		liblz4.so:archivers/liblz4 \
		libpcre2-8.so:devel/pcre2 \
		libprotobuf.so:devel/protobuf \
		libuuid.so:misc/libuuid \
		libuv.so:devel/libuv \
		libyaml.so:textproc/libyaml \
		libzstd.so:archivers/zstd
RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}urllib3>0:net/py-urllib3@${PY_FLAVOR} \
		${PYTHON_PKGNAMEPREFIX}pyyaml>=0:devel/py-pyyaml@${PY_FLAVOR} \
		bash:shells/bash

USES=		cmake compiler:c++17-lang cpe localbase:ldflags \
		pathfix pkgconfig:both python shebangfix ssl
USE_GITHUB=	nodefault
USE_RC_SUBR=	${PORTNAME}
SHEBANG_GLOB=	*

CMAKE_ON=	DISABLE_HARDENING ENABLE_DASHBOARD ENABLE_LIBBACKTRACE
# DebugFS and below are Linux exclusive
CMAKE_OFF=	ENABLE_PLUGIN_EBPF \
		ENABLE_PLUGIN_NFACCT \
		ENABLE_PLUGIN_XENSTAT \
		ENABLE_PLUGIN_DEBUGFS \
		ENABLE_PLUGIN_PERF \
		ENABLE_PLUGIN_SLABINFO \
		ENABLE_PLUGIN_SYSTEMD_JOURNAL \
		ENABLE_PLUGIN_CGROUP_NETWORK \
		ENABLE_PLUGIN_LOCAL_LISTENERS \
		ENABLE_PLUGIN_NETWORK_VIEWER

CFLAGS+=	-D_WANT_VMMETER

# Libs that you can't unbundle...
# SQLite3, --exclude database/sqlite/sqlite3*
# (lib)judy, --exclude libnetdata/libjudy
EXTRACT_AFTER_ARGS=	--exclude ml/dlib \
	--exclude collectors/python.d.plugin/python_modules/pyyaml2 \
	--exclude collectors/python.d.plugin/python_modules/pyyaml3 \
	--exclude collectors/python.d.plugin/python_modules/urllib3

SUB_FILES=	${PORTNAME}.conf.sample
SUB_LIST=	NETDATA_CACHE=${NETDATA_CACHE} \
		NETDATA_LOG=${NETDATA_LOG} \
		NETDATA_PERST=${NETDATA_PERST} \
		NETDATA_RUN=${NETDATA_RUN}

USERS=		netdata
GROUPS=		netdata

NETDATA_CACHE=	/var/cache/${PORTNAME}
NETDATA_LOG=	/var/log/${PORTNAME}
NETDATA_PERST=	/var/db/${PORTNAME}
NETDATA_RUN=	/var/run/${PORTNAME}
NETDATA_DASHBOARD_VERSION=	20250629

PLIST_SUB=	NETDATA_CACHE=${NETDATA_CACHE} \
		NETDATA_LOG=${NETDATA_LOG} \
		NETDATA_PERST=${NETDATA_PERST} \
		NETDATA_RUN=${NETDATA_RUN}

OPTIONS_DEFINE=		CUPS DASHBOARD FREEIPMI GOPLUGIN ML PROMETHEUS
OPTIONS_DEFAULT=	ML
OPTIONS_EXCLUDE_powerpc64le=	ML
OPTIONS_SUB=		YES

CUPS_DESC=		Enable support for cups
DASHBOARD_DESC=		Enable agent dashboard
FREEIPMI_DESC=		Enable support for freeipmi
GOPLUGIN_DESC=		Enable the go collector plugin
ML_DESC=		Enable anomaly detection via dlib
PROMETHEUS_DESC=	Enable prometheus remote write exporter
CUPS_LIB_DEPENDS=	libcups.so:print/cups
CUPS_CMAKE_BOOL=	ENABLE_PLUGIN_CUPS
DASHBOARD_DISTFILES=	agent_${NETDATA_DASHBOARD_VERSION}.tar.gz:nkeor
DASHBOARD_EXTRACT_ONLY=	agent_${NETDATA_DASHBOARD_VERSION}.tar.gz
FREEIPMI_LIB_DEPENDS=	libfreeipmi.so:sysutils/freeipmi
FREEIPMI_CMAKE_BOOL=	ENABLE_PLUGIN_FREEIPMI
GOPLUGIN_DISTFILES=	go.mod:goplugin
GOPLUGIN_FETCH_DEPENDS=	go${GO_SUFFIX}:lang/go${GO_SUFFIX}
GOPLUGIN_USES=		go:no_targets,modules
GOPLUGIN_CMAKE_BOOL=	ENABLE_PLUGIN_GO
ML_BUILD_DEPENDS=	${LOCALBASE}/include/dlib/matrix.h:science/dlib-cpp
ML_CMAKE_BOOL=		ENABLE_ML
PROMETHEUS_LIB_DEPENDS=	libsnappy.so:archivers/snappy \
			libabsl_base.so:devel/abseil \
			libprotobuf.so:devel/protobuf
PROMETHEUS_CMAKE_BOOL=	ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE

post-fetch-GOPLUGIN-on:
	@(cd ${DISTDIR}/${DIST_SUBDIR}; \
		${SETENVI} ${WRK_ENV} \
		${GO_ENV} GOPROXY=${GO_GOPROXY} ${GO_CMD} mod download -x all)

post-extract-GOPLUGIN-on:
	@${ECHO_MSG} "===> Tidying god.plugin dependencies";
	@(cd ${WRKSRC}/src/go; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${GO_ENV} GOPROXY=${GO_MODCACHE} ${GO_CMD} mod tidy -e)
	@${ECHO_MSG} "===> Vendoring god.plugin dependencies";
	@(cd ${WRKSRC}/src/go; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${GO_ENV} GOPROXY=${GO_MODCACHE} ${GO_CMD} mod vendor -e)

pre-patch:
	@${REINPLACE_CMD} -e '\
		s|usr/lib/|lib/|g; \
		s|usr/libexec/|libexec/|g; \
		s|usr/share/|share/|g' \
	    ${WRKSRC}/CMakeLists.txt

post-patch:
	@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
	    ${PATCH_WRKSRC}/packaging/cmake/Modules/NetdataBacktrace.cmake
	@${REINPLACE_CMD} -e 's|%%DISTVERSION%%|${DISTVERSION}|g' \
	    ${PATCH_WRKSRC}/packaging/cmake/Modules/NetdataVersion.cmake
	@${REINPLACE_CMD} -e '\
		s|%%NETDATA_CACHE%%|${NETDATA_CACHE}|g; \
		s|%%NETDATA_LOG%%|${NETDATA_LOG}|g; \
		s|%%NETDATA_PERST%%|${NETDATA_PERST}|g; \
		s|%%NETDATA_RUN%%|${NETDATA_RUN}|g; \
		s|%%ETCDIR%%|${ETCDIR}|g' \
	    ${PATCH_WRKSRC}/CMakeLists.txt
	@${REINPLACE_CMD} -e 's|%%PYTHON_VERSION%%|${PYTHON_VERSION}|g' \
	    ${PATCH_WRKSRC}/src/collectors/python.d.plugin/python.d.plugin.in

post-install:
	${MKDIR} ${STAGEDIR}${ETCDIR} \
		 ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d \
		 ${STAGEDIR}${NETDATA_CACHE} \
		 ${STAGEDIR}${NETDATA_LOG} \
		 ${STAGEDIR}${NETDATA_PERST}
	${INSTALL_DATA} ${WRKDIR}/netdata.conf.sample ${STAGEDIR}${ETCDIR}/netdata.conf.sample
	${INSTALL_DATA} ${FILESDIR}/netdata.newsyslog.conf.sample ${STAGEDIR}${ETCDIR}/netdata.newsyslog.conf.sample
	${TOUCH} ${STAGEDIR}${ETCDIR}/.opt-out-from-anonymous-statistics
	@(cd ${STAGEDIR}${LOCALBASE}/lib/${PORTNAME} && mmv ";*.conf" "#1#2.conf.sample")
	${RM} ${STAGEDIR}${ETCDIR}/netdata-updater.conf
	${RM} ${STAGEDIR}${LOCALBASE}/libexec/netdata/netdata-updater.sh
	${RM} -r ${STAGEDIR}${PREFIX}/lib/netdata/system

post-install-DASHBOARD-on:
	@(cd ${WRKDIR}/dist/agent && ${COPYTREE_SHARE} . ${STAGEDIR}/${DATADIR}/web)

.include <bsd.port.mk>