games-server/bedrock-server: New package
authorConrad Kostecki <conikost@gentoo.org>
Mon, 9 Dec 2019 21:26:45 +0000 (22:26 +0100)
committerConrad Kostecki <conikost@gentoo.org>
Mon, 9 Dec 2019 22:05:21 +0000 (23:05 +0100)
This is the official minecraft server, which can be used with all
editions, which are based on the bedrock engine. It is not compatible
with the minecraft java edition.

Closes: https://github.com/gentoo/gentoo/pull/11857
Package-Manager: Portage-2.3.81, Repoman-2.3.20
Signed-off-by: Conrad Kostecki <conikost@gentoo.org>
games-server/bedrock-server/Manifest [new file with mode: 0644]
games-server/bedrock-server/bedrock-server-1.13.3.0.ebuild [new file with mode: 0644]
games-server/bedrock-server/files/bedrock-server.initd [new file with mode: 0644]
games-server/bedrock-server/metadata.xml [new file with mode: 0644]

diff --git a/games-server/bedrock-server/Manifest b/games-server/bedrock-server/Manifest
new file mode 100644 (file)
index 0000000..c1fc982
--- /dev/null
@@ -0,0 +1 @@
+DIST bedrock-server-1.13.3.0.zip 48812104 BLAKE2B 052e2445268c1e313139a6291aa8e5ef623a30f8dd26c32ed604f73318af75ae4f3f5c22ea3e73d18d6989388ff5da2600c5b0b019f3120db1779e49cad9d8c7 SHA512 2319f160ac69088c9420b1b6c999d576216c5a4b7034182e31572b2ece5f7bab3da049ee06f9b99b152da618a25f53df608c1eca23eab61b8ca9dbff24b78d6e
diff --git a/games-server/bedrock-server/bedrock-server-1.13.3.0.ebuild b/games-server/bedrock-server/bedrock-server-1.13.3.0.ebuild
new file mode 100644 (file)
index 0000000..78c6aa5
--- /dev/null
@@ -0,0 +1,52 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="The official bedrock (non-java) based server for the sandbox video game"
+HOMEPAGE="https://www.minecraft.net/"
+SRC_URI="https://minecraft.azureedge.net/bin-linux/${P}.zip"
+
+LICENSE="Mojang"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+
+RDEPEND="
+       acct-group/bedrock
+       acct-user/bedrock
+       app-misc/screen
+       dev-libs/openssl:0/1.1
+       net-misc/curl[ssl]
+"
+
+BDEPEND="app-arch/unzip"
+
+RESTRICT="bindist mirror"
+
+S="${WORKDIR}"
+
+DOCS=(
+       "bedrock_server_how_to.html"
+       "release-notes.txt"
+)
+
+QA_PREBUILT="
+       opt/bedrock-server/bedrock_server
+       opt/bedrock-server/libCrypto.so
+"
+
+src_install() {
+       exeinto /opt/bedrock-server
+       doexe bedrock_server libCrypto.so
+
+       insinto /opt/bedrock-server
+       doins {permissions,whitelist}.json server.properties
+       doins -r {behavior,resource}_packs definitions structures
+
+       dodir /opt/bin
+       dosym ../bedrock-server/bedrock_server /opt/bin/bedrock-server
+
+       newinitd "${FILESDIR}"/bedrock-server.initd bedrock-server
+
+       einstalldocs
+}
diff --git a/games-server/bedrock-server/files/bedrock-server.initd b/games-server/bedrock-server/files/bedrock-server.initd
new file mode 100644 (file)
index 0000000..9157b61
--- /dev/null
@@ -0,0 +1,47 @@
+#!/sbin/openrc-run
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+if [ "${SVCNAME}" = "bedrock-server" ]; then
+       instance="main"
+else
+       instance="${SVCNAME#*.}"
+fi
+
+bedrock_command="/opt/bin/bedrock-server"
+bedrock_path="/var/lib/bedrock-server"
+bedrock_path_data="/opt/bedrock-server"
+bedrock_path_instance="${bedrock_path}/${instance}"
+name="Minecraft Bedrock server (${instance})"
+pidfile="/run/bedrock-server.${instance}.pid"
+screen_name="bedrock-server.${instance}"
+start_stop_daemon_args="--chdir ${bedrock_path_instance}"
+
+command="/usr/bin/screen"
+command_args="-DmUS ${screen_name} ${bedrock_command}"
+command_background="true"
+command_group="bedrock"
+command_user="bedrock"
+
+depend() {
+       use net
+}
+
+start_pre() {
+       checkpath -d -o "${command_user}:${command_group}" -q "${bedrock_path}" "${bedrock_path_instance}"
+
+       local bedrock_configs=( "permissions.json" "server.properties" "whitelist.json" )
+       for bedrock_config in ${bedrock_configs[@]}; do
+               if [ ! -f "${bedrock_path_instance}/${bedrock_config}" ]; then
+                       cp "${bedrock_path_data}/${bedrock_config}" "${bedrock_path_instance}"
+                       checkpath -f -o "${command_user}:${command_group}" -q "${bedrock_path_instance}/${bedrock_config}"
+               fi
+       done
+
+       local bedrock_ressources=( "behavior_packs" "definitions" "resource_packs" "structures" )
+       for bedrock_ressource in ${bedrock_ressources[@]}; do
+               if [ ! -L "${bedrock_path_instance}/${bedrock_ressource}" ]; then
+                       ln -sf "${bedrock_path_data}/${bedrock_ressource}" "${bedrock_path_instance}"
+               fi
+       done
+}
diff --git a/games-server/bedrock-server/metadata.xml b/games-server/bedrock-server/metadata.xml
new file mode 100644 (file)
index 0000000..e3df9eb
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+       <maintainer type="person">
+               <email>conikost@gentoo.org</email>
+               <name>Conrad Kostecki</name>
+       </maintainer>
+       <longdescription>
+               Minecraft is a sandbox video game created and designed
+               by Swedish game designer Markus "Notch" Persson,
+               and later fully developed and published by Mojang.
+               This is the headless server for all versions of Minecraft
+               based on the bedrock engine and is not compatible with the java version.
+       </longdescription>
+       <upstream>
+               <bugs-to>https://bugs.mojang.com/projects/BDS/issues</bugs-to>
+       </upstream>
+</pkgmetadata>