1PORTNAME=	kibana
2DISTVERSION=	8.11.3
3PORTREVISION=	2
4DISTVERSIONSUFFIX=	-linux-x86_64
5CATEGORIES=	textproc www
6MASTER_SITES=	https://artifacts.elastic.co/downloads/kibana/ \
7		http://artifacts.elastic.co/downloads/kibana/
8PKGNAMESUFFIX=	8
9DISTFILES=	${DISTNAME}${EXTRACT_SUFX}
10
11MAINTAINER=	ports@MidnightBSD.org
12COMMENT=	Browser based analytics and search interface to ElasticSearch
13WWW=		https://www.elastic.co/products/kibana
14
15LICENSE=	Apache-2.0
16
17BUILD_DEPENDS=	npm-node20>=9.7.2:www/npm-node20
18LIB_DEPENDS=	libre2.so:devel/re2 \
19		libuv.so:devel/libuv
20RUN_DEPENDS=	${LOCALBASE}/bin/node:www/node20
21
22USES=		compiler:c++17-lang cpe nodejs:20,build,run python:build
23CPE_VENDOR=	elastic
24
25USE_GITHUB=	nodefault
26GH_TUPLE=	nodejs:nan:v${_NODE_NAN_VER}:node_nan \
27		uhop:node-re2:${_NODE_RE2_VER}:node_re2
28
29USE_CXXSTD=	c++17
30USE_RC_SUBR=	${PORTNAME}
31
32CONFLICTS=	kibana7
33
34WWWDIR=		${PREFIX}/www/${PORTNAME}${PKGNAMESUFFIX}
35
36PORTSCOUT=	limit:^8
37
38SUB_FILES=	pkg-deinstall pkg-message
39SUB_LIST+=	BINDIR=${PREFIX}/bin \
40		PKGNAMESUFFIX=${PKGNAMESUFFIX} \
41		PORTNAME=${PORTNAME}
42
43WRKSRC=		${WRKDIR}/${PORTNAME}-${DISTVERSION}
44
45BINS=		kibana-encryption-keys kibana-keystore kibana-plugin \
46		kibana-setup kibana-verification-code
47
48#######################################################################
49# Set node-nan version here
50_NODE_NAN_VER=	2.18.0
51# Set node-re version here
52_NODE_RE2_VER=	1.20.0
53#######################################################################
54
55_NODECMD=	${LOCALBASE}/bin/node --version
56_DEVDIR:=	${WRKDIR}/.devdir
57
58_RE2DIR=	${WRKDIR}/node-re2-${_NODE_RE2_VER}
59
60# Extra patch files must be updated whenever node-re2 changes
61_RE2PATCHES=	${PATCHDIR}/extra-node-re2-binding-gyp.patch
62
63# Directory to prune
64_DIR2DEL=	node_modules packages src/plugins x-pack/packages
65
66post-patch:
67.for _dirdel in ${_DIR2DEL}
68	${FIND} -s ${WRKSRC}/${_dirdel} -type d -empty -delete
69.endfor
70	${REINPLACE_CMD} -e "s|%%WWWDIR%%|${WWWDIR}|g" \
71	${WRKSRC}/config/kibana.yml
72	cd ${_RE2DIR} && ${PATCH} -p0 < ${_RE2PATCHES}
73	${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" \
74	-e "s|%%DEVDIR%%|${_DEVDIR}|g" ${_RE2DIR}/binding.gyp
75
76pre-configure:
77	( \
78	_NODEVER=$$(${_NODECMD} | ${SED} -n 's|^v\(.*\)|\1|p') && \
79	${MKDIR} ${_DEVDIR}/$${_NODEVER}/include && \
80	${RLN} ${LOCALBASE}/include/node ${_DEVDIR}/$${_NODEVER}/include/node && \
81	${ECHO} "9" > ${_DEVDIR}/$${_NODEVER}/installVersion \
82	)
83
84do-configure:
85	${MKDIR} ${_DEVDIR}/nan
86	(cd ${WRKDIR}/nan-${_NODE_NAN_VER} && ${COPYTREE_SHARE} . \
87		${_DEVDIR}/nan \
88		"! ( -name \.* -or -path *\/test\/* -or -name test )")
89	(cd ${_RE2DIR} && \
90		${SETENV} HOME=${WRKDIR} \
91		${LOCALBASE}/lib/node_modules/npm/node_modules/.bin/node-gyp configure \
92		--python=${PYTHON_CMD} \
93		--nodedir=${LOCALBASE} \
94		--devdir=${_DEVDIR})
95
96do-build:
97	(cd ${_RE2DIR} && \
98		${SETENV} HOME=${WRKDIR} \
99		${LOCALBASE}/lib/node_modules/npm/node_modules/.bin/node-gyp build \
100		--devdir=${_DEVDIR})
101
102do-install:
103	${MKDIR} ${WWWDIR} ${ETCDIR}
104	${INSTALL_DATA} ${WRKSRC}/config/kibana.yml ${ETCDIR}/kibana.yml.sample
105	${INSTALL_DATA} ${WRKSRC}/config/node.options ${ETCDIR}/node.options.sample
106	-(cd ${WRKSRC} && \
107		${RM} -r config node optimize && \
108		${COPYTREE_SHARE} . ${WWWDIR} && \
109		${COPYTREE_BIN} bin ${WWWDIR})
110	${INSTALL} -lrs ${ETCDIR} ${WWWDIR}/config
111	${MKDIR} ${WWWDIR}/node/bin
112	${LN} -s ${LOCALBASE}/bin/node ${WWWDIR}/node/bin/node
113	-${RM} ${WWWDIR}/node_modules/re2/build/Release/re2.node
114	${INSTALL_LIB} ${_RE2DIR}/build/Release/re2.node \
115		${WWWDIR}/node_modules/re2/build/Release/re2.node
116.for f in ${BINS}
117	${INSTALL} -l rs ${WWWDIR}/bin/${f} ${PREFIX}/bin/${f}
118	${ECHO} "bin/${f}" >> ${TMPPLIST}
119.endfor
120
121post-install:
122	${ECHO} "@sample ${ETCDIR_REL}/kibana.yml.sample" >> ${TMPPLIST}
123	${ECHO} "@sample ${ETCDIR_REL}/node.options.sample" >> ${TMPPLIST}
124	${FIND} -s ${WWWDIR} -not -type d | ${SORT} | \
125		${SED} -e 's#^${PREFIX}/##' >> ${TMPPLIST}
126	${ECHO} "@dir(www,www) ${WWWDIR_REL}/data" >> ${TMPPLIST}
127	${ECHO} "@dir ${WWWDIR_REL}/plugins" >> ${TMPPLIST}
128	${ECHO} "@dir ${WWWDIR_REL}/logs" >> ${TMPPLIST}
129
130.include <bsd.port.mk>
131