summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Fontenelle2019-06-21 09:39:03 -0300
committerRafael Fontenelle2019-06-21 10:12:16 -0300
commit69ddd8d8e54d8c7203c0dc3ffea90ea73dcd9026 (patch)
tree07f364c5abd1465e8769334641c427255e97ed15
parent1b3db3559cdd1122ba67d698c5a4b98e1b67c915 (diff)
downloadaur-69ddd8d8e54d8c7203c0dc3ffea90ea73dcd9026.tar.gz
Add DDNet Server systemd service, drop desktop
Instead of creating a .desktop file for the DDNet-Server executable, use a systemd unit file which runs the server instance as a user called "ddnet" and the service's data in "/var/lib/ddnet". ddnet-sysusers.conf is responsible for creating the user and group if they don't exist. It won't remove them upon package removal though, but one can use 'userdel ddnet' for that. ddnet-tmpfiles.conf is responsible for creating /var/lib/ddnet with the user and group newly created by sysusers.d config file. There will be stored autoexec_server.log, a "records" directory and any other persistent data. When starting the systemd unit file "ddnet-server.service", it runs the DDNet-Server executable with work directory "/var/lib/ddnet" as user "ddnet", which allows to store the persistent files in there. As a consequence of this change, "imagemagick" and "gendesk" are no longer needed for creating .png icon and .desktop files, so they were removed from makedepends array. .gitignore now includes *.conf and *.service to the exception list
-rw-r--r--.SRCINFO12
-rw-r--r--.gitignore2
-rw-r--r--PKGBUILD60
-rw-r--r--ddnet-server.service13
-rw-r--r--ddnet-sysusers.conf2
-rw-r--r--ddnet-tmpfiles.conf2
6 files changed, 41 insertions, 50 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 0e254a188636..8a56e80dd4cd 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = ddnet-git
pkgdesc = A Teeworlds modification with a unique cooperative gameplay.
- pkgver = 12.5.r15.g9c9264db8
- pkgrel = 2
+ pkgver = 12.5.r24.g6e24bf9ae
+ pkgrel = 1
url = https://ddnet.tw
arch = x86_64
license = custom:BSD
@@ -11,8 +11,6 @@ pkgbase = ddnet-git
makedepends = cmake
makedepends = ninja
makedepends = python
- makedepends = imagemagick
- makedepends = gendesk
depends = sdl2
depends = freetype2
depends = opusfile
@@ -26,7 +24,13 @@ pkgbase = ddnet-git
provides = ddnet
conflicts = ddnet
source = git+https://github.com/ddnet/ddnet
+ source = ddnet-server.service
+ source = ddnet-sysusers.conf
+ source = ddnet-tmpfiles.conf
sha256sums = SKIP
+ sha256sums = 9377a9d7c87abae166c8fa98cd79a61c74482f80f80bc930ae043349e9a84965
+ sha256sums = 70034f237270b38bf312238a26cfd322e212ca5714bfea4ae91e80c639ce8738
+ sha256sums = 043452f4de3c86d903973009bb3e59b3492a6669b86d0b1410e59a1476a87369
pkgname = ddnet-git
diff --git a/.gitignore b/.gitignore
index 1aace9926737..ddfe915b4f92 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@
!*.desktop
!*.png
!LICENSE
+!*.service
+!*.conf
# ... except files from PKGBUILD fields
!*.changelog
diff --git a/PKGBUILD b/PKGBUILD
index 381bc41b737a..055f255e65d5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,21 +2,25 @@
# Maintainer: Ryozuki <ryo@ryozuki.xyz>
pkgname=ddnet-git
-pkgver=12.5.r15.g9c9264db8
-pkgrel=2
+pkgver=12.5.r24.g6e24bf9ae
+pkgrel=1
pkgdesc="A Teeworlds modification with a unique cooperative gameplay."
arch=('x86_64')
url="https://ddnet.tw"
license=('custom:BSD' 'CCPL:by-nc-sa')
depends=('sdl2' 'freetype2' 'opusfile' 'curl' 'glew' 'wavpack' 'libwebsockets' 'pnglite')
-makedepends=('git' 'cmake' 'ninja' 'python' 'imagemagick' 'gendesk')
+makedepends=('git' 'cmake' 'ninja' 'python')
checkdepends=('gtest')
optdepends=('ddnet-skins: A collection with more than 700 custom tee skins.'
'ddnet-maps-git: All the maps used on the official DDNet Servers')
provides=('ddnet')
conflicts=('ddnet')
-source=("git+https://github.com/ddnet/ddnet")
-sha256sums=('SKIP')
+source=("git+https://github.com/ddnet/ddnet"
+ 'ddnet-server.service' 'ddnet-sysusers.conf' 'ddnet-tmpfiles.conf')
+sha256sums=('SKIP'
+ '9377a9d7c87abae166c8fa98cd79a61c74482f80f80bc930ae043349e9a84965'
+ '70034f237270b38bf312238a26cfd322e212ca5714bfea4ae91e80c639ce8738'
+ '043452f4de3c86d903973009bb3e59b3492a6669b86d0b1410e59a1476a87369')
# Set 1 to enable MySQL support and add dependencies
_enable_mysql=0
@@ -36,35 +40,8 @@ pkgver() {
printf $v.r$r.g$h
}
-prepare() {
- [ -d build ] && rm -rf build; mkdir build
- [ -d prep ] && rm -rf prep; mkdir prep
- cd prep
-
- # Extract icons in .png from .ico (name must be lowercase)
- convert ../DDNet-$pkgver/other/icons/DDNet-Server.ico ddnet-server.png
-
- # Generate the server .desktop file
- gendesk --pkgname="DDNet-Server" --name="DDNet Server" \
- --pkgdesc="DDNet Server" --terminal=true \
- --icon="ddnet-server" --categories="Game;ArcadeGame" \
- --exec='sh -c "cd /usr/share/ddnet/data && DDNet-Server"'
-
- # Create icon files' structure, for installing in package(). How:
- # For each png file, check its dimensions (e.g. 128 x 128) using
- # the output of 'file' command. Then double-check the 's' as a
- # number, then install it into a "size/filename.png" notation
- for f in ddnet-server-?.png; do
- s=$(file $f | cut -d' ' -f5)
- if [ ! -z "${s##*[!0-9]*}" ]; then
- install -Dm644 $f ${s}x${s}/apps/${f/-[0-9]/}
- rm $f
- fi
- done
-}
-
-
build() {
+ [ -d build ] && rm -rf build; mkdir build
cd build
cmake ../ddnet \
-DCMAKE_BUILD_TYPE=Release \
@@ -82,17 +59,8 @@ check() {
package() {
DESTDIR="$pkgdir" ninja install -C build
-
- # Install desktop files and folder
- install -dvm755 "$pkgdir/usr/share/applications/"
- install -vm644 prep/DDNet-Server.desktop "$pkgdir/usr/share/applications/"
-
- # Install icon files and folders
- for f in $(find prep -type f -name '*.png'); do
- install -Dvm644 $f "$pkgdir/usr/share/icons/hicolor"/${f/prep\/}
- done
-
- # Install license file
- install -dvm755 "$pkgdir/usr/share/licenses/$pkgname/"
- install -vm644 ddnet/license.txt "$pkgdir/usr/share/licenses/$pkgname/"
+ install -vDm644 ddnet/license.txt "$pkgdir/usr/share/licenses/$pkgname/license.txt"
+ install -vDm644 ddnet-server.service "$pkgdir/usr/lib/systemd/system/ddnet-server.service"
+ install -vDm644 "$srcdir/ddnet-sysusers.conf" "$pkgdir/usr/lib/sysusers.d/ddnet.conf"
+ install -vDm644 "$srcdir/ddnet-tmpfiles.conf" "$pkgdir/usr/lib/tmpfiles.d/ddnet.conf"
}
diff --git a/ddnet-server.service b/ddnet-server.service
new file mode 100644
index 000000000000..452fea2d4c9e
--- /dev/null
+++ b/ddnet-server.service
@@ -0,0 +1,13 @@
+[Unit]
+Description = DDNet Server
+After = network-online.target
+Wants = network-online.target
+
+[Service]
+ExecStart = /usr/bin/DDNet-Server
+WorkingDirectory = /var/lib/ddnet
+User = ddnet
+Group = ddnet
+
+[Install]
+WantedBy = multi-user.target
diff --git a/ddnet-sysusers.conf b/ddnet-sysusers.conf
new file mode 100644
index 000000000000..9d1ff5249d7d
--- /dev/null
+++ b/ddnet-sysusers.conf
@@ -0,0 +1,2 @@
+#Type Name ID GECOS Home directory Shell
+u ddnet - "DDNet user" /var/lib/ddnet
diff --git a/ddnet-tmpfiles.conf b/ddnet-tmpfiles.conf
new file mode 100644
index 000000000000..861bf8a37c86
--- /dev/null
+++ b/ddnet-tmpfiles.conf
@@ -0,0 +1,2 @@
+#Type Path Mode User Group Age Argument
+d /var/lib/ddnet 0755 ddnet ddnet