nckx pushed a commit to branch master
in repository guix.

commit 095be32c4317ce15f524c2dea89d6a48090a9e8c
Author: Tobias Geerinckx-Rice <[email protected]>
AuthorDate: Sun Sep 24 02:00:00 2023 +0200

    gnu: Add xevil.
    
    * gnu/packages/games.scm (xevil): New public variable.
    
    Change-Id: I86885cc816685001a7d8d7dacccc396f39ddbd5f
---
 gnu/packages/games.scm | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 3206cc9b6c..a131fa5129 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -11212,6 +11212,85 @@ for display, and used by the program to implement 
Thorp's \"Complete Point
 System\" (high-low system).")
     (license (license:x11-style "" "See file headers."))))
 
+(define-public xevil
+  ;; This game is old.  Use a maintained fork that builds with modern 
toolchains
+  ;; on modern, 64-bit hardware.
+  (let ((commit "9ca85059d5195be0eb15e107de3bb9d1b49e5f99")
+        (revision "0"))
+    (package
+      (name "xevil")
+      (version (git-version "2.02" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/lvella/xevil";)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "14hsmw9ll2asnp1s0zvniyp31kjw8ynm7vnycg74lpqf28h2rric"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:modules `(,@%default-gnu-imported-modules
+                    (srfi srfi-26))
+        #:make-flags
+        #~(list "SHELL=sh"
+                "DEBUG_OPT=-g -DNDEBUG")
+        #:tests? #f                     ;no test suite
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'rename-licence-file
+              (lambda _ (rename-file "gpl.txt" "COPYING")))
+            (add-after 'unpack 'redefine
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "cmn/game.cpp"
+                  (("(#define VERSION ).*" _ define)
+                   (string-append define "\"" #$version "\"\n")))
+                (substitute* "cmn/utils.cpp"
+                  (("[^\"]*/(bin/uname)" _ command)
+                   (search-input-file inputs command)))
+                (substitute* "x11/ui.cpp"
+                  ;; Neither DEFAULT_BIG_FONT_NAME nor BACKUP_FONT_NAME are
+                  ;; available from most Guix X11 servers, making the game
+                  ;; unplayable by default.  Substitute the closest match.
+                  (("9x15") "6x13")
+                  ;; ‘For fast machines’ need no longer default to False in 
C21.
+                  (("(smoothScroll = )False" _ assign)
+                   (string-append assign "True")))))
+            (delete 'configure)         ;no configure script
+            (replace 'install
+              (lambda _
+                (with-directory-excursion "x11/REDHAT_LINUX" ;yeah
+                  (for-each (cut install-file <>
+                                 (string-append #$output "/bin"))
+                            (list "xevil" "serverping")))
+                (let ((doc (string-append #$output "/share/doc/"
+                                          #$name "-" #$version)))
+                  (mkdir-p doc)
+                  (for-each (lambda (file)
+                              (copy-recursively file
+                                                (string-append
+                                                 doc "/" (basename file))))
+                            (list "instructions" "x11/app-defaults"))))))))
+      (inputs
+       (list coreutils-minimal          ;for uname
+             libx11 libxpm))
+      ;; The current home page has been ‘subtly’ vandalised with spam and is
+      ;; missing a lot of content from this older snapshot.
+      (home-page (string-append "https://web.archive.org/web/20060410005819/";
+                                "http://www.xevil.com/";))
+      (synopsis
+       "Third-person, side-scrolling, fast-action, kill-everything game")
+      (description
+       "XEvil is a violent third-person, side-scrolling, fast-action 
deathmatch.
+You run around a randomly generated two-dimensional map composed of walls,
+floors, ladders, doors, and horizontal and vertical elevators.  Your only 
object
+is to explore this world to find weapons and items, killing everything in sight
+before they kill you.  You can fight against either computer-controlled enemies
+or against other people.")
+      (license license:gpl2+))))
+
 (define-public azimuth
   (package
     (name "azimuth")

Reply via email to