me
/
guix
Archived
1
0
Fork 0

gnu: Add exult.

* gnu/packages/games.scm (exult): New public variable.
master
Tobias Geerinckx-Rice 2022-07-24 02:00:01 +02:00
parent 210dc1a15f
commit 26c2a8a327
No known key found for this signature in database
GPG Key ID: 0DB0FF884F556D79
1 changed files with 97 additions and 0 deletions

View File

@ -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")