aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/games.scm
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2022-07-24 02:00:01 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2022-09-04 02:00:01 +0200
commit26c2a8a32730f376345b3562c7a252869d63aadd (patch)
tree9dbbc9432fa26286499d07e8a38c25bb4415ccad /gnu/packages/games.scm
parent210dc1a15fb7efb7dd8abc717dc3e1b1db77c8af (diff)
downloadguix-26c2a8a32730f376345b3562c7a252869d63aadd.tar
guix-26c2a8a32730f376345b3562c7a252869d63aadd.tar.gz
gnu: Add exult.
* gnu/packages/games.scm (exult): New public variable.
Diffstat (limited to 'gnu/packages/games.scm')
-rw-r--r--gnu/packages/games.scm97
1 files changed, 97 insertions, 0 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 9b246a6e87..2c7f892f19 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -3961,6 +3961,103 @@ This game is based on the GPL version of the famous game TuxRacer.")
(home-page "https://sourceforge.net/projects/extremetuxracer/")
(license license:gpl2+)))
+(define-public exult
+ (package
+ (name "exult")
+ (version "1.8")
+ (source
+ (origin
+ ;; The release tarball isn't bootstrapped, and Git is more robust (SWH).
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/exult/exult")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1qfbkz05w8989vafc6dvw1wmdi1mvkr4kkgk3ccixadf4616kcb3"))))
+ (build-system gnu-build-system)
+ (outputs (list "out" "gimp" "studio"))
+ (arguments
+ (list #:configure-flags
+ #~(list "--enable-shared"
+ "--disable-static"
+ "--enable-lto"
+ "--enable-exult-studio"
+ "--enable-exult-studio-support"
+ "--enable-compiler"
+ "--enable-mods" ; needs --enable-compiler!
+ "--enable-gimp-plugin"
+ ;; A few lines on stdout can save a lot of head-scratching:
+ "CPPFLAGS=-DDEBUG_PATHS=1")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'bootstrap 'patch-game-home-directory
+ (lambda _
+ (substitute* "gamemgr/modmgr.cc"
+ ;; EXULT_DATADIR is in the store where it's rather hard for
+ ;; users to put game assets. Use a more writable home by
+ ;; default, which users can override in their ~/.exult.cfg.
+ (("<GAMEHOME>")
+ (string-append "<HOME>/.local/share/exult"))
+ ;; …however, this causes a regression: the mods which we'll
+ ;; install to EXULT_DATADIR are no longer found. So: don't
+ ;; look for mods alongside the assets by default. This too
+ ;; can be overridden in users' ~/.exult.cfg.
+ (("game_path( \\+ \"/mods\")" _ +suffix)
+ (string-append "get_system_path(\"<GAMEHOME>/\") + "
+ "cfgname" +suffix)))))
+ (add-before 'bootstrap 'move-exult-studio
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "studio")))
+ (substitute* "mapedit/studio.cc"
+ (("(esdir, )EXULT_DATADIR" _ prefix)
+ (string-append prefix "\"" out "/share/exult\"")))
+ (substitute* "data/Makefile.am"
+ (("(estudionewdir =.*)\\$\\(datadir\\)(.*)"
+ _ variable= suffix)
+ (string-append variable= out "/share" suffix "\n"))))))
+ (add-before 'bootstrap 'fix-gimp-plug-in-prefix
+ ;; ./configure will propagate this value to myriad Makefiles
+ ;; scattered across the tree, so fix it early.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "gimp")))
+ (substitute* "configure.ac"
+ (("(GIMP_PLUGIN_PREFIX=).*" _ variable=)
+ (string-append variable= out "/lib/gimp/2.0"))))))
+ (add-after 'install 'move-exult_studio
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((source (assoc-ref outputs "out"))
+ (target (assoc-ref outputs "studio"))
+ (file "/bin/exult_studio"))
+ (mkdir-p (string-append target (dirname file)))
+ (rename-file (string-append source file)
+ (string-append target file))))))))
+ (native-inputs
+ (list autoconf automake libtool pkg-config
+ ;; The following are needed only by the GIMP plug-in.
+ gimp libjpeg-turbo
+ gegl gtk+-2 ; needed by gimpui-2.0.pc
+ ;; The following are needed only by the Usecode compiler.
+ bison flex))
+ (inputs
+ (list fluidsynth freetype libvorbis sdl2
+ ;; GTK is needed only by Exult Studio.
+ gtk+))
+ (synopsis "Role-playing game engine compatible with Ultima VII")
+ (description
+ "Exult is an Ultima 7 game engine that runs on modern operating systems.
+Ultima 7 (or Ultima VII) is a two-part @acronym{RPG, role-playing game} from the
+early 1990s.
+
+Exult is fully compatible with the original Ultima 7, but doesn't require any
+of its data files to be useful. Explore entirely new game worlds---or create
+your own with the included game and map editor, Exult Studio.
+
+This package expects the game(s) to be placed in subdirectories of
+@file{~/.local/share/exult}.")
+ (home-page "http://exult.info/")
+ (license license:gpl2+)))
+
(define-public supertuxkart
(package
(name "supertuxkart")