summary refs log tree commit diff
path: root/gnu/packages/games.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2017-04-12 11:28:01 +0200
committerRicardo Wurmus <rekado@elephly.net>2017-04-13 13:08:26 +0200
commitbd71525b7ad1bb4f6896793ca7f6283e178b3a06 (patch)
tree4e1d62800f1f2573fbe33cf5dd33abb6061d91fe /gnu/packages/games.scm
parent0da0f434c61d35739ab7f3741a34daf1e82133e7 (diff)
downloadguix-bd71525b7ad1bb4f6896793ca7f6283e178b3a06.tar.gz
gnu: Add kiki.
* gnu/packages/games.scm (kiki): New variable.
* gnu/packages/patches/kiki-level-selection-crash.patch,
gnu/packages/patches/kiki-makefile.patch,
gnu/packages/patches/kiki-missing-includes.patch,
gnu/packages/patches/kiki-portability-64bit.patch: New patches.
* gnu/local.mk (dist_patch_DATA): Add them.
Diffstat (limited to 'gnu/packages/games.scm')
-rw-r--r--gnu/packages/games.scm97
1 files changed, 97 insertions, 0 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 71f35e2fef..710b2746c9 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -89,6 +89,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages sdl)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages check)
   #:use-module (gnu packages fonts)
@@ -3552,3 +3553,99 @@ over 100 user-created campaigns.")
                    license:cc0
                    license:cc-by3.0
                    license:cc-by-sa3.0))))
+
+(define-public kiki
+  (package
+    (name "kiki")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
+                                  version "/kiki-" version "-src.tgz"))
+              (sha256
+               (base32
+                "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each delete-file (find-files "." "\\.dll$"))
+                  #t))
+              (patches
+               (search-patches "kiki-level-selection-crash.patch"
+                               "kiki-makefile.patch"
+                               "kiki-missing-includes.patch"
+                               "kiki-portability-64bit.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; there are no tests
+       #:make-flags '("CXX=g++")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (setenv "CPLUS_INCLUDE_PATH"
+                     (string-append (assoc-ref inputs "sdl-union")
+                                    "/include/SDL:"
+                                    (assoc-ref inputs "python")
+                                    "/include/python2.7:"
+                                    (getenv "CPLUS_INCLUDE_PATH")))
+             (substitute* "src/main/main.cpp"
+               (("#include <SDL.h>" line)
+                (string-append line "
+#define K_INCLUDE_GLUT
+#include \"KIncludeTools.h\""))
+               (("// initialize SDL" line)
+                (string-append "glutInit(&argc,argv);\n" line)))
+             (substitute* "src/main/KikiController.cpp"
+               (("getenv\\(\"KIKI_HOME\"\\)")
+                (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
+             (substitute* "linux/Makefile"
+               (("CXXOPTS =" line)
+                (string-append line " -fpermissive"))
+               (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
+               (("PYTHONHOME =.*")
+                (string-append "PYTHONHOME = "
+                               (assoc-ref inputs "python")
+                               "/lib/python2.7/"))
+               (("\\$\\(GLLIBS\\)" line)
+                (string-append line " -lm -lpython2.7")))
+             (substitute* "src/main/KikiPythonWidget.h"
+               (("#define __KikiPythonWidget" line)
+                (string-append line "\n#include \"KikiPython.h\"")))
+             #t))
+         (add-before 'build 'build-kodilib
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (with-directory-excursion "kodilib/linux"
+               (zero? (apply system* "make" make-flags)))))
+         (add-after 'build-kodilib 'chdir
+           (lambda _ (chdir "linux") #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (bin   (string-append out "/bin"))
+                    (share (string-append out "/share/kiki")))
+               (mkdir-p bin)
+               (mkdir-p share)
+               (install-file "kiki" bin)
+               (copy-recursively "../py" (string-append share "/py"))
+               (copy-recursively "../sound" (string-append share "/sound"))
+               #t))))))
+    (inputs
+     `(("glu" ,glu)
+       ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
+       ("freeglut" ,freeglut-2.8)
+       ("sdl-union" ,(sdl-union (list sdl
+                                      sdl-mixer
+                                      sdl-image)))
+       ("python" ,python-2)))
+    (native-inputs
+     `(("swig" ,swig)))
+    (home-page "http://kiki.sourceforge.net/")
+    (synopsis "3D puzzle game")
+    (description "Kiki the nano bot is a 3D puzzle game.  It is basically a
+mixture of the games Sokoban and Kula-World.  Your task is to help Kiki, a
+small robot living in the nano world, repair its maker.")
+    ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
+    ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
+    ;; for a statement from the author.
+    (license license:public-domain)))