As usual golang and ABI changes never work out, even years after. This time it is a handmade copy of struct clockinfo that did not make it over the bump in January 2021.
So add a patch to node_exporter to not use the hand made copy but instead depend on x/sys/unix for the definition. Now x/sys/unix is a dumpster fire but at least this way only one dumpster is burning and not all dumpsters in the wrold. This is something that should probably be fixed in -stable as well. -- :wq Claudio Index: Makefile =================================================================== RCS file: /cvs/ports/sysutils/node_exporter/Makefile,v retrieving revision 1.16 diff -u -p -r1.16 Makefile --- Makefile 19 Mar 2023 17:17:05 -0000 1.16 +++ Makefile 20 Apr 2023 10:13:56 -0000 @@ -2,7 +2,7 @@ COMMENT = prometheus exporter for hardw MODGO_MODNAME = github.com/prometheus/node_exporter MODGO_VERSION = v1.5.0 -REVISION = 0 +REVISION = 1 DISTNAME = node_exporter-${MODGO_VERSION} Index: patches/patch-cpu-collector =================================================================== RCS file: patches/patch-cpu-collector diff -N patches/patch-cpu-collector --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-cpu-collector 20 Apr 2023 10:13:40 -0000 @@ -0,0 +1,32 @@ +Use correct definition of stuct clockinfo. + +diff --git collector/cpu_openbsd.go collector/cpu_openbsd.go +index 13ee99a..8715ff9 100644 +--- collector/cpu_openbsd.go ++++ collector/cpu_openbsd.go +@@ -25,14 +25,6 @@ import ( + "golang.org/x/sys/unix" + ) + +-type clockinfo struct { +- hz int32 +- tick int32 +- tickadj int32 +- stathz int32 +- profhz int32 +-} +- + const ( + CP_USER = iota + CP_NICE +@@ -72,8 +64,8 @@ func (c *cpuCollector) Update(ch chan<- prometheus.Metric) (err error) { + if err != nil { + return err + } +- clock := *(*clockinfo)(unsafe.Pointer(&clockb[0])) +- hz := float64(clock.stathz) ++ clock := *(*unix.Clockinfo)(unsafe.Pointer(&clockb[0])) ++ hz := float64(clock.Stathz) + + ncpus, err := unix.SysctlUint32("hw.ncpu") + if err != nil {