diff options
author | Tobias Geerinckx-Rice <me@tobias.gr> | 2022-07-24 02:00:01 +0200 |
---|---|---|
committer | Tobias Geerinckx-Rice <me@tobias.gr> | 2022-09-04 02:00:01 +0200 |
commit | 26c2a8a32730f376345b3562c7a252869d63aadd (patch) | |
tree | 9dbbc9432fa26286499d07e8a38c25bb4415ccad | |
parent | 210dc1a15fb7efb7dd8abc717dc3e1b1db77c8af (diff) |
gnu: Add exult.
* gnu/packages/games.scm (exult): New public variable.
-rw-r--r-- | gnu/packages/games.scm | 97 |
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") |