diff --git a/games/minetest/Makefile b/games/minetest/Makefile index da692c3c99e1..1d73d911f5b9 100644 --- a/games/minetest/Makefile +++ b/games/minetest/Makefile @@ -1,116 +1,117 @@ PORTNAME= minetest PORTVERSION= 5.8.0 +PORTREVISION= 1 CATEGORIES= games MAINTAINER= amdmi3@FreeBSD.org COMMENT= Near-infinite-world block sandbox game WWW= https://www.minetest.net/ LICENSE= LGPL21+ LICENSE_FILE= ${WRKSRC}/doc/lgpl-2.1.txt LIB_DEPENDS= libgmp.so:math/gmp \ libjsoncpp.so:devel/jsoncpp \ libzstd.so:archivers/zstd USES= cmake compiler:c++17-lang cpe iconv:wchar_t sqlite USE_GITHUB= yes # check https://github.com/minetest/minetest/releases for applicable irrlichmt version GH_TUPLE= minetest:irrlicht:1.9.0mt13:irrlicht/lib/irrlichtmt CMAKE_ARGS= -DCUSTOM_EXAMPLE_CONF_DIR="${PREFIX}/etc" \ CMAKE_ON= ENABLE_SYSTEM_JSONCPP CMAKE_OFF= BUILD_DOCUMENTATION TEST_ENV= ${MAKE_ENV} LC_ALL=C.UTF-8 LDFLAGS_i386= -Wl,-znotext PORTDATA= * PORTDOCS= * OPTIONS_DEFINE= CURL SOUND NCURSES LUAJIT TEST \ DOCS EXAMPLES NLS OPTIONS_MULTI= COMP OPTIONS_GROUP= DATABASE OPTIONS_MULTI_COMP= CLIENT SERVER OPTIONS_GROUP_DATABASE= PGSQL LEVELDB REDIS SPATIAL OPTIONS_DEFAULT= CLIENT SERVER \ CURL SOUND NCURSES LUAJIT OPTIONS_SUB= yes COMP_DESC= Software components DATABASE_DESC= Database support CLIENT_DESC= Build client CLIENT_CMAKE_BOOL= BUILD_CLIENT CLIENT_LIB_DEPENDS= libpng.so:graphics/png \ libfreetype.so:print/freetype2 CLIENT_USES= gl jpeg xorg CLIENT_USE= GL=gl XORG=x11,xext,xi SERVER_DESC= Build server SERVER_CMAKE_BOOL= BUILD_SERVER CURL_DESC= Enable cURL support for fetching media CURL_CMAKE_BOOL= ENABLE_CURL CURL_LIB_DEPENDS= libcurl.so:ftp/curl SOUND_DESC= Enable sound SOUND_CMAKE_BOOL= ENABLE_SOUND NCURSES_DESC= Enable ncurses console NCURSES_CMAKE_BOOL= ENABLE_CURSES NCURSES_USES= ncurses LUAJIT_DESC= LuaJIT support LUAJIT_CMAKE_BOOL= ENABLE_LUAJIT REQUIRE_LUAJIT LUAJIT_USES= luajit:luajit-openresty PGSQL_USES= pgsql PGSQL_CMAKE_BOOL= ENABLE_POSTGRESQL LEVELDB_DESC= Enable LevelDB backend LEVELDB_CMAKE_BOOL= ENABLE_LEVELDB LEVELDB_LIB_DEPENDS= libleveldb.so:databases/leveldb REDIS_DESC= Enable Redis backend REDIS_CMAKE_BOOL= ENABLE_REDIS REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis SPATIAL_DESC= Enable SpatialIndex AreaStore backend SPATIAL_LIB_DEPENDS= libspatialindex.so:devel/spatialindex SPATIAL_CMAKE_BOOL= ENABLE_SPATIAL NLS_CMAKE_BOOL= ENABLE_GETTEXT NLS_USES= gettext NLS_LDFLAGS= -L${LOCALBASE}/lib TEST_CMAKE_BOOL= BUILD_UNITTESTS .include .if ${PORT_OPTIONS:MCLIENT} && ${PORT_OPTIONS:MSOUND} USES+= openal LIB_DEPENDS+= libvorbis.so:audio/libvorbis \ libogg.so:audio/libogg .endif .if ${PORT_OPTIONS:MSERVER} USE_RC_SUBR= ${PORTNAME} USERS= ${PORTNAME} GROUPS= ${PORTNAME} .endif post-extract: # make sure no bundled gmp is used @${RM} -rf ${WRKSRC}/lib/gmp ${WRKSRC}/lib/jsoncpp # bundled lua is OK, there's no option to use system one post-patch: @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \ ${WRKSRC}/cmake/Modules/*.cmake do-test-TEST-on: .if ${PORT_OPTIONS:MCLIENT} cd ${WRKDIR} && ${SETENV} ${TEST_ENV} ${STAGEDIR}${PREFIX}/bin/minetest --run-unittests .endif .if ${PORT_OPTIONS:MSERVER} cd ${WRKDIR} && ${SETENV} ${TEST_ENV} ${STAGEDIR}${PREFIX}/bin/minetestserver --run-unittests .endif .include diff --git a/games/minetest/files/minetest.in b/games/minetest/files/minetest.in index 2f1cf002309b..6598ecd2d556 100644 --- a/games/minetest/files/minetest.in +++ b/games/minetest/files/minetest.in @@ -1,74 +1,70 @@ #!/bin/sh # PROVIDE: minetest # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following line to /etc/rc.conf[.local] to enable minetest server # # minetest_enable (bool): Set to "NO" by default # Set it to "YES" to enable minetest server -# minetest_conffile (str): Path to config file (required). +# minetest_config (str): Path to config file (required). # (default: /usr/local/etc/minetest.conf) # minetest_rundir (str): Path to directory holding a pidfile. # (default: /var/run/minetest) # minetest_user (str): User to run as # (default: minetest) # minetest_group (str): Group to run as # (default: minetest) # minetest_logdir (str): Path to log directory # (default: /var/log/minetest) # minetest_dbdir (str): Path to world database directory # (default: /var/db/minetest) +# minetest_gameid (str): Path to world database directory +# (default: minetest_game) +# minetest_args (str): Additional arguments to minetestserver +# (default: "") . /etc/rc.subr name=minetest rcvar=minetest_enable load_rc_config ${name} : ${minetest_enable="NO"} -: ${minetest_config="/usr/local/etc/minetest.conf"} +: ${minetest_config="%%PREFIX%%/etc/minetest.conf"} : ${minetest_rundir="/var/run/minetest"} : ${minetest_user="minetest"} : ${minetest_group="minetest"} : ${minetest_logdir="/var/log/minetest"} : ${minetest_dbdir="/var/db/minetest"} -: ${minetest_args:="--logfile ${minetest_logdir}/debug.log --world ${minetest_dbdir}/world ${minetest_flags}"} - -pidfile= - -case "${minetest_args}" in -*--config\ *) - echo "Warning \$minetest_args includes --config option." \ - "Please use \$minetest_conffile instead." - ;; -*) - minetest_args="--config ${minetest_config} ${minetest_args}" - ;; -esac +: ${minetest_gameid="minetest_game"} +: ${minetest_args=""} command=/usr/sbin/daemon procname=/usr/local/bin/minetestserver pidfile=${minetest_rundir}/minetest.pid -command_args="-c -f -p ${pidfile} /usr/bin/env HOME='${minetest_dbdir}' ${procname} ${minetest_args}" +command_args="-c -f -p ${pidfile} /usr/bin/env HOME='${minetest_dbdir}' ${procname} --config ${minetest_config} --logfile ${minetest_logdir}/debug.log --world ${minetest_dbdir}/world --gameid ${minetest_gameid} ${minetest_args}" required_files=${minetest_config} start_precmd=minetest_prestart minetest_prestart () { + if ! ${procname} --gameid list | grep -q "."; then + echo "Warning: no games installed (\`${procname} --gameid list\` is empty). You may want to install games/minetest_game or other games from https://content.minetest.net/." 1>&2 + fi if [ ! -d ${minetest_rundir} ]; then mkdir -m 755 -p ${minetest_rundir} chown -R ${minetest_user}:${minetest_group} ${minetest_rundir} fi if [ ! -d ${minetest_logdir} ]; then mkdir -m 755 -p ${minetest_logdir} chown -R ${minetest_user}:${minetest_group} ${minetest_logdir} fi if [ ! -d ${minetest_dbdir} ]; then mkdir -m 755 -p ${minetest_dbdir}/data chown -R ${minetest_user}:${minetest_group} ${minetest_dbdir} fi } run_rc_command "$1"