X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/8a7a5dc7805f4628e60f90af6b2416f951d0c034..ffe714b5f441ca22d69ecef34bdbb8e61bf758c4:/gnu/packages/games.scm diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index f1a42c8cb9..f6819873df 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -17,13 +17,13 @@ ;;; Copyright © 2016, 2017 Rodger Fox ;;; Copyright © 2016, 2017, 2018 Nikita ;;; Copyright © 2016 Albin Söderqvist -;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Kei Kebreau ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2016 Steve Webber ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira -;;; Copyright © 2017, 2018 Arun Isaac +;;; Copyright © 2017, 2018, 2020 Arun Isaac ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2017, 2019 nee ;;; Copyright © 2017 Clément Lassieur @@ -36,11 +36,11 @@ ;;; Copyright © 2018 Madalin Ionel-Patrascu ;;; Copyright © 2018 Benjamin Slade ;;; Copyright © 2018 Alex Vong -;;; Copyright © 2019 Pierre Neidhardt +;;; Copyright © 2019, 2020 Pierre Neidhardt ;;; Copyright © 2019, 2020 Oleg Pykhalov ;;; Copyright © 2019 Pierre Langlois ;;; Copyright © 2019 Julien Lepiller -;;; Copyright © 2019 Jesse Gibbons +;;; Copyright © 2019, 2020 Jesse Gibbons ;;; Copyright © 2019 Dan Frumin ;;; Copyright © 2019, 2020 Guillaume Le Vaillant ;;; Copyright © 2019, 2020 Timotej Lazar @@ -51,6 +51,9 @@ ;;; Copyright © 2020 Vitaliy Shatrov ;;; Copyright © 2020 Jack Hill ;;; Copyright © 2020 Vincent Legoll +;;; Copyright © 2020 Michael Rohleder +;;; Copyright © 2020 Trevor Hass +;;; Copyright © 2020 Leo Prikler ;;; ;;; This file is part of GNU Guix. ;;; @@ -77,6 +80,7 @@ #:use-module (guix svn-download) #:use-module (guix gexp) #:use-module (gnu packages) + #:use-module (gnu packages adns) #:use-module (gnu packages algebra) #:use-module (gnu packages autotools) #:use-module (gnu packages backup) @@ -112,9 +116,11 @@ #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) + #:use-module (gnu packages gnupg) #:use-module (gnu packages gnuzilla) #:use-module (gnu packages gperf) #:use-module (gnu packages graphics) + #:use-module (gnu packages gsasl) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) @@ -135,6 +141,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages man) #:use-module (gnu packages maths) + #:use-module (gnu packages messaging) #:use-module (gnu packages mp3) #:use-module (gnu packages music) #:use-module (gnu packages multiprecision) @@ -146,12 +153,15 @@ #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) + #:use-module (gnu packages perl-compression) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages protobuf) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) + #:use-module (gnu packages ruby) #:use-module (gnu packages shells) #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) @@ -173,21 +183,89 @@ #:use-module (gnu packages xorg) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) - #:use-module (gnu packages messaging) - #:use-module (gnu packages networking) #:use-module (guix build-system copy) + #:use-module (guix build-system cmake) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system meson) - #:use-module (guix build-system scons) + #:use-module (guix build-system perl) #:use-module (guix build-system python) - #:use-module (guix build-system cmake) #:use-module (guix build-system qt) + #:use-module (guix build-system scons) #:use-module (guix build-system trivial) #:use-module ((srfi srfi-1) #:hide (zip)) #:use-module (srfi srfi-26)) +(define-public abe + (package + (name "abe") + (version "1.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/abe/abe/abe-" version + "/abe-" version ".tar.gz")) + (sha256 + (base32 "1xvpnq1y6y48fn3pvn2lk0h1ilmalv7nb7awpid1g4jcq1sfmi6z")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-data-dir=" + (assoc-ref %outputs "out") + "/share/abe")) + #:phases + (modify-phases %standard-phases + (replace 'bootstrap + (lambda _ (invoke "sh" "autogen.sh"))) + (add-before 'build 'set-SDL + ;; Set correct environment for SDL. + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CPATH" + (string-append + (assoc-ref inputs "sdl") "/include/SDL:" + (or (getenv "CPATH") ""))) + #t)) + (add-after 'install 'finalize-install + (lambda* (#:key outputs #:allow-other-keys) + (let ((share (string-append (assoc-ref outputs "out") "/share"))) + ;; Installation script does not copy game data files. + (let ((data (string-append share "/abe"))) + (for-each (lambda (dir) + (let ((target (string-append data "/" dir))) + (mkdir-p target) + (copy-recursively dir target))) + '("images" "maps" "sounds"))) + ;; Create desktop file. + (let ((apps (string-append share "/applications"))) + (mkdir-p apps) + (make-desktop-entry-file + (string-append apps "/abe.desktop") + #:name "Abe's Amazing Adventure" + #:exec ,name + #:categories '("AdventureGame" "Game") + #:keywords + '("side-scrolling" "adventure" "pyramid" "singleplayer") + #:comment + '(("de" "Ein sich seitwärts bewegendes Abenteuerspiel") + (#f "Side-scrolling game"))))) + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake))) + (inputs + `(("libxi" ,libxi) + ("libxmu" ,libxmu) + ("libxt" ,libxt) + ("sdl" ,(sdl-union (list sdl sdl-mixer))))) + (home-page "http://abe.sourceforge.net") + (synopsis "Scrolling, platform-jumping, ancient pyramid exploring game") + (description + "Abe's Amazing Adventure is a scrolling, +platform-jumping, key-collecting, ancient pyramid exploring game, vaguely in +the style of similar games for the Commodore+4.") + (license license:gpl2+))) + ;; Data package for adanaxisgpl. (define adanaxis-mush (let ((version "1.1.0")) @@ -270,7 +348,7 @@ mouse and joystick control, and original music.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/carstene1ns/alex4.git") + (url "https://github.com/carstene1ns/alex4") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -307,15 +385,17 @@ The game includes a built-in editor so you can design and share your own maps.") (define-public armagetronad (package (name "armagetronad") - (version "0.2.8.3.5") + (version "0.2.9.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/armagetronad/stable/" - version "/armagetronad-" version ".src.tar.gz")) + version "/armagetronad-" version ".tbz")) (sha256 (base32 - "1z266haq22n5b0733h7qsg1rpzhz8lvm82f7wd06r008iiar7jdl")))) + "19rfhlg4gp0r7k1j8v4iw20325ciy156nmzax4xikmw22c6nmxcz")))) (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) (inputs `(("libxml2" ,libxml2) ("sdl" ,sdl) @@ -333,6 +413,66 @@ the more advanced player there are new game modes and a wide variety of physics settings to tweak as well.") (license license:gpl2+))) +(define-public astromenace + (package + (name "astromenace") + (version "1.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/viewizard/astromenace") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ad6l887jxqv8xspwc2rvy8ym9sdlmkqdqhsh0pi076kjarxsyws")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no test + #:configure-flags '("-DDATADIR=share/astromenace") + #:phases + (modify-phases %standard-phases + (replace 'install + ;; Upstream provides no install phase. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share")) + (apps (string-append share "/applications")) + (data (string-append share "/astromenace")) + (icons (string-append share "/icons/hicolor/64x64/apps"))) + (install-file "astromenace" bin) + (install-file "gamedata.vfs" data) + (let ((source (assoc-ref inputs "source"))) + (with-directory-excursion (string-append source "/share") + (install-file "astromenace.desktop" apps) + (mkdir-p icons) + (copy-file "astromenace_64.png" + (string-append icons "/astromenace.png"))))) + #t))))) + (inputs + `(("freealut" ,freealut) + ("freetype" ,freetype) + ("glu" ,glu) + ("libogg" ,libogg) + ("libvorbis" ,libvorbis) + ("openal" ,openal) + ("sdl2" ,sdl2))) + (home-page "https://www.viewizard.com/") + (synopsis "3D space shooter with spaceship upgrade possibilities") + (description + "Space is a vast area, an unbounded territory where it seems there is +a room for everybody, but reversal of fortune put things differently. The +hordes of hostile creatures crawled out from the dark corners of the universe, +craving to conquer your homeland. Their force is compelling, their legions +are interminable. However, humans didn't give up without a final showdown and +put their best pilot to fight back. These malicious invaders chose the wrong +galaxy to conquer and you are to prove it! Go ahead and make alien aggressors +regret their insolence.") + ;; Game is released under GPL3+ terms. Artwork is subject to CC + ;; BY-SA 4.0, and fonts to OFL1.1. + (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1)))) + (define-public bastet (package (name "bastet") @@ -341,7 +481,7 @@ physics settings to tweak as well.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/fph/bastet.git") + (url "https://github.com/fph/bastet") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -447,18 +587,83 @@ possible, while battling many vicious aliens.") license:lgpl2.1+ license:bsd-2)))) +(define-public bzflag + (package + (name "bzflag") + (version "2.4.20") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.bzflag.org/bzflag/source/" + version "/bzflag-" version ".tar.bz2")) + (sha256 + (base32 "16brxqmfiyz4j4lb8ihzjcbwqmpsms6vm3ijbp34lnw0blbwdjb2")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-desktop-file-and-icons + (lambda* (#:key outputs #:allow-other-keys) + (let* ((share (string-append (assoc-ref outputs "out") "/share")) + (data (string-append share "/bzflag")) + (hicolor (string-append share "/icons/hicolor")) + (applications (string-append share "/applications"))) + ;; Move desktop file. + (install-file (string-append data "/bzflag.desktop") + applications) + ;; Install icons. + (for-each (lambda (size) + (let* ((dim (string-append size "x" size)) + (dir (string-append hicolor "/" dim "/apps"))) + (mkdir-p dir) + (copy-file + (string-append data "/bzflag-" dim ".png") + (string-append dir "/bzflag.png")))) + '("48" "256"))) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("c-ares" ,c-ares) + ("curl" ,curl) + ("glew" ,glew) + ("glu" ,glu) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (home-page "https://www.bzflag.org/") + (synopsis "3D first person tank battle game") + (description + "BZFlag is a 3D multi-player multiplatform tank battle game that +allows users to play against each other in a network environment. +There are five teams: red, green, blue, purple and rogue (rogue tanks +are black). Destroying a player on another team scores a win, while +being destroyed or destroying a teammate scores a loss. Rogues have +no teammates (not even other rogues), so they cannot shoot teammates +and they do not have a team score. + +There are two main styles of play: capture-the-flag and free-for-all. +In capture-the-flag, each team (except rogues) has a team base and +each team with at least one player has a team flag. The object is to +capture an enemy team's flag by bringing it to your team's base. This +destroys every player on the captured team, subtracts one from that +team's score, and adds one to your team's score. In free-for-all, +there are no team flags or team bases. The object is simply to get as +high a score as possible.") + ;; The game is dual-licensed. + (license (list license:lgpl2.1 license:mpl2.0)))) + (define-public cataclysm-dda (package (name "cataclysm-dda") - (version "0.E") + (version "0.E-2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/CleverRaven/Cataclysm-DDA.git") + (url "https://github.com/CleverRaven/Cataclysm-DDA") (commit version))) (sha256 - (base32 "0pbi0fw37zimzdklfj58s1ql0wlqq7dy6idkcsib3hn910ajaxan")) + (base32 "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -515,16 +720,16 @@ want what you have.") (define-public corsix-th (package (name "corsix-th") - (version "0.63") + (version "0.64") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/CorsixTH/CorsixTH.git") + (url "https://github.com/CorsixTH/CorsixTH") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi")))) + (base32 "0chh9cv2kdc39sr0x8hclcyzd8dz2y6grgagqzkvr7j570wa5cqh")))) (build-system cmake-build-system) (arguments `(#:phases @@ -575,7 +780,7 @@ more. This package does @emph{not} provide the game assets.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/tnalpgge/rank-amateur-cowsay.git") + (url "https://github.com/tnalpgge/rank-amateur-cowsay") (commit (string-append name "-" version)))) (file-name (git-file-name name version)) (sha256 @@ -618,7 +823,7 @@ tired of cows, a variety of other ASCII-art messengers are available.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/jaseg/lolcat.git") + (url "https://github.com/jaseg/lolcat") (commit commit))) (sha256 (base32 @@ -626,8 +831,9 @@ tired of cows, a variety of other ASCII-art messengers are available.") (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - `(#:tests? #f ;; no check target - #:make-flags (list "CC=gcc") + `(#:tests? #f ; no check target + #:make-flags + (list ,(string-append "CC=" (cc-for-target))) #:phases (modify-phases %standard-phases (delete 'bootstrap) @@ -785,7 +991,7 @@ The game features: (origin (method git-fetch) (uri (git-reference - (url "https://github.com/freedoom/freedoom.git") + (url "https://github.com/freedoom/freedoom") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -978,16 +1184,16 @@ automata. The following features are available: (define-public julius (package (name "julius") - (version "1.4.0") + (version "1.4.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/bvschaik/julius.git") + (url "https://github.com/bvschaik/julius") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "01rygr592ar530qv1flmaiq8icl0qdxgc8lhkcdyn1g09941z47v")) + (base32 "12hhnhdwgz7hd3hlndbnk15pxggm1375qs0764ija4nl1gbpb110")) ;; Remove unused bundled libraries. (modules '((guix build utils))) (snippet @@ -1010,6 +1216,45 @@ does not include game data.") (license (list license:agpl3 license:zlib)))) ; ext/tinyfiledialogs +(define-public augustus + (package + (inherit julius) + (name "augustus") + (version (package-version julius)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Keriew/augustus") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ii0w0iwa9zv5bbqfcps5mxifd796m6fw4gvjf09pkm3yjgqc0ag")) + ;; Remove unused bundled libraries. + (modules '((guix build utils))) + (snippet + '(begin + (with-directory-excursion "ext" + (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib"))) + #t)))) + (arguments + ;; No tests. See https://github.com/Keriew/augustus/issues/82. + `(#:tests? #f)) + (home-page "https://github.com/Keriew/augustus") + (synopsis "Re-implementation of Caesar III game engine with gameplay changes") + (description + "Fork of Julius, an engine for the a city-building real-time strategy +game Caesar III. Gameplay enhancements include: + +@itemize +@item roadblocks; +@item market special orders; +@item global labour pool; +@item partial warehouse storage; +@item increased game limits; +@item zoom controls. +@end itemize\n"))) + (define-public meandmyshadow (package (name "meandmyshadow") @@ -1051,7 +1296,7 @@ shadow mimic them to reach blocks you couldn't reach alone.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/alemart/opensurge.git") + (url "https://github.com/alemart/opensurge") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -1125,7 +1370,8 @@ built-in level editor.") (build-system gnu-build-system) (arguments '(#:make-flags - (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + (list (string-append "PREFIX=" (assoc-ref %outputs "out")) + "CXXFLAGS=-lpthread") #:phases (modify-phases %standard-phases ;; No configure script. @@ -1157,15 +1403,15 @@ destroying an ancient book using a special wand.") (define-public gnome-chess (package (name "gnome-chess") - (version "3.36.0") + (version "3.37.3") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/gnome-chess/" (version-major+minor version) "/" - name "-" version ".tar.xz")) + "gnome-chess-" version ".tar.xz")) (sha256 (base32 - "1a9fgi749gy1f60vbcyrqqkab9vqs42hji70q73k1xx8rv0agmg0")))) + "09axf0q1mp13sv8cs0syfg8ahcd9r2qb26278r09j6s4njxmkfv4")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -1314,15 +1560,14 @@ Chess). It is similar to standard chess but this variant is far more complicate (define-public ltris (package (name "ltris") - (version "1.0.19") + (version "1.2.1") (source (origin (method url-fetch) - (uri (string-append "http://prdownloads.sourceforge.net/lgames/" + (uri (string-append "mirror://sourceforge/lgames/ltris/" "ltris-" version ".tar.gz")) (sha256 - (base32 - "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg")))) + (base32 "0959vvxh5xnxzpdv7i67lpd2b6ghx69z65ldnclj1z6llyfzfs7q")))) (build-system gnu-build-system) (arguments '(;; The code in LTris uses traditional GNU semantics for inline functions @@ -1568,15 +1813,16 @@ Every puzzle has a complete solution, although there may be more than one.") (define-public retux (package (name "retux") - (version "1.3.6") + (version "1.4") (source (origin (method url-fetch) - (uri (string-append "mirror://savannah/retux/" + (uri (string-append "https://github.com/retux-game/retux/" + "releases/download/v" (version-major+minor version) "/retux-" version "-src.tar.gz")) (sha256 (base32 - "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb")))) + "1hxy1pvlxhk0ci3wh2i3mmr82faqdjnnxsiwwr5gcr93nfnw9w5f")))) (build-system python-build-system) (arguments `(#:tests? #f ; no check target @@ -1588,28 +1834,22 @@ Every puzzle has a complete solution, although there may be more than one.") (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) - (data (string-append out "/share/retux")) - (doc (string-append out "/share/doc/retux"))) + (data (string-append out "/share/retux"))) (mkdir-p bin) (substitute* "retux.py" ;; Use the correct data directory. (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),") - (string-append "\"" data "\",")) - ;; Use Python 3 so the patch-shebangs phase works properly. - ((".*python2.*") "#!/usr/bin/python3")) + (string-append "\"" data "\","))) (copy-file "retux.py" (string-append bin "/retux")) - (copy-recursively "data" data) - - (install-file "COPYING" doc) #t)))))) (inputs `(("python-sge-pygame" ,python-sge-pygame) ("python-six" ,python-six) ("python-xsge" ,python-xsge))) - (home-page "http://retux.nongnu.org") + (home-page "https://retux-game.github.io/") (synopsis "Action platformer game") (description "ReTux is an action platformer loosely inspired by the Mario games, @@ -1733,6 +1973,118 @@ can be explored and changed freely.") license:gpl3+ license:silofl1.1)))) +(define-public seahorse-adventures + (package + (name "seahorse-adventures") + (version "1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dulsi/seahorse-adventures") + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rnvk06npaqcpjz5z6xcmssz61i32s422lydp49vrnf3j2g4yimd")) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-1))) + ;; Remove non-free (non-commercial) font. + (snippet + `(begin + (for-each delete-file (find-files "data/fonts" ".")) + #t)))) + (build-system python-build-system) + (arguments + `(#:tests? #f ;no test + #:phases + (modify-phases %standard-phases + (delete 'build) ;pure Python + (replace 'install ;no install script + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share")) + (applications (string-append share "/applications")) + (data (string-append share "/seahorse-adventures"))) + ;; Install data. + (for-each (lambda (f) + (chmod f #o555) + (install-file f data)) + '("leveledit.py" "run_game.py" "tileedit.py")) + (for-each (lambda (dir) + (let ((target (string-append data "/" dir))) + (mkdir-p target) + (copy-recursively dir target))) + '("data" "lib")) + ;; Create executable. + (mkdir-p bin) + (let ((executable (string-append bin "/seahorse-adventures"))) + (call-with-output-file executable + (lambda (p) + (format p + "#!~a~@ + export PYTHONPATH=~a:~a~@ + exec -a \"~a\" ~a \"$@\"~%" + (which "bash") data (getenv "PYTHONPATH") + (which "python3") + (string-append data "/run_game.py")))) + (chmod executable #o555)) + ;; Add desktop file. + (mkdir-p applications) + (make-desktop-entry-file + (string-append applications "/seahorse-adventures.desktop") + #:name "Seahorse Adventures" + #:comment + '((#f "Help Barbie the seahorse float on bubbles to the moon")) + #:exec ,name + #:icon ,name + #:categories '("Game" "ActionGame") + #:keywords '("game" "retro" "platform")) + ;; Add icons. + (for-each + (lambda (size) + (let ((dir (string-append share "/icons/hicolor/" + size "x" size "/apps"))) + (mkdir-p dir) + (copy-file + (string-append "icon" size ".png") + (string-append dir "/searhorse-adventures.png")))) + '("32" "64" "128"))) + #t)) + (add-after 'install 'unbundle-fonts + ;; Unbundle Bitstream Vera font and replace deleted one. + (lambda* (#:key outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (data (string-append out "/share/seahorse-adventures")) + (vera (string-append (assoc-ref inputs "font-bitstream-vera") + "/share/fonts/truetype/Vera.ttf"))) + (let ((themes-dir (string-append data "/data/themes/"))) + (for-each + (lambda (theme) + (let ((target (string-append themes-dir theme "/Vera.ttf"))) + (delete-file target) + (symlink vera target))) + '("default" "gray"))) + (symlink vera (string-append data "/data/fonts/04B_20__.TTF")) + (substitute* (string-append data "/lib/main.py") + (("f_scale = 0.35") "f_scale = 0.47"))) + #t))))) + (inputs + `(("font-bitstream-vera" ,font-bitstream-vera) + ("python-pygame" ,python-pygame))) + (home-page "http://www.imitationpickles.org/barbie/") + (synopsis "Help Barbie the seahorse float on bubbles to the moon") + (description + "Barbie Seahorse Adventures is a retro style platform arcade game. +You are Barbie the seahorse who travels through the jungle, up to the +volcano until you float on bubbles to the moon. On the way to your +final destination you will encounter various enemies, servants of the +evil overlord who has stolen the galaxy crystal. Avoid getting hit +and defeat them with your bubbles!") + ;; GPL2+ is for code, CC0 is for art. + (license (list license:gpl2+ license:cc0)))) + (define-public superstarfighter (package (name "superstarfighter") @@ -1741,7 +2093,7 @@ can be explored and changed freely.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/notapixelstudio/superstarfighter.git") + (url "https://github.com/notapixelstudio/superstarfighter") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -1810,6 +2162,251 @@ available, as well as a single-player mode with AI-controlled ships.") (license (list license:expat ; game license:silofl1.1)))) ; fonts +(define %ufoai-commit "a542a87a891f96b1ab2c44d35b2f6f16859a5019") +(define %ufoai-revision "0") +(define %ufoai-version (git-version "2.6.0_dev" %ufoai-revision %ufoai-commit)) +(define ufoai-source + (origin + (method git-fetch) + (uri (git-reference + (url "git://git.code.sf.net/p/ufoai/code") ;HTTPS fails mid-clone + (commit %ufoai-commit))) + (file-name (string-append "ufoai-" %ufoai-version "-checkout")) + (sha256 + (base32 + "024s7b9rcg7iw8i2p72gwnvabk23ljlq0nldws0y4b6hpwzyn1wz")) + (modules '((guix build utils) + (srfi srfi-1) + (ice-9 ftw))) + (snippet + '(begin + ;; Delete ~32MiB of bundled dependencies. + (with-directory-excursion "src/libs" + (for-each delete-file-recursively + (lset-difference equal? (scandir ".") + '("." ".." "gtest" "mumble")))) + + ;; Use relative path to Lua headers. + (substitute* "src/common/scripts_lua.h" + (("\\.\\./libs/lua/") "")) + + ;; Adjust Makefile targets to not depend on 'ufo2map', since we build + ;; it as a separate package. This way we don't need to make the same + ;; adjustments for 'ufoai-data' and 'ufoai' below. + (substitute* "build/maps.mk" + (("\\./ufo2map") "ufo2map") + (("maps: ufo2map") "maps:")) + (substitute* "build/modules/testall.mk" + (("testall: ufo2map") "testall:")) + + ;; If no cURL headers are found, the build system will try to include + ;; the bundled version, even when not required. Prevent that. + (substitute* "build/default.mk" + (("^include src/libs/curl/lib/Makefile\\.inc") + "")) + + ;; While here, improve reproducibility by adding the '-X' flag to the + ;; zip command used to create the map files, in order to prevent time + ;; stamps from making it into the generated archives. + (substitute* "build/data.mk" + (("\\$\\(call ZIP\\)") + "$(call ZIP) -X")) + #t)))) + +(define-public ufo2map + (package + (name "ufo2map") + (version %ufoai-version) + (home-page "https://ufoai.org/") + (source ufoai-source) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("CC=gcc" "CXX=g++" + "--enable-release" + "--enable-ufo2map" + "--disable-uforadiant" + "--disable-cgame-campaign" + "--disable-cgame-multiplayer" + "--disable-cgame-skirmish" + "--disable-game" + "--disable-memory" + "--disable-testall" + "--disable-ufoded" + "--disable-ufo" + "--disable-ufomodel" + "--disable-ufoslicer") + #:tests? #f ;no tests + #:phases (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key (configure-flags '()) #:allow-other-keys) + ;; The home-made configure script does not understand + ;; some of the default flags of gnu-build-system. + (apply invoke "./configure" configure-flags))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "ufo2map" (string-append out "/bin")) + (install-file "debian/ufo2map.6" + (string-append out "/share/man/man6")) + #t)))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libjpeg" ,libjpeg-turbo) + ("libpng" ,libpng) + ("lua" ,lua-5.1) + ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf))))) + (synopsis "UFO: AI map generator") + (description + "This package provides @command{ufo2map}, a program used to generate +maps for the UFO: Alien Invasion strategy game.") + (license license:gpl2+))) + +(define ufoai-data + (package + (name "ufoai-data") + (version %ufoai-version) + (home-page "https://ufoai.org/") + (source ufoai-source) + (build-system gnu-build-system) + (arguments + '(#:tests? #f + #:configure-flags '("CC=gcc" "CXX=g++") + #:phases (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys) + (apply invoke "./configure" configure-flags))) + (replace 'build + (lambda* (#:key (parallel-build? #t) #:allow-other-keys) + (invoke "make" + "-j" (if parallel-build? + (number->string (parallel-job-count)) + "1") + "maps"))) + (add-after 'build 'pack + (lambda _ + (invoke "make" "pk3"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each (lambda (file) + (install-file file out)) + (find-files "base" "\\.pk3$")) + #t)))))) + (native-inputs + `(("python" ,python-2) + ("ufo2map" ,ufo2map) + ("which" ,which) + ("zip" ,zip))) + (synopsis "UFO: AI data files") + (description + "This package contains maps and other assets for UFO: Alien Invasion.") + ;; Most assets are available under either GPL2 or GPL2+. Some use other + ;; licenses, see LICENSES for details. + (license (list license:gpl2+ license:gpl2 license:cc-by3.0 + license:cc-by-sa3.0 license:public-domain)))) + +(define-public ufoai + (package + (name "ufoai") + (version %ufoai-version) + (home-page "https://ufoai.org/") + (source ufoai-source) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--prefix=" (assoc-ref %outputs "out")) + (string-append "--datadir=" (assoc-ref %outputs "out") + "/share/games/ufo") + "CC=gcc" "CXX=g++" + "--enable-release" + "--enable-game" + "--disable-ufo2map" + "--disable-dependency-tracking" + + ;; Disable hard links to prevent huge NARs. + "--disable-hardlinkedgame" + "--disable-hardlinkedcgame") + #:phases (modify-phases %standard-phases + (add-after 'unpack 'symlink-data-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((data (assoc-ref inputs "ufoai-data"))) + ;; Symlink the data files to where the build system + ;; expects to find them. Ultimately these files are + ;; copied to $out/share/games/ufoai/base, losing the + ;; symlinks; we could fix that after install, but it + ;; does not make a big difference in practice due to + ;; deduplication. + (with-directory-excursion "base" + (for-each (lambda (file) + (symlink file (basename file))) + (find-files data "\\.pk3$"))) + #t))) + (add-before 'configure 'create-language-files + (lambda _ + (invoke "make" "lang"))) + (replace 'configure + (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys) + (apply invoke "./configure" configure-flags))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "./testall") + (format #t "test suite not run~%")) + #t)) + (add-after 'install 'install-man-pages + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (man6 (string-append out "/share/man/man6"))) + (install-file "debian/ufo.6" man6) + (install-file "debian/ufoded.6" man6) + #t)))) + + ;; TODO: Some map tests occasionally fail because of randomness issues, + ;; e.g. not enough generated aliens. The test runner also fails early + ;; in the build container with 'failed to shutdown server'? + #:tests? #f)) + (native-inputs + `(("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config) + ("python" ,python-2) + ("ufo2map" ,ufo2map) + ("ufoai-data" ,ufoai-data))) + (inputs + `(("curl" ,curl) + ("libjpeg" ,libjpeg-turbo) + ("libogg" ,libogg) + ("libpng" ,libpng) + ("libtheora" ,libtheora) + ("libvorbis" ,libvorbis) + ("libxml2" ,libxml2) + ("lua" ,lua-5.1) + ("mesa" ,mesa) + ("minixml" ,minixml) + ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf))) + ("zlib" ,zlib))) + (synopsis "Turn-based tactical strategy game") + (description + "UFO: Alien Invasion is a tactical strategy game set in the year 2084. +You control a secret organisation charged with defending Earth from a brutal +alien enemy. Build up your bases, prepare your team, and dive head-first into +the fast and flowing turn-based combat. + +Over the long term you will need to conduct research into the alien threat to +figure out their mysterious goals and use their powerful weapons for your own +ends. You will produce unique items and use them in combat against your +enemies. + +You can also use them against your friends with the multiplayer functionality. + +Warning: This is a pre-release version of UFO: AI! Some things may not work +properly.") + + ;; The game code and most assets are GPL2+, but we use GPL2 only here + ;; because some assets do not use the "or later" clause. Many individual + ;; assets use Creative Commons or Public Domain; see the LICENSE file. + (license (delete license:gpl2+ (package-license ufoai-data))))) + (define-public xshogi (package (name "xshogi") @@ -1841,7 +2438,7 @@ available, as well as a single-player mode with AI-controlled ships.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/nevat/abbayedesmorts-gpl.git") + (url "https://github.com/nevat/abbayedesmorts-gpl") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -1891,16 +2488,15 @@ that beneath its ruins lay buried an ancient evil.") (define-public angband (package (name "angband") - (version "4.2.0") + (version "4.2.1") (source (origin (method url-fetch) - (uri (string-append "http://rephial.org/downloads/" + (uri (string-append "https://rephial.org/downloads/" (version-major+minor version) "/angband-" version ".tar.gz")) (sha256 - (base32 - "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk")) + (base32 "03qdavkj2ik02mqjxmlm5bn17ba3yxb1rirp8ghnxy3bsk4kbmxc")) (modules '((guix build utils))) (snippet ;; So, some of the sounds/graphics/tilesets are under different @@ -1933,7 +2529,7 @@ that beneath its ruins lay buried an ancient evil.") `(("autoconf" ,autoconf) ("automake" ,automake))) (inputs `(("ncurses" ,ncurses))) - (home-page "http://rephial.org/") + (home-page "https://rephial.org/") (synopsis "Dungeon exploration roguelike") (description "Angband is a Classic dungeon exploration roguelike. Explore the depths below Angband, seeking riches, fighting monsters, and preparing to @@ -2012,6 +2608,59 @@ into stereotyped or otherwise humorous dialects. The filters are provided as a C library, so they can easily be integrated into other programs.") (license license:gpl2+))) +(define-public taisei + (package + (name "taisei") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/taisei-project/" + "taisei/releases/download/v" version + "/taisei-v" version ".tar.xz")) + (sha256 + (base32 "11f9mlqmzy1lszwcc1nsbar9q1hs4ml6pbm52hqfd4q0f4x3ln46")))) + (build-system meson-build-system) + (arguments + `(#:build-type "release" ;comment out for bug-reporting (and cheats) + #:configure-flags + (list "-Dr_default=gles30" + "-Dr_gles20=true" + "-Dr_gles30=true" + "-Dshader_transpiler=true"))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python) + ("python-docutils" ,python-docutils) + ("python-pygments" ,python-pygments))) + (inputs + `(("freetype" ,freetype) + ("libpng" ,libpng) + ("libwebp" ,libwebp) + ("libzip" ,libzip) + ("mesa" ,mesa) + ("openssl" ,openssl) + ("opusfile" ,opusfile) + ("sdl2" ,sdl2) + ("sdl2-mixer" ,sdl2-mixer) + ("shaderc" ,shaderc) + ("spirv-cross" ,spirv-cross) + ("zlib" ,zlib))) + (home-page "https://taisei-project.org/") + (synopsis "Shoot'em up fangame and libre clone of Touhou Project") + (description + "The player controls a character (one of three: Good, Bad, and Dead), +dodges the missiles (lots of it cover the screen, but the character's hitbox +is very small), and shoot at the adversaries that keep appear on the screen.") + (license (list ;;game + license:expat + ;;resources/00-taisei.pkgdir/bgm/ + ;;atlas/portraits/ + license:cc-by4.0 + ;;miscellaneous + license:cc0 + license:public-domain)))) + (define-public cmatrix (package (name "cmatrix") @@ -2020,7 +2669,7 @@ a C library, so they can easily be integrated into other programs.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/abishekvashok/cmatrix.git") + (url "https://github.com/abishekvashok/cmatrix") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -2053,7 +2702,7 @@ asynchronously and at a user-defined speed.") (define-public chess (package (name "chess") - (version "6.2.6") + (version "6.2.7") (source (origin (method url-fetch) @@ -2061,7 +2710,7 @@ asynchronously and at a user-defined speed.") ".tar.gz")) (sha256 (base32 - "0kxhdv01ia91v2y0cmzbll391ns2vbmn65jjrv37h4s1srszh5yn")))) + "0ilq4bfl0lwyzf11q7n2skydjhalfn3bgxhrp5hjxs5bc5d6fdp5")))) (build-system gnu-build-system) (home-page "https://www.gnu.org/software/chess/") (synopsis "Full chess implementation") @@ -2080,6 +2729,7 @@ interface or via an external visual interface such as GNU XBoard.") (method url-fetch) (uri (string-append "mirror://gnu/freedink/freedink-" version ".tar.gz")) + (patches (search-patches "freedink-engine-fix-sdl-hints.patch")) (sha256 (base32 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy")))) @@ -2093,6 +2743,14 @@ interface or via an external visual interface such as GNU XBoard.") ;; These tests require a graphical interface. (substitute* "src/Makefile.am" (("test_gfx_fonts TestIOGfxDisplay") "")) + #t)) + (add-before 'bootstrap 'autoreconf + (lambda _ + ;; automake is out of date in the source + ;; autoreconf updates the automake scripts + (invoke "autoreconf") + ;; Build fails when autom4te.cache exists. + (delete-file-recursively "autom4te.cache") #t))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -2337,7 +2995,7 @@ for common mesh file formats, and collision detection.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/thelaui/M.A.R.S..git") + (url "https://github.com/thelaui/M.A.R.S.") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -2378,44 +3036,10 @@ enemies in different game modes such as space ball, death match, team death match, cannon keep, and grave-itation pit.") (license license:gpl3+)))) -(define minetest-data - (package - (name "minetest-data") - (version "5.1.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/minetest/minetest_game") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39")))) - (build-system trivial-build-system) - (native-inputs - `(("source" ,source))) - (arguments - `(#:modules ((guix build utils)) - #:builder (begin - (use-modules (guix build utils)) - (let ((install-dir (string-append - %output - "/share/minetest/games/minetest_game"))) - (mkdir-p install-dir) - (copy-recursively - (assoc-ref %build-inputs "source") - install-dir) - #t)))) - (synopsis "Main game data for the Minetest game engine") - (description - "Game data for the Minetest infinite-world block sandbox game.") - (home-page "https://www.minetest.net/") - (license license:lgpl2.1+))) - (define-public minetest (package (name "minetest") - (version "5.1.1") + (version "5.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -2424,7 +3048,7 @@ match, cannon keep, and grave-itation pit.") (file-name (git-file-name name version)) (sha256 (base32 - "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0")) + "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6")) (modules '((guix build utils))) (snippet '(begin @@ -2480,6 +3104,64 @@ in different ways.") (home-page "https://www.minetest.net/") (license license:lgpl2.1+))) +(define minetest-data + (package + (name "minetest-data") + (version (package-version minetest)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/minetest/minetest_game") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx")))) + (build-system trivial-build-system) + (native-inputs + `(("source" ,source))) + (arguments + `(#:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils)) + (let ((install-dir (string-append + %output + "/share/minetest/games/minetest_game"))) + (mkdir-p install-dir) + (copy-recursively + (assoc-ref %build-inputs "source") + install-dir) + #t)))) + (synopsis "Main game data for the Minetest game engine") + (description + "Game data for the Minetest infinite-world block sandbox game.") + (home-page "https://www.minetest.net/") + (license license:lgpl2.1+))) + +(define-public minetest-mineclone + (package + (name "minetest-mineclone") + (version "0.66.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.minetest.land/Wuzzy/MineClone2") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0miszzlzplpvaj0j1yii9867ydr42wsaqa9g6grxdrci75p05g00")))) + (build-system copy-build-system) + (arguments + `(#:install-plan + '(("." "share/minetest/games/mineclone")))) + (synopsis "Minecraft clone based on Minetest engine") + (description + "MineClone is a Minetest subgame, that aims to recreate Minecraft as +closely as the engine allows.") + (home-page "https://content.minetest.net/packages/Wuzzy/mineclone2/") + (license license:gpl3+))) + (define glkterm (package (name "glkterm") @@ -2856,14 +3538,16 @@ also available.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4")))) + "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4")) + (patches (search-patches "unknown-horizons-python-3.8-distro.patch")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-before 'build 'set-HOME (lambda _ - (setenv "HOME" "/tmp"))) + (setenv "HOME" "/tmp") + #t)) (add-after 'build 'build-extra (lambda _ (invoke "python3" "./setup.py" "build_i18n") @@ -2878,6 +3562,14 @@ also available.") (assoc-ref outputs "out") "/share/unknown-horizons\")")))) #t)) + (add-before 'check 'fix-tests-with-pytest>=4 + (lambda _ + (substitute* "tests/conftest.py" + (("pytest_namespace") + "pytest_configure") + (("get_marker") + "get_closest_marker")) + #t)) ;; TODO: Run GUI tests as well (replace 'check (lambda _ @@ -2896,6 +3588,7 @@ also available.") ("python-pyyaml" ,python-pyyaml))) (native-inputs `(("intltool" ,intltool) + ("python-distro" ,python-distro) ;; Required for tests ("python-greenlet" ,python-greenlet) @@ -2971,7 +3664,7 @@ falling, themeable graphics and sounds, and replays.") (define-public wesnoth (package (name "wesnoth") - (version "1.14.11") + (version "1.14.14") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-" @@ -2980,7 +3673,7 @@ falling, themeable graphics and sounds, and replays.") "wesnoth-" version ".tar.bz2")) (sha256 (base32 - "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v")))) + "1l7mdxn4kw938qz824057rqh99b7y9439a54s64n1xz95w77lp0r")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no check target @@ -3417,7 +4110,7 @@ Transport Tycoon Deluxe.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/OpenRCT2/OpenRCT2.git") + (url "https://github.com/OpenRCT2/OpenRCT2") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3517,14 +4210,14 @@ are only two levels to play with, but they are very addictive.") (define-public pioneers (package (name "pioneers") - (version "15.5") + (version "15.6") (source (origin (method url-fetch) - (uri (string-append "http://downloads.sourceforge.net/pio/" + (uri (string-append "https://downloads.sourceforge.net/pio/" "pioneers-" version ".tar.gz")) (sha256 (base32 - "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y")))) + "07b3xdd81n8ybsb4fzc5lx0813y9crzp1hj69khncf4faj48sdcs")))) (build-system gnu-build-system) (inputs `(("avahi" ,avahi) ("gtk+" ,gtk+) @@ -3625,7 +4318,7 @@ http://lavachat.symlynx.com/unix/") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/redeclipse/base.git") + (url "https://github.com/redeclipse/base") (commit (string-append "v" release)) (recursive? #t))) ; for game data (file-name (git-file-name name version)) @@ -3917,24 +4610,40 @@ in-window at 640x480 resolution or fullscreen.") (define-public warzone2100 (package (name "warzone2100") - (version "3.2.3") + (version "3.4.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/warzone2100/archives/" - "unsupported/Warzone2100-" - (version-major+minor version) "/" version - "/warzone2100-" version ".tar.xz")) + (uri (string-append "mirror://sourceforge/warzone2100/releases/" + version + "/warzone2100_src.tar.xz")) (sha256 - (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw")))) - (build-system gnu-build-system) + (base32 "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a")) + (modules '((guix build utils))) + (snippet + '(begin + (with-directory-excursion "3rdparty" + (for-each + delete-file-recursively + '("discord-rpc" + "miniupnp" + "utfcpp"))) + #t)))) + (build-system cmake-build-system) (arguments - `(#:configure-flags '("--with-distributor=Guix") + `(#:configure-flags '("-DWZ_DISTRIBUTOR=Guix" + "-DENABLE_DISCORD=off") + #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing. #:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-utfcpp-include + (lambda _ + (substitute* "lib/framework/wzstring.cpp" + (("") "")) + #t)) (add-after 'unpack 'link-tests-with-qt (lambda _ - (substitute* "tests/Makefile.in" + (substitute* "tests/Makefile.am" (("(framework_linktest_LDADD|maptest_LDADD) = " prefix) (string-append prefix "$(QT5_LIBS) "))) #t)) @@ -3945,32 +4654,38 @@ in-window at 640x480 resolution or fullscreen.") (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", " "100, 100, 0.0f, font_regular);"))) #t))))) - (native-inputs `(("gettext" ,gettext-minimal) + (native-inputs `(("asciidoc" ,asciidoc) + ("asciidoctor" ,ruby-asciidoctor) + ("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config) ("unzip" ,unzip) - ("zip" ,zip))) - (inputs `(("fontconfig" ,fontconfig) + ;; 7z is used to create .zip archive, not `zip' as in version 3.2.*. + ("p7zip" ,p7zip))) + (inputs `(("curl" ,curl) + ("fontconfig" ,fontconfig) ("freetype" ,freetype) - ("fribidi" ,fribidi) ("glew" ,glew) ("harfbuzz" ,harfbuzz) ("libtheora" ,libtheora) ("libvorbis" ,libvorbis) ("libxrandr" ,libxrandr) + ("libsodium" ,libsodium) + ("miniupnpc" ,miniupnpc) ("openal" ,openal) ("physfs" ,physfs) ("qtbase" ,qtbase) ("qtscript" ,qtscript) ("openssl" ,openssl) - ("sdl2" ,sdl2))) + ("sdl2" ,sdl2) + ("utfcpp" ,utfcpp))) (home-page "https://wz2100.net") (synopsis "3D Real-time strategy and real-time tactics game") (description "Warzone 2100 offers campaign, multi-player, and single-player skirmish -modes. An extensive tech tree with over 400 different technologies, combined +modes. An extensive tech tree with over 400 different technologies, combined with the unit design system, allows for a wide variety of possible units and tactics.") - ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL + ;; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL (license (list license:bsd-3 license:cc0 license:cc-by-sa3.0 @@ -3978,19 +4693,108 @@ tactics.") license:gpl2+ license:lgpl2.1+)))) +(define-public widelands + (package + (name "widelands") + (version "21") + (source + (origin + (method url-fetch) + (uri (string-append "https://launchpad.net/widelands/" + "build" version "/build" version "/+download/" + "widelands-build" version "-source.tar.gz")) + (sha256 + (base32 "0mz3jily0w1zxxqbnkqrp6hl88xhrwzbil9crq7gpcwidx60w7k0")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "src/third_party/minizip") + #t)) + (patches + ;; Use system Minizip. Patch is provided by Debian, and discussed + ;; upstream at . + (search-patches "widelands-system-wide_minizip.patch")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (let* ((out (assoc-ref %outputs "out")) + (share (string-append out "/share"))) + (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin") + (string-append "-DWL_INSTALL_BASEDIR=" share "/widelands") + (string-append "-DWL_INSTALL_DATADIR=" share "/widelands") + "-DOPTION_BUILD_WEBSITE_TOOLS=OFF" + ;; CMakeLists.txt does not handle properly RelWithDebInfo build + ;; type. When used, no game data is installed! + "-DCMAKE_BUILD_TYPE=Release")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unbundle-fonts + ;; Unbundle fonts already packaged in Guix. XXX: missing fonts are + ;; amiri, Culmus, mmrCensus, Nakula, and Sinhala. + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "data/i18n/fonts" + (for-each (lambda (font) + (delete-file-recursively font) + (symlink (string-append (assoc-ref inputs font) + "/share/fonts/truetype") + font)) + '("DejaVu" "MicroHei"))) + #t))))) + (native-inputs + `(("gettext" ,gettext-minimal) + ("python" ,python-wrapper))) + (inputs + `(("boost" ,boost) + ("glew" ,glew) + ("icu4c" ,icu4c) + ("libpng" ,libpng) + ("minizip" ,minizip) + ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))) + ("zlib" ,zlib) + ;; Fonts for the ‘unbundle-fonts’ phase. Case matters in name! + ("DejaVu" ,font-dejavu) + ("MicroHei" ,font-wqy-microhei))) + (home-page "https://www.widelands.org/") + (synopsis "Fantasy real-time strategy game") + (description + "In Widelands, you are the regent of a small clan. You start out with +nothing but your headquarters, where all your resources are stored. + +In the course of the game, you will build an ever growing settlement. Every +member of your clan will do his or her part to produce more resources---wood, +food, iron, gold and more---to further this growth. The economic network is +complex and different in the four tribes (Barbarians, Empire, Atlanteans, and +Frisians). + +As you are not alone in the world, you will meet other clans sooner or later. +Some of them may be friendly and you may eventually trade with them. However, +if you want to rule the world, you will have to train soldiers and fight. + +Widelands offers single-player mode with different campaigns; the campaigns +all tell stories of tribes and their struggle in the Widelands universe! +However, settling really starts when you unite with friends over the Internet +or LAN to build up new empires together---or to crush each other in the dusts +of war. Widelands also offers an Artificial Intelligence to challenge you.") + ;; Game is released as GPL2+. Some parts, e.g., art, are released under + ;; different licenses. + (license (list license:gpl2+ + license:expat ;src/third_party/eris + license:silofl1.1 ;Widelands.ttf + license:cc-by-sa3.0)))) ;some music files + (define-public starfighter (package (name "starfighter") - (version "2.0.0.3") + (version "2.3.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/pr-starfighter/starfighter/releases" "/download/v" version "/starfighter-" - (version-major+minor version) "-src.tar.gz")) + version "-src.tar.gz")) (sha256 (base32 - "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b")))) + "1nvi277cazsw36b6nhd5nmk0cjvm71rlxasy24mf18j7fsvq9vp8")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -4309,7 +5113,7 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/sgimenez/laby.git") + (url "https://github.com/sgimenez/laby") (commit (string-append name "-" version)))) (file-name (git-file-name name version)) (sha256 @@ -4652,7 +5456,7 @@ into the Space Age.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/bartobri/no-more-secrets.git") + (url "https://github.com/bartobri/no-more-secrets") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -4767,7 +5571,7 @@ Magic, Egypt, Indians, Norsemen, Persian or Romans.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/freegish/freegish.git") + (url "https://github.com/freegish/freegish") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -4819,24 +5623,27 @@ emerges from a sewer hole and pulls her below ground.") (define-public cdogs-sdl (package (name "cdogs-sdl") - (version "0.6.9") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cxong/cdogs-sdl.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr")))) + (version "0.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cxong/cdogs-sdl") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0vx37zb2iw7sfw5a2bs97ydlmb301nvy485ybdm8g46c5hn9s13c")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list (string-append "-DCDOGS_DATA_DIR=" (assoc-ref %outputs "out") "/share/cdogs-sdl/")))) + (native-inputs + `(("pkg-config" ,pkg-config))) (inputs - `(("mesa" ,mesa) + `(("gtk+" ,gtk+) + ("mesa" ,mesa) ("sdl2" ,sdl2) ("sdl2-image" ,sdl2-image) ("sdl2-mixer" ,sdl2-mixer))) @@ -4958,7 +5765,7 @@ small robot living in the nano world, repair its maker.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/teeworlds/teeworlds.git") + (url "https://github.com/teeworlds/teeworlds") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -5078,6 +5885,14 @@ The Flag. You can even design your own maps!") (list "--with-system-enet") #:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-build-with-new-gcc + (lambda _ + ;; Fix build with GCC6 and later by avoiding comparing ifstream + ;; to NULL. Can be removed for versions > 1.21. + (substitute* "src/lev/Proxy.cc" + (("ifs != NULL") + "ifs")) + #t)) (add-after 'unpack 'find-sdl (lambda _ (substitute* "configure" @@ -5132,7 +5947,8 @@ with the mouse isn’t always trivial.") "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y")))) (build-system gnu-build-system) (arguments - `(#:tests? #f)) ; no tests included + `(#:tests? #f ; no tests included + #:configure-flags '("CFLAGS=-fgnu89-inline"))) ; fix inlines (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf))) ("freetype" ,freetype) @@ -5223,7 +6039,7 @@ fish. The whole game is accompanied by quiet, comforting music.") (define-public crawl (package (name "crawl") - (version "0.24.0") + (version "0.25.0") (source (origin (method url-fetch) @@ -5236,8 +6052,18 @@ fish. The whole game is accompanied by quiet, comforting music.") (string-append "http://crawl.develz.org/release/stone_soup-" version "-nodeps.tar.xz"))) (sha256 - (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr")) - (patches (search-patches "crawl-upgrade-saves.patch")))) + (base32 "0rn1wjxdqw33caiwisfypm1j8cid3c9pz01ahicl17144zs29z3d")) + (patches (search-patches "crawl-upgrade-saves.patch")) + ;; The 0.25.0 -nodeps.tar.xz was built from an OSX machine; normally + ;; apparently it's built from a Debian machine before the Debian + ;; packages are made. These ._* files are binary and have the string + ;; "Mac OS X" in them... removing these seems to result in compilation + ;; again. + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file (find-files "." "^\\._")) + #t)))) (build-system gnu-build-system) (inputs `(("lua51" ,lua-5.1) @@ -5790,7 +6616,7 @@ some graphical niceities, and numerous bug-fixes and other improvements.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/Novum/vkQuake.git") + (url "https://github.com/Novum/vkQuake") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -5925,7 +6751,7 @@ making Yamagi Quake II one of the most solid Quake II implementations available. (origin (method git-fetch) (uri (git-reference - (url "https://github.com/the-butterfly-effect/tbe.git") + (url "https://github.com/the-butterfly-effect/tbe") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -5977,7 +6803,7 @@ elements to achieve a simple goal in the most complex way possible.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/pioneerspacesim/pioneer.git") + (url "https://github.com/pioneerspacesim/pioneer") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -6024,7 +6850,7 @@ whatever you make of it.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/umayr/badass.git") + (url "https://github.com/umayr/badass") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -6049,7 +6875,7 @@ Github or Gitlab.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/colobot/colobot.git") + (url "https://github.com/colobot/colobot") (commit (string-append "colobot-gold-" version)) (recursive? #t))) ;for "data/" subdir (file-name (git-file-name name version)) @@ -6124,7 +6950,7 @@ You can save humanity and get programming skills!") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/coelckers/gzdoom.git") + (url "https://github.com/coelckers/gzdoom") (commit (string-append "g" version)))) (file-name (git-file-name name version)) (sha256 @@ -6219,7 +7045,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.") (define-public odamex (package (name "odamex") - (version "0.8.1") + (version "0.8.3") (source (origin (method url-fetch) @@ -6227,7 +7053,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.") "mirror://sourceforge/odamex/Odamex/" version "/" "odamex-src-" version ".tar.gz")) (sha256 - (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i")))) + (base32 "0f887g87bmcq4dpcga7xc2mpxs947dkbc934ir9xs55gz6z13q96")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no tests (inputs @@ -6246,7 +7072,7 @@ online.") (define-public chocolate-doom (package (name "chocolate-doom") - (version "3.0.0") + (version "3.0.1") (source (origin (method url-fetch) (uri (string-append "https://www.chocolate-doom.org/downloads/" @@ -6256,7 +7082,7 @@ online.") ".tar.gz")) (sha256 (base32 - "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk")))) + "1iy8rx7kjvi1zjiw4zh77szzmd1sgpqajvbhprh1sj93fhbxcdfl")))) (build-system gnu-build-system) (inputs `(("sdl2-net" ,sdl2-net) ("sdl2-mixer" , sdl2-mixer) @@ -6286,7 +7112,7 @@ affect gameplay).") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/fabiangreffrath/crispy-doom.git") + (url "https://github.com/fabiangreffrath/crispy-doom") (commit (string-append "crispy-doom-" version)))) (file-name (git-file-name name version)) (sha256 @@ -6328,7 +7154,7 @@ original.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/shlomif/rinutils.git") + (url "https://github.com/shlomif/rinutils") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -6384,7 +7210,7 @@ original.") (define-public fortune-mod (package (name "fortune-mod") - (version "2.12.0") + (version "2.28.0") (source (origin (method git-fetch) @@ -6393,8 +7219,7 @@ original.") (commit (string-append "fortune-mod-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9")))) + (base32 "1ppzgnffgdcmq6fq4gmdq2ig10ip2bnfgklkb3i8nc6bdxm7pb89")))) (build-system cmake-build-system) (arguments `(#:test-target "check" @@ -6672,7 +7497,7 @@ quotation from a collection of quotes.") ("pkg-config" ,pkg-config) ("libtool" ,libtool) ("gmp" ,gmp))) - (home-page "http://xonotic.org") + (home-page "https://xonotic.org") (synopsis "Fast-paced first-person shooter game") (description "Xonotic is a free, fast-paced first-person shooter. @@ -6841,6 +7666,104 @@ when packaged in Blorb container files or optionally from individual files.") (home-page "http://frotz.sourceforge.net") (license license:gpl2+)))) +(define-public frozen-bubble + ;; Last official release is very outdated (2010). Use latest commit (2017). + (let ((commit "d6a029110ad6ab9e4960052e175addc98807fb7e") + (revision "1")) + (package + (name "frozen-bubble") + (version (git-version "2.2.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kthakore/frozen-bubble") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rfrcym5lf4qac2qdklikb1ywijyxypq298azzxahy461dadl6cx")))) + (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Build process needs to create files in the "server" + ;; directory. + (add-after 'unpack 'fix-permissions + (lambda _ + (for-each make-file-writable + (find-files "server" "." #:directories? #t)))) + ;; By default, build stops at warnings. + (add-after 'unpack 'prevent-build-error + (lambda _ + (substitute* "inc/My/Builder.pm" + (("-Werror") "")) + #t)) + (add-after 'install 'install-desktop-file-and-icons + (lambda* (#:key outputs #:allow-other-keys) + (let* ((share (string-append (assoc-ref outputs "out") "/share")) + (hicolor (string-append share "/icons/hicolor"))) + ;; Create desktop entry. + (make-desktop-entry-file + (string-append share "/applications/" ,name ".desktop") + #:name "Frozen Bubble" + #:comment "Frozen Bubble arcade game" + #:exec ,name + #:icon ,name + #:categories '("Game" "ArcadeGame")) + ;; Add icons. + (with-directory-excursion "share/icons" + (for-each + (lambda (size) + (let* ((dim (string-append size "x" size)) + (dir (string-append hicolor "/" dim "/apps"))) + (mkdir-p dir) + (copy-file + (string-append "frozen-bubble-icon-" dim ".png") + (string-append dir "/frozen-bubble.png")))) + '("16" "32" "48" "64")))) + #t)) + (add-after 'install 'wrap-perl-libs + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (perl5lib (getenv "PERL5LIB"))) + (for-each (lambda (prog) + (wrap-program (string-append out "/" prog) + `("PERL5LIB" ":" prefix + (,(string-append perl5lib ":" out + "/lib/perl5/site_perl"))))) + (find-files "bin" "."))) + #t))))) + (native-inputs + `(("perl-alien-sdl" ,perl-alien-sdl) + ("perl-capture-tiny" ,perl-capture-tiny) + ("perl-locale-maketext-lexicon" ,perl-locale-maketext-lexicon) + ("perl-module-build" ,perl-module-build) + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("perl-compress-bzip2" ,perl-compress-bzip2) + ("perl-file-sharedir" ,perl-file-sharedir) + ("perl-file-slurp" ,perl-file-slurp) + ("perl-file-which" ,perl-file-which) + ("perl-ipc-system-simple" ,perl-ipc-system-simple) + ("perl-sdl" ,perl-sdl) + ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-pango sdl-ttf))))) + (home-page "http://frozen-bubble.org/") + (synopsis "Puzzle with bubbles") + (description + "Frozen-Bubble is a clone of the popular Puzzle Bobble game, in which +you attempt to shoot bubbles into groups of the same color to cause them to +pop. + +Players compete as penguins and must use the arrow keys to aim a colored +bubble at groups of bubbles. The objective is to clear all the bubbles off +the screen before a bubble passes below a line at the bottom. + +It features 100 single-player levels, a two-player mode, music and striking +graphics. A level editor is also included to allow players to create and play +their own levels.") + (license license:gpl2)))) + (define-public libmanette (package (name "libmanette") @@ -6873,7 +7796,7 @@ GameController.") (define-public quadrapassel (package (name "quadrapassel") - (version "3.32.0") + (version "3.36.05") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/quadrapassel/" @@ -6881,7 +7804,7 @@ GameController.") "quadrapassel-" version ".tar.xz")) (sha256 (base32 - "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy")))) + "04abxmimh5npw8rhz1sfi6wxilgc6i1wka9mlnfwp8v1p1cb00cv")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -6904,6 +7827,7 @@ GameController.") (inputs `(("clutter" ,clutter) ("clutter-gtk" ,clutter-gtk) + ("gsound" ,gsound) ("gtk+" ,gtk+) ("libcanberra" ,libcanberra) ("libmanette" ,libmanette) @@ -6983,7 +7907,7 @@ civilized than your own.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/stepmania/stepmania.git") + (url "https://github.com/stepmania/stepmania") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -7015,7 +7939,7 @@ civilized than your own.") ;; SSE instructions are available on Intel systems only. ,@(if (any (cute string-prefix? <> (or (%current-target-system) (%current-system))) - '("x64_64" "i686")) + '("x86_64" "i686")) '() '("-DWITH_SSE2=NO")) ;; Configuration cannot find GTK2 without the two following @@ -7218,7 +8142,7 @@ and cooperative.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/ryanakca/slingshot.git") + (url "https://github.com/ryanakca/slingshot") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -7521,7 +8445,7 @@ fight each other on an arena-like map.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/flareteam/flare-engine.git") + (url "https://github.com/flareteam/flare-engine") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -7549,7 +8473,7 @@ action RPGs.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/flareteam/flare-game.git") + (url "https://github.com/flareteam/flare-game") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -7675,7 +8599,7 @@ Orcus Dome from evil.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/HackerPoet/MarbleMarcher.git") + (url "https://github.com/HackerPoet/MarbleMarcher") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -7733,15 +8657,15 @@ levels to unlock.") (define simgear (package (name "simgear") - (version "2018.3.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/flightgear/release-" - (version-major+minor version) "/" - "simgear-" version ".tar.bz2")) - (sha256 - (base32 - "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68")))) + (version "2018.3.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/flightgear/release-" + (version-major+minor version) "/" + "simgear-" version ".tar.bz2")) + (sha256 + (base32 "1vkqm66r1205k3hdjmx5wmx5kvmsb0dgfzrs8n5gqnxj8szs42dl")))) (build-system cmake-build-system) (arguments `(#:phases @@ -7751,7 +8675,7 @@ levels to unlock.") ;; Skip tests that require internet access. (invoke "ctest" "-E" "(http|dns)")))))) (inputs - `(("boost" ,boost-for-mysql) ; fails with 1.69 + `(("boost" ,boost-for-mysql) ; fails with 1.69 ("curl" ,curl) ("expat" ,expat) ("mesa" ,mesa) @@ -7770,21 +8694,21 @@ and also provides the base for the FlightGear Flight Simulator.") (package (name "flightgear") (version (package-version simgear)) - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/flightgear/release-" - (version-major+minor version) "/" - "flightgear-" version ".tar.bz2")) - (sha256 - (base32 - "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss")) - (modules '((guix build utils))) - (snippet - '(begin - ;; There are some bundled libraries. - (for-each delete-file-recursively - '("3rdparty/sqlite3/")) - #t)))) + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/flightgear/release-" + (version-major+minor version) "/" + "flightgear-" version ".tar.bz2")) + (sha256 + (base32 "0ya3vb539kwi1qrifqhsj5j3k4w6s06hrllp2vdzxf6id7cgf0hc")) + (modules '((guix build utils))) + (snippet + '(begin + ;; There are some bundled libraries. + (for-each delete-file-recursively + '("3rdparty/sqlite3/")) + #t)))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -7850,7 +8774,7 @@ and also provides the base for the FlightGear Flight Simulator.") "FlightGear-" version "-data.tar.bz2")) (sha256 (base32 - "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7")))))) + "04fv9za5zlyxlyfh6jx78y42l3jazvzl9dq2y6rzxqlcc9g5swhk")))))) (home-page "https://home.flightgear.org/") (synopsis "Flight simulator") (description "The goal of the FlightGear project is to create a @@ -7921,11 +8845,20 @@ play with up to four players simultaneously. It has network support.") ;; XXX: Engine is built as Pascal source code, requiring Free Pascal ;; Compiler, which we haven't packaged yet. With the flag below, we use ;; a Pascal to C translator and Clang instead. - `(#:configure-flags (list "-DBUILD_ENGINE_C=ON") + `(#:configure-flags (list "-DBUILD_ENGINE_C=ON" + "-Dhaskell_flags=-dynamic;-fPIC") #:phases (modify-phases %standard-phases (replace 'check - (lambda _ (invoke "ctest")))))) + (lambda _ (invoke "ctest"))) + (add-after 'install 'install-icon + (lambda _ + ;; Install icon for the desktop file. + (let* ((out (assoc-ref %outputs "out")) + (icons (string-append out "/share/icons/hicolor/512x512/apps"))) + (with-directory-excursion (string-append "../hedgewars-src-" ,version) + (install-file "misc/hedgewars.png" icons))) + #t))))) (inputs `(("ffmpeg" ,ffmpeg) ("freeglut" ,freeglut) @@ -8546,15 +9479,15 @@ win.") (define-public freeorion (package (name "freeorion") - (version "0.4.9") + (version "0.4.10") (source (origin (method url-fetch) (uri (string-append "https://github.com/freeorion/freeorion/releases/" "download/v" version "/FreeOrion_v" version - "_2020-02-02.db53471_Source.tar.gz")) + "_2020-07-10.f3d403e_Source.tar.gz")) (sha256 - (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an")) + (base32 "12xspixrkx6mmmsdqjha0hg02r4y73pk229l0wjq9s0yp8nb8ap7")) (modules '((guix build utils))) (snippet '(begin @@ -8587,7 +9520,7 @@ win.") ("libpng" ,libpng) ("libvorbis" ,libvorbis) ("openal" ,openal) - ("python2" ,python-2.7) + ("python" ,python) ("sdl2" ,sdl2) ("zlib" ,zlib))) (home-page "https://www.freeorion.org/index.php/Main_Page") @@ -8613,7 +9546,7 @@ remake of that series or any other game.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/leela-zero/leela-zero.git") + (url "https://github.com/leela-zero/leela-zero") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -8661,7 +9594,7 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/bernds/q5Go.git") + (url "https://github.com/bernds/q5Go") (commit (string-append "q5go-" version)))) (file-name (git-file-name name version)) (sha256 @@ -8769,7 +9702,7 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.") (synopsis "Stamp drawing toy") (description "KTuberling is a drawing toy intended for small children and adults who remain young at heart. The game has no winner; the only purpose is -to make the funniest faces you can. Several activites are possible, e.g.: +to make the funniest faces you can. Several activities are possible, e.g.: @itemize @item Give the potato a funny face, clothes, and other goodies @@ -10272,43 +11205,54 @@ This package is part of the KDE games module.") (define-public xmoto (package (name "xmoto") - (version "0.5.11") + (version "0.6.1") (source (origin - (method url-fetch) - (uri (string-append - "http://download.tuxfamily.org/xmoto/xmoto/" version "/" - "xmoto-" version "-src.tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/xmoto/xmoto") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155")) - (patches - (search-patches - "xmoto-remove-glext.patch" ;fixes licensing issue - "xmoto-reproducible.patch" - "xmoto-utf8.patch")) - ;; Unbundle ODE. - (modules '((guix build utils))) + (base32 "00f5ha79lfa2iiaz66wl0hl5dapa1l15qdr7m7knzi0ll7j6z66n")) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-1))) + ;; XXX: Remove some bundled libraries. Guix provides Chipmunk, but + ;; it appears to be incompatible with the (older) one bundled. (snippet `(begin - (delete-file-recursively "src/ode") + (let ((keep '("chipmunk" "glad" "md5sum"))) + (with-directory-excursion "vendor" + (for-each delete-file-recursively + (lset-difference string=? + (scandir ".") + (cons* "." ".." keep)))) + (substitute* "src/CMakeLists.txt" + (("add_subdirectory\\(.*?/vendor/(.+?)\".*" line library) + (if (member library keep) line "")))) #t)))) - (build-system gnu-build-system) + (build-system cmake-build-system) (arguments - ;; XXX: First flag prevents a build error with GCC7+. The second - ;; flag works around missing text in game. Both are fixed - ;; upstream. Remove once xmoto 0.5.12+ is released. - `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0") + `(#:tests? #f ;no test #:phases (modify-phases %standard-phases - (add-after 'install 'install-desktop-file + (add-after 'unpack 'fix-hard-coded-directory (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (apps (string-append out "/share/applications")) - (pixmaps (string-append out "/share/pixmaps"))) - (install-file "extra/xmoto.desktop" apps) - (install-file "extra/xmoto.xpm" pixmaps) - #t))) - (add-after 'install-desktop-file 'install-fonts + (substitute* "src/common/VFileIO.cpp" + (("/usr/share") + (string-append (assoc-ref outputs "out") "/share"))) + #t)) + (add-before 'build 'set-SDL + ;; Set correct environment for SDL. + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CPATH" + (string-append + (assoc-ref inputs "sdl") "/include/SDL:" + (or (getenv "CPATH") ""))) + #t)) + (add-after 'install 'unbundle-fonts + ;; Unbundle DejaVuSans TTF files. (lambda* (#:key outputs inputs #:allow-other-keys) (let ((font-dir (string-append (assoc-ref inputs "font-dejavu") "/share/fonts/truetype/")) @@ -10320,38 +11264,34 @@ This package is part of the KDE games module.") (delete-file target) (symlink font target))) '("DejaVuSans.ttf" "DejaVuSansMono.ttf")) - #t))) - (add-after 'install-fonts 'install-man-page - (lambda* (#:key outputs #:allow-other-keys) - (install-file "xmoto.6" - (string-append (assoc-ref outputs "out") - "/share/man/man6")) - #t))))) + #t)))))) (native-inputs - `(("gettext" ,gettext-minimal))) + `(("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config))) (inputs - `(("curl" ,curl) + `(("bzip2" ,bzip2) + ("curl" ,curl) ("font-dejavu" ,font-dejavu) ("glu" ,glu) ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libxdg-basedir" ,libxdg-basedir) ("libxml2" ,libxml2) - ("lua" ,lua-5.2) + ("lua" ,lua-5.1) ("ode" ,ode) ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf))) ("sqlite" ,sqlite) ("zlib" ,zlib))) (home-page "https://xmoto.tuxfamily.org/") (synopsis "2D motocross platform game") - (description "X-Moto is a challenging 2D motocross platform game, where -physics play an all important role in the gameplay. You need to control your -bike to its limit, if you want to have a chance finishing the more difficult -challenges.") + (description + "X-Moto is a challenging 2D motocross platform game, where +physics play an all important role in the gameplay. You need to +control your bike to its limit, if you want to have a chance finishing +the more difficult challenges.") (license (list license:gpl2+ ;whole project - license:bsd-4 ;src/bzip - license:bsd-3 ;src/md5sum - license:lgpl2.1+ ;src/iqsort.h + license:bsd-3 ;vendor/md5sum + license:lgpl2.1+ license:expat)))) (define-public eboard @@ -10362,7 +11302,7 @@ challenges.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/fbergo/eboard.git") + (url "https://github.com/fbergo/eboard") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -10401,20 +11341,21 @@ and chess engines.") (define-public chessx (package (name "chessx") - (version "1.5.0") + (version "1.5.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/chessx/chessx/" version "/chessx-" version ".tgz")) (sha256 - (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i")))) + (base32 "1a3541vl5hp6jllgx998w9kjh9kp3wrl80yfwkxmq1bc5bzsrnz2")))) (build-system qt-build-system) (native-inputs `(("qttools" ,qttools))) (inputs `(("qtbase" ,qtbase) ("qtmultimedia" ,qtmultimedia) + ("qtspeech" ,qtspeech) ("qtsvg" ,qtsvg) ("zlib" ,zlib))) (arguments @@ -10425,7 +11366,12 @@ and chess engines.") (lambda* (#:key inputs #:allow-other-keys) (substitute* "chessx.pro" (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease") - (string-append (assoc-ref inputs "qttools") "/bin/lrelease"))) + (string-append (assoc-ref inputs "qttools") "/bin/lrelease")) + ;; Fix missing translations. + (("TRANSLATIONS = i18n/chessx_de.ts") + "TRANSLATIONS = i18n/chessx_de.ts i18n/chessx_da.ts \\ +i18n/chessx_fr.ts i18n/chessx_it.ts i18n/chessx_cz.ts i18n/chessx_ru.ts \\ +i18n/chessx_es.ts")) #t)) (add-after 'fix-paths 'make-qt-deterministic (lambda _ @@ -10458,7 +11404,7 @@ etc. You can also play games on FICS or against an engine.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/official-stockfish/Stockfish.git") + (url "https://github.com/official-stockfish/Stockfish") (commit (string-append "sf_" version)))) (file-name (git-file-name name version)) (sha256 @@ -10520,10 +11466,37 @@ soldiers, jeeps and tanks. The gameplay is simple but it is not that easy to get high scores.") (license license:gpl2+))) +(define-public burgerspace + (package + (name "burgerspace") + (version "1.9.3") + (source + (origin + (method url-fetch) + (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/" + "burgerspace-" version ".tar.gz")) + (sha256 + (base32 "1005a04rbn4lzjrpfg0m394k2mfaji63fm2qhdqdsxila8a6kjbv")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("flatzebra" ,flatzebra))) + (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html") + (synopsis "Avoid evil foodstuffs and make burgers") + (description + "This is a clone of the classic game BurgerTime. In it, you play +the part of a chef who must create burgers by stepping repeatedly on +the ingredients until they fall into place. And to make things more +complicated, you also must avoid evil animate food items while +performing this task, with nothing but your trusty pepper shaker to +protect you.") + (license license:gpl2+))) + (define-public 7kaa (package (name "7kaa") - (version "2.15.3") + (version "2.15.4p1") (source (origin (method url-fetch) @@ -10531,7 +11504,7 @@ get high scores.") "releases/download/v" version "/" "7kaa-" version ".tar.xz")) (sha256 - (base32 "0blj47mcsfw1sn3465j6iham8m6ki07iggnq4q8nnaqnryx710jc")))) + (base32 "1y7v0jhp3apb619p7asikqr1dnwb2yxbh40wbx1ppmr5f03mq9ph")))) (build-system gnu-build-system) (native-inputs `(("gettext" ,gettext-minimal) @@ -10563,7 +11536,7 @@ kingdom.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/Neverball/neverball.git") + (url "https://github.com/Neverball/neverball") (commit commit))) (sha256 (base32 @@ -10667,3 +11640,145 @@ and shovers to get to the goal. Race against the clock to collect coins to earn extra balls. Also included is Neverputt, which is a 3D miniature golf game.") ;thanks to Debian for description (license license:gpl2+)))) + +(define-public pokerth + (package + (name "pokerth") + (version "1.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/pokerth/pokerth/" + version "/pokerth-" version ".tar.gz")) + (sha256 + (base32 "0yi9bj3k8yc1gkwmaf14zbbvvn13n54n1dli8k6j1pkph3p3vjq2")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove bundled websocketpp. + (delete-file-recursively "src/third_party/websocketpp") + (substitute* "pokerth_lib.pro" + (("src/third_party/websocketpp") + "")) + #t)))) + (build-system qt-build-system) + (inputs + `(("boost" ,boost) + ("curl" ,curl) + ("gsasl" ,gsasl) + ("libgcrypt" ,libgcrypt) + ("libircclient" ,libircclient) + ("protobuf" ,protobuf-2) ; remove package when no longer needed + ("qtbase" ,qtbase) + ("sdl" ,(sdl-union (list sdl sdl-mixer))) + ("sqlite" ,sqlite) + ("tinyxml" ,tinyxml) + ("websocketpp" ,websocketpp) + ("zlib" ,zlib))) + (arguments + `(#:tests? #f ; No test suite + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* (find-files "." "\\.pro$") + (("/opt/gsasl") + (assoc-ref inputs "gsasl")) + (("\\$\\$\\{PREFIX\\}/include/libircclient") + (string-append (assoc-ref inputs "libircclient") + "/include/libircclient")) + (("LIB_DIRS =") + (string-append "LIB_DIRS = " + (assoc-ref inputs "boost") "/lib"))) + #t)) + (add-after 'unpack 'fix-build + (lambda _ + ;; Fixes for Boost versions >= 1.66. + (substitute* '("src/net/common/clientthread.cpp" + "src/net/serveraccepthelper.h") + (("boost::asio::socket_base::non_blocking_io command\\(true\\);") + "") + (("newSock->io_control\\(command\\);") + "newSock->non_blocking(true);") + (("acceptedSocket->io_control\\(command\\);") + "acceptedSocket->non_blocking(true);")) + #t)) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (invoke "qmake" "pokerth.pro" "CONFIG+=client" + (string-append "PREFIX=" (assoc-ref outputs "out")))))))) + (home-page "https://www.pokerth.net") + (synopsis "Texas holdem poker game") + (description + "With PokerTH you can play the Texas holdem poker game, either against +computer opponents or against real players online.") + (license license:agpl3+))) + +(define-public azimuth + (package + (name "azimuth") + ;; Not marked as latest release, but it fixes a compiling issue + ;; and adds the install target. + (version "1.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mdsteele/azimuth") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1znfvpmqiixd977jv748glk5zc4cmhw5813zp81waj07r9b0828r")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + ;; Build release version instead of debug version. + (add-after 'unpack 'set-release + (lambda _ + (setenv "BUILDTYPE" "release") #t)) + (add-after 'unpack 'fix-install ; set install directory + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile" (("/usr") (assoc-ref outputs "out"))) #t))))) + (inputs `(("sdl" ,sdl))) + (home-page "https://mdsteele.games/azimuth/") + (synopsis "Metroidvania game with vector graphics") + (description + "Pilot your ship inside a planet to find and rescue the colonists trapped +inside the Zenith Colony.") + (license license:gpl3+))) + +(define-public paperview + (let ((commit "9f8538eb6734c76877b878b8f1e52587f2ae19e6") + (revision "1")) + (package + (name "paperview") + (version (git-version "0.0.1" revision commit)) ;no upstream release + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/glouw/paperview") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "09sb9sg44fvkgfdyycrm1ndpx7cnkrglxhci41y8f3gpagnvi7jk")))) + (build-system gnu-build-system) + (inputs + `(("sdl2" ,sdl2))) + (arguments + '(#:tests? #f ;no tests + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (home-page "https://github.com/glouw/paperview/") + (synopsis "High performance X11 animated wallpaper setter") + (description "High performance animated desktop background setter for +X11 that won't set your CPU on fire, drain your laptop battery, or lower video +game FPS.") + (license license:unlicense))))