[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/4] gnu: Add minetest.
From: |
David Thompson |
Subject: |
[PATCH 4/4] gnu: Add minetest. |
Date: |
Sun, 16 Nov 2014 11:00:10 -0500 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) |
>From b7e6e4507d98e0068470b76f9fca4dd3eb7d1db7 Mon Sep 17 00:00:00 2001
From: David Thompson <address@hidden>
Date: Fri, 5 Sep 2014 14:46:44 -0400
Subject: [PATCH 4/4] gnu: Add minetest.
* 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 | 74 +++++++++++++++++
.../patches/minetest-subgame-env-var.patch | 92 ++++++++++++++++++++++
3 files changed, 167 insertions(+)
create mode 100644 gnu/packages/patches/minetest-subgame-env-var.patch
diff --git a/gnu-system.am b/gnu-system.am
index 1af1aa5..0384c89 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -387,6 +387,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 6f63ce3..ff49f46 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -57,6 +57,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)
@@ -657,3 +660,74 @@ 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 will be included in future upstream releases.
+ ;; See:
https://github.com/minetest/minetest/commit/fd5eaae2babb322f8a3e2acab55a12e218814c8e
+ (patches (list (search-patch
"minetest-subgame-env-var.patch")))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:modules ((guix build utils)
+ (guix build cmake-build-system)
+ (ice-9 match))
+ #:phases (alist-cons-before
+ 'configure 'set-cpath
+ (lambda* (#:key inputs #:allow-other-keys)
+ (use-modules (ice-9 match))
+ ;; 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 (match-lambda
+ ((_ . dir) dir))
+ 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..de78228
--- /dev/null
+++ b/gnu/packages/patches/minetest-subgame-env-var.patch
@@ -0,0 +1,92 @@
+From fd5eaae2babb322f8a3e2acab55a12e218814c8e 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.
+
+---
+ doc/minetest.6 | 6 ++++++
+ src/subgame.cpp | 30 ++++++++++++++++++++++++++++++
+ 2 files changed, 36 insertions(+)
+
+diff --git a/doc/minetest.6 b/doc/minetest.6
+index d94c12c..ff54520 100644
+--- a/doc/minetest.6
++++ b/doc/minetest.6
+@@ -83,6 +83,12 @@ Set world path
+ Migrate from current map backend to another. Possible values are sqlite3
+ and leveldb. Only works when using --server.
+
++.SH ENVIRONMENT VARIABLES
++
++.TP
++MINETEST_SUBGAME_PATH
++Colon delimited list of directories to search for subgames.
++
+ .SH BUGS
+ Please report all bugs to Perttu Ahola <address@hidden>.
+
+diff --git a/src/subgame.cpp b/src/subgame.cpp
+index f2465c9..e86655b 100644
+--- a/src/subgame.cpp
++++ b/src/subgame.cpp
+@@ -22,6 +22,7 @@ with this program; if not, write to the Free Software
Foundation, Inc.,
+ #include "filesys.h"
+ #include "settings.h"
+ #include "log.h"
++#include "strfnd.h"
+ #ifndef SERVER
+ #include "tile.h" // getImagePath
+ #endif
+@@ -59,6 +60,17 @@ struct GameFindPath
+ {}
+ };
+
++Strfnd getSubgamePathEnv() {
++ std::string sp;
++ char *subgame_path = getenv("MINETEST_SUBGAME_PATH");
++
++ if(subgame_path) {
++ sp = std::string(subgame_path);
++ }
++
++ return Strfnd(sp);
++}
++
+ SubgameSpec findSubgame(const std::string &id)
+ {
+ if(id == "")
+@@ -66,6 +78,17 @@ SubgameSpec findSubgame(const std::string &id)
+ std::string share = porting::path_share;
+ std::string user = porting::path_user;
+ std::vector<GameFindPath> find_paths;
++
++ Strfnd search_paths = getSubgamePathEnv();
++
++ while(!search_paths.atend()) {
++ std::string path = search_paths.next(":");
++ find_paths.push_back(GameFindPath(
++ path + DIR_DELIM + id, false));
++ find_paths.push_back(GameFindPath(
++ path + DIR_DELIM + id + "_game",
false));
++ }
++
+ find_paths.push_back(GameFindPath(
+ user + DIR_DELIM + "games" + DIR_DELIM + id + "_game",
true));
+ find_paths.push_back(GameFindPath(
+@@ -129,6 +152,13 @@ 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");
++
++ Strfnd search_paths = getSubgamePathEnv();
++
++ while(!search_paths.atend()) {
++ gamespaths.insert(search_paths.next(":"));
++ }
++
+ for(std::set<std::string>::const_iterator i = gamespaths.begin();
+ i != gamespaths.end(); i++){
+ std::vector<fs::DirListNode> dirlist = fs::GetDirListing(*i);
+--
+2.1.1
+
--
2.1.1
--
David Thompson
Web Developer - Free Software Foundation - http://fsf.org
GPG Key: 0FF1D807
Support the FSF: https://fsf.org/donate
Re: [PATCH 1/4] gnu: Add openal., Ludovic Courtès, 2014/11/16