diff --git a/net-mgmt/librenms/Makefile b/net-mgmt/librenms/Makefile index 89266de59e40..4d8eb30ab1a2 100644 --- a/net-mgmt/librenms/Makefile +++ b/net-mgmt/librenms/Makefile @@ -1,261 +1,261 @@ PORTNAME= librenms -PORTVERSION= 24.10.1 +PORTVERSION= 24.11.0 PORTEPOCH= 1 CATEGORIES= net-mgmt MASTER_SITES= LOCAL/dvl:vendor DISTFILES= ${PORTNAME}-vendor-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}${EXTRACT_SUFX}:vendor MAINTAINER= dvl@FreeBSD.org COMMENT= Autodiscovering PHP/MySQL/SNMP based network monitoring WWW= https://www.librenms.org LICENSE= GPLv3 # perhaps we also need python-memcache python-mysqldb RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pymysql>0:databases/py-pymysql@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}python-dotenv>0:www/py-python-dotenv@${PY_FLAVOR} \ bash:shells/bash \ dot:graphics/graphviz \ rrdtool:databases/rrdtool \ snmpget:net-mgmt/net-snmp \ sudo:security/sudo USES= cpe php python shebangfix USE_GITHUB= yes # php hash/json/openssl extension is required but it's statically linked in default php USE_PHP= ctype curl dom fileinfo filter gd iconv ldap mbstring mysqli \ pdo pdo_mysql phar posix session simplexml snmp sockets \ tokenizer xml xmlwriter zip zlib USE_RC_SUBR= librenms SHEBANG_FILES= ../${PORTNAME}-vendor-${PORTVERSION}/paragonie/random_compat/build-phar.sh \ ../${PORTNAME}-vendor-${PORTVERSION}/tecnickcom/tcpdf/tools/tcpdf_addfont.php \ ../librenms-vendor-${PORTVERSION}/bin/carbon \ ../librenms-vendor-${PORTVERSION}/bin/doctrine-dbal \ ../librenms-vendor-${PORTVERSION}/bin/patch-type-declarations \ ../librenms-vendor-${PORTVERSION}/bin/php-parse \ ../librenms-vendor-${PORTVERSION}/bin/psysh \ ../librenms-vendor-${PORTVERSION}/bin/validate-json \ ../librenms-vendor-${PORTVERSION}/bin/var-dump-server \ ../librenms-vendor-${PORTVERSION}/bin/yaml-lint \ ../librenms-vendor-${PORTVERSION}/doctrine/dbal/bin/doctrine-dbal \ ../librenms-vendor-${PORTVERSION}/justinrainbow/json-schema/bin/validate-json \ ../librenms-vendor-${PORTVERSION}/nesbot/carbon/bin/carbon \ ../librenms-vendor-${PORTVERSION}/nikic/php-parser/bin/php-parse \ ../librenms-vendor-${PORTVERSION}/psy/psysh/bin/psysh \ ../librenms-vendor-${PORTVERSION}/symfony/error-handler/Resources/bin/extract-tentative-return-types.php \ ../librenms-vendor-${PORTVERSION}/symfony/error-handler/Resources/bin/patch-type-declarations \ ../librenms-vendor-${PORTVERSION}/symfony/var-dumper/Resources/bin/var-dump-server \ ../librenms-vendor-${PORTVERSION}/symfony/yaml/Resources/bin/yaml-lint \ addhost.php alerts.php artisan billing-calculate.php \ check-services.php config_to_json.php cronic daily.php daily.sh \ delhost.php discovery-wrapper.py discovery.php dist-pollers.php \ irc.php librenms-service.py LibreNMS/command_runner.py \ LibreNMS/wrapper.py lnms misc/lnms-completion.bash \ misc/smokeping-debian.example misc/smokeping-rhel.example \ pbin.sh ping.php poll-billing.php poller-wrapper.py poller.php \ renamehost.php scripts/auth_test.php scripts/bash_lint.sh \ scripts/check_requirements.py scripts/collect-port-polling.php \ scripts/collect-snmp-data.php scripts/composer_wrapper.php \ scripts/dynamic_check_requirements.py scripts/gen_rancid.php \ scripts/gen_smokeping.php scripts/git-pre-commit-hook.sh \ scripts/github-remove scripts/ifAlias scripts/json-app-tool.php \ scripts/manage_bills.php \ 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/new-os.php \ scripts/pre-commit.php scripts/purge-port.php \ scripts/removespikes.php scripts/removespikes.pl \ scripts/rename-mibs.php scripts/rrdstep.php \ scripts/save-test-data.php scripts/syslog-notify-oxidized.php \ scripts/test-alert.php scripts/test-template.php \ scripts/tune_port.php scripts/watchmaillog/watchmaillog.pl \ snmp-scan.py snmptrap.php syslog.php validate.php NO_ARCH= yes NO_BUILD= yes SUB_FILES+= pkg-message SUB_LIST+= GROUP="${WWWGRP}" \ PHP="${PHPBASE}/bin/php" \ PYTHON=${PYTHON_CMD} \ PYTHON_VERSION=${PYTHON_VERSION} \ USER="${WWWOWN}" \ WWWDIR="${WWWDIR}" USERS= www PORTDOCS= * PORTEXAMPLES= snmpd.conf.example DBDIR= /var/db/${PORTNAME} 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 IPMITOOL_DESC= Enable support for monitoring hardware IPMI MYSQLD_DESC= Use local MySQL server WMIC_DESC= Enable support for WMI polling 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= mtr:net/mtr X11_RUN_DEPENDS_OFF= mtr:net/mtr@nox11 X11_USES= magick:6 X11_USES_OFF= magick:6,nox11 _ROOT_FILES= addhost.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= 1730905440 +_RELEASE_TIMESTAMP= 1732114734 _ROOT_DIRS= LibreNMS app bootstrap config database doc html \ includes lang licenses mibs misc resources routes \ scripts tests _DOCS= AUTHORS.md CHANGELOG.md CONTRIBUTING.md LICENSE.txt \ README.md # these are directories which require a generic @DIR entry in pkg-plist _STORAGE_DIRS= app app/public debugbar framework framework/cache \ framework/cache/data framework/sessions framework/testing \ framework/views logs # these are directories which require a generic @DIR entry in pkg-plist _OTHER_DIRS= database/seeders/config html/plugins html/js/lang \ resources/views/overview/custom tests/Browser/console \ tests/Browser/source tests/Browser/screenshots \ vendor/librenms/laravel-vue-i18n-generator/tests/output \ vendor/symfony/string/Resources/bin post-patch: ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/LibreNMS/__init__.py \ ${WRKSRC}/LibreNMS/wrapper.py \ ${WRKSRC}/LibreNMS/Util/Version.php \ ${WRKSRC}/LibreNMS/Validations/Php.php \ ${WRKSRC}/LibreNMS/Validations/System.php \ ${WRKSRC}/config.php.default \ ${WRKSRC}/includes/html/output/capture.inc.php \ ${WRKSRC}/poller-wrapper.py \ ${WRKSRC}/snmp-scan.py \ ${WRKSRC}/daily.sh ${REINPLACE_CMD} 's|%%PORTVERSION%%|${PORTVERSION}|g' ${WRKSRC}/LibreNMS/Util/Version.php ${REINPLACE_CMD} 's|%%RELEASE_TIMESTAMP%%|${_RELEASE_TIMESTAMP}|g' ${WRKSRC}/LibreNMS/Util/Version.php ${REINPLACE_CMD} 's|%%WWWDIR%%|${WWWDIR}|g' ${WRKSRC}/dist/librenms-scheduler.cron ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/dist/librenms-scheduler.cron ${REINPLACE_CMD} 's|%%USER%%|${WWWOWN}|g' ${WRKSRC}/dist/librenms-scheduler.cron ${RM} ${WRKSRC}/LibreNMS/Validations/Updates.php ${RM} -rf ${WRKSRC}/logs do-install: ${MKDIR} ${STAGEDIR}/${WWWDIR} .for dir in ${_ROOT_DIRS} ${MKDIR} ${STAGEDIR}/${WWWDIR}/${dir} (cd ${WRKSRC}/${dir} && ${COPYTREE_SHARE} . ${STAGEDIR}/${WWWDIR}/${dir}) .endfor .for f in ${_ROOT_FILES} ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR} .endfor .for f in ${_SCRIPT_FILES} ${INSTALL_SCRIPT} ${WRKSRC}/${f} ${STAGEDIR}/${WWWDIR} .endfor # avoid: Error: lnms file is owned by root, it should be owned and ran by a non-privileged user ${ECHO_CMD} "@(www,wheel,0555) www/${PORTNAME}/lnms" >> ${TMPPLIST} ${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. ${MV} ${STAGEDIR}/${WWWDIR}/vendor/bootstrap-cache/* ${STAGEDIR}/${WWWDIR}/bootstrap/cache/ ${RM} -rf ${STAGEDIR}/${WWWDIR}/vendor/bootstrap-cache # 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 # Files in scripts dir should be executable ${FIND} ${STAGEDIR}/${WWWDIR}/scripts -type f -exec ${CHMOD} +x {} \; # Ensure PHP and Python scripts are executable ${FIND} ${STAGEDIR}/${WWWDIR} -type f -name '*.py' -or -type f -name \ '*.php' -exec ${CHMOD} +x {} \; # these values should be outside the www tree now ${MKDIR} ${STAGEDIR}/var/log/${PORTNAME} ${MKDIR} ${STAGEDIR}${DBDIR} ${MKDIR} ${STAGEDIR}${DBDIR}/storage ${MKDIR} ${STAGEDIR}/var/run/${PORTNAME} (cd ${STAGEDIR}/${WWWDIR} && ${LN} -s ../../../..${DBDIR}/storage) do-install-DOCS-on: ${MKDIR} ${STAGEDIR}/${DOCSDIR} .for f in ${_DOCS} ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${DOCSDIR} .endfor cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}/${DOCSDIR} do-install-EXAMPLES-on: ${MKDIR} ${STAGEDIR}/${EXAMPLESDIR} .for f in ${PORTEXAMPLES} ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}/${EXAMPLESDIR} .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} | \ ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' | grep -v www/librenms/lnms >> ${TMPPLIST} # 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} "@dir(www,www,0775) ${DBDIR}/storage" >> ${TMPPLIST} ${ECHO_CMD} "@dir(www,www,0775) ${DBDIR}" >> ${TMPPLIST} ${ECHO_CMD} "@dir(www,www,0775) ${WWWDIR}/html/images/custommap/background" >> ${TMPPLIST} ${ECHO_CMD} "@dir(www,www,0775) /var/log/${PORTNAME}" >> ${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) /var/run/${PORTNAME}" >> ${TMPPLIST} .for f in ${_STORAGE_DIRS} ${MKDIR} ${STAGEDIR}/${DBDIR}/storage/${f} ${ECHO_CMD} "@dir(root,www,0775) ${DBDIR}/storage/${f}" >> ${TMPPLIST} .endfor .for f in ${_OTHER_DIRS} ${ECHO_CMD} "@dir(root,www,0775) ${WWWDIR}/${f}" >> ${TMPPLIST} .endfor ${MKDIR} ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d ${INSTALL_DATA} ${FILESDIR}/newsyslog.conf.sample ${STAGEDIR}/${PREFIX}/etc/newsyslog.conf.d/librenms.conf.sample ${ECHO_CMD} "@dir etc/newsyslog.conf.d" >> ${TMPPLIST} ${ECHO_CMD} "@sample etc/newsyslog.conf.d/librenms.conf.sample" >> ${TMPPLIST} ${MKDIR} ${STAGEDIR}/${WWWDIR} ${STAGEDIR}${PREFIX}/etc/cron.d/ ${INSTALL_DATA} ${WRKSRC}/dist/librenms-scheduler.cron ${STAGEDIR}${PREFIX}/etc/cron.d/librenms ${ECHO_CMD} "@dir etc/cron.d" >> ${TMPPLIST} ${ECHO_CMD} "etc/cron.d/librenms" >> ${TMPPLIST} # avoid the "Global lnms shortcut not installed." validataion warning. # this can also be run as root. ${RLN} ${STAGEDIR}${WWWDIR}/lnms ${STAGEDIR}${PREFIX}/bin/lnms ${ECHO_CMD} "bin/lnms" >> ${TMPPLIST} .include diff --git a/net-mgmt/librenms/distinfo b/net-mgmt/librenms/distinfo index 8886403bf35e..bfd6e01422f8 100644 --- a/net-mgmt/librenms/distinfo +++ b/net-mgmt/librenms/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1730906267 -SHA256 (librenms-vendor-24.10.1.tar.gz) = 86671d55e9f8f6079d64f28fc89716174018603cb62f6b680e432ef2e6f76594 -SIZE (librenms-vendor-24.10.1.tar.gz) = 28763335 -SHA256 (librenms-librenms-24.10.1_GH0.tar.gz) = 69f831145f54326619636dfa2469e116a1b524ac4fc36aea0f418bdd0ee1246f -SIZE (librenms-librenms-24.10.1_GH0.tar.gz) = 64313543 +TIMESTAMP = 1732119849 +SHA256 (librenms-vendor-24.11.0.tar.gz) = 1014e59cd1a70a908307d72bd4ed54a6cb9a59bd37195199bd67e76290ec7fa6 +SIZE (librenms-vendor-24.11.0.tar.gz) = 28809754 +SHA256 (librenms-librenms-24.11.0_GH0.tar.gz) = de8f81f244852dabc82dc31a01509d5cc2a05486965007ba19d1dcf55e06e2c6 +SIZE (librenms-librenms-24.11.0_GH0.tar.gz) = 64503103 diff --git a/net-mgmt/librenms/files/patch-daily.sh b/net-mgmt/librenms/files/patch-daily.sh index 90e5b2f4a48e..635c298b1e85 100644 --- a/net-mgmt/librenms/files/patch-daily.sh +++ b/net-mgmt/librenms/files/patch-daily.sh @@ -1,76 +1,78 @@ ---- daily.sh.orig 2024-07-09 01:33:51 UTC +--- daily.sh.orig 2024-11-20 22:56:30 UTC +++ daily.sh @@ -23,11 +23,11 @@ LIBRENMS_DIR=$(dirname "$DAILY_SCRIPT") # define DAILY_SCRIPT as the full path to this script and LIBRENMS_DIR as the directory this script is in DAILY_SCRIPT=$(readlink -f "$0") LIBRENMS_DIR=$(dirname "$DAILY_SCRIPT") -COMPOSER="php ${LIBRENMS_DIR}/scripts/composer_wrapper.php --no-interaction" +COMPOSER="%%LOCALBASE%%/bin/php ${LIBRENMS_DIR}/scripts/composer_wrapper.php --no-interaction" # set log_file, using librenms 'log_dir' config setting, if set # otherwise we default to /logs -LOG_DIR=$(php -r "@include '${LIBRENMS_DIR}/config.php'; echo isset(\$config['log_dir']) ? \$config['log_dir'] : '${LIBRENMS_DIR}/logs';") +LOG_DIR=$(%%LOCALBASE%%/bin/php -r "@include '${LIBRENMS_DIR}/config.php'; echo isset(\$config['log_dir']) ? \$config['log_dir'] : '${LIBRENMS_DIR}/logs';") # get the librenms user # shellcheck source=.env.example @@ -60,7 +60,7 @@ status_run() { printf "%-50s" "${arg_text}" echo "${arg_text}" >> "${log_file}" - tmp=$(bash -c "${arg_command}" 2>&1) + tmp=$(%%LOCALBASE%%/bin/bash -c "${arg_command}" 2>&1) exit_code=$? echo "${tmp}" >> "${log_file}" echo "Returned: ${exit_code}" >> "${log_file}" @@ -72,7 +72,7 @@ status_run() { else printf " \\033[0;31mFAIL\\033[0m\\n" if [[ "${arg_option}" == "update" ]]; then - php "${LIBRENMS_DIR}/daily.php" -f notify -o "${tmp}" + %%LOCALBASE%%/bin/php "${LIBRENMS_DIR}/daily.php" -f notify -o "${tmp}" fi if [[ -n "${tmp}" ]]; then # print output in case of failure @@ -99,7 +99,7 @@ call_daily_php() { args=("$@") for arg in "${args[@]}"; do - php "${LIBRENMS_DIR}/daily.php" -f "${arg}" + %%LOCALBASE%%/bin/php "${LIBRENMS_DIR}/daily.php" -f "${arg}" done } @@ -121,7 +121,7 @@ set_notifiable_result() { arg_type=$1 arg_result=$2 - php "${LIBRENMS_DIR}/daily.php" -f handle_notifiable -t "${arg_type}" -r "${arg_result}" + %%LOCALBASE%%/bin/php "${LIBRENMS_DIR}/daily.php" -f handle_notifiable -t "${arg_type}" -r "${arg_result}" } ####################################### -@@ -135,10 +135,10 @@ check_dependencies() { +@@ -135,11 +135,11 @@ check_dependencies() { branch=$(git rev-parse --abbrev-ref HEAD) scripts/check_requirements.py > /dev/null 2>&1 || pip3 install -r requirements.txt > /dev/null 2>&1 - ver_71=$(php -r "echo (int)version_compare(PHP_VERSION, '7.1.3', '<');") - ver_72=$(php -r "echo (int)version_compare(PHP_VERSION, '7.2.5', '<');") - ver_73=$(php -r "echo (int)version_compare(PHP_VERSION, '7.3', '<');") - ver_81=$(php -r "echo (int)version_compare(PHP_VERSION, '8.1', '<');") +- ver_82=$(php -r "echo (int)version_compare(PHP_VERSION, '8.2', '<');") + ver_71=$(%%LOCALBASE%%/bin/php -r "echo (int)version_compare(PHP_VERSION, '7.1.3', '<');") + ver_72=$(%%LOCALBASE%%/bin/php -r "echo (int)version_compare(PHP_VERSION, '7.2.5', '<');") + ver_73=$(%%LOCALBASE%%/bin/php -r "echo (int)version_compare(PHP_VERSION, '7.3', '<');") + ver_81=$(%%LOCALBASE%%/bin/php -r "echo (int)version_compare(PHP_VERSION, '8.1', '<');") ++ ver_82=$(%%LOCALBASE%%/bin/php -r "echo (int)version_compare(PHP_VERSION, '8.2', '<');") python3=$(python3 -c "import sys;print(int(sys.version_info < (3, 4)))" 2> /dev/null) python_deps=$("${LIBRENMS_DIR}/scripts/check_requirements.py" > /dev/null 2>&1; echo $?) phpver="master" -@@ -276,7 +276,7 @@ main () { +@@ -282,7 +282,7 @@ main () { fi if [[ -z "$arg" ]]; then - up=$(php daily.php -f update >&2; echo $?) + up=$(%%LOCALBASE%%/bin/php daily.php -f update >&2; echo $?) if [[ "$up" == "0" ]]; then "${DAILY_SCRIPT}" no-code-update set_notifiable_result update 1 # make sure there are no update notifications if update is disabled