GNU bug report logs - #30196
[PATCH 0/2] Add wesnothd service

Previous Next

Package: guix-patches;

Reported by: Arun Isaac <arunisaac <at> systemreboot.net>

Date: Sun, 21 Jan 2018 18:35:01 UTC

Severity: normal

Tags: patch

Done: Arun Isaac <arunisaac <at> systemreboot.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 30196 in the body.
You can then email your comments to 30196 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#30196; Package guix-patches. (Sun, 21 Jan 2018 18:35:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Arun Isaac <arunisaac <at> systemreboot.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 21 Jan 2018 18:35:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Arun Isaac <arunisaac <at> systemreboot.net>
To: guix-patches <at> gnu.org
Cc: Arun Isaac <arunisaac <at> systemreboot.net>
Subject: [PATCH 0/2] Add wesnothd service
Date: Mon, 22 Jan 2018 00:03:48 +0530
This patchset creates a service to run the Battle for Wesnoth multiplayer game
server. I have created a minimal wesnoth-server package that only has the
server and doesn't have the actual game or any of the game assets. One might
have to run the wesnothd service on an headless server. This minimal package
makes that convenient by greatly reducing the size and the dependencies pulled
in.

This is my first Guix service. I have probably not gotten everything right. Do
feel free to criticize.

Arun Isaac (2):
  gnu: Add wesnoth-server.
  gnu: services: Add wesnothd service.

 doc/guix.texi          | 35 +++++++++++++++++++++-
 gnu/local.mk           |  1 +
 gnu/packages/games.scm | 24 ++++++++++++++-
 gnu/services/games.scm | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 139 insertions(+), 2 deletions(-)
 create mode 100644 gnu/services/games.scm

-- 
2.15.1





Information forwarded to guix-patches <at> gnu.org:
bug#30196; Package guix-patches. (Sun, 21 Jan 2018 18:38:02 GMT) Full text and rfc822 format available.

Message #8 received at 30196 <at> debbugs.gnu.org (full text, mbox):

From: Arun Isaac <arunisaac <at> systemreboot.net>
To: 30196 <at> debbugs.gnu.org
Cc: Arun Isaac <arunisaac <at> systemreboot.net>
Subject: [PATCH 1/2] gnu: Add wesnoth-server.
Date: Mon, 22 Jan 2018 00:07:12 +0530
* gnu/packages/games.scm (wesnoth-server): New variable.
---
 gnu/packages/games.scm | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 1213d87a5..5fb4be8e3 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -25,7 +25,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke <at> gnu.org>
 ;;; Copyright © 2016 Steve Webber <webber.sl <at> gmail.com>
 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno <at> hyperbola.info>
-;;; Copyright © 2017 Arun Isaac <arunisaac <at> systemreboot.net>
+;;; Copyright © 2017, 2018 Arun Isaac <arunisaac <at> systemreboot.net>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2017 nee <nee-git <at> hidamari.blue>
 ;;; Copyright © 2017 Clément Lassieur <clement <at> lassieur.org>
@@ -1801,6 +1801,28 @@ experience and advance levels, and are carried over from one scenario to the
 next campaign.")
     (license license:gpl2+)))
 
+(define-public wesnoth-server
+  (package
+    (inherit wesnoth)
+    (name "wesnoth-server")
+    (inputs
+     `(("boost" ,boost)
+       ("sdl-net" ,sdl-net)))
+    (arguments
+     (append
+      (substitute-keyword-arguments (package-arguments wesnoth)
+        ((#:configure-flags configure-flags)
+         `(append ,configure-flags (list "-DENABLE_GAME=OFF"))))
+      `(#:phases
+        (modify-phases %standard-phases
+          (add-after 'install 'delete-data
+            (lambda* (#:key outputs #:allow-other-keys)
+              (delete-file-recursively (string-append (assoc-ref outputs "out")
+                                                      "/share/wesnoth"))))))))
+    (synopsis "Dedicated Battle for Wesnoth server")
+    (description "This package contains a dedicated server for The Battle for
+Wesnoth.")))
+
 (define-public dosbox
   (package
     (name "dosbox")
-- 
2.15.1





Information forwarded to guix-patches <at> gnu.org:
bug#30196; Package guix-patches. (Mon, 22 Jan 2018 12:12:02 GMT) Full text and rfc822 format available.

Message #11 received at 30196 <at> debbugs.gnu.org (full text, mbox):

From: Arun Isaac <arunisaac <at> systemreboot.net>
To: 30196 <at> debbugs.gnu.org
Cc: Arun Isaac <arunisaac <at> systemreboot.net>
Subject: [PATCH 2/2] gnu: services: Add wesnothd service.
Date: Mon, 22 Jan 2018 17:41:04 +0530
* gnu/services/games.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* doc/guix.texi (Game Services): Document the service.
---
 doc/guix.texi          | 35 +++++++++++++++++++++-
 gnu/local.mk           |  1 +
 gnu/services/games.scm | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 116 insertions(+), 1 deletion(-)
 create mode 100644 gnu/services/games.scm

diff --git a/doc/guix.texi b/doc/guix.texi
index 983e00ab3..d96de977c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -43,7 +43,7 @@ Copyright @copyright{} 2017 Maxim Cournoyer@*
 Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@*
 Copyright @copyright{} 2017 George Clemmer@*
 Copyright @copyright{} 2017 Andy Wingo@*
-Copyright @copyright{} 2017 Arun Isaac@*
+Copyright @copyright{} 2017, 2018 Arun Isaac@*
 Copyright @copyright{} 2017 nee@*
 Copyright @copyright{} 2018 Rutger Helling
 
@@ -248,6 +248,7 @@ Services
 * Audio Services::              The MPD.
 * Virtualization Services::     Virtualization services.
 * Version Control Services::    Providing remote access to Git repositories.
+* Game Services::                Game servers.
 * Miscellaneous Services::      Other services.
 
 Defining Services
@@ -9469,6 +9470,7 @@ declaration.
 * Audio Services::              The MPD.
 * Virtualization Services::     Virtualization services.
 * Version Control Services::    Providing remote access to Git repositories.
+* Game Services::                Game servers.
 * Miscellaneous Services::      Other services.
 @end menu
 
@@ -18095,6 +18097,37 @@ HTTPS.  You will also need to add an @code{fcgiwrap} proxy to your
 system services.  @xref{Web Services}.
 @end deffn
 
+@node Game Services
+@subsubsection Game Services
+
+@subsubheading The Battle for Wesnoth Service
+@cindex wesnothd
+@uref{https://wesnoth.org, The Battle for Wesnoth} is a fantasy, turn
+based tactical strategy game, with several single player campaigns, and
+multiplayer games (both networked and local).
+
+@defvar {Scheme Variable} wesnothd-service-type
+Service type for the wesnothd service.  Its value must be a
+@code{wesnothd-configuration} object.  To run wesnothd in the default
+configuration, instantiate it as:
+
+@example
+(service wesnothd-service-type)
+@end example
+@end defvar
+
+@deftp {Data Type} wesnothd-configuration
+Data type representing the configuration of @command{wesnothd}.
+
+@table @asis
+@item @code{package} (default: @code{wesnoth-server})
+The wesnoth server package to use.
+
+@item @code{port} (default: @code{15000})
+The port to bind the server to.
+@end table
+@end deftp
+
 @node Miscellaneous Services
 @subsubsection Miscellaneous Services
 
diff --git a/gnu/local.mk b/gnu/local.mk
index 240554fe4..19b92b87b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -457,6 +457,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/services/desktop.scm			\
   %D%/services/dict.scm				\
   %D%/services/dns.scm				\
+  %D%/services/games.scm			\
   %D%/services/kerberos.scm			\
   %D%/services/lirc.scm				\
   %D%/services/virtualization.scm		\
diff --git a/gnu/services/games.scm b/gnu/services/games.scm
new file mode 100644
index 000000000..b14669623
--- /dev/null
+++ b/gnu/services/games.scm
@@ -0,0 +1,81 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Arun Isaac <arunisaac <at> systemreboot.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services games)
+  #:use-module (gnu services)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages games)
+  #:use-module (gnu system shadow)
+  #:use-module (guix gexp)
+  #:use-module (guix modules)
+  #:use-module (guix records)
+  #:use-module (ice-9 match)
+  #:export (wesnothd-configuration
+            wesnoth-configuration?
+            wesnothd-service-type))
+
+;;;
+;;; The Battle for Wesnoth server
+;;;
+
+(define-record-type* <wesnothd-configuration>
+  wesnothd-configuration make-wesnothd-configuration wesnothd-configuration?
+  (package wesnothd-configuration-package
+           (default wesnoth-server))
+  (port wesnothd-configuration-port
+        (default 15000)))
+
+(define %wesnothd-accounts
+  (list (user-account
+         (name "wesnothd")
+         (group "wesnothd")
+         (system? #t)
+         (comment "Wesnoth daemon user")
+         (home-directory "/var/empty")
+         (shell (file-append shadow "/sbin/nologin")))
+        (user-group
+         (name "wesnothd")
+         (system? #t))))
+
+(define wesnothd-shepherd-service
+  (match-lambda
+    (($ <wesnothd-configuration> package port)
+     (with-imported-modules (source-module-closure
+                             '((gnu build shepherd)))
+       (shepherd-service
+        (documentation "The Battle for Wesnoth server")
+        (provision '(wesnoth-daemon))
+        (requirement '(networking))
+        (modules '((gnu build shepherd)))
+        (start #~(make-forkexec-constructor/container
+                  (list #$(file-append package "/bin/wesnothd")
+                        "-p" #$(number->string port))))
+        (stop #~(make-kill-destructor)))))))
+
+(define wesnothd-service-type
+  (service-type
+   (name 'wesnothd)
+   (description
+    "Run The Battle for Wesnoth server @command{wesnothd}.")
+   (extensions
+    (list (service-extension account-service-type
+                             (const %wesnothd-accounts))
+          (service-extension shepherd-root-service-type
+                             (compose list wesnothd-shepherd-service))))
+   (default-value (wesnothd-configuration))))
-- 
2.15.1





Information forwarded to guix-patches <at> gnu.org:
bug#30196; Package guix-patches. (Tue, 06 Feb 2018 15:19:02 GMT) Full text and rfc822 format available.

Message #14 received at 30196 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Arun Isaac <arunisaac <at> systemreboot.net>
Cc: 30196 <at> debbugs.gnu.org
Subject: Re: [bug#30196] [PATCH 1/2] gnu: Add wesnoth-server.
Date: Tue, 06 Feb 2018 16:18:13 +0100
Hi Arun,

Arun Isaac <arunisaac <at> systemreboot.net> skribis:

> * gnu/packages/games.scm (wesnoth-server): New variable.


[...]

> +(define-public wesnoth-server
> +  (package
> +    (inherit wesnoth)
> +    (name "wesnoth-server")
> +    (inputs
> +     `(("boost" ,boost)
> +       ("sdl-net" ,sdl-net)))
> +    (arguments
> +     (append
> +      (substitute-keyword-arguments (package-arguments wesnoth)
> +        ((#:configure-flags configure-flags)
> +         `(append ,configure-flags (list "-DENABLE_GAME=OFF"))))
> +      `(#:phases
> +        (modify-phases %standard-phases
> +          (add-after 'install 'delete-data
> +            (lambda* (#:key outputs #:allow-other-keys)
> +              (delete-file-recursively (string-append (assoc-ref outputs "out")
> +                                                      "/share/wesnoth"))))))))

I suppose this phase is because the game data isn’t actually used by the
server, right?  Perhaps worth mentioning in a comment.

> +    (synopsis "Dedicated Battle for Wesnoth server")

Maybe “Server for the @emph{Battle for Wesnoth} game”.

> +    (description "This package contains a dedicated server for The Battle for
> +Wesnoth.")))

Likewise.

OK with these changes, thanks!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#30196; Package guix-patches. (Tue, 06 Feb 2018 15:21:02 GMT) Full text and rfc822 format available.

Message #17 received at 30196 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Arun Isaac <arunisaac <at> systemreboot.net>
Cc: 30196 <at> debbugs.gnu.org
Subject: Re: [bug#30196] [PATCH 2/2] gnu: services: Add wesnothd service.
Date: Tue, 06 Feb 2018 16:20:27 +0100
Hi,

Arun Isaac <arunisaac <at> systemreboot.net> skribis:

> * gnu/services/games.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
> * doc/guix.texi (Game Services): Document the service.

LGTM, thanks!

You’d get bonus points by writing a system test, but perhaps there’s not
much that could easily be tested.  So, no big deal.

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#30196; Package guix-patches. (Thu, 08 Feb 2018 12:14:02 GMT) Full text and rfc822 format available.

Message #20 received at 30196 <at> debbugs.gnu.org (full text, mbox):

From: Arun Isaac <arunisaac <at> systemreboot.net>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 30196 <at> debbugs.gnu.org
Subject: Re: [bug#30196] [PATCH 2/2] gnu: services: Add wesnothd service.
Date: Thu, 08 Feb 2018 17:42:38 +0530
>> * gnu/services/games.scm: New file.
>> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
>> * doc/guix.texi (Game Services): Document the service.
>
> LGTM, thanks!

Thanks, I'll push with the changes you mentioned.

> You’d get bonus points by writing a system test, but perhaps there’s not
> much that could easily be tested.  So, no big deal.

I might be able to write a simple test that checks if the server has
started successfully and is listening on port 15000. But, this seems too
trivial a test to me. Is it worth it? WDYT?




Information forwarded to guix-patches <at> gnu.org:
bug#30196; Package guix-patches. (Thu, 08 Feb 2018 21:58:01 GMT) Full text and rfc822 format available.

Message #23 received at 30196 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Arun Isaac <arunisaac <at> systemreboot.net>
Cc: 30196 <at> debbugs.gnu.org
Subject: Re: [bug#30196] [PATCH 2/2] gnu: services: Add wesnothd service.
Date: Thu, 08 Feb 2018 22:57:04 +0100
Arun Isaac <arunisaac <at> systemreboot.net> skribis:

>>> * gnu/services/games.scm: New file.
>>> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
>>> * doc/guix.texi (Game Services): Document the service.
>>
>> LGTM, thanks!
>
> Thanks, I'll push with the changes you mentioned.
>
>> You’d get bonus points by writing a system test, but perhaps there’s not
>> much that could easily be tested.  So, no big deal.
>
> I might be able to write a simple test that checks if the server has
> started successfully and is listening on port 15000. But, this seems too
> trivial a test to me. Is it worth it? WDYT?

Yeah I thought about it, probably not worth it.

Thanks,
Ludo’.




Reply sent to Arun Isaac <arunisaac <at> systemreboot.net>:
You have taken responsibility. (Fri, 09 Feb 2018 09:53:01 GMT) Full text and rfc822 format available.

Notification sent to Arun Isaac <arunisaac <at> systemreboot.net>:
bug acknowledged by developer. (Fri, 09 Feb 2018 09:53:01 GMT) Full text and rfc822 format available.

Message #28 received at 30196-done <at> debbugs.gnu.org (full text, mbox):

From: Arun Isaac <arunisaac <at> systemreboot.net>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 30196-done <at> debbugs.gnu.org
Subject: Re: [bug#30196] [PATCH 2/2] gnu: services: Add wesnothd service.
Date: Fri, 09 Feb 2018 15:22:09 +0530
Arun Isaac <arunisaac <at> systemreboot.net> writes:

>>> * gnu/services/games.scm: New file.
>>> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
>>> * doc/guix.texi (Game Services): Document the service.
>>
>> LGTM, thanks!

Pushed!




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 09 Mar 2018 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 7 years and 163 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.