git: 2a0e3ae53013 - main - textproc/meilisearch: add rc script to allow running as a daemon

From: Dave Cottlehuber <dch_at_FreeBSD.org>
Date: Sat, 17 Jan 2026 15:27:47 UTC
The branch main has been updated by dch:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2a0e3ae5301353d16dde348f80aab985cf38c2ed

commit 2a0e3ae5301353d16dde348f80aab985cf38c2ed
Author:     Dave Cottlehuber <dch@FreeBSD.org>
AuthorDate: 2026-01-17 15:27:04 +0000
Commit:     Dave Cottlehuber <dch@FreeBSD.org>
CommitDate: 2026-01-17 15:27:04 +0000

    textproc/meilisearch: add rc script to allow running as a daemon
    
    Sponsored by:   SkunkWerks, GmbH
    Differential Revision:  https://reviews.freebsd.org/D53314
---
 textproc/meilisearch/Makefile             |  6 ++-
 textproc/meilisearch/files/meilisearch.in | 65 +++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/textproc/meilisearch/Makefile b/textproc/meilisearch/Makefile
index 2fa7aa46b97a..8eeb69c98f63 100644
--- a/textproc/meilisearch/Makefile
+++ b/textproc/meilisearch/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	meilisearch
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1.31.0
+PORTREVISION=	1
 CATEGORIES=	textproc
 MASTER_SITES=	https://github.com/meilisearch/mini-dashboard/releases/download/v${DASHBOARD_VERSION}/build.zip?dummy=/:mini_dashboard_assets \
 		https://Lindera.dev/:dic_upstream \
@@ -34,12 +35,13 @@ LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	libgit2>=0:devel/libgit2
-LIB_DEPENDS=	libzstd.so:archivers/zstd \
-		libonig.so:devel/oniguruma
+LIB_DEPENDS=	libonig.so:devel/oniguruma \
+		libzstd.so:archivers/zstd
 
 BROKEN_i386=	fails to build
 USES=		cargo pkgconfig
 USE_GITHUB=	yes
+USE_RC_SUBR=	${PORTNAME}
 
 #GH_TUPLE=		meilisearch:lmdb:6a01c0a:lmdb/../lmdb-rs-501aa34a1ab7f092e3ff54a6c22ff6c55931a2d8/lmdb-sys/lmdb
 DASHBOARD_VERSION=	0.2.22
diff --git a/textproc/meilisearch/files/meilisearch.in b/textproc/meilisearch/files/meilisearch.in
new file mode 100644
index 000000000000..93fc588280e7
--- /dev/null
+++ b/textproc/meilisearch/files/meilisearch.in
@@ -0,0 +1,65 @@
+#!/bin/sh
+#
+# PROVIDE: meilisearch
+# REQUIRE: DAEMON NETWORKING
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable meilisearch:
+# meilisearch_enable (bool):    Set to "NO" by default.
+#                               Set it to "YES" to enable meilisearch.
+# meilisearch_user (user):      Set to "www" by default.
+#                               User to run meilisearch as.
+# meilisearch_group (group):    Set to "www" by default.
+#                               Group to run meilisearch as.
+# meilisearch_args (str):       Set to "" by default.
+#                               Extra flags passed to meilisearch.
+
+. /etc/rc.subr
+
+name=meilisearch
+rcvar=meilisearch_enable
+
+load_rc_config $name
+
+: ${meilisearch_enable:="NO"}
+: ${meilisearch_dir:="/var/db/meilisearch"}
+: ${meilisearch_config:="%%PREFIX%%/etc/meilisearch/meilisearch.toml"}
+: ${meilisearch_user:="www"}
+: ${meilisearch_group:="www"}
+: ${meilisearch_args:="--db-path ${meilisearch_dir} --dump-dir ${meilisearch_dir}/dumps"}
+: ${meilisearch_chdir:="${meilisearch_dir}"}
+
+pidfile="/var/run/${name}.pid"
+daemon_pidfile="/var/run/${name}-daemon.pid"
+procname="%%PREFIX%%/bin/meilisearch"
+command="/usr/sbin/daemon"
+command_args="-f -c -R 5 -r -T ${name} -p ${pidfile} -P ${daemon_pidfile} ${procname} ${meilisearch_args}"
+
+required_dirs="${meilisearch_dir}"
+required_files="${meilisearch_config}"
+
+start_precmd=meilisearch_startprecmd
+stop_postcmd=meilisearch_stoppostcmd
+
+meilisearch_startprecmd()
+{
+	if [ ! -e ${daemon_pidfile} ]; then
+		install -o ${meilisearch_user} -g ${meilisearch_group} /dev/null ${daemon_pidfile};
+	fi
+	if [ ! -e ${pidfile} ]; then
+		install -o ${meilisearch_user} -g ${meilisearch_group} /dev/null ${pidfile};
+	fi
+}
+
+
+meilisearch_stoppostcmd()
+{
+	if [ -f "${daemon_pidfile}" ]; then
+		pids=$( pgrep -F ${daemon_pidfile} 2>&1 )
+		_err=$?
+		[ ${_err} -eq 0 ] && kill -9 ${pids}
+	fi
+}
+
+run_rc_command "$1"
+