diff --git a/net-mgmt/librenms/Makefile b/net-mgmt/librenms/Makefile --- a/net-mgmt/librenms/Makefile +++ b/net-mgmt/librenms/Makefile @@ -1,8 +1,6 @@ -# Created by: Muhammad Moinur Rahman - PORTNAME= librenms PORTVERSION= 21.5.1 -PORTREVISION= 1 +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= net-mgmt MASTER_SITES= LOCAL/dvl:vendor @@ -13,38 +11,57 @@ LICENSE= GPLv3 -USES= shebangfix python php - -# RELEASE_TIMESTAMP is used for a patch inside the vendor code -# it represents the release date via: git show --pretty='%H|%ct' -s 1.42.01 -# It sits here so you remember to update it with each release -RELEASE_TIMESTAMP= 1621427246 - # perhaps we also need python-memcache python-mysqldb -RUN_DEPENDS+= rrdtool:databases/rrdtool \ - dot:graphics/graphviz \ - ${LOCALBASE}/share/pear/Net/IPv4.php:net/pear-Net_IPv4@${PHP_FLAVOR} \ +RUN_DEPENDS+= ${LOCALBASE}/share/pear/Net/IPv4.php:net/pear-Net_IPv4@${PHP_FLAVOR} \ ${LOCALBASE}/share/pear/Net/IPv6.php:net/pear-Net_IPv6@${PHP_FLAVOR} \ - snmpget:net-mgmt/net-snmp \ - bash:shells/bash \ - sudo:security/sudo \ + ${PYTHON_PKGNAMEPREFIX}pymysql>0:databases/py-pymysql@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}python-dotenv>0:www/py-python-dotenv@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pymysql>0:databases/py-pymysql@${PY_FLAVOR} + bash:shells/bash \ + dot:graphics/graphviz \ + rrdtool:databases/rrdtool \ + snmpget:net-mgmt/net-snmp \ + sudo:security/sudo -USE_PHP= ctype curl dom fileinfo filter gd hash json ldap mbstring \ - mysqli openssl pdo pdo_mysql phar posix session simplexml \ - snmp sockets tokenizer xml xmlwriter zip +USES= php python shebangfix USE_GITHUB= yes GH_ACCOUNT= librenms +USE_PHP= ctype curl dom fileinfo filter gd hash json ldap mbstring \ + mysqli openssl pdo pdo_mysql phar posix session simplexml snmp \ + sockets tokenizer xml xmlwriter zip USE_RC_SUBR= librenms -USERS= www +SHEBANG_FILES= ../${PORTNAME}-vendor-${PORTVERSION}/swiftmailer/swiftmailer/lib/swiftmailer_generate_mimes_config.php \ + ../${PORTNAME}-vendor-${PORTVERSION}/tecnickcom/tcpdf/tools/tcpdf_addfont.php \ + poller-wrapper.py poller.php scripts/auth_test.php \ + scripts/check_requirements.py scripts/github-remove \ + scripts/Migration/Standard_Conversion/convert_no_xml.sh \ + scripts/Migration/Standard_Conversion/destwork_no_xml.sh \ + scripts/Migration/Standard_Conversion/mkdir.sh \ + scripts/Migration/XML_Conversion/convert.sh \ + scripts/Migration/XML_Conversion/destwork.sh \ + scripts/Migration/XML_Conversion/mkdir.sh \ + scripts/removespikes.php scripts/removespikes.pl \ + scripts/watchmaillog/watchmaillog.pl +NO_ARCH= yes NO_BUILD= yes -OPTIONS_DEFINE= FPING IPMITOOL LIBVIRT MYSQLD NAGPLUGINS NMAP WMIC DOCS EXAMPLES X11 +SUB_FILES+= pkg-message +SUB_LIST+= GROUP="${WWWGRP}" \ + PHP="${PHPBASE}/bin/php" \ + PYTHON=${PYTHON_CMD} \ + USER="${WWWOWN}" \ + WWWDIR="${WWWDIR}" + +USERS= www + +PORTDOCS= * +PORTEXAMPLES= snmpd.conf.example + +OPTIONS_DEFINE= DOCS EXAMPLES FPING IPMITOOL LIBVIRT MYSQLD NAGPLUGINS \ + NMAP WMIC X11 OPTIONS_DEFAULT= FPING IPMITOOL LIBVIRT NAGPLUGINS NMAP PYPOLLER WMIC FPING_DESC= Enable fping support ping monitoring @@ -55,94 +72,77 @@ FPING_RUN_DEPENDS= fping:net/fping IPMITOOL_RUN_DEPENDS= ipmitool:sysutils/ipmitool LIBVIRT_RUN_DEPENDS= virsh:devel/libvirt +MYSQLD_USES= mysql:server +MYSQLD_USES_OFF= mysql:client NAGPLUGINS_RUN_DEPENDS= ${LOCALBASE}/libexec/nagios/check_nagios:net-mgmt/nagios-plugins NMAP_RUN_DEPENDS= nmap:security/nmap +WMIC_RUN_DEPENDS= wmic:net-mgmt/wmi-client X11_RUN_DEPENDS= Magick-config:graphics/ImageMagick6 \ mtr:net/mtr X11_RUN_DEPENDS_OFF= Magick-config:graphics/ImageMagick6-nox11 \ mtr:net/mtr-nox11 -WMIC_RUN_DEPENDS= wmic:net-mgmt/wmi-client -MYSQLD_USES= mysql:server -MYSQLD_USES_OFF= mysql:client - -SHEBANG_FILES= scripts/auth_test.php \ - scripts/check_requirements.py \ - scripts/github-remove \ - scripts/Migration/Standard_Conversion/convert_no_xml.sh \ - scripts/Migration/Standard_Conversion/destwork_no_xml.sh \ - scripts/Migration/Standard_Conversion/mkdir.sh \ - scripts/Migration/XML_Conversion/convert.sh \ - scripts/Migration/XML_Conversion/destwork.sh \ - scripts/Migration/XML_Conversion/mkdir.sh \ - scripts/removespikes.pl scripts/removespikes.php scripts/watchmaillog/watchmaillog.pl \ - poller.php poller-wrapper.py \ - ../${PORTNAME}-vendor-${PORTVERSION}/swiftmailer/swiftmailer/lib/swiftmailer_generate_mimes_config.php \ - ../${PORTNAME}-vendor-${PORTVERSION}/tecnickcom/tcpdf/tools/tcpdf_addfont.php - -SUB_FILES+= pkg-message -SUB_LIST+= PHP="${PHPBASE}/bin/php" PYTHON=${PYTHON_CMD} \ - USER="${WWWOWN}" GROUP="${WWWGRP}" WWWDIR="${WWWDIR}" - -ROOT_FILES= addhost.php adduser.php alerts.php artisan billing-calculate.php \ - check-services.php composer.json \ - composer.lock config.php.default config_to_json.php cronic daily.php \ - delhost.php discovery-wrapper.py discovery.php dist-pollers.php irc.php \ - librenms-service.py mkdocs.yml pbin.sh phpunit.xml ping.php poll-billing.php poller.php \ - poller-wrapper.py renamehost.php snmp-scan.py \ - snmptrap.php syslog.php validate.php - -SCRIPT_FILES= daily.sh lnms - -ROOT_DIRS= LibreNMS app bootstrap config contrib database doc html includes licenses mibs misc resources routes scripts sql-schema storage tests - +_ROOT_FILES= addhost.php adduser.php alerts.php artisan \ + billing-calculate.php check-services.php composer.json \ + composer.lock config.php.default config_to_json.php \ + cronic daily.php delhost.php discovery-wrapper.py \ + discovery.php dist-pollers.php irc.php \ + librenms-service.py mkdocs.yml pbin.sh phpunit.xml \ + ping.php poll-billing.php poller.php poller-wrapper.py \ + renamehost.php snmp-scan.py snmptrap.php syslog.php \ + validate.php +_SCRIPT_FILES= daily.sh lnms +# _RELEASE_TIMESTAMP is used for a patch inside the vendor code +# it represents the release date via: git show --pretty='%H|%ct' -s 1.42.01 +# It sits here so you remember to update it with each release +_RELEASE_TIMESTAMP= 1621427246 +_ROOT_DIRS= LibreNMS app bootstrap config contrib database doc html \ + includes licenses mibs misc resources routes scripts \ + sql-schema storage tests +_DOCS= AUTHORS.md CHANGELOG.md CONTRIBUTING.md LICENSE.txt \ + README.md # these are directories which require a generic @DIR entry in pkg-plist -OTHER_DIRS= html/js/lang \ - resources/views/overview/custom \ - storage/app/public \ - storage/debugbar \ - storage/framework/cache/data \ - storage/framework/testing \ - storage/logs \ - tests/Browser/console \ - tests/Browser/screenshots \ - vendor/librenms/laravel-vue-i18n-generator/tests/output \ - vendor/ramsey/collection/bin \ - vendor/symfony/string/Resources/bin - -DOCS= AUTHORS.md CHANGELOG.md CONTRIBUTING.md LICENSE.txt README.md -PORTDOCS= * -PORTEXAMPLES= snmpd.conf.example -NO_ARCH= yes +_OTHER_DIRS= html/js/lang resources/views/overview/custom \ + storage/app/public storage/debugbar \ + storage/framework/cache/data storage/framework/testing \ + storage/logs tests/Browser/console \ + tests/Browser/screenshots \ + vendor/librenms/laravel-vue-i18n-generator/tests/output \ + vendor/ramsey/collection/bin \ + vendor/symfony/string/Resources/bin post-patch: - @${REINPLACE_CMD} 's|%%PORTVERSION%%|${PORTVERSION}|g' ${WRKSRC}/includes/common.php - @${REINPLACE_CMD} 's|%%RELEASE_TIMESTAMP%%|${RELEASE_TIMESTAMP}|g' ${WRKSRC}/includes/common.php - @${RM} ${WRKSRC}/LibreNMS/Validations/Updates.php - @${RM} -rf ${WRKSRC}/logs + ${REINPLACE_CMD} 's|%%PORTVERSION%%|${PORTVERSION}|g' ${WRKSRC}/includes/common.php + ${REINPLACE_CMD} 's|%%RELEASE_TIMESTAMP%%|${_RELEASE_TIMESTAMP}|g' ${WRKSRC}/includes/common.php + ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/LibreNMS/Util/Version.php + ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/LibreNMS/Validations/Php.php + ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/config.php.default + ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/poller-wrapper.py + ${RM} ${WRKSRC}/LibreNMS/Validations/Updates.php + ${RM} -rf ${WRKSRC}/logs do-install: ${MKDIR} ${STAGEDIR}/${WWWDIR} -.for dir in ${ROOT_DIRS} +.for dir in ${_ROOT_DIRS} ${MKDIR} ${STAGEDIR}/${WWWDIR}/${dir} (cd ${WRKSRC}/${dir} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/${dir}) .endfor -.for f in ${ROOT_FILES} +.for f in ${_ROOT_FILES} ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR} .endfor -.for f in ${SCRIPT_FILES} +.for f in ${_SCRIPT_FILES} ${INSTALL_SCRIPT} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR} .endfor ${MKDIR} ${STAGEDIR}/${WWWDIR}/vendor (cd ${WRKDIR}/${PORTNAME}-vendor-${PORTVERSION} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/vendor) - # As of 1.66_1, the package installs bootstrap/cache - # This was previously left to the code to populate. - # That causese problems when the code doesn't do that update. +# As of 1.66_1, the package installs bootstrap/cache +# This was previously left to the code to populate. +# That causese problems when the code doesn't do that update. ${MV} ${STAGEDIR}/${WWWDIR}/vendor/bootstrap-cache/* ${STAGEDIR}/${WWWDIR}/bootstrap/cache/ ${RM} -rf ${STAGEDIR}/${WWWDIR}/vendor/bootstrap-cache - # similarly with html/js/lang +# similarly with html/js/lang ${MV} ${STAGEDIR}/${WWWDIR}/vendor/html-js-lang/* ${STAGEDIR}/${WWWDIR}/html/js/lang/ ${RM} -rf ${STAGEDIR}/${WWWDIR}/vendor/html-js-lang @@ -162,7 +162,7 @@ do-install-DOCS-on: ${MKDIR} ${STAGEDIR}/${DOCSDIR} -.for f in ${DOCS} +.for f in ${_DOCS} ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${DOCSDIR} .endfor cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}/${DOCSDIR} @@ -174,30 +174,30 @@ .endfor post-install: - @${FIND} -s ${STAGEDIR}${WWWDIR} -type f '(' -name '*.orig' -or -name '*.bak' -or -name '.gitignore' ')' -delete - @${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \ + ${FIND} -s ${STAGEDIR}${WWWDIR} -type f '(' -name '*.orig' -or -name '*.bak' -or -name '.gitignore' ')' -delete + ${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \ ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST} - # we do this file separately because it needs a different chmod/chown - # it will eventually contains secrets +# we do this file separately because it needs a different chmod/chown +# it will eventually contains secrets ${INSTALL_DATA} ${WRKSRC}/.env.example ${STAGEDIR}/${WWWDIR} - @${ECHO_CMD} "@(root,www,0750) ${WWWDIR}/.env.example" >> ${TMPPLIST} - - @${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/bootstrap/cache" >> ${TMPPLIST} - @${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage" >> ${TMPPLIST} - @${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage/framework/cache" >> ${TMPPLIST} - @${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage/framework/sessions" >> ${TMPPLIST} - @${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage/framework/views" >> ${TMPPLIST} - @${ECHO_CMD} "@dir(www,www,0775) /var/log/${PORTNAME}" >> ${TMPPLIST} - @${ECHO_CMD} "@dir(www,www,0775) /var/db/${PORTNAME}" >> ${TMPPLIST} - @${ECHO_CMD} "@dir(www,www,0775) /var/run/${PORTNAME}" >> ${TMPPLIST} -.for f in ${OTHER_DIRS} - @${ECHO_CMD} "@dir(root,www,0775) ${WWWDIR}/${f}" >> ${TMPPLIST} + ${ECHO_CMD} "@(root,www,0750) ${WWWDIR}/.env.example" >> ${TMPPLIST} + + ${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/bootstrap/cache" >> ${TMPPLIST} + ${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage" >> ${TMPPLIST} + ${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage/framework/cache" >> ${TMPPLIST} + ${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage/framework/sessions" >> ${TMPPLIST} + ${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/storage/framework/views" >> ${TMPPLIST} + ${ECHO_CMD} "@dir(www,www,0775) /var/log/${PORTNAME}" >> ${TMPPLIST} + ${ECHO_CMD} "@dir(www,www,0775) /var/db/${PORTNAME}" >> ${TMPPLIST} + ${ECHO_CMD} "@dir(www,www,0775) /var/run/${PORTNAME}" >> ${TMPPLIST} +.for f in ${_OTHER_DIRS} + ${ECHO_CMD} "@dir(root,www,0775) ${WWWDIR}/${f}" >> ${TMPPLIST} .endfor - @${MKDIR} ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d ${INSTALL_DATA} ${FILESDIR}/newsyslog.conf.sample ${STAGEDIR}/${WWWDIR}/contrib/newsyslog.conf.sample - @${ECHO_CMD} "@dir etc/newsyslog.conf.d" >> ${TMPPLIST} - @${ECHO_CMD} "@sample ${WWWDIR}/contrib/newsyslog.conf.sample etc/newsyslog.conf.d/librenms.conf" >> ${TMPPLIST} + ${ECHO_CMD} "@dir etc/newsyslog.conf.d" >> ${TMPPLIST} + ${ECHO_CMD} "@sample ${WWWDIR}/contrib/newsyslog.conf.sample etc/newsyslog.conf.d/librenms.conf" >> ${TMPPLIST} .include diff --git a/net-mgmt/librenms/files/patch-LibreNMS_Util_Version.php b/net-mgmt/librenms/files/patch-LibreNMS_Util_Version.php --- a/net-mgmt/librenms/files/patch-LibreNMS_Util_Version.php +++ b/net-mgmt/librenms/files/patch-LibreNMS_Util_Version.php @@ -5,7 +5,7 @@ public static function python() { - $proc = new Process(['python3', '--version']); -+ $proc = new Process(['/usr/local/bin/python3', '--version']); ++ $proc = new Process(['%%LOCALBASE%%/bin/python3', '--version']); $proc->run(); if ($proc->getExitCode() !== 0) { diff --git a/net-mgmt/librenms/files/patch-LibreNMS_Validations_Php.php b/net-mgmt/librenms/files/patch-LibreNMS_Validations_Php.php --- a/net-mgmt/librenms/files/patch-LibreNMS_Validations_Php.php +++ b/net-mgmt/librenms/files/patch-LibreNMS_Validations_Php.php @@ -5,7 +5,7 @@ $web_version = PHP_VERSION; - $cli_version = rtrim(shell_exec('php -r "echo PHP_VERSION;"')); -+ $cli_version = rtrim(shell_exec('/usr/local/bin/php -r "echo PHP_VERSION;"')); ++ $cli_version = rtrim(shell_exec('%%LOCALBASE%%/bin/php -r "echo PHP_VERSION;"')); if (version_compare($web_version, $cli_version, '!=')) { $validator->fail("PHP version of your webserver ($web_version) does not match the cli version ($cli_version)", "If you updated PHP recently, restart php-fpm or apache to switch to the new version"); } @@ -14,7 +14,7 @@ $sh_tz = rtrim(shell_exec('date +%Z')); $php_tz = date('T'); - $php_cli_tz = rtrim(shell_exec('php -r "echo date(\'T\');"')); -+ $php_cli_tz = rtrim(shell_exec('/usr/local/bin/php -r "echo date(\'T\');"')); ++ $php_cli_tz = rtrim(shell_exec('%%LOCALBASE%%/bin/php -r "echo date(\'T\');"')); if (empty($ini_tz)) { // make sure timezone is set @@ -23,7 +23,7 @@ // some distros have different php.ini for cli and the web server if ($sh_tz !== $php_cli_tz) { - $ini_file = rtrim(shell_exec('php -r "echo php_ini_loaded_file();"')); -+ $ini_file = rtrim(shell_exec('/usr/local/bin/php -r "echo php_ini_loaded_file();"')); ++ $ini_file = rtrim(shell_exec('%%LOCALBASE%%/bin/php -r "echo php_ini_loaded_file();"')); $validator->fail( "The CLI php.ini ($php_cli_tz) timezone is different than your system's timezone ($sh_tz)", "Edit your CLI ini file $ini_file and set the correct timezone ($sh_tz)." diff --git a/net-mgmt/librenms/files/patch-config.php.default b/net-mgmt/librenms/files/patch-config.php.default --- a/net-mgmt/librenms/files/patch-config.php.default +++ b/net-mgmt/librenms/files/patch-config.php.default @@ -47,18 +47,18 @@ +# These paths are supplied by the FreeBSD port and correct those found in +# the code. + -+$config['snmpwalk'] = '/usr/local/bin/snmpwalk'; -+$config['snmpget'] = '/usr/local/bin/snmpget'; -+$config['snmpbulkwalk'] = '/usr/local/bin/snmpbulkwalk'; -+$config['snmptranslate'] = '/usr/local/bin/snmptranslate'; ++$config['snmpwalk'] = '%%LOCALBASE%%/bin/snmpwalk'; ++$config['snmpget'] = '%%LOCALBASE%%/bin/snmpget'; ++$config['snmpbulkwalk'] = '%%LOCALBASE%%/bin/snmpbulkwalk'; ++$config['snmptranslate'] = '%%LOCALBASE%%/bin/snmptranslate'; + +$config['ping'] = '/sbin/ping'; -+$config['mtr'] = '/usr/local/bin/mtr'; -+$config['nmap'] = '/usr/local/bin/nmap'; ++$config['mtr'] = '%%LOCALBASE%%/bin/mtr'; ++$config['nmap'] = '%%LOCALBASE%%/bin/nmap'; + -+$config['nagios_plugins'] = '/usr/local/libexec/nagios'; -+$config['ipmitool'] = '/usr/local/bin/ipmitool'; -+$config['virsh'] = '/usr/local/bin/virsh'; -+$config['dot'] = '/usr/local/bin/dot'; -+$config['sfdp'] = '/usr/local/bin/sfdp'; -+$config['nfdump'] = '/usr/local/bin/nfdump'; ++$config['nagios_plugins'] = '%%LOCALBASE%%/libexec/nagios'; ++$config['ipmitool'] = '%%LOCALBASE%%/bin/ipmitool'; ++$config['virsh'] = '%%LOCALBASE%%/bin/virsh'; ++$config['dot'] = '%%LOCALBASE%%/bin/dot'; ++$config['sfdp'] = '%%LOCALBASE%%/bin/sfdp'; ++$config['nfdump'] = '%%LOCALBASE%%/bin/nfdump'; diff --git a/net-mgmt/librenms/files/patch-poller-wrapper.py b/net-mgmt/librenms/files/patch-poller-wrapper.py --- a/net-mgmt/librenms/files/patch-poller-wrapper.py +++ b/net-mgmt/librenms/files/patch-poller-wrapper.py @@ -4,7 +4,7 @@ print('ERROR: %s' % exc) sys.exit(2) -+os.environ['PATH'] += ':/usr/local/sbin:/usr/local/bin' ++os.environ['PATH'] += ':%%LOCALBASE%%/sbin:%%LOCALBASE%%/bin' + APP_NAME = "poller_wrapper" diff --git a/net-mgmt/librenms/files/pkg-message.in b/net-mgmt/librenms/files/pkg-message.in --- a/net-mgmt/librenms/files/pkg-message.in +++ b/net-mgmt/librenms/files/pkg-message.in @@ -9,7 +9,7 @@ - Installation directory is %%WWWDIR%% NOTE: setting sql-mode="" is no longer required. You can remove -it from /usr/local/etc/mysql/my.cnf +it from %%LOCALBASE%%/etc/mysql/my.cnf However, 'lower_case_table_names=0' is required.