git: 931b99597df4 - main - sysutils/loki3: New port
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 01 Jun 2026 11:46:50 UTC
The branch main has been updated by grembo:
URL: https://cgit.FreeBSD.org/ports/commit/?id=931b99597df4b513b211c21233130ef0486635ee
commit 931b99597df4b513b211c21233130ef0486635ee
Author: Daniel Morante <daniel@morante.net>
AuthorDate: 2026-06-01 11:43:36 +0000
Commit: Michael Gmelin <grembo@FreeBSD.org>
CommitDate: 2026-06-01 11:46:10 +0000
sysutils/loki3: New port
PR: 295533
---
sysutils/Makefile | 1 +
sysutils/loki3/Makefile | 71 ++++++++++++++++++++++
sysutils/loki3/distinfo | 5 ++
sysutils/loki3/files/loki.in | 71 ++++++++++++++++++++++
.../files/patch-cmd-loki-loki-local-config.yaml | 17 ++++++
sysutils/loki3/pkg-descr | 4 ++
sysutils/loki3/pkg-plist | 13 ++++
7 files changed, 182 insertions(+)
diff --git a/sysutils/Makefile b/sysutils/Makefile
index cf99d8f9f756..9016a1f6ad06 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -680,6 +680,7 @@
SUBDIR += logtool
SUBDIR += logwatch
SUBDIR += loki
+ SUBDIR += loki3
SUBDIR += lookat
SUBDIR += lr
SUBDIR += lsblk
diff --git a/sysutils/loki3/Makefile b/sysutils/loki3/Makefile
new file mode 100644
index 000000000000..0b0e1f32ceae
--- /dev/null
+++ b/sysutils/loki3/Makefile
@@ -0,0 +1,71 @@
+PORTNAME= loki
+DISTVERSIONPREFIX= v
+DISTVERSION= 3.7.2
+CATEGORIES= sysutils
+PKGNAMEPREFIX= grafana-
+PKGNAMESUFFIX= 3
+
+MAINTAINER= daniel@morante.net
+COMMENT= Scalable, highly-available, multi-tenant log aggregation system
+WWW= https://github.com/grafana/loki
+
+LICENSE= AGPLv3
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= go:modules cpe
+CPE_VENDOR= grafana
+USE_GITHUB= yes
+
+GH_ACCOUNT= grafana
+GH_PROJECT= loki
+
+USE_RC_SUBR= loki
+
+GO_MOD_DIST= github
+GO_MODULE= github.com/${GH_ACCOUNT}/${GH_PROJECT}/v3
+GO_TARGET= ./cmd/loki ./cmd/loki-canary ./cmd/logcli ./cmd/lokitool
+GO_BUILDFLAGS= -v -ldflags "${LD_FLAG_STRING}"
+
+LD_FLAG_STRING= -s \
+ ${LD_FLAG_X_PREFIX}.Version=${DISTVERSION} \
+ ${LD_FLAG_X_PREFIX}.Revision=${PORTREVISION} \
+ ${LD_FLAG_X_PREFIX}.Branch=HEAD \
+ ${LD_FLAG_X_PREFIX}.BuildUser=${BUILD_USER} \
+ ${LD_FLAG_X_PREFIX}.BuildDate=$$(date -u +"%Y-%m-%dT%H:%M:%SZ")
+LD_FLAG_X_PREFIX= -X github.com/grafana/loki/v3/pkg/util/build
+BUILD_USER?= ${USER}
+
+LOKI_USER?= loki
+LOKI_GROUP?= loki
+LOKI_DATADIR?= /var/db/${PORTNAME}
+
+CONFLICTS_INSTALL= grafana-loki
+
+SUB_LIST= LOKI_USER=${LOKI_USER} \
+ LOKI_GROUP=${LOKI_GROUP} \
+ LOKI_DATADIR=${LOKI_DATADIR}
+
+USERS= ${LOKI_USER}
+GROUPS= ${LOKI_GROUP}
+
+PLIST_SUB= ${SUB_LIST}
+
+# The main go.mod has "replace ./pkg/push => ./pkg/push". go-post-fetch (800)
+# runs go mod download from DIST_SUBDIR and needs pkg/push/go.mod present.
+# post-fetch runs at priority 700, after do-fetch (500) downloads the tarball.
+post-fetch:
+ @(cd ${DISTDIR}/${DIST_SUBDIR}; [ -e pkg/push/go.mod ] || (\
+ ${MKDIR} pkg/push; \
+ ${TAR} -xzf ${DISTNAME}${EXTRACT_SUFX} \
+ ${PORTNAME}-${DISTVERSION}/pkg/push/go.mod \
+ ${PORTNAME}-${DISTVERSION}/pkg/push/go.sum; \
+ ${CP} ${PORTNAME}-${DISTVERSION}/pkg/push/go.mod pkg/push/go.mod; \
+ ${CP} ${PORTNAME}-${DISTVERSION}/pkg/push/go.sum pkg/push/go.sum; \
+ ${RM} -r ${PORTNAME}-${DISTVERSION}))
+
+post-install:
+ @${CP} ${WRKSRC}/cmd/loki/loki-local-config.yaml ${STAGEDIR}${PREFIX}/etc/loki.yaml.sample
+ @${MKDIR} ${STAGEDIR}${LOKI_DATADIR}
+ @${MKDIR} ${STAGEDIR}${LOKI_DATADIR}/rules-temp
+
+.include <bsd.port.mk>
diff --git a/sysutils/loki3/distinfo b/sysutils/loki3/distinfo
new file mode 100644
index 000000000000..d20f9c19a0a0
--- /dev/null
+++ b/sysutils/loki3/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1779563525
+SHA256 (go/sysutils_loki3/grafana-loki-v3.7.2_GH0/go.mod) = 2ecfa91936a42156d785cb3de6828023ed1e0318fcbeaa08df4d9c11151b8644
+SIZE (go/sysutils_loki3/grafana-loki-v3.7.2_GH0/go.mod) = 26942
+SHA256 (go/sysutils_loki3/grafana-loki-v3.7.2_GH0/grafana-loki-v3.7.2_GH0.tar.gz) = f91b7737cc0ca352dfb99e9307bc2f6a67135d6827922374ab4a31676d280790
+SIZE (go/sysutils_loki3/grafana-loki-v3.7.2_GH0/grafana-loki-v3.7.2_GH0.tar.gz) = 110315122
diff --git a/sysutils/loki3/files/loki.in b/sysutils/loki3/files/loki.in
new file mode 100644
index 000000000000..b09d9e307c65
--- /dev/null
+++ b/sysutils/loki3/files/loki.in
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# PROVIDE: loki
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable loki
+# loki_enable="YES"
+#
+# loki_enable (bool):
+# Set it to YES to enable loki
+# Set to NO by default
+# loki_user (string):
+# Set user that loki will run under
+# Default is "%%LOKI_USER%%"
+# loki_group (string):
+# Set group that own loki files
+# Default is "%%LOKI_GROUP%%"
+# loki_config (string)
+# Set full path to config file
+# Default is "%%PREFIX%%/etc/loki.yaml"
+# loki_logfile (string)
+# Set full path to log file
+# Default is "/var/log/loki/loki.log"
+# loki_loglevel (string)
+# Set log level. Only log messages with the given severity or above.
+# Valid levels: [debug, info, warn, error]
+# Default is "warn"
+# loki_args (string)
+# Set additional command line arguments
+# Default is ""
+
+. /etc/rc.subr
+
+name=loki
+rcvar=loki_enable
+
+load_rc_config $name
+
+: ${loki_enable:="NO"}
+: ${loki_user:="%%LOKI_USER%%"}
+: ${loki_group:="%%LOKI_GROUP%%"}
+: ${loki_config:="%%PREFIX%%/etc/loki.yaml"}
+: ${loki_logfile:="/var/log/loki/loki.log"}
+: ${loki_loglevel:="warn"}
+
+pidfile="/var/run/${name}/${name}.pid"
+required_files="${loki_config}"
+
+procname="%%PREFIX%%/bin/loki"
+command="/usr/sbin/daemon"
+command_args="-p ${pidfile} -t ${name} -o ${loki_logfile} \
+ ${procname} \
+ --config.file=${loki_config} \
+ --log.level=${loki_loglevel} \
+ ${loki_args}"
+
+start_precmd="loki_start_precmd"
+
+loki_start_precmd()
+{
+ if [ ! -d "/var/run/${name}" ]; then
+ install -d -m 0750 -o ${loki_user} -g ${loki_group} "/var/run/${name}"
+ fi
+
+ if [ ! -d "/var/log/loki" ]; then
+ install -d -m 0750 -o ${loki_user} -g ${loki_group} "/var/log/loki"
+ fi
+}
+
+run_rc_command "$1"
diff --git a/sysutils/loki3/files/patch-cmd-loki-loki-local-config.yaml b/sysutils/loki3/files/patch-cmd-loki-loki-local-config.yaml
new file mode 100644
index 000000000000..e7483480655a
--- /dev/null
+++ b/sysutils/loki3/files/patch-cmd-loki-loki-local-config.yaml
@@ -0,0 +1,17 @@
+--- cmd/loki/loki-local-config.yaml.orig 2025-01-01 00:00:00 UTC
++++ cmd/loki/loki-local-config.yaml
+@@ -10,10 +10,10 @@
+
+ common:
+ instance_addr: 127.0.0.1
+- path_prefix: /tmp/loki
++ path_prefix: /var/db/loki
+ storage:
+ filesystem:
+- chunks_directory: /tmp/loki/chunks
+- rules_directory: /tmp/loki/rules
++ chunks_directory: /var/db/loki/chunks
++ rules_directory: /var/db/loki/rules
+ replication_factor: 1
+ ring:
+ kvstore:
diff --git a/sysutils/loki3/pkg-descr b/sysutils/loki3/pkg-descr
new file mode 100644
index 000000000000..2a8e227e3346
--- /dev/null
+++ b/sysutils/loki3/pkg-descr
@@ -0,0 +1,4 @@
+Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation
+system inspired by Prometheus. It is designed to be very cost effective and easy
+to operate. It does not index the contents of the logs, but rather a set of
+labels for each log stream.
diff --git a/sysutils/loki3/pkg-plist b/sysutils/loki3/pkg-plist
new file mode 100644
index 000000000000..bc4126f941f5
--- /dev/null
+++ b/sysutils/loki3/pkg-plist
@@ -0,0 +1,13 @@
+bin/loki
+bin/loki-canary
+bin/logcli
+bin/lokitool
+@sample etc/loki.yaml.sample
+@owner %%LOKI_USER%%
+@group %%LOKI_GROUP%%
+@mode 750
+@dir %%LOKI_DATADIR%%
+@dir %%LOKI_DATADIR%%/rules-temp
+@mode
+@group
+@owner