From owner-svn-ports-head@FreeBSD.ORG Sun Mar 1 22:21:11 2015 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0E085D75; Sun, 1 Mar 2015 22:21:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E327ED8E; Sun, 1 Mar 2015 22:21:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t21MLAaw011628; Sun, 1 Mar 2015 22:21:10 GMT (envelope-from marino@FreeBSD.org) Received: (from marino@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t21MLA49011622; Sun, 1 Mar 2015 22:21:10 GMT (envelope-from marino@FreeBSD.org) Message-Id: <201503012221.t21MLA49011622@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: marino set sender to marino@FreeBSD.org using -f From: John Marino Date: Sun, 1 Mar 2015 22:21:10 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r380231 - in head/games/minecraft-server: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Mar 2015 22:21:11 -0000 Author: marino Date: Sun Mar 1 22:21:09 2015 New Revision: 380231 URL: https://svnweb.freebsd.org/changeset/ports/380231 QAT: https://qat.redports.org/buildarchive/r380231/ Log: games/minecraft-server: Add support for running as a service PR: 197387 Submitted by: maintainer (Jonathan Price) Added: head/games/minecraft-server/files/minecraft.in (contents, props changed) Modified: head/games/minecraft-server/Makefile head/games/minecraft-server/files/pkg-message.in Modified: head/games/minecraft-server/Makefile ============================================================================== --- head/games/minecraft-server/Makefile Sun Mar 1 22:15:21 2015 (r380230) +++ head/games/minecraft-server/Makefile Sun Mar 1 22:21:09 2015 (r380231) @@ -2,6 +2,7 @@ PORTNAME= minecraft-server PORTVERSION= 1.8.1 +PORTREVISION= 1 CATEGORIES= games java MASTER_SITES= https://s3.amazonaws.com/Minecraft.Download/versions/${PORTVERSION}/ DISTNAME= minecraft_server.${PORTVERSION}.jar @@ -11,6 +12,10 @@ EXTRACT_ONLY= MAINTAINER= freebsd@jonathanprice.org COMMENT= Dedicated server for the game Minecraft +OPTIONS_DEFINE= DAEMON +DAEMON_DESC= Allows controlling via rc.d +OPTIONS_SUB= yes + USERS= mcserver GROUPS= ${USERS} @@ -27,6 +32,13 @@ CONFIG_FILES= banned-ips.json \ usercache.json \ whitelist.json +.include + +.if ${PORT_OPTIONS:MDAEMON} +USE_RC_SUBR+= minecraft +RUN_DEPENDS+= tmux:${PORTSDIR}/sysutils/tmux +.endif + do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/${PORTNAME} ${INSTALL_DATA} ${DISTDIR}/${DISTNAME} ${STAGEDIR}${PREFIX}/${PORTNAME} Added: head/games/minecraft-server/files/minecraft.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/minecraft-server/files/minecraft.in Sun Mar 1 22:21:09 2015 (r380231) @@ -0,0 +1,91 @@ +#!/bin/sh +# +# $FreeBSD$ +# PROVIDE: minecraft +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# rc.conf variables: +# minecraft_enable (Default: NO) +# minecraft_mem (Default: 1024M) +# minecraft_args (Default: "") +. /etc/rc.subr + +name=minecraft +rcvar=minecraft_enable +desc="Dedicated server for the game Minecraft" + +load_rc_config $name + +minecraft_mem=${minecraft_mem:-"1024M"} +minecraft_args=${minecraft_args:-""} + +extra_commands="console status" +start_cmd="${name}_start" +stop_cmd="${name}_stop" +console_cmd="${name}_console" +status_cmd="${name}_status" + +minecraft_start() +{ + pgrep -qu mcserver java + isrunning=$? + if [ ${isrunning} -eq 0 ]; then + echo "${name} already running." + else + echo "Starting ${name}." + cd %%PREFIX%%/minecraft-server + su mcserver -c "%%LOCALBASE%%/bin/tmux new-session -s minecraft -d '%%LOCALBASE%%/bin/java -Xmx${minecraft_mem} -Xms${minecraft_mem} ${minecraft_args} -jar %%PREFIX%%/minecraft-server/minecraft_server.1.8.1.jar nogui'" + fi +} + +minecraft_stop() +{ + pgrep -qu mcserver java + isrunning=$? + if [ ${isrunning} -eq 0 ]; then + echo "Stopping ${name}." + su mcserver -c "%%LOCALBASE%%/bin/tmux send-keys -t ${name} \"stop\" ENTER" + + i=0 + while [ $i -lt 10 ]; do + i=$(($i + 1)) + pgrep -qu mcserver java + stillrunning=$? + if [ ${stillrunning} -eq 0 ]; then + sleep 1 + else + echo "${name} stopped." + return + fi + done + echo "ERROR: ${name} could not be stopped." + else + echo "${name} not running." + fi +} + +minecraft_console() +{ + pgrep -qu mcserver java + isrunning=$? + if [ ${isrunning} -ne 0 ]; then + echo "${name} not running." + else + export TERM=xterm + su mcserver -c "%%LOCALBASE%%/bin/tmux attach-session -t ${name}" + fi +} + +minecraft_status() +{ + pgrep -qu mcserver java + isrunning=$? + if [ ${isrunning} -eq 0 ]; then + echo "${name} is running." + else + echo "${name} is not running." + fi +} + +run_rc_command "$1" Modified: head/games/minecraft-server/files/pkg-message.in ============================================================================== --- head/games/minecraft-server/files/pkg-message.in Sun Mar 1 22:15:21 2015 (r380230) +++ head/games/minecraft-server/files/pkg-message.in Sun Mar 1 22:21:09 2015 (r380231) @@ -1,16 +1,22 @@ When you first run minecraft-server, it will populate the file %%ETCDIR%%/eula.txt -It is required to read the EULA, and then set: -eula=true +It is required to read the EULA, and then set eula=true -- To run the server, run %%PREFIX%%/bin/minecraft-server - Configuration files can be found at %%ETCDIR%% - Log and debug output files can be found at /var/log/minecraft-server/ - World files can be found at /var/db/minecraft-server + +Without daemon option: +- To run the server, run %%PREFIX%%/bin/minecraft-server - To edit java's parameters, edit %%ETCDIR%%/java-args.txt -NOTE: +With daemon option: +- The service has been installed with the name 'minecraft' +- To adjust memory usage, use MINECRAFT_MEM= in /etc/rc.conf +- To add other java parameters, use MINECRAFT_ARGS= in /etc/rc.conf +- To see the interactive console, type service minecraft console + Users upgrading from version < 1.8 are advised to run the server to generate new config files, and then modify them based on their existing configuration, as most files are now JSON instead of txt.