From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Thompson Subject: [PATCH 4/4] gnu: Add minetest. Date: Sun, 16 Nov 2014 11:00:10 -0500 Message-ID: <877fyvqgol.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> References: <87ioifqgta.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> <87fvdjqgrw.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> <87d28nqgqw.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> <87a93rqgpi.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47237) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xq2FU-0004Qw-Nm for guix-devel@gnu.org; Sun, 16 Nov 2014 11:00:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xq2FJ-00063b-U2 for guix-devel@gnu.org; Sun, 16 Nov 2014 11:00:24 -0500 Received: from mail.fsf.org ([208.118.235.13]:33343) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xq2FJ-00063X-R1 for guix-devel@gnu.org; Sun, 16 Nov 2014 11:00:13 -0500 Received: from 209-6-40-86.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com ([209.6.40.86]:50264 helo=izanagi) by mail.fsf.org with esmtpsa (TLS-1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.69) (envelope-from ) id 1Xq2FJ-0008Pi-8P for guix-devel@gnu.org; Sun, 16 Nov 2014 11:00:13 -0500 In-Reply-To: <87a93rqgpi.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0004-gnu-Add-minetest.patch >From b7e6e4507d98e0068470b76f9fca4dd3eb7d1db7 Mon Sep 17 00:00:00 2001 From: David Thompson 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 +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 . + +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 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 getAvailableGameIds() + std::set 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::const_iterator i = gamespaths.begin(); + i != gamespaths.end(); i++){ + std::vector dirlist = fs::GetDirListing(*i); +-- +2.1.1 + -- 2.1.1 --=-=-= Content-Type: text/plain -- David Thompson Web Developer - Free Software Foundation - http://fsf.org GPG Key: 0FF1D807 Support the FSF: https://fsf.org/donate --=-=-=--