# $OpenBSD: Makefile,v 1.95 2019/09/26 22:01:47 sthen Exp $

COMMENT =	auto-discovering network management/monitoring system

GH_ACCOUNT =	librenms
GH_PROJECT =	librenms
GH_TAGNAME =	1.53.1
DISTFILES =	librenms-${GH_TAGNAME}.tar.gz librenms-vendor-${GH_TAGNAME}.tar.xz:0
EPOCH =		0

CATEGORIES =	net www

HOMEPAGE =	https://www.librenms.org/

MAINTAINER =	Stuart Henderson <sthen@openbsd.org>

# GPLv3+
PERMIT_PACKAGE =	Yes

MASTER_SITES0 =	https://spacehopper.org/mirrors/

MODULES =	lang/php \
		lang/python
MODPY_BUILDDEP = No

# librenms-service.py (currently in beta) will want py3 and the following:
#		databases/py-redis${MODPY_FLAVOR}	# optional
#		sysutils/py-dotenv${MODPY_FLAVOR}	# not ported yet
# but (at least as of 1.43), the *-wrapper.py scripts don't support py3 yet

RUN_DEPENDS =	databases/py-mysql${MODPY_FLAVOR} \
		lang/php/${MODPHP_VERSION},-curl \
		lang/php/${MODPHP_VERSION},-gd \
		lang/php/${MODPHP_VERSION},-mysqli \
		lang/php/${MODPHP_VERSION},-pdo_mysql \
		lang/php/${MODPHP_VERSION},-snmp \
		net/fping \
		net/mtr \
		net/net-snmp \
		net/nmap \
		net/rrdtool \
		shells/bash \
		sysutils/ipmitool

NO_BUILD =	Yes
NO_TEST =	Yes

PREFIX =	/var/www
INSTDIR =	${PREFIX}/librenms
SUBST_VARS =	INSTDIR MODPHP_BIN
UPDATE_PLIST_ARGS += -i MODPHP_VERSION

R =	s,^\#!( )?(/usr/bin/env |/bin/)bash,\#!${LOCALBASE}/bin/bash,;
R +=	s,^\#!( )?/usr/bin/(env )?python.*,\#!${MODPY_BIN},;
R +=	s,/usr/bin/(env )?php,${MODPHP_BIN},g;
R +=	s,/opt/librenms,/var/www/librenms,g;
R +=	s,/var/www/librenms,${TRUEPREFIX}/librenms,g;
R +=	s,/usr/local,${LOCALBASE},g

post-extract:
	mv ${WRKDIR}/vendor ${WRKSRC}/
	perl -pi \
	    -e "s,'/usr/bin/snmp,'/usr/local/bin/snmp,;" \
	    -e "s,'/bin/ping,'/sbin/ping,;" \
	    -e "s,'/usr/bin/(mtr|nmap|ipmitool|virsh|dot|sfdp)','/usr/local/bin/\1',;" \
	    -e "s,'/usr/lib/nagios/plugins,'/usr/local/libexec/nagios/plugins,;" \
	    ${WRKSRC}/includes/defaults.inc.php
	find ${WRKSRC} -type f -print0 | xargs -r0 perl -pi -e '$R'
	sed -i \
	    -e 's, librenms *, _librenms ,' \
	    -e 's,/var/www/librenms/cronic,-n,' \
	    ${WRKSRC}/librenms.nonroot.cron

do-configure:
	${SUBST_CMD} ${WRKSRC}/.env.example ${WRKSRC}/poller-service.py

do-install:
	${INSTALL_DATA_DIR} ${INSTDIR}
	cd ${WRKSRC}; pax -rw . ${INSTDIR}
	find ${INSTDIR} -name '*.orig' -delete
	mkdir -p ${INSTDIR}/{rrd,logs}
	cd ${INSTDIR}; \
	   sed -i 's,%PHP%,${MODPHP_BIN},' daily.sh *-wrapper.py *-service.py validate.php LibreNMS/Validations/Php.php includes/html/output/capture.inc.php scripts/composer_wrapper.php; \
	   sed -i 's,%LNMS_VERSION%,${DISTNAME:S/librenms-//},' includes/common.php
	cp /usr/share/snmp/mibs/OPENBSD-* ${INSTDIR}/mibs/
	rm -rf ${INSTDIR}/tests ${INSTDIR}/vendor/*/*/.git
# XXX workaround pkg_add limitation ("exotest" in regress/usr.sbin/pkg_add)
	${INSTALL_DATA_DIR} ${INSTDIR}/lib/jQuery-Mapael/js/
	mv ${INSTDIR}/html/js/mapael-maps ${INSTDIR}/lib/
	mv ${INSTDIR}/html/js/maps ${INSTDIR}/lib/jQuery-Mapael/js/
	ln -s ../../lib/mapael-maps/ ${INSTDIR}/html/js/mapael-maps
	ln -s ../../lib/jQuery-Mapael/js/maps/ ${INSTDIR}/html/js/maps

# maintainer convenience target
dist: /usr/ports/distfiles/librenms-${GH_TAGNAME}.tar.gz
	t=`mktemp -d /tmp/librenms.XXXXXXXXXX`; \
	f=$$t/librenms-vendor-${GH_TAGNAME}.tar.xz; \
	cd $$t; \
	tar xzf ${FULLDISTDIR}/${DISTNAME}.tar.gz; \
	cd librenms-${GH_TAGNAME}; \
	sed -i 's,whereis -b ,whereis ,' LibreNMS/Config.php; \
	sed -i 's,php artisan ,${MODPHP_BIN} artisan ,' composer.json; \
	[ -r .env ] || cp .env.example .env; \
	composer install --no-dev; \
	tar cf - vendor | xz -T 0 > $$f; \
	scp $$f naiad:mirrors/; \
	cd -; rm -rf $$t

.include <bsd.port.mk>
