1PORTNAME=	grafana
2DISTVERSIONPREFIX=	v
3DISTVERSION=	11.6.0
4CATEGORIES=	www
5MASTER_SITES=	https://dl.grafana.com/oss/release/ \
6		https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${DISTVERSIONFULL}/:gomod
7DISTFILES=	grafana-${DISTVERSION}.linux-amd64${EXTRACT_SUFX} \
8		go.mod:gomod \
9		go.work:gomod \
10		apps/advisor/go.mod:gomod \
11		apps/alerting/notifications/go.mod:gomod \
12		apps/investigations/go.mod:gomod \
13		apps/playlist/go.mod:gomod \
14		pkg/aggregator/go.mod:gomod \
15		pkg/apimachinery/go.mod:gomod \
16		pkg/apiserver/go.mod:gomod \
17		pkg/build/go.mod:gomod \
18		pkg/build/wire/go.mod:gomod \
19		pkg/codegen/go.mod:gomod \
20		pkg/plugins/codegen/go.mod:gomod \
21		pkg/promlib/go.mod:gomod \
22		pkg/semconv/go.mod:gomod \
23		pkg/storage/unified/apistore/go.mod:gomod \
24		pkg/storage/unified/resource/go.mod:gomod \
25		pkg/util/xorm/go.mod:gomod
26EXTRACT_ONLY=	${DISTFILES:N*.mod\:*:N*.mod:C/:.*//:Ngo.work}
27
28MAINTAINER=	ports@MidnightBSD.org
29COMMENT=	Dashboard and graph editor for multiple data stores
30WWW=		https://grafana.com/grafana/ \
31		https://github.com/grafana/grafana
32
33LICENSE=	agpl
34LICENSE_FILE=	${WRKSRC}/LICENSE
35
36ONLY_FOR_ARCHS=	aarch64 amd64 i386 riscv64
37
38RUN_DEPENDS=	ca_root_nss>=0:security/ca_root_nss
39
40USES=		cpe go:1.23,modules
41
42USE_GITHUB=	yes
43
44USE_RC_SUBR=	grafana
45TAG=		d2fdff9
46
47GO_MODULE=	github.com/grafana/grafana
48GO_MOD_DIST=	github
49GO_TARGET=	./pkg/cmd/grafana \
50		./pkg/cmd/grafana-server \
51		./pkg/cmd/grafana-cli
52GO_BUILDFLAGS=	-ldflags="-w -X main.version=${PORTVERSION} -X main.commit=${TAG}"
53
54CONFLICTS_INSTALL=	grafana
55
56SUB_LIST=	GRAFANA_USER=${GRAFANA_USER} \
57		GRAFANA_GROUP=${GRAFANA_GROUP} \
58		GRAFANA_DATADIR=${GRAFANA_DATADIR} \
59		GRAFANA_HOMEDIR=${GRAFANA_HOMEDIR} \
60		GRAFANA_LOGDIR=${GRAFANA_LOGDIR} \
61		GRAFANA_PLUGINDIR=${GRAFANA_PLUGINDIR} \
62		GRAFANA_PROVISIONINGDIR=${GRAFANA_PROVISIONINGDIR}
63# Disable some master port targets
64TARGET_ORDER_OVERRIDE=	-1:go-post-extract
65
66GRAFANA_USER?=	grafana
67GRAFANA_GROUP?=	grafana
68
69USERS=		${GRAFANA_USER}
70GROUPS=		${GRAFANA_GROUP}
71
72PLIST_SUB=	${SUB_LIST}
73
74GRAFANA_DATADIR?=		/var/db/${PORTNAME}
75GRAFANA_HOMEDIR?=		${DATADIR}
76GRAFANA_LOGDIR?=		/var/log/${PORTNAME}
77GRAFANA_PLUGINDIR?=		${GRAFANA_DATADIR}/plugins
78GRAFANA_PROVISIONINGDIR?=	${ETCDIR}/provisioning
79
80NO_TEST=	yes
81
82post-extract:
83	@${ECHO_MSG} "===> Tidying ${GO_MODNAME} dependencies";
84	@(cd ${GO_WRKSRC}; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${GO_ENV} \
85		GOPROXY=${GO_MODCACHE} ${GO_CMD} mod tidy -e)
86	@${ECHO_MSG} "===> Vendoring ${GO_MODNAME} dependencies";
87	@(cd ${GO_WRKSRC}; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${GO_ENV} \
88		GOPROXY=${GO_MODCACHE} ${GO_CMD} work vendor -e)
89
90post-patch:
91	@${REINPLACE_CMD} \
92		-e 's|;data = /var/lib/grafana|data = ${GRAFANA_DATADIR}|g' \
93		-e 's|;logs = /var/log/grafana|logs = ${GRAFANA_LOGDIR}|g' \
94		-e 's|;plugins = /var/lib/grafana/plugins|plugins = ${GRAFANA_PLUGINDIR}|g' \
95		-e 's|;provisioning = conf/provisioning|provisioning = ${GRAFANA_PROVISIONINGDIR}|g' \
96		 ${WRKSRC}/conf/sample.ini
97
98pre-build:
99	@(cd ${GO_WRKSRC}; \
100	${ECHO_MSG} "===>  Generating wire_gen.go"; \
101	${SETENV} ${MAKE_ENV} ${GO_ENV} GOPROXY=off ${GO_CMD} run \
102		./pkg/build/wire/cmd/wire/main.go gen -tags "oss" ./pkg/server)
103
104post-install:
105	${MKDIR} ${ETCDIR}
106	${MKDIR} ${GRAFANA_HOMEDIR}
107	${MKDIR} ${GRAFANA_HOMEDIR}/conf
108	${MKDIR} ${FAKE_DESTDIR}${GRAFANA_DATADIR}
109	${MKDIR} ${FAKE_DESTDIR}${GRAFANA_PLUGINDIR}
110.for dir in access-control alerting dashboards datasources plugins
111	${MKDIR} ${FAKE_DESTDIR}${GRAFANA_PROVISIONINGDIR}/${dir}
112.endfor
113	${MKDIR} ${FAKE_DESTDIR}${GRAFANA_LOGDIR}
114	(cd ${WRKDIR}/${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX} \
115		&& ${COPYTREE_SHARE} public ${GRAFANA_HOMEDIR})
116	${INSTALL_DATA} ${WRKSRC}/conf/defaults.ini \
117		${GRAFANA_HOMEDIR}/conf/defaults.ini
118	${INSTALL_DATA} ${WRKSRC}/conf/sample.ini \
119		${ETCDIR}/grafana.ini.sample
120	${INSTALL_DATA} ${WRKSRC}/conf/ldap.toml \
121		${ETCDIR}/ldap.toml.sample
122	${FIND} ${DATADIR}/public -type f | \
123		${SED} "s,^${DATADIR},${DATADIR_REL}," >> ${TMPPLIST}
124
125.include <bsd.port.mk>
126