guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/2] gnu: Add minetest.


From: David Thompson
Subject: [PATCH 2/2] gnu: Add minetest.
Date: Sat, 6 Sep 2014 14:27:03 -0400

* gnu/packages/patches/minetest-subgame-env-var.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/games.scm (minetest): New variable.
---
 gnu-system.am                                      |  1 +
 gnu/packages/games.scm                             | 67 ++++++++++++++++++++++
 .../patches/minetest-subgame-env-var.patch         | 52 +++++++++++++++++
 3 files changed, 120 insertions(+)
 create mode 100644 gnu/packages/patches/minetest-subgame-env-var.patch

diff --git a/gnu-system.am b/gnu-system.am
index 9328d13..26bf78f 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -358,6 +358,7 @@ dist_patch_DATA =                                           
\
   gnu/packages/patches/mc-fix-ncurses-build.patch              \
   gnu/packages/patches/mcron-install.patch                     \
   gnu/packages/patches/mhash-keygen-test-segfault.patch                \
+  gnu/packages/patches/minetest-subgame-env-var.patch          \
   gnu/packages/patches/mit-krb5-init-fix.patch                 \
   gnu/packages/patches/mpc123-initialize-ao.patch              \
   gnu/packages/patches/module-init-tools-moduledir.patch       \
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 40f8fbf..c3b44b5 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -46,6 +46,9 @@
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages zip)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages lua)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake))
@@ -447,3 +450,67 @@ C++.")
      "Game data for the Minetest infinite-world block sandox game.")
     (home-page "http://minetest.net";)
     (license lgpl2.1+)))
+
+(define-public minetest
+  (package
+    (name "minetest")
+    (version "0.4.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/minetest/minetest/archive/";
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1xxv0g83iqszjgwnbdcbsprqg76cb6jnbsh5qhm7lcwx4wy2y2k2"))
+              ;; This patch shouldn't be necessary for future releases.
+              (patches (list (search-patch 
"minetest-subgame-env-var.patch")))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:phases (alist-cons-before
+                 'configure 'set-cpath
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; Adjust the CPATH so that cmake can find irrlicht,
+                   ;; openal, and curl headers.
+                   (set-path-environment-variable "CPATH"
+                                                  '("include/AL"
+                                                    "include/irrlicht"
+                                                    "include/curl"
+                                                    "include")
+                                                  (map cdr inputs)))
+                 %standard-phases)
+       #:configure-flags '("-DRUN_IN_PLACE=0"
+                           "-DENABLE_FREETYPE=1"
+                           "-DENABLE_GETTEXT=1")
+       #:tests? #f)) ; no check target
+    (native-search-paths
+     (list (search-path-specification
+            (variable "MINETEST_SUBGAME_PATH")
+            (directories '("share/minetest/games")))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("irrlicht" ,irrlicht)
+       ("libpng" ,libpng)
+       ("libjpeg-8" ,libjpeg-8)
+       ("libxxf86vm" ,libxxf86vm)
+       ("mesa" ,mesa)
+       ("libogg" ,libogg)
+       ("libvorbis" ,libvorbis)
+       ("openal" ,openal)
+       ("freetype" ,(@ (gnu packages fontutils) freetype))
+       ("curl" ,curl)
+       ("luajit" ,luajit)
+       ("gettext" ,gnu-gettext)
+       ("sqlite" ,sqlite)))
+    (propagated-inputs
+     `(("minetest-data" ,minetest-data)))
+    (synopsis "Infinite-world block sandbox game")
+    (description
+     "Minetest is a sandbox construction game.  Players can create and destroy
+various types of blocks in a three-dimensional open world.  This allows
+forming structures in every possible creation, on multiplayer servers or as a
+single player.  Mods and texture packs allow players to personalize the game
+in different ways.")
+    (home-page "http://minetest.net";)
+    (license lgpl2.1+)))
diff --git a/gnu/packages/patches/minetest-subgame-env-var.patch 
b/gnu/packages/patches/minetest-subgame-env-var.patch
new file mode 100644
index 0000000..d3024a5
--- /dev/null
+++ b/gnu/packages/patches/minetest-subgame-env-var.patch
@@ -0,0 +1,52 @@
+From 80a1054060006e9e6c3f87d8c0826b1f620789f1 Mon Sep 17 00:00:00 2001
+From: David Thompson <address@hidden>
+Date: Sat, 6 Sep 2014 13:21:46 -0400
+Subject: [PATCH] Search for subgames using $MINETEST_SUBGAME_PATH.
+
+---
+ src/subgame.cpp | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+diff --git a/src/subgame.cpp b/src/subgame.cpp
+index f2465c9..24a4af5 100644
+--- a/src/subgame.cpp
++++ b/src/subgame.cpp
+@@ -66,6 +66,19 @@ SubgameSpec findSubgame(const std::string &id)
+       std::string share = porting::path_share;
+       std::string user = porting::path_user;
+       std::vector<GameFindPath> find_paths;
++
++        char *search_paths = getenv("MINETEST_SUBGAME_PATH");
++        char *search_path = strtok(search_paths, ":");
++
++        while(search_path != NULL) {
++                std::string path = std::string(search_path);
++                find_paths.push_back(GameFindPath(
++                                       path + DIR_DELIM + id, false));
++                find_paths.push_back(GameFindPath(
++                                       path + DIR_DELIM + id + "_game", 
false));
++                search_path = strtok(NULL, ":");
++        }
++
+       find_paths.push_back(GameFindPath(
+                       user + DIR_DELIM + "games" + DIR_DELIM + id + "_game", 
true));
+       find_paths.push_back(GameFindPath(
+@@ -129,6 +142,15 @@ std::set<std::string> getAvailableGameIds()
+       std::set<std::string> gamespaths;
+       gamespaths.insert(porting::path_share + DIR_DELIM + "games");
+       gamespaths.insert(porting::path_user + DIR_DELIM + "games");
++
++        char *search_paths = getenv("MINETEST_SUBGAME_PATH");
++        char *search_path = strtok(search_paths, ":");
++
++        while(search_path != NULL) {
++                gamespaths.insert(std::string(search_path));
++                search_path = strtok(NULL, ":");
++        }
++
+       for(std::set<std::string>::const_iterator i = gamespaths.begin();
+                       i != gamespaths.end(); i++){
+               std::vector<fs::DirListNode> dirlist = fs::GetDirListing(*i);
+-- 
+2.1.0
+
-- 
2.1.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]