aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPalle Girgensohn <girgen@FreeBSD.org>2026-03-20 10:22:40 +0000
committerPalle Girgensohn <girgen@FreeBSD.org>2026-03-20 10:23:49 +0000
commitbdf9ed700377c4f84af2038e36d012d75a68f06f (patch)
treecdbc44ceab60e53a1f4cb3ce48f1010cc1ff6629
parent83ce88a97da4239c5b038ce8e7f60bd19c12e6bc (diff)
sysutils/beats9: Remove in favour of beats9N ports
This port was accidentally commited in parallel with the work done by Saro and vvd@ for the entire elastic eco system keeping separate ports for all three active elastic branches, beats8, beats92 and beats93.
-rw-r--r--MOVED1
-rw-r--r--sysutils/Makefile1
-rw-r--r--sysutils/beats9/Makefile133
-rw-r--r--sysutils/beats9/distinfo11
-rw-r--r--sysutils/beats9/files/auditbeat.in51
-rw-r--r--sysutils/beats9/files/filebeat.in43
-rw-r--r--sysutils/beats9/files/heartbeat.in44
-rw-r--r--sysutils/beats9/files/metricbeat.in51
-rw-r--r--sysutils/beats9/files/packetbeat.in43
-rw-r--r--sysutils/beats9/files/patch-auditbeat_auditbeat.reference.yml20
-rw-r--r--sysutils/beats9/files/patch-auditbeat_auditbeat.yml13
-rw-r--r--sysutils/beats9/files/patch-dev-tools_mage_settings.go20
-rw-r--r--sysutils/beats9/files/patch-filebeat_filebeat.reference.yml26
-rw-r--r--sysutils/beats9/files/patch-filebeat_filebeat.yml33
-rw-r--r--sysutils/beats9/files/patch-go-sysinfo1314
-rw-r--r--sysutils/beats9/files/patch-heartbeat_heartbeat.reference.yml20
-rw-r--r--sysutils/beats9/files/patch-heartbeat_heartbeat.yml11
-rw-r--r--sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_config.go11
-rw-r--r--sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_docker.go20
-rw-r--r--sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_config.go11
-rw-r--r--sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_kubernetes.go11
-rw-r--r--sysutils/beats9/files/patch-libbeat_scripts_Makefile26
-rw-r--r--sysutils/beats9/files/patch-metricbeat_metricbeat.reference.yml20
-rw-r--r--sysutils/beats9/files/patch-metricbeat_metricbeat.yml33
-rw-r--r--sysutils/beats9/files/patch-packetbeat_packetbeat.reference.yml11
-rw-r--r--sysutils/beats9/files/patch-packetbeat_packetbeat.yml23
-rw-r--r--sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_client.go13
-rw-r--r--sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_watcher.go13
-rw-r--r--sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__freebsd.go10
-rw-r--r--sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__procfs__common.go20
-rw-r--r--sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_system_filesystem_fs__unix.go14
-rw-r--r--sysutils/beats9/files/patch-vendor_modules.txt10
-rw-r--r--sysutils/beats9/files/pkg-message.in10
-rw-r--r--sysutils/beats9/pkg-descr18
-rw-r--r--sysutils/beats9/pkg-plist21
35 files changed, 1 insertions, 2129 deletions
diff --git a/MOVED b/MOVED
index 03d710b20e1f..10011fefeb63 100644
--- a/MOVED
+++ b/MOVED
@@ -5169,3 +5169,4 @@ emulators/ppsspp-qt5|emulators/ppsspp|2026-03-15|Qt5 is end of life, please use
devel/py-marshmallow-enum||2026-03-15|Has expired: Upstream repository has been archived on Oct 19, 2022
java/openjdk20||2026-03-15|Has expired: No longer supported by upstream
textproc/py-en-core-web-sm|textproc/py-en-core-web-sm|2026-03-17|Add py- prefix to match Python package name
+sysutils/beats9|sysutils/beats93|2026-03-20|Use Beats port with preferred major.minor number instead
diff --git a/sysutils/Makefile b/sysutils/Makefile
index e1a527047d45..574146deecde 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -117,7 +117,6 @@
SUBDIR += bchunk
SUBDIR += beadm
SUBDIR += beats8
- SUBDIR += beats9
SUBDIR += beats91
SUBDIR += beats92
SUBDIR += beats93
diff --git a/sysutils/beats9/Makefile b/sysutils/beats9/Makefile
deleted file mode 100644
index 642e0d19e048..000000000000
--- a/sysutils/beats9/Makefile
+++ /dev/null
@@ -1,133 +0,0 @@
-PORTNAME= beats
-DISTVERSIONPREFIX= v
-DISTVERSION= 9.3.1
-CATEGORIES= sysutils
-MASTER_SITES= https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${DISTVERSIONFULL}/:gomod
-PKGNAMESUFFIX?= 9
-DISTFILES= go.mod:gomod
-
-MAINTAINER= elastic@FreeBSD.org
-COMMENT= Send logs, network, metrics and heartbeat to Elasticsearch or Logstash
-WWW= https://www.elastic.co/products/beats/
-
-LICENSE= APACHE20
-
-USES= go:modules
-USE_GITHUB= yes
-
-GH_ACCOUNT= elastic
-
-USE_RC_SUBR= ${GO_TARGET:C,\./,,g}
-
-GO_MODULE= github.com/elastic/beats/v9
-CGO_CFLAGS= -I.
-CGO_LDFLAGS= -L.
-MAKE_ENV+= GOBUILD_FLAGS="-mod=vendor"
-
-CONFLICTS= beats6 beats7 beats8
-
-PORTSCOUT= limit:^9
-
-SUB_FILES= pkg-message
-
-OPTIONS_DEFINE= AUDITBEAT FILEBEAT HEARTBEAT METRICBEAT PACKETBEAT
-OPTIONS_DEFAULT= FILEBEAT HEARTBEAT METRICBEAT
-OPTIONS_SUB= yes
-
-AUDITBEAT_DESC= Auditbeat
-FILEBEAT_DESC= Filebeat
-HEARTBEAT_DESC= Heartbeat
-METRICBEAT_DESC= Metricbeat
-PACKETBEAT_DESC= Packetbeat
-AUDITBEAT_MASTER_SITES= https://artifacts.elastic.co/downloads/beats/auditbeat/:auditbeat
-AUDITBEAT_DISTFILES= auditbeat-${DISTVERSION}-darwin-x86_64.tar.gz:auditbeat
-AUDITBEAT_VARS= GO_TARGET+=./auditbeat
-FILEBEAT_MASTER_SITES= https://artifacts.elastic.co/downloads/beats/filebeat/:filebeat
-FILEBEAT_DISTFILES= filebeat-${DISTVERSION}-darwin-x86_64.tar.gz:filebeat
-FILEBEAT_VARS= GO_TARGET+=./filebeat
-HEARTBEAT_MASTER_SITES= https://artifacts.elastic.co/downloads/beats/heartbeat/:heartbeat
-HEARTBEAT_DISTFILES= heartbeat-${DISTVERSION}-darwin-x86_64.tar.gz:heartbeat
-HEARTBEAT_VARS= GO_TARGET+=./heartbeat
-METRICBEAT_MASTER_SITES= https://artifacts.elastic.co/downloads/beats/metricbeat/:metricbeat
-METRICBEAT_DISTFILES= metricbeat-${DISTVERSION}-darwin-x86_64.tar.gz:metricbeat
-METRICBEAT_VARS= GO_TARGET+=./metricbeat
-PACKETBEAT_MASTER_SITES= https://artifacts.elastic.co/downloads/beats/packetbeat/:packetbeat
-PACKETBEAT_DISTFILES= packetbeat-${DISTVERSION}-darwin-x86_64.tar.gz:packetbeat
-PACKETBEAT_VARS= CGO_CFLAGS+=-I/usr/include \
- CGO_LDFLAGS+=-L/usr/lib \
- GO_TARGET+=./packetbeat
-
-.include <bsd.port.options.mk>
-
-post-patch:
- ${REINPLACE_CMD} -e "s|%%BEATSVERSION%%|v${PORTVERSION}|g" ${WRKSRC}/dev-tools/mage/settings.go
-.for BEATMOD in ${GO_TARGET:C,\./,,g}
- ${REINPLACE_CMD} -e "s|%%DATADIR%%|${DATADIR}|g" \
- ${WRKSRC}/${BEATMOD}/${BEATMOD}.yml ${WRKSRC}/${BEATMOD}/${BEATMOD}.reference.yml
-.endfor
-
-do-install:
- ${MKDIR} ${STAGEDIR}${ETCDIR}
-.for BEATMOD in ${GO_TARGET:C,^\./,,g}
- ${MKDIR} ${STAGEDIR}/var/db/beats/${BEATMOD} && \
- ${INSTALL_PROGRAM} ${WRKDIR}/bin/${BEATMOD} \
- ${STAGEDIR}${PREFIX}/sbin && \
- ${INSTALL_DATA} ${WRKSRC}/${BEATMOD}/${BEATMOD}.yml \
- ${STAGEDIR}${ETCDIR}/${BEATMOD}.yml.sample && \
- ${INSTALL_DATA} ${WRKSRC}/${BEATMOD}/${BEATMOD}.reference.yml \
- ${STAGEDIR}${ETCDIR}/${BEATMOD}.yml.reference
- (MODULE_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/module; \
- if [ -d $${MODULE_SRC} ]; then \
- MODULE_DEST=${STAGEDIR}${DATADIR}/${BEATMOD}/module && \
- ${MKDIR} $${MODULE_DEST} && \
- cd $${MODULE_SRC} && ${COPYTREE_SHARE} . $${MODULE_DEST} && \
- cd $${MODULE_DEST} && \
- ${FIND} . -type d -empty | ${SORT} | \
- ${SED} -e 's,^\.,@dir ${DATADIR_REL}/${BEATMOD}/module,' >> ${TMPPLIST} && \
- ${FIND} . -not -type d | ${SORT} | \
- ${SED} -e 's,^\.,${DATADIR_REL}/${BEATMOD}/module,' >> ${TMPPLIST}; \
- fi) && \
- (MODULESD_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/modules.d; \
- if [ -d $${MODULESD_SRC} ]; then \
- MODULESD_DEST=${STAGEDIR}${EXAMPLESDIR}/${BEATMOD}.modules.d && \
- ${MKDIR} $${MODULESD_DEST} && \
- cd $${MODULESD_SRC} && ${COPYTREE_SHARE} . $${MODULESD_DEST} && \
- cd $${MODULESD_DEST} && \
- ${FIND} . -type d -empty | ${SORT} | \
- ${SED} -e 's,^\.,@dir ${EXAMPLESDIR_REL}/${BEATMOD}.modules.d,' >> ${TMPPLIST} && \
- ${FIND} . -not -type d | ${SORT} | \
- ${SED} -e 's,^\.,${EXAMPLESDIR_REL}/${BEATMOD}.modules.d,' >> ${TMPPLIST}; \
- ${MKDIR} ${STAGEDIR}${ETCDIR}/${BEATMOD}.modules.d && \
- ${ECHO_CMD} "The modules.d files are now in ${EXAMPLESDIR}/${BEATMOD}.modules.d" > \
- ${STAGEDIR}${ETCDIR}/${BEATMOD}.modules.d/README; \
- ${ECHO_CMD} ${ETCDIR_REL}/${BEATMOD}.modules.d/README >> ${TMPPLIST}; \
- fi) && \
- (MONITORSD_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/monitors.d; \
- if [ -d $${MONITORSD_SRC} ]; then \
- MONITORSD_DEST=${STAGEDIR}${EXAMPLESDIR}/${BEATMOD}.monitors.d && \
- ${MKDIR} $${MONITORSD_DEST} && \
- cd $${MONITORSD_SRC} && ${COPYTREE_SHARE} . $${MONITORSD_DEST} && \
- cd $${MONITORSD_DEST} && \
- ${FIND} . -type d -empty | ${SORT} | \
- ${SED} -e 's,^\.,@dir ${EXAMPLESDIR_REL}/${BEATMOD}.monitors.d,' >> ${TMPPLIST} && \
- ${FIND} . -not -type d | ${SORT} | \
- ${SED} -e 's,^\.,${EXAMPLESDIR_REL}/${BEATMOD}.monitors.d,' >> ${TMPPLIST}; \
- ${MKDIR} ${STAGEDIR}${ETCDIR}/${BEATMOD}.monitors.d && \
- ${ECHO_CMD} "The monitors.d files are now in ${EXAMPLESDIR}/${BEATMOD}.monitors.d" > \
- ${STAGEDIR}${ETCDIR}/${BEATMOD}.monitors.d/README; \
- ${ECHO_CMD} ${ETCDIR_REL}/${BEATMOD}.monitors.d/README >> ${TMPPLIST}; \
- fi) && \
- (KIBANA_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/kibana; \
- if [ -d $${KIBANA_SRC} ]; then \
- KIBANA_PATH=${STAGEDIR}${DATADIR}/${BEATMOD}/kibana; \
- ${MKDIR} $${KIBANA_PATH} && \
- cd $${KIBANA_SRC} && ${COPYTREE_SHARE} . $${KIBANA_PATH}; \
- cd $${KIBANA_PATH} && \
- ${FIND} . -type d -empty | ${SORT} | \
- ${SED} -e 's,^\.,@dir ${DATADIR_REL}/${BEATMOD}/kibana,' >> ${TMPPLIST}; \
- ${FIND} . -not -type d | ${SORT} | \
- ${SED} -e 's,^\.,${DATADIR_REL}/${BEATMOD}/kibana,' >> ${TMPPLIST}; \
- fi)
-.endfor
-
-.include <bsd.port.mk>
diff --git a/sysutils/beats9/distinfo b/sysutils/beats9/distinfo
deleted file mode 100644
index f7a3906545ed..000000000000
--- a/sysutils/beats9/distinfo
+++ /dev/null
@@ -1,11 +0,0 @@
-TIMESTAMP = 1773752247
-SHA256 (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/go.mod) = 12a772a95a1c7e8a86e5cef7bac4ffcaf86ba08a7f5c741fa748b63f728d12cb
-SIZE (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/go.mod) = 28847
-SHA256 (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/filebeat-9.3.1-darwin-x86_64.tar.gz) = 9d1f0af9ab8ce78525496506adea24688744f8ad91eee063dc48e7763e05bcac
-SIZE (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/filebeat-9.3.1-darwin-x86_64.tar.gz) = 56132282
-SHA256 (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/heartbeat-9.3.1-darwin-x86_64.tar.gz) = 60e5169dc1d5454faf3d5ca3b72b401255acb5a07f237ec18ed8b1b189ead94d
-SIZE (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/heartbeat-9.3.1-darwin-x86_64.tar.gz) = 35745443
-SHA256 (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/metricbeat-9.3.1-darwin-x86_64.tar.gz) = e8885267e1c9229e87dd4a0f81afe06bd99e2fbef1131a8914a243457d8e1172
-SIZE (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/metricbeat-9.3.1-darwin-x86_64.tar.gz) = 60065375
-SHA256 (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/elastic-beats-v9.3.1_GH0.tar.gz) = 77851327be677219aa116531e8d37c6359d59aff9ab6feff9e5f3d570a54a221
-SIZE (go/sysutils_beats9/elastic-beats-v9.3.1_GH0/elastic-beats-v9.3.1_GH0.tar.gz) = 104227700
diff --git a/sysutils/beats9/files/auditbeat.in b/sysutils/beats9/files/auditbeat.in
deleted file mode 100644
index 67909ad68d67..000000000000
--- a/sysutils/beats9/files/auditbeat.in
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/sh
-
-# PROVIDE: auditbeat
-# REQUIRE: DAEMON
-# BEFORE: LOGIN
-# KEYWORD: shutdown
-
-# Add the following lines to /etc/rc.conf to enable auditbeat:
-#
-# auditbeat_enable (bool): Set to YES to enable auditbeat
-# Default: NO
-# auditbeat_flags (str): Extra flags passed to auditbeat
-# auditbeat_config (str): auditbeat configuration directory
-# Default: ${PREFIX}/etc/beats
-# auditbeat_conffile (str): auditbeat configuration file
-# relative to ${auditbeat_conf}
-# Default: auditbeat.yml
-
-. /etc/rc.subr
-
-name="auditbeat"
-rcvar=${name}_enable
-load_rc_config $name
-
-: ${auditbeat_enable:="NO"}
-: ${auditbeat_config:="%%ETCDIR%%"}
-: ${auditbeat_conffile:="auditbeat.yml"}
-: ${auditbeat_home:="%%DATADIR%%/auditbeat"}
-: ${auditbeat_logs:="/var/log/beats"}
-: ${auditbeat_data:="/var/db/beats/auditbeat"}
-
-# daemon
-start_precmd=auditbeat_prestart
-command=/usr/sbin/daemon
-pidfile="/var/run/${name}"
-command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${auditbeat_flags} --path.config ${auditbeat_config} --path.home ${auditbeat_home} --path.data ${auditbeat_data} --path.logs ${auditbeat_logs} -c ${auditbeat_conffile}"
-
-auditbeat_prestart() {
-# Have to empty rc_flags so they don't get passed to daemon(8)
- rc_flags=""
-}
-
-# auditbeat will refuse to quit if linprocfs is mounted, and sadly requires -9
-[ -f /compat/linux/proc/cpuinfo ] && stop_cmd=auditbeat_stop
-
-auditbeat_stop() {
- pkill -9 -F ${pidfile} > /dev/null 2>&1
- pkill -9 -F ${pidfile}.child > /dev/null 2>&1
-}
-
-run_rc_command "$1"
diff --git a/sysutils/beats9/files/filebeat.in b/sysutils/beats9/files/filebeat.in
deleted file mode 100644
index 8ae08af5b398..000000000000
--- a/sysutils/beats9/files/filebeat.in
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-# PROVIDE: filebeat
-# REQUIRE: DAEMON
-# BEFORE: LOGIN
-# KEYWORD: shutdown
-
-# Add the following lines to /etc/rc.conf to enable filebeat:
-#
-# filebeat_enable (bool): Set to YES to enable filebeat
-# Default: NO
-# filebeat_flags (str): Extra flags passed to filebeat
-# filebeat_config (str): filebeat configuration directory
-# Default: ${PREFIX}/etc/beats
-# filebeat_conffile (str): filebeat configuration file
-# relative to ${filebeat_conf}
-# Default: filebeat.yml
-
-. /etc/rc.subr
-
-name="filebeat"
-rcvar=${name}_enable
-load_rc_config $name
-
-: ${filebeat_enable:="NO"}
-: ${filebeat_config:="%%ETCDIR%%"}
-: ${filebeat_conffile:="filebeat.yml"}
-: ${filebeat_home:="%%DATADIR%%/filebeat"}
-: ${filebeat_logs:="/var/log/beats"}
-: ${filebeat_data:="/var/db/beats/filebeat"}
-
-# daemon
-start_precmd=filebeat_prestart
-command=/usr/sbin/daemon
-pidfile="/var/run/${name}"
-command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${filebeat_flags} --path.config ${filebeat_config} --path.home ${filebeat_home} --path.data ${filebeat_data} --path.logs ${filebeat_logs} -c ${filebeat_conffile}"
-
-filebeat_prestart() {
-# Have to empty rc_flags so they don't get passed to daemon(8)
- rc_flags=""
-}
-
-run_rc_command "$1"
diff --git a/sysutils/beats9/files/heartbeat.in b/sysutils/beats9/files/heartbeat.in
deleted file mode 100644
index d99374ab011c..000000000000
--- a/sysutils/beats9/files/heartbeat.in
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-# PROVIDE: heartbeat
-# REQUIRE: DAEMON
-# BEFORE: LOGIN
-# KEYWORD: shutdown
-
-# Add the following lines to /etc/rc.conf to enable heartbeat:
-#
-# heartbeat_enable (bool): Set to YES to enable heartbeat
-# Default: NO
-# heartbeat_flags (str): Extra flags passed to heartbeat
-# heartbeat_config (str): heartbeat configuration directory
-# Default: ${PREFIX}/etc/beats
-# heartbeat_conffile (str): heartbeat configuration file
-# relative to ${heartbeat_conf}
-# Default: heartbeat.yml
-
-. /etc/rc.subr
-
-name="heartbeat"
-rcvar=${name}_enable
-load_rc_config $name
-
-: ${heartbeat_enable:="NO"}
-: ${heartbeat_config:="%%ETCDIR%%"}
-: ${heartbeat_conffile:="heartbeat.yml"}
-: ${heartbeat_home:="%%DATADIR%%/heartbeat"}
-: ${heartbeat_logs:="/var/log/beats"}
-: ${heartbeat_data:="/var/db/beats/heartbeat"}
-
-
-# daemon
-start_precmd=heartbeat_prestart
-command=/usr/sbin/daemon
-pidfile="/var/run/${name}"
-command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${heartbeat_flags} --path.config ${heartbeat_config} --path.home ${heartbeat_home} --path.data ${heartbeat_data} --path.logs ${heartbeat_logs} -c ${heartbeat_conffile}"
-
-heartbeat_prestart() {
-# Have to empty rc_flags so they don't get passed to daemon(8)
- rc_flags=""
-}
-
-run_rc_command "$1"
diff --git a/sysutils/beats9/files/metricbeat.in b/sysutils/beats9/files/metricbeat.in
deleted file mode 100644
index 270966c4f669..000000000000
--- a/sysutils/beats9/files/metricbeat.in
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/sh
-
-# PROVIDE: metricbeat
-# REQUIRE: DAEMON
-# BEFORE: LOGIN
-# KEYWORD: shutdown
-
-# Add the following lines to /etc/rc.conf to enable metricbeat:
-#
-# metricbeat_enable (bool): Set to YES to enable metricbeat
-# Default: NO
-# metricbeat_flags (str): Extra flags passed to metricbeat
-# metricbeat_config (str): metricbeat configuration directory
-# Default: ${PREFIX}/etc/beats
-# metricbeat_conffile (str): metricbeat configuration file
-# relative to ${metricbeat_conf}
-# Default: metricbeat.yml
-
-. /etc/rc.subr
-
-name="metricbeat"
-rcvar=${name}_enable
-load_rc_config $name
-
-: ${metricbeat_enable:="NO"}
-: ${metricbeat_config:="%%ETCDIR%%"}
-: ${metricbeat_conffile:="metricbeat.yml"}
-: ${metricbeat_home:="%%DATADIR%%/metricbeat"}
-: ${metricbeat_logs:="/var/log/beats"}
-: ${metricbeat_data:="/var/db/beats/metricbeat"}
-
-# daemon
-start_precmd=metricbeat_prestart
-command=/usr/sbin/daemon
-pidfile="/var/run/${name}"
-command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${metricbeat_flags} --path.config ${metricbeat_config} --path.home ${metricbeat_home} --path.data ${metricbeat_data} --path.logs ${metricbeat_logs} -c ${metricbeat_conffile}"
-
-metricbeat_prestart() {
-# Have to empty rc_flags so they don't get passed to daemon(8)
- rc_flags=""
-}
-
-# metricbeat will refuse to quit if linprocfs is mounted, and sadly requires -9
-[ -f /compat/linux/proc/cpuinfo ] && stop_cmd=metricbeat_stop
-
-metricbeat_stop() {
- pkill -9 -F ${pidfile} > /dev/null 2>&1
- pkill -9 -F ${pidfile}.child > /dev/null 2>&1
-}
-
-run_rc_command "$1"
diff --git a/sysutils/beats9/files/packetbeat.in b/sysutils/beats9/files/packetbeat.in
deleted file mode 100644
index 4dc21856c49a..000000000000
--- a/sysutils/beats9/files/packetbeat.in
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-# PROVIDE: packetbeat
-# REQUIRE: DAEMON
-# BEFORE: LOGIN
-# KEYWORD: shutdown
-
-# Add the following lines to /etc/rc.conf to enable packetbeat
-#
-# packetbeat_enable (bool): Set to YES to enable packetbeat
-# Default: NO
-# packetbeat_flags (str): Extra flags passed to packetbeat
-# packetbeat_config (str): packetbeat configuration directory
-# Default: ${PREFIX}/etc/beats
-# packetbeat_conffile (str): packetbeat configuration file
-# relative to ${packetbeat_conf}
-# Default: packetbeat.yml
-
-. /etc/rc.subr
-
-name="packetbeat"
-rcvar=${name}_enable
-load_rc_config $name
-
-: ${packetbeat_enable:="NO"}
-: ${packetbeat_config:="%%ETCDIR%%"}
-: ${packetbeat_conffile:="packetbeat.yml"}
-: ${packetbeat_home:="%%DATADIR%%/packetbeat"}
-: ${packetbeat_logs:="/var/log/beats"}
-: ${packetbeat_data:="/var/db/beats/packetbeat"}
-
-# daemon
-start_precmd=packetbeat_prestart
-command=/usr/sbin/daemon
-pidfile="/var/run/${name}"
-command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${packetbeat_flags} --path.config ${packetbeat_config} --path.home ${packetbeat_home} --path.data ${packetbeat_data} --path.logs ${packetbeat_logs} -c ${packetbeat_conffile}"
-
-packetbeat_prestart() {
-# Have to empty rc_flags so they don't get passed to daemon(8)
- rc_flags=""
-}
-
-run_rc_command "$1"
diff --git a/sysutils/beats9/files/patch-auditbeat_auditbeat.reference.yml b/sysutils/beats9/files/patch-auditbeat_auditbeat.reference.yml
deleted file mode 100644
index 04ef963d9642..000000000000
--- a/sysutils/beats9/files/patch-auditbeat_auditbeat.reference.yml
+++ /dev/null
@@ -1,20 +0,0 @@
---- auditbeat/auditbeat.reference.yml.orig 2025-09-15 19:57:17 UTC
-+++ auditbeat/auditbeat.reference.yml
-@@ -14,7 +14,7 @@ auditbeat.config.modules:
- auditbeat.config.modules:
-
- # Glob pattern for configuration reloading
-- path: ${path.config}/modules.d/*.yml
-+ path: ${path.config}/auditbeat.modules.d/*.yml
-
- # Period on which files under path should be checked for changes
- reload.period: 10s
-@@ -1250,7 +1250,7 @@ output.elasticsearch:
-
- # The directory from where to read the dashboards. The default is the `kibana`
- # folder in the home path.
--#setup.dashboards.directory: ${path.home}/kibana
-+#setup.dashboards.directory: %%DATADIR%%/auditbeat/kibana
-
- # The URL from where to download the dashboard archive. It is used instead of
- # the directory if it has a value.
diff --git a/sysutils/beats9/files/patch-auditbeat_auditbeat.yml b/sysutils/beats9/files/patch-auditbeat_auditbeat.yml
deleted file mode 100644
index b9c74affaee6..000000000000
--- a/sysutils/beats9/files/patch-auditbeat_auditbeat.yml
+++ /dev/null
@@ -1,13 +0,0 @@
---- auditbeat/auditbeat.yml.orig 2025-09-15 19:57:17 UTC
-+++ auditbeat/auditbeat.yml
-@@ -82,6 +82,10 @@ setup.template.settings:
- # website.
- #setup.dashboards.url:
-
-+# The directory from where to read the dashboards. The default is the `kibana`
-+# folder in the home path.
-+#setup.dashboards.directory: %%DATADIR%%/auditbeat/kibana
-+
- # =================================== Kibana ===================================
-
- # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
diff --git a/sysutils/beats9/files/patch-dev-tools_mage_settings.go b/sysutils/beats9/files/patch-dev-tools_mage_settings.go
deleted file mode 100644
index fff0c065e200..000000000000
--- a/sysutils/beats9/files/patch-dev-tools_mage_settings.go
+++ /dev/null
@@ -1,20 +0,0 @@
---- dev-tools/mage/settings.go.orig 2025-09-15 19:57:17 UTC
-+++ dev-tools/mage/settings.go
-@@ -31,7 +31,6 @@ import (
- "sync"
- "time"
-
-- "github.com/magefile/mage/sh"
- "golang.org/x/text/cases"
- "golang.org/x/text/language"
- "gopkg.in/yaml.v3"
-@@ -282,7 +281,8 @@ func CommitHash() (string, error) {
- func CommitHash() (string, error) {
- var err error
- commitHashOnce.Do(func() {
-- commitHash, err = sh.Output("git", "rev-parse", "HEAD")
-+ err = nil
-+ commitHash = "%%BEATSVERSION%%"
- })
- return commitHash, err
- }
diff --git a/sysutils/beats9/files/patch-filebeat_filebeat.reference.yml b/sysutils/beats9/files/patch-filebeat_filebeat.reference.yml
deleted file mode 100644
index 33dc3a22fd11..000000000000
--- a/sysutils/beats9/files/patch-filebeat_filebeat.reference.yml
+++ /dev/null
@@ -1,26 +0,0 @@
---- filebeat/filebeat.reference.yml.orig 2025-09-15 19:57:17 UTC
-+++ filebeat/filebeat.reference.yml
-@@ -1329,12 +1329,12 @@ - type: filestream
- #filebeat.config:
- #inputs:
- #enabled: false
-- #path: inputs.d/*.yml
-+ #path: filebeat.inputs.d/*.yml
- #reload.enabled: true
- #reload.period: 10s
- #modules:
- #enabled: true
-- #path: modules.d/*.yml
-+ #path: filebeat.modules.d/*.yml
- #reload.enabled: true
- #reload.period: 10s
-
-@@ -2408,7 +2408,7 @@ output.elasticsearch:
-
- # The directory from where to read the dashboards. The default is the `kibana`
- # folder in the home path.
--#setup.dashboards.directory: ${path.home}/kibana
-+#setup.dashboards.directory: %%DATADIR%%/filebeat/kibana
-
- # The URL from where to download the dashboard archive. It is used instead of
- # the directory if it has a value.
diff --git a/sysutils/beats9/files/patch-filebeat_filebeat.yml b/sysutils/beats9/files/patch-filebeat_filebeat.yml
deleted file mode 100644
index c9a078cc6ffb..000000000000
--- a/sysutils/beats9/files/patch-filebeat_filebeat.yml
+++ /dev/null
@@ -1,33 +0,0 @@
---- filebeat/filebeat.yml.orig 2025-09-15 19:57:17 UTC
-+++ filebeat/filebeat.yml
-@@ -81,7 +81,7 @@ filebeat.config.modules:
-
- filebeat.config.modules:
- # Glob pattern for configuration loading
-- path: ${path.config}/modules.d/*.yml
-+ path: ${path.config}/filebeat.modules.d/*.yml
-
- # Set to true to enable config reloading
- reload.enabled: false
-@@ -124,6 +124,10 @@ setup.template.settings:
- # website.
- #setup.dashboards.url:
-
-+# The directory from where to read the dashboards. The default is the `kibana`
-+# folder in the home path.
-+#setup.dashboards.directory: %%DATADIR%%/filebeat/kibana
-+
- # =================================== Kibana ===================================
-
- # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
-@@ -195,8 +199,8 @@ processors:
- - add_host_metadata:
- when.not.contains.tags: forwarded
- - add_cloud_metadata: ~
-- - add_docker_metadata: ~
-- - add_kubernetes_metadata: ~
-+# - add_docker_metadata: ~
-+# - add_kubernetes_metadata: ~
-
- # ================================== Logging ===================================
-
diff --git a/sysutils/beats9/files/patch-go-sysinfo b/sysutils/beats9/files/patch-go-sysinfo
deleted file mode 100644
index 2ac3e3daee55..000000000000
--- a/sysutils/beats9/files/patch-go-sysinfo
+++ /dev/null
@@ -1,1314 +0,0 @@
---- vendor/github.com/elastic/go-sysinfo/internal/cgo/disabled.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/internal/cgo/disabled.go
-@@ -0,0 +1,23 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build !cgo
-+
-+package cgo
-+
-+// Enabled is true if cgo was enabled at compile-time.
-+const Enabled = false
---- vendor/github.com/elastic/go-sysinfo/internal/cgo/enabled.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/internal/cgo/enabled.go
-@@ -0,0 +1,23 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build cgo
-+
-+package cgo
-+
-+// Enabled is true if cgo was enabled at compile-time.
-+const Enabled = true
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/defs_freebsd.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/defs_freebsd.go
-@@ -0,0 +1,33 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build ignore
-+// +build ignore
-+
-+package freebsd
-+
-+/*
-+#include <sys/types.h>
-+#include <sys/vmmeter.h>
-+#include <sys/time.h>
-+#include <kvm.h>
-+*/
-+import "C"
-+
-+type kvmSwap C.struct_kvm_swap
-+
-+type clockInfo C.struct_clockinfo
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/doc.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/doc.go
-@@ -0,0 +1,22 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+// Package freebsd implements the HostProvider and ProcessProvider interfaces
-+// for providing information about FreeBSD.
-+package freebsd
-+
-+//go:generate sh -c "go tool cgo -godefs defs_freebsd.go > ztypes_freebsd.go"
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/host_freebsd_cgo.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/host_freebsd_cgo.go
-@@ -0,0 +1,238 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build freebsd && cgo
-+
-+package freebsd
-+
-+import (
-+ "context"
-+ "errors"
-+ "os"
-+ "path/filepath"
-+ "time"
-+
-+ "github.com/prometheus/procfs"
-+
-+ "github.com/elastic/go-sysinfo/internal/registry"
-+ "github.com/elastic/go-sysinfo/providers/shared"
-+ "github.com/elastic/go-sysinfo/types"
-+)
-+
-+func init() {
-+ registry.Register(newFreeBSDSystem())
-+}
-+
-+type freebsdSystem struct{}
-+
-+func newFreeBSDSystem() freebsdSystem {
-+ return freebsdSystem{}
-+}
-+
-+func (s freebsdSystem) Host() (types.Host, error) {
-+ return newHost()
-+}
-+
-+type host struct {
-+ procFS procFS
-+ info types.HostInfo
-+}
-+
-+func (h *host) Info() types.HostInfo {
-+ return h.info
-+}
-+
-+func (h *host) CPUTime() (types.CPUTimes, error) {
-+ cpu := types.CPUTimes{}
-+ r := &reader{}
-+ r.cpuTime(&cpu)
-+ return cpu, r.Err()
-+}
-+
-+func (h *host) Memory() (*types.HostMemoryInfo, error) {
-+ m := &types.HostMemoryInfo{}
-+ r := &reader{}
-+ r.memInfo(m)
-+ return m, r.Err()
-+}
-+
-+func (h *host) FQDNWithContext(ctx context.Context) (string, error) {
-+ return shared.FQDNWithContext(ctx)
-+}
-+
-+func (h *host) FQDN() (string, error) {
-+ return h.FQDNWithContext(context.Background())
-+}
-+
-+func newHost() (*host, error) {
-+ h := &host{}
-+ r := &reader{}
-+ r.architecture(h)
-+ r.bootTime(h)
-+ r.hostname(h)
-+ r.network(h)
-+ r.kernelVersion(h)
-+ r.os(h)
-+ r.time(h)
-+ r.uniqueID(h)
-+ return h, r.Err()
-+}
-+
-+type reader struct {
-+ errs []error
-+}
-+
-+func (r *reader) addErr(err error) bool {
-+ if err != nil {
-+ if !errors.Is(err, types.ErrNotImplemented) {
-+ r.errs = append(r.errs, err)
-+ }
-+ return true
-+ }
-+ return false
-+}
-+
-+func (r *reader) Err() error {
-+ return errors.Join(r.errs...)
-+}
-+
-+func (r *reader) cpuTime(cpu *types.CPUTimes) {
-+ times, err := cpuStateTimes()
-+ if r.addErr(err) {
-+ return
-+ }
-+ *cpu = *times
-+}
-+
-+func (r *reader) memInfo(m *types.HostMemoryInfo) {
-+ // Memory counter calculations:
-+ // total = physical memory
-+ // used = active + wired
-+ // free = free
-+ // available = buffers + inactive + cache + free
-+
-+ pageSize, err := pageSizeBytes()
-+ if r.addErr(err) {
-+ return
-+ }
-+
-+ m.Total = totalPhysicalMem(r)
-+ activePages := activePageCount(r)
-+
-+ m.Metrics = make(map[string]uint64, 6)
-+ m.Metrics["active_bytes"] = activePages * pageSize
-+
-+ wirePages := wirePageCount(r)
-+ m.Metrics["wired_bytes"] = wirePages * pageSize
-+
-+ inactivePages := inactivePageCount(r)
-+ m.Metrics["inactive_bytes"] = inactivePages * pageSize
-+
-+ cachePages := cachePageCount(r)
-+ m.Metrics["cache_bytes"] = cachePages * pageSize
-+
-+ freePages := freePageCount(r)
-+ m.Metrics["free_bytes"] = freePages * pageSize
-+
-+ buffers := buffersUsedBytes(r)
-+ m.Metrics["buffer_bytes"] = buffers
-+
-+ m.Used = (activePages + wirePages) * pageSize
-+ m.Free = freePages * pageSize
-+ m.Available = (inactivePages+cachePages+freePages)*pageSize + buffers
-+
-+ // Virtual (swap) Memory
-+ swap, err := kvmGetSwapInfo()
-+ if r.addErr(err) {
-+ return
-+ }
-+
-+ m.VirtualTotal = uint64(swap.Total) * pageSize
-+ m.VirtualUsed = uint64(swap.Used) * pageSize
-+ m.VirtualFree = m.VirtualTotal - m.VirtualUsed
-+}
-+
-+func (r *reader) architecture(h *host) {
-+ v, err := architecture()
-+ if r.addErr(err) {
-+ return
-+ }
-+ h.info.Architecture = v
-+}
-+
-+func (r *reader) bootTime(h *host) {
-+ v, err := bootTime()
-+ if r.addErr(err) {
-+ return
-+ }
-+ h.info.BootTime = v
-+}
-+
-+func (r *reader) hostname(h *host) {
-+ v, err := os.Hostname()
-+ if r.addErr(err) {
-+ return
-+ }
-+ h.info.Hostname = v
-+}
-+
-+func (r *reader) network(h *host) {
-+ ips, macs, err := shared.Network()
-+ if r.addErr(err) {
-+ return
-+ }
-+ h.info.IPs = ips
-+ h.info.MACs = macs
-+}
-+
-+func (r *reader) kernelVersion(h *host) {
-+ v, err := kernelVersion()
-+ if r.addErr(err) {
-+ return
-+ }
-+ h.info.KernelVersion = v
-+}
-+
-+func (r *reader) os(h *host) {
-+ v, err := operatingSystem()
-+ if r.addErr(err) {
-+ return
-+ }
-+ h.info.OS = v
-+}
-+
-+func (r *reader) time(h *host) {
-+ h.info.Timezone, h.info.TimezoneOffsetSec = time.Now().Zone()
-+}
-+
-+func (r *reader) uniqueID(h *host) {
-+ v, err := machineID()
-+ if r.addErr(err) {
-+ return
-+ }
-+ h.info.UniqueID = v
-+}
-+
-+type procFS struct {
-+ procfs.FS
-+ mountPoint string
-+}
-+
-+func (fs *procFS) path(p ...string) string {
-+ elem := append([]string{fs.mountPoint}, p...)
-+ return filepath.Join(elem...)
-+}
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/host_freebsd_cgo_test.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/host_freebsd_cgo_test.go
-@@ -0,0 +1,53 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build freebsd && cgo
-+
-+package freebsd
-+
-+import (
-+ "encoding/json"
-+ "testing"
-+
-+ "github.com/elastic/go-sysinfo/internal/registry"
-+)
-+
-+var _ registry.HostProvider = freebsdSystem{}
-+
-+func TestHost(t *testing.T) {
-+ host, err := newFreeBSDSystem().Host()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ t.Run("Info", func(t *testing.T) {
-+ info := host.Info()
-+
-+ data, _ := json.MarshalIndent(info, "", " ")
-+ t.Log(string(data))
-+ })
-+
-+ t.Run("Memory", func(t *testing.T) {
-+ mem, err := host.Memory()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ data, _ := json.MarshalIndent(mem, "", " ")
-+ t.Log(string(data))
-+ })
-+}
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/kvm_freebsd_cgo.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/kvm_freebsd_cgo.go
-@@ -0,0 +1,58 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build freebsd && cgo
-+
-+package freebsd
-+
-+/*
-+#cgo LDFLAGS: -lkvm
-+#include <sys/cdefs.h>
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
-+
-+#include <paths.h>
-+#include <kvm.h>
-+#include <stdlib.h>
-+*/
-+import "C"
-+
-+import (
-+ "fmt"
-+ "unsafe"
-+
-+ "golang.org/x/sys/unix"
-+)
-+
-+// kvmGetSwapInfo returns swap summary statistics for the system. It accesses
-+// the kernel virtual memory (kvm) images by using libkvm.
-+func kvmGetSwapInfo() (*kvmSwap, error) {
-+ // Obtain a KVM file descriptor.
-+ var errstr *C.char
-+ kd := C.kvm_open(nil, nil, nil, unix.O_RDONLY, errstr)
-+ if errstr != nil {
-+ return nil, fmt.Errorf("failed calling kvm_open: %s", C.GoString(errstr))
-+ }
-+ defer C.kvm_close(kd)
-+
-+ var swap kvmSwap
-+ if n, err := C.kvm_getswapinfo(kd, (*C.struct_kvm_swap)(unsafe.Pointer(&swap)), 1, 0); n != 0 {
-+ return nil, fmt.Errorf("failed to get kvm_getswapinfo: %w", err)
-+ }
-+
-+ return &swap, nil
-+}
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/process_freebsd_cgo.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/process_freebsd_cgo.go
-@@ -0,0 +1,386 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build freebsd && cgo
-+
-+package freebsd
-+
-+import "C"
-+
-+/*
-+#cgo LDFLAGS: -lprocstat
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
-+#include <sys/time.h>
-+#include <sys/param.h>
-+#include <sys/queue.h>
-+#include <sys/socket.h>
-+#include <sys/user.h>
-+
-+#include <libprocstat.h>
-+#include <string.h>
-+
-+struct kinfo_proc getProcInfoAt(struct kinfo_proc *procs, unsigned int index) {
-+ return procs[index];
-+}
-+
-+unsigned int countArrayItems(char **items) {
-+ unsigned int i = 0;
-+ for (i = 0; items[i] != NULL; ++i);
-+ return i;
-+}
-+
-+char * itemAtIndex(char **items, unsigned int index) {
-+ return items[index];
-+}
-+
-+unsigned int countFileStats(struct filestat_list *head) {
-+ unsigned int count = 0;
-+ struct filestat *fst;
-+ STAILQ_FOREACH(fst, head, next) {
-+ ++count;
-+ }
-+
-+ return count;
-+}
-+
-+void copyFileStats(struct filestat_list *head, struct filestat *out, unsigned int size) {
-+ unsigned int index = 0;
-+ struct filestat *fst;
-+ if (size == 0) {
-+ return;
-+ }
-+ STAILQ_FOREACH(fst, head, next) {
-+ memcpy(out, fst, sizeof(*fst));
-+ ++out;
-+ --size;
-+ }
-+}
-+*/
-+import "C"
-+
-+import (
-+ "errors"
-+ "fmt"
-+ "os"
-+ "strconv"
-+ "strings"
-+ "time"
-+
-+ "github.com/elastic/go-sysinfo/types"
-+)
-+
-+func getProcInfo(op, arg int) ([]process, error) {
-+ procstat, err := C.procstat_open_sysctl()
-+ if procstat == nil {
-+ return nil, fmt.Errorf("failed to open procstat sysctl: %w", err)
-+ }
-+ defer C.procstat_close(procstat)
-+
-+ var count C.uint = 0
-+ kprocs, err := C.procstat_getprocs(procstat, C.int(op), C.int(arg), &count)
-+ if kprocs == nil {
-+ return nil, fmt.Errorf("getprocs failed: %w", err)
-+ }
-+ defer C.procstat_freeprocs(procstat, kprocs)
-+
-+ procs := make([]process, count)
-+ var index C.uint
-+ for index = 0; index < count; index++ {
-+ proc := C.getProcInfoAt(kprocs, index)
-+ procs[index].kinfo = proc
-+ procs[index].pid = int(proc.ki_pid)
-+ }
-+
-+ return procs, nil
-+}
-+
-+func copyArray(from **C.char) []string {
-+ if from == nil {
-+ return nil
-+ }
-+
-+ count := C.countArrayItems(from)
-+ out := make([]string, count)
-+
-+ for index := C.uint(0); index < count; index++ {
-+ out[index] = C.GoString(C.itemAtIndex(from, index))
-+ }
-+
-+ return out
-+}
-+
-+func makeMap(from []string) map[string]string {
-+ out := make(map[string]string, len(from))
-+
-+ for _, env := range from {
-+ parts := strings.Split(env, "=")
-+ if len(parts) > 1 {
-+ out[parts[0]] = parts[1]
-+ }
-+ }
-+
-+ return out
-+}
-+
-+func getProcEnv(p *process) (map[string]string, error) {
-+ procstat, err := C.procstat_open_sysctl()
-+
-+ if procstat == nil {
-+ return nil, fmt.Errorf("failed to open procstat sysctl: %w", err)
-+ }
-+ defer C.procstat_close(procstat)
-+
-+ env, err := C.procstat_getenvv(procstat, &p.kinfo, 0)
-+ defer C.procstat_freeenvv(procstat)
-+
-+ return makeMap(copyArray(env)), err
-+}
-+
-+func getProcArgs(p *process) ([]string, error) {
-+ procstat, err := C.procstat_open_sysctl()
-+
-+ if procstat == nil {
-+ return nil, fmt.Errorf("failed to open procstat sysctl: %w", err)
-+ }
-+ defer C.procstat_close(procstat)
-+
-+ args, err := C.procstat_getargv(procstat, &p.kinfo, 0)
-+ defer C.procstat_freeargv(procstat)
-+
-+ return copyArray(args), err
-+}
-+
-+func getProcPathname(p *process) (string, error) {
-+ procstat, err := C.procstat_open_sysctl()
-+
-+ if procstat == nil {
-+ return "", fmt.Errorf("failed to open procstat sysctl: %w", err)
-+ }
-+ defer C.procstat_close(procstat)
-+
-+ const maxlen = uint(1024)
-+ out := make([]C.char, maxlen)
-+ if res, err := C.procstat_getpathname(procstat, &p.kinfo, &out[0], C.ulong(maxlen)); res != 0 {
-+ return "", err
-+ }
-+ return C.GoString(&out[0]), nil
-+}
-+
-+func getFileStats(fileStats *C.struct_filestat_list) []C.struct_filestat {
-+ count := C.countFileStats(fileStats)
-+
-+ if count < 1 {
-+ return nil
-+ }
-+
-+ out := make([]C.struct_filestat, count)
-+
-+ C.copyFileStats(fileStats, &out[0], count)
-+ return out
-+}
-+
-+func getProcCWD(p *process) (string, error) {
-+ procstat, err := C.procstat_open_sysctl()
-+
-+ if procstat == nil {
-+ return "", fmt.Errorf("failed to open procstat sysctl: %w", err)
-+ }
-+ defer C.procstat_close(procstat)
-+
-+ fs, err := C.procstat_getfiles(procstat, &p.kinfo, 0)
-+ if fs == nil {
-+ return "", fmt.Errorf("failed to get files: %w", err)
-+ }
-+
-+ defer C.procstat_freefiles(procstat, fs)
-+
-+ files := getFileStats(fs)
-+ for _, f := range files {
-+ if f.fs_uflags == C.PS_FST_UFLAG_CDIR {
-+ return C.GoString(f.fs_path), nil
-+ }
-+ }
-+
-+ return "", nil
-+}
-+
-+type process struct {
-+ pid int
-+ kinfo C.struct_kinfo_proc
-+}
-+
-+func timevalToDuration(tm C.struct_timeval) time.Duration {
-+ return time.Duration(tm.tv_sec)*time.Second +
-+ time.Duration(tm.tv_usec)*time.Microsecond
-+}
-+
-+func (p *process) CPUTime() (types.CPUTimes, error) {
-+ procs, err := getProcInfo(C.KERN_PROC_PID, p.PID())
-+ if err != nil {
-+ return types.CPUTimes{}, err
-+ }
-+ p.kinfo = procs[0].kinfo
-+
-+ return types.CPUTimes{
-+ User: timevalToDuration(p.kinfo.ki_rusage.ru_utime),
-+ System: timevalToDuration(p.kinfo.ki_rusage.ru_stime),
-+ }, nil
-+}
-+
-+func (p *process) Info() (types.ProcessInfo, error) {
-+ procs, err := getProcInfo(C.KERN_PROC_PID, p.PID())
-+ if err != nil {
-+ return types.ProcessInfo{}, err
-+ }
-+ p.kinfo = procs[0].kinfo
-+
-+ cwd, err := getProcCWD(p)
-+ if err != nil {
-+ return types.ProcessInfo{}, err
-+ }
-+
-+ args, err := getProcArgs(p)
-+ if err != nil {
-+ return types.ProcessInfo{}, err
-+ }
-+
-+ exe, _ := getProcPathname(p)
-+
-+ return types.ProcessInfo{
-+ Name: C.GoString(&p.kinfo.ki_comm[0]),
-+ PID: int(p.kinfo.ki_pid),
-+ PPID: int(p.kinfo.ki_ppid),
-+ CWD: cwd,
-+ Exe: exe,
-+ Args: args,
-+ StartTime: time.Unix(int64(p.kinfo.ki_start.tv_sec), int64(p.kinfo.ki_start.tv_usec)*1000),
-+ }, nil
-+}
-+
-+func (p *process) Memory() (types.MemoryInfo, error) {
-+ pageSize, err := pageSizeBytes()
-+ if err != nil {
-+ return types.MemoryInfo{}, err
-+ }
-+
-+ procs, err := getProcInfo(C.KERN_PROC_PID, p.PID())
-+ if err != nil {
-+ return types.MemoryInfo{}, err
-+ }
-+ p.kinfo = procs[0].kinfo
-+
-+ return types.MemoryInfo{
-+ Resident: uint64(p.kinfo.ki_rssize) * pageSize,
-+ Virtual: uint64(p.kinfo.ki_size),
-+ }, nil
-+}
-+
-+func (p *process) User() (types.UserInfo, error) {
-+ procs, err := getProcInfo(C.KERN_PROC_PID, p.PID())
-+ if err != nil {
-+ return types.UserInfo{}, err
-+ }
-+
-+ p.kinfo = procs[0].kinfo
-+
-+ return types.UserInfo{
-+ UID: strconv.FormatUint(uint64(p.kinfo.ki_ruid), 10),
-+ EUID: strconv.FormatUint(uint64(p.kinfo.ki_uid), 10),
-+ SUID: strconv.FormatUint(uint64(p.kinfo.ki_svuid), 10),
-+ GID: strconv.FormatUint(uint64(p.kinfo.ki_rgid), 10),
-+ EGID: strconv.FormatUint(uint64(p.kinfo.ki_groups[0]), 10),
-+ SGID: strconv.FormatUint(uint64(p.kinfo.ki_svgid), 10),
-+ }, nil
-+}
-+
-+func (p *process) PID() int {
-+ return p.pid
-+}
-+
-+func (p *process) OpenHandles() ([]string, error) {
-+ procstat := C.procstat_open_sysctl()
-+ if procstat == nil {
-+ return nil, errors.New("failed to open procstat sysctl")
-+ }
-+ defer C.procstat_close(procstat)
-+
-+ fs := C.procstat_getfiles(procstat, &p.kinfo, 0)
-+ defer C.procstat_freefiles(procstat, fs)
-+
-+ files := getFileStats(fs)
-+ names := make([]string, 0, len(files))
-+
-+ for _, file := range files {
-+ if file.fs_type == 1 {
-+ if path := C.GoString(file.fs_path); path != "" {
-+ names = append(names, path)
-+ }
-+ }
-+ }
-+
-+ return names, nil
-+}
-+
-+func (p *process) OpenHandleCount() (int, error) {
-+ procstat := C.procstat_open_sysctl()
-+ if procstat == nil {
-+ return 0, errors.New("failed to open procstat sysctl")
-+ }
-+ defer C.procstat_close(procstat)
-+
-+ fs := C.procstat_getfiles(procstat, &p.kinfo, 0)
-+ defer C.procstat_freefiles(procstat, fs)
-+ return int(C.countFileStats(fs)), nil
-+}
-+
-+func (p *process) Environment() (map[string]string, error) {
-+ return getProcEnv(p)
-+}
-+
-+func (s freebsdSystem) Processes() ([]types.Process, error) {
-+ procs, err := getProcInfo(C.KERN_PROC_PROC, 0)
-+ out := make([]types.Process, 0, len(procs))
-+
-+ for _, proc := range procs {
-+ out = append(out, &process{
-+ pid: proc.pid,
-+ kinfo: proc.kinfo,
-+ })
-+ }
-+
-+ return out, err
-+}
-+
-+func (s freebsdSystem) Process(pid int) (types.Process, error) {
-+ return &process{pid: pid}, nil
-+}
-+
-+func (s freebsdSystem) Self() (types.Process, error) {
-+ return s.Process(os.Getpid())
-+}
-+
-+func (p *process) Parent() (types.Process, error) {
-+ info, err := p.Info()
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ proc := process{pid: info.PPID}
-+
-+ return &proc, nil
-+}
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/sysctl_freebsd.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/sysctl_freebsd.go
-@@ -0,0 +1,248 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build freebsd
-+
-+package freebsd
-+
-+import (
-+ "fmt"
-+ "strconv"
-+ "strings"
-+ "sync"
-+ "time"
-+ "unsafe"
-+
-+ "github.com/elastic/go-sysinfo/types"
-+
-+ "golang.org/x/sys/unix"
-+)
-+
-+var tickDuration = sync.OnceValues(func() (time.Duration, error) {
-+ const mib = "kern.clockrate"
-+
-+ c, err := unix.SysctlClockinfo(mib)
-+ if err != nil {
-+ return 0, fmt.Errorf("failed to get %s: %w", mib, err)
-+ }
-+ return time.Duration(c.Tick) * time.Microsecond, nil
-+})
-+
-+var pageSizeBytes = sync.OnceValues(func() (uint64, error) {
-+ const mib = "vm.stats.vm.v_page_size"
-+
-+ v, err := unix.SysctlUint32(mib)
-+ if err != nil {
-+ return 0, fmt.Errorf("failed to get %s: %w", mib, err)
-+ }
-+
-+ return uint64(v), nil
-+})
-+
-+func activePageCount(r *reader) uint64 {
-+ const mib = "vm.stats.vm.v_active_count"
-+
-+ v, err := unix.SysctlUint32(mib)
-+ if r.addErr(err) {
-+ return 0
-+ }
-+ return uint64(v)
-+}
-+
-+func architecture() (string, error) {
-+ const mib = "hw.machine"
-+
-+ arch, err := unix.Sysctl(mib)
-+ if err != nil {
-+ return "", fmt.Errorf("failed to get architecture: %w", err)
-+ }
-+
-+ return arch, nil
-+}
-+
-+func bootTime() (time.Time, error) {
-+ const mib = "kern.boottime"
-+
-+ tv, err := unix.SysctlTimeval(mib)
-+ if err != nil {
-+ return time.Time{}, fmt.Errorf("failed to get host uptime: %w", err)
-+ }
-+
-+ bootTime := time.Unix(tv.Sec, tv.Usec*int64(time.Microsecond))
-+ return bootTime, nil
-+}
-+
-+// buffersUsedBytes returns the number memory bytes used as disk cache.
-+func buffersUsedBytes(r *reader) uint64 {
-+ const mib = "vfs.bufspace"
-+
-+ v, err := unix.SysctlUint64(mib)
-+ if r.addErr(err) {
-+ return 0
-+ }
-+
-+ return v
-+}
-+
-+func cachePageCount(r *reader) uint64 {
-+ const mib = "vm.stats.vm.v_cache_count"
-+
-+ v, err := unix.SysctlUint32(mib)
-+ if r.addErr(err) {
-+ return 0
-+ }
-+
-+ return uint64(v)
-+}
-+
-+const sizeOfUint64 = int(unsafe.Sizeof(uint64(0)))
-+
-+// cpuStateTimes uses sysctl kern.cp_time to get the amount of time spent in
-+// different CPU states.
-+func cpuStateTimes() (*types.CPUTimes, error) {
-+ tickDuration, err := tickDuration()
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ const mib = "kern.cp_time"
-+ buf, err := unix.SysctlRaw(mib)
-+ if err != nil {
-+ return nil, fmt.Errorf("failed to get %s: %w", mib, err)
-+ }
-+
-+ var clockTicks [unix.CPUSTATES]uint64
-+ if len(buf) < len(clockTicks)*sizeOfUint64 {
-+ return nil, fmt.Errorf("kern.cp_time data is too short (got %d bytes)", len(buf))
-+ }
-+ for i := range clockTicks {
-+ val := *(*uint64)(unsafe.Pointer(&buf[sizeOfUint64*i]))
-+ clockTicks[i] = val
-+ }
-+
-+ return &types.CPUTimes{
-+ User: time.Duration(clockTicks[unix.CP_USER]) * tickDuration,
-+ System: time.Duration(clockTicks[unix.CP_SYS]) * tickDuration,
-+ Idle: time.Duration(clockTicks[unix.CP_IDLE]) * tickDuration,
-+ IRQ: time.Duration(clockTicks[unix.CP_INTR]) * tickDuration,
-+ Nice: time.Duration(clockTicks[unix.CP_NICE]) * tickDuration,
-+ }, nil
-+}
-+
-+func freePageCount(r *reader) uint64 {
-+ const mib = "vm.stats.vm.v_free_count"
-+
-+ v, err := unix.SysctlUint32(mib)
-+ if r.addErr(err) {
-+ return 0
-+ }
-+
-+ return uint64(v)
-+}
-+
-+func inactivePageCount(r *reader) uint64 {
-+ const mib = "vm.stats.vm.v_inactive_count"
-+
-+ v, err := unix.SysctlUint32(mib)
-+ if r.addErr(err) {
-+ return 0
-+ }
-+
-+ return uint64(v)
-+}
-+
-+func kernelVersion() (string, error) {
-+ const mib = "kern.osrelease"
-+
-+ version, err := unix.Sysctl(mib)
-+ if err != nil {
-+ return "", fmt.Errorf("failed to get kernel version: %w", err)
-+ }
-+
-+ return version, nil
-+}
-+
-+func machineID() (string, error) {
-+ const mib = "kern.hostuuid"
-+
-+ uuid, err := unix.Sysctl(mib)
-+ if err != nil {
-+ return "", fmt.Errorf("failed to get machine id: %w", err)
-+ }
-+
-+ return uuid, nil
-+}
-+
-+func operatingSystem() (*types.OSInfo, error) {
-+ info := &types.OSInfo{
-+ Type: "freebsd",
-+ Family: "freebsd",
-+ Platform: "freebsd",
-+ }
-+
-+ osType, err := unix.Sysctl("kern.ostype")
-+ if err != nil {
-+ return info, err
-+ }
-+ info.Name = osType
-+
-+ // Example: 13.0-RELEASE-p11
-+ osRelease, err := unix.Sysctl("kern.osrelease")
-+ if err != nil {
-+ return info, err
-+ }
-+ info.Version = osRelease
-+
-+ releaseParts := strings.Split(osRelease, "-")
-+
-+ majorMinor := strings.Split(releaseParts[0], ".")
-+ if len(majorMinor) > 0 {
-+ info.Major, _ = strconv.Atoi(majorMinor[0])
-+ }
-+ if len(majorMinor) > 1 {
-+ info.Minor, _ = strconv.Atoi(majorMinor[1])
-+ }
-+
-+ if len(releaseParts) > 1 {
-+ info.Build = releaseParts[1]
-+ }
-+ if len(releaseParts) > 2 {
-+ info.Patch, _ = strconv.Atoi(strings.TrimPrefix(releaseParts[2], "p"))
-+ }
-+
-+ return info, nil
-+}
-+
-+func totalPhysicalMem(r *reader) uint64 {
-+ const mib = "hw.physmem"
-+
-+ v, err := unix.SysctlUint64(mib)
-+ if r.addErr(err) {
-+ return 0
-+ }
-+ return v
-+}
-+
-+func wirePageCount(r *reader) uint64 {
-+ const mib = "vm.stats.vm.v_wire_count"
-+
-+ v, err := unix.SysctlUint32(mib)
-+ if r.addErr(err) {
-+ return 0
-+ }
-+ return uint64(v)
-+}
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/sysctl_freebsd_test.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/sysctl_freebsd_test.go
-@@ -0,0 +1,137 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+//go:build freebsd
-+
-+package freebsd
-+
-+import (
-+ "encoding/json"
-+ "github.com/stretchr/testify/assert"
-+ "github.com/stretchr/testify/require"
-+ "os/exec"
-+ "strings"
-+ "testing"
-+ "time"
-+)
-+
-+func TestArchitecture(t *testing.T) {
-+ arch, err := architecture()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ assert.NotEmpty(t, arch)
-+ assert.Regexp(t, `(amd64|i386|powerpc|arm(64)?|riscv|mips|sparc64|pc98)`, arch)
-+}
-+
-+func TestBootTime(t *testing.T) {
-+ bootTime, err := bootTime()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ bootDiff := time.Since(bootTime)
-+ // t.Logf("bootTime in seconds: %#v", int64(bootDiff.Seconds()))
-+
-+ cmd := exec.Command("/usr/bin/uptime", "--libxo=json")
-+ upcmd, err := cmd.Output()
-+
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ t.Logf(string(upcmd))
-+
-+ type UptimeOutput struct {
-+ UptimeInformation struct {
-+ Uptime int64 `json:"uptime"`
-+ } `json:"uptime-information"`
-+ }
-+
-+ var upInfo UptimeOutput
-+ err = json.Unmarshal(upcmd, &upInfo)
-+
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ upsec := upInfo.UptimeInformation.Uptime
-+ uptime := time.Duration(upsec * int64(time.Second))
-+ // t.Logf("uptime in seconds: %#v", int64(uptime.Seconds()))
-+
-+ assert.InDelta(t, uptime, bootDiff, float64(5*time.Second))
-+}
-+
-+func TestCPUStateTimes(t *testing.T) {
-+ times, err := cpuStateTimes()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ require.NotNil(t, times)
-+ assert.NotZero(t, *times)
-+}
-+
-+func TestKernelVersion(t *testing.T) {
-+ kernel, err := kernelVersion()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ // Retrieve currently running kernel version
-+ cmd := exec.Command("/bin/freebsd-version", "-r")
-+ fbsdout, err := cmd.Output()
-+
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ fbsdver := strings.TrimSuffix(string(fbsdout), "\n")
-+
-+ assert.NotEmpty(t, kernel)
-+ assert.EqualValues(t, kernel, fbsdver)
-+}
-+
-+func TestMachineID(t *testing.T) {
-+ machineID, err := machineID()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+
-+ assert.NotEmpty(t, machineID)
-+ assert.Regexp(t, "^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$", machineID)
-+}
-+
-+func TestOperatingSystem(t *testing.T) {
-+ t.Run("freebsd", func(t *testing.T) {
-+ os, err := operatingSystem()
-+ if err != nil {
-+ t.Fatal(err)
-+ }
-+ assert.Equal(t, "freebsd", os.Type)
-+ assert.Equal(t, "freebsd", os.Family)
-+ assert.Equal(t, "freebsd", os.Platform)
-+ assert.Equal(t, "FreeBSD", os.Name)
-+ assert.Regexp(t, `\d{1,2}\.\d{1,2}-(RELEASE|STABLE|CURRENT|RC[0-9]|ALPHA(\d{0,2})|BETA(\d{0,2}))(-p\d)?`, os.Version)
-+ assert.Regexp(t, `\d{1,2}`, os.Major)
-+ assert.Regexp(t, `\d{1,2}`, os.Minor)
-+ assert.Regexp(t, `\d{1,2}`, os.Patch)
-+ assert.Regexp(t, `(RELEASE|STABLE|CURRENT|RC[0-9]|ALPHA([0-9]{0,2})|BETA([0-9]{0,2}))`, os.Build)
-+ t.Logf("%#v", os)
-+ })
-+}
---- vendor/github.com/elastic/go-sysinfo/providers/freebsd/ztypes_freebsd.go.orig 2025-09-19 18:12:17 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/freebsd/ztypes_freebsd.go
-@@ -0,0 +1,39 @@
-+// Licensed to Elasticsearch B.V. under one or more contributor
-+// license agreements. See the NOTICE file distributed with
-+// this work for additional information regarding copyright
-+// ownership. Elasticsearch B.V. licenses this file to you under
-+// the Apache License, Version 2.0 (the "License"); you may
-+// not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+// http://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing,
-+// software distributed under the License is distributed on an
-+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+// KIND, either express or implied. See the License for the
-+// specific language governing permissions and limitations
-+// under the License.
-+
-+// Code generated by cmd/cgo -godefs; and then patched up to fix
-+// an alignment issue
-+// cgo -godefs defs_freebsd.go
-+
-+package freebsd
-+
-+type kvmSwap struct {
-+ Devname [32]int8
-+ Used uint32
-+ Total uint32
-+ Flags int32
-+ Reserved1 uint32
-+ Reserved2 uint32
-+}
-+
-+type clockInfo struct {
-+ Hz int32
-+ Tick int32
-+ Spare int32
-+ Stathz int32
-+ Profhz int32
-+}
---- vendor/github.com/elastic/go-sysinfo/providers/shared/fqdn.go.orig 2025-09-19 18:12:11 UTC
-+++ vendor/github.com/elastic/go-sysinfo/providers/shared/fqdn.go
-@@ -15,7 +15,7 @@
- // specific language governing permissions and limitations
- // under the License.
-
--//go:build linux || darwin || aix
-+//go:build linux || darwin || aix || freebsd
-
- package shared
-
---- vendor/github.com/elastic/go-sysinfo/system.go.orig 2025-09-19 18:12:11 UTC
-+++ vendor/github.com/elastic/go-sysinfo/system.go
-@@ -26,6 +26,7 @@ import (
- // Register host and process providers.
- _ "github.com/elastic/go-sysinfo/providers/aix"
- _ "github.com/elastic/go-sysinfo/providers/darwin"
-+ _ "github.com/elastic/go-sysinfo/providers/freebsd"
- _ "github.com/elastic/go-sysinfo/providers/linux"
- _ "github.com/elastic/go-sysinfo/providers/windows"
- )
diff --git a/sysutils/beats9/files/patch-heartbeat_heartbeat.reference.yml b/sysutils/beats9/files/patch-heartbeat_heartbeat.reference.yml
deleted file mode 100644
index 9bcb6527a696..000000000000
--- a/sysutils/beats9/files/patch-heartbeat_heartbeat.reference.yml
+++ /dev/null
@@ -1,20 +0,0 @@
---- heartbeat/heartbeat.reference.yml.bak 2026-02-23 21:59:26.000000000 +0000
-+++ heartbeat/heartbeat.reference.yml 2026-03-17 13:33:31.029015000 +0000
-@@ -14,7 +14,7 @@
- # of individual yaml files.
- heartbeat.config.monitors:
- # Directory + glob pattern to search for configuration files
-- path: ${path.config}/monitors.d/*.yml
-+ path: ${path.config}/heartbeat.monitors.d/*.yml
- # If enabled, heartbeat will periodically check the config.monitors path for changes
- reload.enabled: false
- # How often to check for changes
-@@ -1333,7 +1333,7 @@
-
- # The directory from where to read the dashboards. The default is the `kibana`
- # folder in the home path.
--#setup.dashboards.directory: ${path.home}/kibana
-+#setup.dashboards.directory: %%DATADIR%%/hearbeat/kibana
-
- # The URL from where to download the dashboard archive. It is used instead of
- # the directory if it has a value.
diff --git a/sysutils/beats9/files/patch-heartbeat_heartbeat.yml b/sysutils/beats9/files/patch-heartbeat_heartbeat.yml
deleted file mode 100644
index 4e41b4e0d011..000000000000
--- a/sysutils/beats9/files/patch-heartbeat_heartbeat.yml
+++ /dev/null
@@ -1,11 +0,0 @@
---- heartbeat/heartbeat.yml.orig 2021-07-04 13:59:29 UTC
-+++ heartbeat/heartbeat.yml
-@@ -13,7 +13,7 @@
- # of individual yaml files.
- heartbeat.config.monitors:
- # Directory + glob pattern to search for configuration files
-- path: ${path.config}/monitors.d/*.yml
-+ path: ${path.config}/heartbeat.monitors.d/*.yml
- # If enabled, heartbeat will periodically check the config.monitors path for changes
- reload.enabled: false
- # How often to check for changes
diff --git a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_config.go b/sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_config.go
deleted file mode 100644
index e554c26110a0..000000000000
--- a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_config.go
+++ /dev/null
@@ -1,11 +0,0 @@
---- libbeat/autodiscover/providers/docker/config.go.orig 2025-09-15 19:57:17 UTC
-+++ libbeat/autodiscover/providers/docker/config.go
-@@ -15,7 +15,7 @@
- // specific language governing permissions and limitations
- // under the License.
-
--//go:build linux || darwin || windows
-+//go:build linux || darwin || windows || freebsd
-
- package docker
-
diff --git a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_docker.go b/sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_docker.go
deleted file mode 100644
index 1ba78ac9207b..000000000000
--- a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_docker_docker.go
+++ /dev/null
@@ -1,20 +0,0 @@
---- libbeat/autodiscover/providers/docker/docker.go.orig 2025-09-15 19:57:17 UTC
-+++ libbeat/autodiscover/providers/docker/docker.go
-@@ -15,7 +15,7 @@
- // specific language governing permissions and limitations
- // under the License.
-
--//go:build linux || darwin || windows
-+//go:build linux || darwin || windows || freebsd
-
- package docker
-
-@@ -32,7 +32,7 @@ import (
- "github.com/elastic/beats/v7/libbeat/common"
-
- "github.com/elastic/elastic-agent-autodiscover/bus"
-- "github.com/elastic/elastic-agent-autodiscover/docker"
-+ docker "github.com/elastic/elastic-agent-autodiscover/docker"
- "github.com/elastic/elastic-agent-autodiscover/utils"
- "github.com/elastic/elastic-agent-libs/config"
- "github.com/elastic/elastic-agent-libs/keystore"
diff --git a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_config.go b/sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_config.go
deleted file mode 100644
index d61cc99ec22f..000000000000
--- a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_config.go
+++ /dev/null
@@ -1,11 +0,0 @@
---- libbeat/autodiscover/providers/kubernetes/config.go.orig 2025-09-15 19:57:17 UTC
-+++ libbeat/autodiscover/providers/kubernetes/config.go
-@@ -15,7 +15,7 @@
- // specific language governing permissions and limitations
- // under the License.
-
--//go:build linux || darwin || windows
-+//go:build linux || darwin || windows || freebsd
-
- package kubernetes
-
diff --git a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_kubernetes.go b/sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_kubernetes.go
deleted file mode 100644
index de1795f28db2..000000000000
--- a/sysutils/beats9/files/patch-libbeat_autodiscover_providers_kubernetes_kubernetes.go
+++ /dev/null
@@ -1,11 +0,0 @@
---- libbeat/autodiscover/providers/kubernetes/kubernetes.go.orig 2025-09-15 19:57:17 UTC
-+++ libbeat/autodiscover/providers/kubernetes/kubernetes.go
-@@ -15,7 +15,7 @@
- // specific language governing permissions and limitations
- // under the License.
-
--//go:build linux || darwin || windows
-+//go:build linux || darwin || windows || freebsd
-
- package kubernetes
-
diff --git a/sysutils/beats9/files/patch-libbeat_scripts_Makefile b/sysutils/beats9/files/patch-libbeat_scripts_Makefile
deleted file mode 100644
index e84469edfa3e..000000000000
--- a/sysutils/beats9/files/patch-libbeat_scripts_Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
---- libbeat/scripts/Makefile.orig 2025-09-15 19:57:17 UTC
-+++ libbeat/scripts/Makefile
-@@ -47,7 +47,7 @@ GOPACKAGES_STRESSTESTS=$(shell find . -type d \( -name
- GOFILES_NOVENDOR = $(shell find . -type f -name '*.go' -not -path "*/vendor/*" 2>/dev/null)
- GOFILES_ALL = $(GOFILES) $(shell find $(ES_BEATS) -type f -name '*.go' 2>/dev/null)
- GOPACKAGES_STRESSTESTS=$(shell find . -type d \( -name "stress" \) 2>/dev/null)
--SHELL=bash
-+SHELL=sh
- ES_HOST?=elasticsearch
- ES_PORT?=9200
- ES_USER?=beats
-@@ -346,12 +346,12 @@ update: python-env fields collect config ## @build Upd
- update: python-env fields collect config ## @build Update expects the most recent version of libbeat in the GOPATH
- @echo "Updating generated files for ${BEAT_NAME}"
-
--ifneq ($(shell [[ $(BEAT_NAME) == libbeat || $(BEAT_NAME) == metricbeat ]] && echo true ),true)
-+ifneq ($(shell [[ $(BEAT_NAME) = libbeat || $(BEAT_NAME) = metricbeat ]] && echo true ),true)
- mkdir -p include
- go run ${INSTALL_FLAG} ${ES_BEATS}/dev-tools/cmd/asset/asset.go -license $(LICENSE) -pkg include -in fields.yml -out include/fields.go $(BEAT_NAME)
- endif
-
--ifneq ($(shell [[ $(BEAT_NAME) == libbeat || $(BEAT_NAME) == metricbeat ]] && echo true ),true)
-+ifneq ($(shell [[ $(BEAT_NAME) = libbeat || $(BEAT_NAME) = metricbeat ]] && echo true ),true)
- @# Update docs
- @mkdir -p docs
- @${PYTHON_ENV_EXE} ${ES_BEATS}/libbeat/scripts/generate_fields_docs.py $(PWD)/fields.yml ${BEAT_TITLE} ${ES_BEATS}
diff --git a/sysutils/beats9/files/patch-metricbeat_metricbeat.reference.yml b/sysutils/beats9/files/patch-metricbeat_metricbeat.reference.yml
deleted file mode 100644
index 170a0e8a37f6..000000000000
--- a/sysutils/beats9/files/patch-metricbeat_metricbeat.reference.yml
+++ /dev/null
@@ -1,20 +0,0 @@
---- metricbeat/metricbeat.reference.yml.orig 2025-09-15 19:57:17 UTC
-+++ metricbeat/metricbeat.reference.yml
-@@ -14,7 +14,7 @@ metricbeat.config.modules:
- metricbeat.config.modules:
-
- # Glob pattern for configuration reloading
-- path: ${path.config}/modules.d/*.yml
-+ path: ${path.config}/metricbeat.modules.d/*.yml
-
- # Period on which files under path should be checked for changes
- reload.period: 10s
-@@ -2199,7 +2199,7 @@ output.elasticsearch:
-
- # The directory from where to read the dashboards. The default is the `kibana`
- # folder in the home path.
--#setup.dashboards.directory: ${path.home}/kibana
-+#setup.dashboards.directory: %%DATADIR%%/metricbeat/kibana
-
- # The URL from where to download the dashboard archive. It is used instead of
- # the directory if it has a value.
diff --git a/sysutils/beats9/files/patch-metricbeat_metricbeat.yml b/sysutils/beats9/files/patch-metricbeat_metricbeat.yml
deleted file mode 100644
index 7a8524fee677..000000000000
--- a/sysutils/beats9/files/patch-metricbeat_metricbeat.yml
+++ /dev/null
@@ -1,33 +0,0 @@
---- metricbeat/metricbeat.yml.orig 2025-09-15 19:57:17 UTC
-+++ metricbeat/metricbeat.yml
-@@ -11,7 +11,7 @@ metricbeat.config.modules:
-
- metricbeat.config.modules:
- # Glob pattern for configuration loading
-- path: ${path.config}/modules.d/*.yml
-+ path: ${path.config}/metricbeat.modules.d/*.yml
-
- # Set to true to enable config reloading
- reload.enabled: false
-@@ -54,6 +54,10 @@ setup.template.settings:
- # website.
- #setup.dashboards.url:
-
-+# The directory from where to read the dashboards. The default is the `kibana`
-+# folder in the home path.
-+#setup.dashboards.directory: %%DATADIR%%/metricbeat/kibana
-+
- # =================================== Kibana ===================================
-
- # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
-@@ -127,8 +131,8 @@ processors:
- processors:
- - add_host_metadata: ~
- - add_cloud_metadata: ~
-- - add_docker_metadata: ~
-- - add_kubernetes_metadata: ~
-+# - add_docker_metadata: ~
-+# - add_kubernetes_metadata: ~
-
-
- # ================================== Logging ===================================
diff --git a/sysutils/beats9/files/patch-packetbeat_packetbeat.reference.yml b/sysutils/beats9/files/patch-packetbeat_packetbeat.reference.yml
deleted file mode 100644
index 47c7bf919f8a..000000000000
--- a/sysutils/beats9/files/patch-packetbeat_packetbeat.reference.yml
+++ /dev/null
@@ -1,11 +0,0 @@
---- packetbeat/packetbeat.reference.yml.orig 2025-09-15 19:57:17 UTC
-+++ packetbeat/packetbeat.reference.yml
-@@ -1712,7 +1712,7 @@ output.elasticsearch:
-
- # The directory from where to read the dashboards. The default is the `kibana`
- # folder in the home path.
--#setup.dashboards.directory: ${path.home}/kibana
-+#setup.dashboards.directory: %%DATADIR%%/packetbeat/kibana
-
- # The URL from where to download the dashboard archive. It is used instead of
- # the directory if it has a value.
diff --git a/sysutils/beats9/files/patch-packetbeat_packetbeat.yml b/sysutils/beats9/files/patch-packetbeat_packetbeat.yml
deleted file mode 100644
index 3189a9f70662..000000000000
--- a/sysutils/beats9/files/patch-packetbeat_packetbeat.yml
+++ /dev/null
@@ -1,23 +0,0 @@
---- packetbeat/packetbeat.yml.orig 2025-09-15 19:57:17 UTC
-+++ packetbeat/packetbeat.yml
-@@ -25,7 +25,8 @@
- # internal_networks:
- # - private
- #
--packetbeat.interfaces.device: any
-+# On FreeBSD, you must specify particular interface to sniff on
-+packetbeat.interfaces.device: em0
-
- # Specify the amount of time between polling for changes in the default
- # route. This option is only used when one of the default route devices
-@@ -173,6 +174,10 @@ setup.template.settings:
- # versions, this URL points to the dashboard archive on the artifacts.elastic.co
- # website.
- #setup.dashboards.url:
-+
-+# The directory from where to read the dashboards. The default is the `kibana`
-+# folder in the home path.
-+#setup.dashboards.directory: %%DATADIR%%/packetbeat/kibana
-
- # =================================== Kibana ===================================
-
diff --git a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_client.go b/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_client.go
deleted file mode 100644
index 4c27b7b7445b..000000000000
--- a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_client.go
+++ /dev/null
@@ -1,13 +0,0 @@
---- vendor/github.com/elastic/elastic-agent-autodiscover/docker/client.go.orig 2022-11-25 21:51:45 UTC
-+++ vendor/github.com/elastic/elastic-agent-autodiscover/docker/client.go
-@@ -15,8 +15,8 @@
- // specific language governing permissions and limitations
- // under the License.
-
--//go:build linux || darwin || windows
--// +build linux darwin windows
-+//go:build linux || darwin || windows || freebsd
-+// +build linux darwin windows freebsd
-
- package docker
-
diff --git a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_watcher.go b/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_watcher.go
deleted file mode 100644
index b3eb5109493f..000000000000
--- a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_watcher.go
+++ /dev/null
@@ -1,13 +0,0 @@
---- vendor/github.com/elastic/elastic-agent-autodiscover/docker/watcher.go.orig 2022-11-25 21:51:52 UTC
-+++ vendor/github.com/elastic/elastic-agent-autodiscover/docker/watcher.go
-@@ -15,8 +15,8 @@
- // specific language governing permissions and limitations
- // under the License.
-
--//go:build linux || darwin || windows
--// +build linux darwin windows
-+//go:build linux || darwin || windows || freebsd
-+// +build linux darwin windows freebsd
-
- package docker
-
diff --git a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__freebsd.go b/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__freebsd.go
deleted file mode 100644
index d9305bc9d551..000000000000
--- a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__freebsd.go
+++ /dev/null
@@ -1,10 +0,0 @@
---- vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_freebsd.go.orig 2025-09-19 18:38:09 UTC
-+++ vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_freebsd.go
-@@ -56,3 +56,7 @@ func parseCPULine(line string) (CPU, error) {
-
- return cpuData, errors.Join(errs...)
- }
-+
-+func scanCPUInfoFile(scanner *bufio.Scanner) ([]CPUInfo, error) {
-+ return cpuinfoScanner(scanner)
-+}
diff --git a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__procfs__common.go b/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__procfs__common.go
deleted file mode 100644
index 287667e0d23a..000000000000
--- a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__procfs__common.go
+++ /dev/null
@@ -1,20 +0,0 @@
---- vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_procfs_common.go.orig 2025-09-19 18:44:04 UTC
-+++ vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_procfs_common.go
-@@ -32,7 +32,7 @@ func Get(m *Monitor) (CPUMetrics, error) {
- func Get(m *Monitor) (CPUMetrics, error) {
- procfs := m.Hostfs
-
-- path := procfs.ResolveHostFS("/proc/stat")
-+ path := procfs.ResolveHostFS("/compat/linux/proc/stat")
- fd, err := os.Open(path)
- defer func() {
- _ = fd.Close()
-@@ -46,7 +46,7 @@ func Get(m *Monitor) (CPUMetrics, error) {
- return CPUMetrics{}, fmt.Errorf("scanning stat file: %w", err)
- }
-
-- cpuInfoPath := procfs.ResolveHostFS("/proc/cpuinfo")
-+ cpuInfoPath := procfs.ResolveHostFS("/compat/linux/proc/cpuinfo")
- cpuInfoFd, err := os.Open(cpuInfoPath)
- if err != nil {
- return CPUMetrics{}, fmt.Errorf("opening '%s': %w", cpuInfoPath, err)
diff --git a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_system_filesystem_fs__unix.go b/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_system_filesystem_fs__unix.go
deleted file mode 100644
index 26fa875e63eb..000000000000
--- a/sysutils/beats9/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_system_filesystem_fs__unix.go
+++ /dev/null
@@ -1,14 +0,0 @@
---- vendor/github.com/elastic/elastic-agent-system-metrics/metric/system/filesystem/filesystem_unix.go.orig 2022-11-25 22:00:53 UTC
-+++ vendor/github.com/elastic/elastic-agent-system-metrics/metric/system/filesystem/filesystem_unix.go
-@@ -37,9 +37,9 @@ func (fs *FSStat) GetUsage() error {
-
- fs.Total = opt.UintWith(stat.Blocks).MultUint64OrNone(uint64(stat.Bsize))
- fs.Free = opt.UintWith(stat.Bfree).MultUint64OrNone(uint64(stat.Bsize))
-- fs.Avail = opt.UintWith(stat.Bavail).MultUint64OrNone(uint64(stat.Bsize))
-+ fs.Avail = opt.UintWith(uint64(stat.Bavail)).MultUint64OrNone(uint64(stat.Bsize))
- fs.Files = opt.UintWith(stat.Files)
-- fs.FreeFiles = opt.UintWith(stat.Ffree)
-+ fs.FreeFiles = opt.UintWith(uint64(stat.Ffree))
-
- fs.fillMetrics()
-
diff --git a/sysutils/beats9/files/patch-vendor_modules.txt b/sysutils/beats9/files/patch-vendor_modules.txt
deleted file mode 100644
index 9f3a45039b97..000000000000
--- a/sysutils/beats9/files/patch-vendor_modules.txt
+++ /dev/null
@@ -1,10 +0,0 @@
---- vendor/modules.txt.orig 2025-09-19 18:52:36 UTC
-+++ vendor/modules.txt
-@@ -1952,6 +1952,7 @@ github.com/elastic/go-sysinfo/providers/darwin
- github.com/elastic/go-sysinfo/internal/registry
- github.com/elastic/go-sysinfo/providers/aix
- github.com/elastic/go-sysinfo/providers/darwin
-+github.com/elastic/go-sysinfo/providers/freebsd
- github.com/elastic/go-sysinfo/providers/linux
- github.com/elastic/go-sysinfo/providers/shared
- github.com/elastic/go-sysinfo/providers/windows
diff --git a/sysutils/beats9/files/pkg-message.in b/sysutils/beats9/files/pkg-message.in
deleted file mode 100644
index 8f59c61118ca..000000000000
--- a/sysutils/beats9/files/pkg-message.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[
-{ type: install
- message: <<EOM
-The modules.d and monitors.d files are now installed into
-%%EXAMPLESDIR%%
-
-See UPDATING file in ports top level directory for list of breaking changes.
-EOM
-}
-]
diff --git a/sysutils/beats9/pkg-descr b/sysutils/beats9/pkg-descr
deleted file mode 100644
index d370eec713ed..000000000000
--- a/sysutils/beats9/pkg-descr
+++ /dev/null
@@ -1,18 +0,0 @@
-Beats is the platform for building lightweight, open source data
-shippers for many types of operational data you want to enrich with
-Logstash, search and analyze in Elasticsearch, and visualize in Kibana.
-Whether you're interested in log files, infrastructure metrics, network
-packets, or any other type of data, Beats serves as the foundation for
-keeping a beat on your data.
-
-Filebeat is a lightweight, open source shipper for log file data. As the
-next-generation Logstash Forwarder, Filebeat tails logs and quickly
-sends this information to Logstash for further parsing and enrichment or
-to Elasticsearch for centralized storage and analysis.
-
-Metricbeat Collect metrics from your systems and services. From CPU to memory,
-Redis to Nginx, and much more, Metricbeat is a lightweight way to send system
-and service statistics.
-
-Packetbeat is a lightweight network packet analyzer that sends data to Logstash
-or Elasticsearch.
diff --git a/sysutils/beats9/pkg-plist b/sysutils/beats9/pkg-plist
deleted file mode 100644
index 5710ac7d1364..000000000000
--- a/sysutils/beats9/pkg-plist
+++ /dev/null
@@ -1,21 +0,0 @@
-%%AUDITBEAT%%sbin/auditbeat
-%%AUDITBEAT%%%%ETCDIR%%/auditbeat.yml.reference
-%%AUDITBEAT%%@sample %%ETCDIR%%/auditbeat.yml.sample
-%%AUDITBEAT%%@dir /var/db/beats/auditbeat
-%%FILEBEAT%%sbin/filebeat
-%%FILEBEAT%%%%ETCDIR%%/filebeat.yml.reference
-%%FILEBEAT%%@sample %%ETCDIR%%/filebeat.yml.sample
-%%FILEBEAT%%@dir /var/db/beats/filebeat
-%%HEARTBEAT%%sbin/heartbeat
-%%HEARTBEAT%%%%ETCDIR%%/heartbeat.yml.reference
-%%HEARTBEAT%%@sample %%ETCDIR%%/heartbeat.yml.sample
-%%HEARTBEAT%%@dir /var/db/beats/heartbeat
-%%METRICBEAT%%%%ETCDIR%%/metricbeat.yml.reference
-%%METRICBEAT%%@sample %%ETCDIR%%/metricbeat.yml.sample
-%%METRICBEAT%%sbin/metricbeat
-%%METRICBEAT%%@dir /var/db/beats/metricbeat
-%%PACKETBEAT%%sbin/packetbeat
-%%PACKETBEAT%%%%ETCDIR%%/packetbeat.yml.reference
-%%PACKETBEAT%%@sample %%ETCDIR%%/packetbeat.yml.sample
-%%PACKETBEAT%%@dir /var/db/beats/packetbeat
-@dir /var/db/beats