From 6fc7bb3163c0d1f1b9c0ed3118bae6766ccfc7e9 Mon Sep 17 00:00:00 2001
From: Veniamin Gvozdikov <vgvozdikov@tarantool.org>
Date: Tue, 7 Jul 2015 15:05:28 +0300
Subject: [PATCH] Updated init script for FreeBSD and fix paths after install

---
 FreeBSD/databases/tarantool/Makefile          | 29 +++++++++-
 .../databases/tarantool/files/pkg-message.in  |  7 +--
 .../databases/tarantool/files/tarantool.in    | 56 ++++++++++---------
 FreeBSD/databases/tarantool/pkg-plist         |  4 ++
 4 files changed, 63 insertions(+), 33 deletions(-)

diff --git a/FreeBSD/databases/tarantool/Makefile b/FreeBSD/databases/tarantool/Makefile
index 983586be85..436b5d4162 100644
--- a/FreeBSD/databases/tarantool/Makefile
+++ b/FreeBSD/databases/tarantool/Makefile
@@ -19,9 +19,30 @@ USE_GCC=	4.9+
 USE_LDCONFIG=	yes
 USE_RC_SUBR=	${PORTNAME}
 SUB_FILES=	pkg-message
+
+TT_DATADIR?=	/var/db/tarantool
+TT_RUNDIR?=	/var/run/tarantool
+TT_LOGDIR?=	/var/log/tarantool
+
 CMAKE_ARGS=	-DCMAKE_INSTALL_MANDIR=man \
 		-DCMAKE_INSTALL_SYSCONFDIR=${ETCDIR} \
-		-DCMAKE_LOCALSTATE_DIR=${DATADIR}
+		-DCMAKE_LOCALSTATE_DIR=${DATADIR} \
+		-DTARANTOOL_DATADIR="${TT_DATADIR}"
+
+USERS=		tarantool
+GROUPS=		tarantool
+
+SUB_LIST+=	PORTNAME=${PORTNAME} \
+	TT_USER=${USERS} \
+	TT_DATADIR=${TT_DATADIR} \
+	TT_LOGDIR=${TT_LOGDIR} \
+	TT_RUNDIR=${TT_RUNDIR}
+
+PLIST_SUB+=	TT_USER=${USERS} \
+	TT_GROUP=${GROUPS} \
+	TT_LOGDIR=${TT_LOGDIR} \
+	TT_DATADIR=${TT_DATADIR} \
+	TT_RUNDIR=${TT_RUNDIR}
 
 OPTIONS_DEFINE=	DEBUG
 DEBUG_DESC=	Enable debug
@@ -40,4 +61,10 @@ CMAKE_ARGS+=	-DENABLE_BACKTRACE=OFF
 BROKEN=		Does not build on FreeBSD < 9.0
 .endif
 
+post-install:
+	${MKDIR} ${STAGEDIR}${TT_LOGDIR} \
+		${STAGEDIR}${TT_DATADIR} \
+		${STAGEDIR}${TT_RUNDIR} \
+		${STAGEDIR}${ETCDIR}/instances.enabled
+
 .include <bsd.port.mk>
diff --git a/FreeBSD/databases/tarantool/files/pkg-message.in b/FreeBSD/databases/tarantool/files/pkg-message.in
index c793ccc58b..1d5a808cd5 100644
--- a/FreeBSD/databases/tarantool/files/pkg-message.in
+++ b/FreeBSD/databases/tarantool/files/pkg-message.in
@@ -7,11 +7,8 @@
 #
 #   * Enable tarantool on startup:
 #      tarantool_enable="YES"
-#   * Change config (Default %%ETCDIR%%/default/tarantool):
-#      tarantool_config="%%ETCDIR%%/default/tarantool"
-#   * Path to storage, depended by option work_dir at:
-#     %%ETCDIR%%/default/tarantool
-#      tarantool_data="/var/db/tarantool"
+#   * Path to storage instances:
+#      tarantool_instances="%%ETCDIR%%/instances.enabled"
 #
 #
 #########################################################
diff --git a/FreeBSD/databases/tarantool/files/tarantool.in b/FreeBSD/databases/tarantool/files/tarantool.in
index 12500db02a..98ea8dd888 100644
--- a/FreeBSD/databases/tarantool/files/tarantool.in
+++ b/FreeBSD/databases/tarantool/files/tarantool.in
@@ -7,8 +7,7 @@
 # KEYWORD: shutdown
 #
 # tarantool_enable="YES"
-# tarantool_config=""
-# tarantool_data="/var/db/tarantool"
+# tarantool_instances=""
 #
 
 . /etc/rc.subr
@@ -19,35 +18,38 @@ rcvar=tarantool_enable
 load_rc_config "$name"
 
 tarantool_enable=${tarantool_enable:-"NO"}
-tarantool_config=${tarantool_config:-"%%ETCDIR%%/$name.cfg"}
-tarantool_data=${tarantool_data:-"/var/db/tarantool"}
+tarantool_instances=${tarantool_instances:-"%%ETCDIR%%/instances.enabled"}
 
-command="%%PREFIX%%/bin/tarantool_box"
-command_args="--config=${tarantool_config} --background"
-pidfile="/var/run/$name.pid"
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+restart_cmd="${name}_restart"
 
-start_precmd="${name}_prestart"
+INSTANCES=$(find ${tarantool_instances} -type f -name '*.lua')
+TDAEMON=%%PREFIX%%/bin/tarantool
+TCTL=%%PREFIX%%/bin/tarantoolctl
 
-tarantool_prestart()
+tarantool_start()
 {
-	if ! [ -d ${tarantool_data} ]
-	then
-		eval mkdir -p ${tarantool_data}
-	fi
-
-	if ! [ -f "${tarantool_data}/00000000000000000001.snap" ]
-	then
-		if ! [ -f ${tarantool_config} ]
-		then
-			echo "===> Install default config file."
-			eval cp "%%ETCDIR%%/tarantool.cfg.sample" ${tarantool_config}
-			echo "===> Install default snapshot."
-			eval cp "%%DATADIR%%/00000000000000000001.snap" ${tarantool_data}
-		else
-			echo "===> Init tarantool storage by ${tarantool_config}"
-			eval ${command} --config=${tarantool_config} --init-storage
-		fi
-	fi
+	echo "tarantool: Starting instances"
+	for inst in ${INSTANCES}
+	do
+		${TDAEMON} ${TCTL} start $(basename ${inst} .lua)
+	done
+}
+
+tarantool_stop()
+{
+	echo "tarantool: Stopping instances"
+	for inst in ${INSTANCES}
+	do
+		${TDAEMON} ${TCTL} stop $(basename ${inst} .lua)
+	done
+}
+
+tarantool_restart()
+{
+	tarantool_stop
+	tarantool_start
 }
 
 run_rc_command "$1"
diff --git a/FreeBSD/databases/tarantool/pkg-plist b/FreeBSD/databases/tarantool/pkg-plist
index 4e325383e4..fd3258d46f 100644
--- a/FreeBSD/databases/tarantool/pkg-plist
+++ b/FreeBSD/databases/tarantool/pkg-plist
@@ -12,3 +12,7 @@ man/man1/tarantool.1.gz
 man/man1/tarantoolctl.1.gz
 %%PORTDOCS%%%%DOCSDIR%%/LICENSE
 %%PORTDOCS%%%%DOCSDIR%%/README.md
+@dir %%ETCDIR%%/instances.enabled
+@dir(%%TT_USER%%,%%TT_GROUP%%,) %%TT_DATADIR%%
+@dir(%%TT_USER%%,%%TT_GROUP%%,) %%TT_LOGDIR%%
+@dir(%%TT_USER%%,%%TT_GROUP%%,) %%TT_RUNDIR%%
-- 
GitLab