summary refs log tree commit diff
path: root/gnu/packages/games.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/games.scm')
-rw-r--r--gnu/packages/games.scm202
1 files changed, 110 insertions, 92 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 521bfcca2c..dd2444e3c9 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -65,6 +65,8 @@
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2021 Christopher Baines <mail@cbaines.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -151,6 +153,7 @@
   #:use-module (gnu packages less)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libedit)
+  #:use-module (gnu packages libidn)
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -171,6 +174,7 @@
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
@@ -4276,14 +4280,14 @@ world}, @uref{http://evolonline.org, Evol Online} and
 (define openttd-engine
   (package
     (name "openttd-engine")
-    (version "1.11.2")
+    (version "12.0")
     (source
      (origin (method url-fetch)
              (uri (string-append "https://cdn.openttd.org/openttd-releases/"
                                  version "/openttd-" version "-source.tar.xz"))
              (sha256
               (base32
-               "0v9f93lsdcv3ia28y8iihx9nj9zp6fpf5hkdrpl4ypw159d97fhg"))))
+               "1p1j5cf4ry57dcgm7qx2g2s00z1c6qgjabb4kqjp00yz00wgv85v"))))
     (build-system cmake-build-system)
     (inputs
      `(("allegro" ,allegro)
@@ -4313,7 +4317,7 @@ engine.  When you start it you will be prompted to download a graphics set.")
 (define openttd-opengfx
   (package
     (name "openttd-opengfx")
-    (version "0.6.1")
+    (version "7.1")
     (source
      (origin
        (method url-fetch)
@@ -4321,10 +4325,10 @@ engine.  When you start it you will be prompted to download a graphics set.")
                            version "/opengfx-" version "-source.tar.xz"))
        (sha256
         (base32
-         "0jgy8xv7r72m127qn09vr3rxhnbakl2990f7lldsk0d5d8n993vd"))))
+         "0nhzlk6s73qvznm5fdwcs1b42g2plf26s5ag39fvck45zm7m48jk"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags (list "CC=gcc"
+     `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
                           (string-append "INSTALL_DIR="
                                          (assoc-ref %outputs "out")
                                          "/share/games/openttd/baseset/opengfx"))
@@ -4352,7 +4356,7 @@ engine.  When you start it you will be prompted to download a graphics set.")
                      ("grfcodec" ,grfcodec)
                      ("nml" ,nml)
                      ("which" ,which)
-                     ("python" ,python-2)))
+                     ("python" ,python)))
     (home-page "http://dev.openttdcoop.org/projects/opengfx")
     (synopsis "Base graphics set for OpenTTD")
     (description
@@ -4372,7 +4376,7 @@ OpenGFX provides you with...
 (define openttd-opensfx
   (package
     (name "openttd-opensfx")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
@@ -4381,11 +4385,11 @@ OpenGFX provides you with...
              version "/opensfx-" version "-source.tar.xz"))
        (sha256
         (base32
-         "06vycppqcxbfdqlxzna5xr303zgcmpcvj6ylw5b2ws0ssph2f1s0"))))
+         "0aym026lg0r7dp3jxxs9c0rj8lwy1fz3v9hmk3mml6sycsg3fv42"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("catcodec" ,catcodec)
-       ("python" ,python-2)
+       ("python" ,python)
        ("tar" ,tar)))
     (arguments
      `(#:make-flags
@@ -4422,7 +4426,7 @@ the original Transport Tycoon Deluxe.")
 (define openttd-openmsx
   (package
     (name "openttd-openmsx")
-    (version "0.4.0")
+    (version "0.4.2")
     (source
      (origin
        (method url-fetch)
@@ -4431,11 +4435,13 @@ the original Transport Tycoon Deluxe.")
              version "/openmsx-" version "-source.tar.xz"))
        (sha256
         (base32
-         "0prjljsdgdxqdhhcriqskqha004ybs575xcjq80zha3pqnmrdk0k"))))
+         "0h583d8fxy78kc3jvpp78r76a48qhxrhm4q7jbnj74aw0kwrcl8g"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("grfcodec" ,grfcodec)
-       ("python" ,python-2)
+       ; Scripts are Python3 compatible, but call the interpreter as
+       ; python instead of python3.
+       ("python" ,python-wrapper)
        ("tar" ,tar)))
     (arguments
      `(#:make-flags
@@ -4484,6 +4490,7 @@ Transport Tycoon Deluxe.")
      `(("opengfx" ,openttd-opengfx)
        ("openmsx" ,openttd-openmsx)
        ("opensfx" ,openttd-opensfx)
+       ("gcc" ,gcc-9)                   ; for #include <charconv>
        ,@(package-native-inputs openttd-engine)))))
 
 (define openrct2-title-sequences
@@ -6647,7 +6654,7 @@ fight against their plot and save his fellow rabbits from slavery.")
 (define-public 0ad-data
   (package
     (name "0ad-data")
-    (version "0.0.23b-alpha")
+    (version "0.0.25b-alpha")
     (source
      (origin
        (method url-fetch)
@@ -6655,21 +6662,10 @@ fight against their plot and save his fellow rabbits from slavery.")
                            version "-unix-data.tar.xz"))
        (file-name (string-append name "-" version ".tar.xz"))
        (sha256
-        (base32
-         "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
-       (modules '((guix build utils)))
-       (snippet
-        #~(begin
-            (for-each (lambda (name)
-                        (let* ((dir (string-append "binaries/data/mods/" name))
-                               (file (string-append dir "/" name ".zip"))
-                               (unzip #$(file-append unzip "/bin/unzip")))
-                          (invoke unzip "-d" dir file)
-                          (delete-file file)))
-                      '("mod" "public"))
-            #t))))
+        (base32 "1c9zrddmjxvvacismld6fbwbw9vrdbq6g6d3424p8w5p6xg5wlwy"))))
     (build-system trivial-build-system)
     (native-inputs `(("tar" ,tar)
+                     ("unzip" ,unzip)
                      ("xz" ,xz)))
     (arguments
      `(#:modules ((guix build utils))
@@ -6679,10 +6675,17 @@ fight against their plot and save his fellow rabbits from slavery.")
          (let ((out (assoc-ref %outputs "out"))
                (source (assoc-ref %build-inputs "source"))
                (tar (search-input-file %build-inputs "/bin/tar"))
+               (unzip (search-input-file %build-inputs "/bin/unzip"))
                (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
            (setenv "PATH" xz-path)
            (mkdir out)
-           (invoke tar "xvf" source "-C" out "--strip=3")))))
+           (invoke tar "xvf" source "-C" out "--strip=3")
+           (for-each (lambda (name)
+                       (let* ((dir (string-append out "/mods/" name))
+                              (file (string-append dir "/" name ".zip")))
+                         (invoke unzip "-o" "-d" dir file)
+                         (delete-file file)))
+                     '("mod" "public"))))))
     (synopsis "Data files for 0ad")
     (description "0ad-data provides the data files required by the game 0ad.")
     (home-page "https://play0ad.com")
@@ -6700,7 +6703,7 @@ fight against their plot and save his fellow rabbits from slavery.")
 (define-public 0ad
   (package
     (name "0ad")
-    (version "0.0.23b-alpha")
+    (version "0.0.25b-alpha")
     (source
      (origin
        (method url-fetch)
@@ -6708,23 +6711,24 @@ fight against their plot and save his fellow rabbits from slavery.")
                            version "-unix-build.tar.xz"))
        (file-name (string-append name "-" version ".tar.xz"))
        (sha256
-        (base32
-         "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
-       ;; A snippet here would cause a build failure because of timestamps
-       ;; reset.  See https://bugs.gnu.org/26734.
+        (base32 "1p9fa8f7sjb9c5wl3mawzyfqvgr614kdkhrj2k4db9vkyisws3fp"))))
+    ;; A snippet here would cause a build failure because of timestamps
+    ;; reset.  See https://bugs.gnu.org/26734.
     (inputs
      `(("0ad-data" ,0ad-data)
        ("curl" ,curl)
        ("enet" ,enet)
+       ("fmt" ,fmt)
        ("gloox" ,gloox)
-       ("icu4c" ,icu4c)
+       ("icu4c" ,icu4c-68)
+       ("libidn" ,libidn)
        ("libpng" ,libpng)
        ("libsodium" ,libsodium)
        ("libvorbis" ,libvorbis)
        ("libxcursor" ,libxcursor)
        ("libxml2" ,libxml2)
        ("miniupnpc" ,miniupnpc)
-       ("mozjs-38" ,mozjs-38)
+       ("mozjs" ,mozjs-78)
        ("openal" ,openal)
        ("sdl2" ,sdl2)
        ("wxwidgets" ,wxwidgets)
@@ -6732,29 +6736,27 @@ fight against their plot and save his fellow rabbits from slavery.")
     (native-inputs
      `(("boost" ,boost)
        ("cmake" ,cmake-minimal)
+       ("cxxtest" ,cxxtest)
        ("mesa" ,mesa)
        ("pkg-config" ,pkg-config)
        ("python-2" ,python-2)))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
+       #:tests? #f                      ;tests fail currently
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'delete-bundles
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
              (delete-file-recursively "libraries/source/spidermonkey")
-             #t))
-         (add-after 'unpack 'fix-x11-includes
-           (lambda _
-             (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
-               (("<Xlib.h>") "<X11/Xlib.h>"))
-             (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
-               (("<Xatom.h>") "<X11/Xatom.h>"))
-             (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
-               (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
-             #t))
+             (delete-file-recursively "libraries/source/cxxtest-4.4")
+             (substitute* "build/premake/premake5.lua"
+               (("rootdir\\.\\.\"\\/libraries\\/source\\/cxxtest-4.4\\/bin\\/cxxtestgen\"")
+                (string-append "\"" (assoc-ref inputs "cxxtest")
+                               "/bin/cxxtestgen"
+                               "\"")))))
          (replace 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
              (let* ((jobs (number->string (parallel-job-count)))
                     (out (assoc-ref outputs "out"))
                     (lib (string-append out "/lib"))
@@ -6762,11 +6764,13 @@ fight against their plot and save his fellow rabbits from slavery.")
                (setenv "JOBS" (string-append "-j" jobs))
                (setenv "CC" "gcc")
                (with-directory-excursion "build/workspaces"
-                 (invoke "./update-workspaces.sh"
-                         (string-append "--libdir=" lib)
-                         (string-append "--datadir=" data)
-                         ;; TODO: "--with-system-nvtt"
-                         "--with-system-mozjs38")))))
+                 (apply invoke
+                        `("./update-workspaces.sh"
+                          ,(string-append "--libdir=" lib)
+                          ,(string-append "--datadir=" data)
+                          ;; TODO: "--with-system-nvtt"
+                          "--with-system-mozjs"
+                          ,@(if tests? '() '("--without-tests"))))))))
          (delete 'check)
          (replace 'install
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -6776,7 +6780,9 @@ fight against their plot and save his fellow rabbits from slavery.")
                     (lib (string-append out "/lib"))
                     (data (string-append out "/share/0ad"))
                     (applications (string-append out "/share/applications"))
-                    (pixmaps (string-append out "/share/pixmaps"))
+                    (hicolor (string-append out "/share/icons/hicolor/128x128/apps"))
+                    (metainfo (string-append out "/share/metainfo"))
+                    (mime (string-append out "/share/mime/application"))
                     (0ad-data (assoc-ref inputs "0ad-data")))
                ;; data
                (copy-recursively "data" data)
@@ -6795,12 +6801,14 @@ fight against their plot and save his fellow rabbits from slavery.")
                ;; resources
                (with-directory-excursion "../build/resources"
                  (install-file "0ad.desktop" applications)
-                 (install-file "0ad.png" pixmaps))
-               #t)))
+                 (install-file "0ad.png" hicolor)
+                 (install-file "0ad.appdata.xml" metainfo)
+                 (install-file "pyrogenesis.xml" mime)))))
          (add-after 'install 'check
-           (lambda _
-             (with-directory-excursion "system"
-               (invoke "./test")))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (with-directory-excursion "system"
+                 (invoke "./test"))))))))
     (home-page "https://play0ad.com")
     (synopsis "3D real-time strategy game of ancient warfare")
     (description "0 A.D. is a real-time strategy (RTS) game of ancient
@@ -9242,7 +9250,7 @@ levels to unlock.")
 (define simgear
   (package
     (name "simgear")
-    (version "2018.3.5")
+    (version "2020.3.11")
     (source
      (origin
        (method url-fetch)
@@ -9250,22 +9258,31 @@ levels to unlock.")
                            (version-major+minor version) "/"
                            "simgear-" version ".tar.bz2"))
        (sha256
-        (base32 "1vkqm66r1205k3hdjmx5wmx5kvmsb0dgfzrs8n5gqnxj8szs42dl"))))
+        (base32 "0g2g3n3sb6kdimvcrn9kvlhyyrp5c6lx20fgzz8l609v5aygr3dv"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; There are some bundled libraries.
+           (for-each delete-file-recursively
+                     '("3rdparty/expat/"))
+           #t))))
     (build-system cmake-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags (list "-DSYSTEM_EXPAT=ON")
+       #:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _
-             ;; Skip tests that require internet access.
-             (invoke "ctest" "-E" "(http|dns)"))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; Skip tests that require internet access.
+               (invoke "ctest" "-E" "(http|dns)")))))))
     (inputs
-     `(("boost" ,boost-for-mysql)       ; fails with 1.69
+     `(("boost" ,boost)
        ("curl" ,curl)
        ("expat" ,expat)
        ("mesa" ,mesa)
        ("openal" ,openal)
-       ("openscenegraph" ,openscenegraph-3.4)
+       ("openscenegraph" ,openscenegraph)
        ("zlib" ,zlib)))
     (home-page "https://home.flightgear.org/")
     (synopsis "Libraries for 3D simulations and games")
@@ -9286,41 +9303,42 @@ and also provides the base for the FlightGear Flight Simulator.")
                            (version-major+minor version) "/"
                            "flightgear-" version ".tar.bz2"))
        (sha256
-        (base32 "0ya3vb539kwi1qrifqhsj5j3k4w6s06hrllp2vdzxf6id7cgf0hc"))
+        (base32 "15sar94x13j2y1m6adgmz2q1m1i9bzj3sxqla6y3m9vyf33hc9zy"))
        (modules '((guix build utils)))
        (snippet
         '(begin
            ;; There are some bundled libraries.
            (for-each delete-file-recursively
-                     '("3rdparty/sqlite3/"))
+                     '("3rdparty/sqlite3/"
+                       "3rdparty/cppunit/"))
            #t))))
-    (build-system cmake-build-system)
+    (build-system qt-build-system)
     (arguments
      `(#:configure-flags
        (list "-DSYSTEM_SQLITE=ON"
+             "-DSYSTEM_CPPUNIT=ON"
              (string-append "-DFG_DATA_DIR="
                             (assoc-ref %outputs "out")
                             "/share/flightgear"))
-       ;; TODO: test cannot be run because the "run_test_suite" executable
-       ;; does not seem to be built.
+       ;; TODO: test suite segfaults.
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
-         (add-after 'install 'wrap-executable
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/fgfs")
-                 `("QT_PLUGIN_PATH" ":" prefix
-                   ,(map (lambda (label)
-                           (string-append (assoc-ref inputs label)
-                                          "/lib/qt5/plugins"))
-                         '("qtbase" "qtdeclarative" "qtsvg")))
-                 `("QML2_IMPORT_PATH" ":" prefix
-                   ,(map (lambda (label)
-                           (string-append (assoc-ref inputs label)
-                                          "/lib/qt5/qml"))
-                         '("qtdeclarative" "qtsvg"))))
-               #t)))
+         (add-after 'unpack 'skip-some-tests
+           (lambda _
+             (substitute* "test_suite/unit_tests/Instrumentation/test_gps.hxx"
+               (("CPPUNIT_TEST\\(testLongLegWestbound\\);" all)
+                (string-append "// " all))
+               (("CPPUNIT_TEST\\(testFinalLegCourse\\);" all)
+                (string-append "// " all)))))
+         (add-after 'build 'build-test-suite
+           (lambda* args
+             ((assoc-ref %standard-phases 'build)
+              #:make-flags (list "fgfs_test_suite"))))
+         ;; Test suite needs access to FGData so run it after 'install.
+         (delete 'check)
+         (add-after 'install-data 'check
+           (assoc-ref %standard-phases 'check))
          (add-after 'install 'install-data
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
@@ -9330,7 +9348,7 @@ and also provides the base for the FlightGear Flight Simulator.")
                          "--strip-components=1")))
              #t)))))
     (inputs
-     `(("boost" ,boost-for-mysql)       ; same as simgear
+     `(("boost" ,boost)
        ("dbus" ,dbus)
        ("eudev" ,eudev)
        ("freeglut" ,freeglut)
@@ -9338,7 +9356,7 @@ and also provides the base for the FlightGear Flight Simulator.")
        ("glew" ,glew)
        ("libpng" ,libpng)
        ("openal" ,openal)
-       ("openscenegraph" ,openscenegraph-3.4)
+       ("openscenegraph" ,openscenegraph)
        ("plib" ,plib)
        ("qtbase" ,qtbase-5)
        ("qtdeclarative" ,qtdeclarative)
@@ -9356,11 +9374,11 @@ and also provides the base for the FlightGear Flight Simulator.")
            (method url-fetch)
            (uri (string-append "mirror://sourceforge/flightgear/release-"
                                (version-major+minor version) "/"
-                               "FlightGear-" version "-data.tar.bz2"))
+                               "FlightGear-" version "-data.txz"))
            (sha256
             (base32
-             "04fv9za5zlyxlyfh6jx78y42l3jazvzl9dq2y6rzxqlcc9g5swhk"))))))
-    (home-page "https://home.flightgear.org/")
+             "0n5mw9vw1snab16c1y3i9ylkiv54az57bs2mvpq20hhg5hdiagqj"))))))
+    (home-page "https://www.flightgear.org/")
     (synopsis "Flight simulator")
     (description "The goal of the FlightGear project is to create a
 sophisticated flight simulator framework for use in research or academic
@@ -12656,7 +12674,7 @@ disassembly of the DOS version, extended with new features.")
 (define-public fheroes2
   (package
     (name "fheroes2")
-    (version "0.9.8")
+    (version "0.9.9")
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -12676,7 +12694,7 @@ disassembly of the DOS version, extended with new features.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1sc7rmyiciahxh5f6rarhil2hrw8q8sjdssh063grji50mlnrf6a"))))
+        (base32 "030kfaagxy3i7bjvbx2nf05jmbbh5g2r52l17y9bl6vbfj67yvxy"))))
     (home-page "https://ihhub.github.io/fheroes2/")
     (synopsis "Turn-based strategy game engine")
     (description "@code{fheroes2} is an implementation of Heroes of Might and