Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 01 Jun 2026 11:46:50 +0000
From:      Michael Gmelin <grembo@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Cc:        Daniel Morante <daniel@morante.net>
Subject:   git: 931b99597df4 - main - sysutils/loki3: New port
Message-ID:  <6a1d712a.1e4da.5bc5c32@gitrepo.freebsd.org>

index | next in thread | raw e-mail

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


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a1d712a.1e4da.5bc5c32>