diff options
author | Rafael Fontenelle | 2019-06-21 09:39:03 -0300 |
---|---|---|
committer | Rafael Fontenelle | 2019-06-21 10:12:16 -0300 |
commit | 69ddd8d8e54d8c7203c0dc3ffea90ea73dcd9026 (patch) | |
tree | 07f364c5abd1465e8769334641c427255e97ed15 | |
parent | 1b3db3559cdd1122ba67d698c5a4b98e1b67c915 (diff) | |
download | aur-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-- | .SRCINFO | 12 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | PKGBUILD | 60 | ||||
-rw-r--r-- | ddnet-server.service | 13 | ||||
-rw-r--r-- | ddnet-sysusers.conf | 2 | ||||
-rw-r--r-- | ddnet-tmpfiles.conf | 2 |
6 files changed, 41 insertions, 50 deletions
@@ -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 @@ -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 |