From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Thompson Subject: [PATCH 2/2] gnu: Add minetest. Date: Sat, 6 Sep 2014 14:27:03 -0400 Message-ID: <1410028023-16046-2-git-send-email-dthompson2@worcester.edu> References: <1410028023-16046-1-git-send-email-dthompson2@worcester.edu> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58375) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XQKhn-0000pA-40 for guix-devel@gnu.org; Sat, 06 Sep 2014 14:27:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XQKhh-0001Qk-6M for guix-devel@gnu.org; Sat, 06 Sep 2014 14:27:23 -0400 Received: from na3sys009aog109.obsmtp.com ([74.125.149.201]:52704) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XQKhg-0001Qg-Th for guix-devel@gnu.org; Sat, 06 Sep 2014 14:27:17 -0400 Received: by mail-qg0-f46.google.com with SMTP id q107so3863026qgd.5 for ; Sat, 06 Sep 2014 11:27:15 -0700 (PDT) In-Reply-To: <1410028023-16046-1-git-send-email-dthompson2@worcester.edu> 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 * 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 +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 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 getAvailableGameIds() + std::set 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::const_iterator i = gamespaths.begin(); + i != gamespaths.end(); i++){ + std::vector dirlist = fs::GetDirListing(*i); +-- +2.1.0 + -- 2.1.0