diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/minetest.scm | 27 | ||||
-rw-r--r-- | gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch | 156 |
3 files changed, 16 insertions, 168 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index d814d46b14..d51c1be0d3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1490,7 +1490,6 @@ dist_patch_DATA = \ %D%/packages/patches/meson-allow-dirs-outside-of-prefix.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ %D%/packages/patches/mia-fix-boost-headers.patch \ - %D%/packages/patches/minetest-add-MINETEST_MOD_PATH.patch \ %D%/packages/patches/mingw-w64-6.0.0-gcc.patch \ %D%/packages/patches/mingw-w64-dlltool-temp-prefix.patch \ %D%/packages/patches/mingw-w64-reproducible-gendef.patch \ diff --git a/gnu/packages/minetest.scm b/gnu/packages/minetest.scm index c431942473..2efd1468d2 100644 --- a/gnu/packages/minetest.scm +++ b/gnu/packages/minetest.scm @@ -26,6 +26,7 @@ #:use-module (gnu packages) #:use-module (gnu packages audio) #:use-module (gnu packages base) + #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages fontutils) #:use-module (gnu packages games) @@ -51,7 +52,7 @@ (define-public minetest (package (name "minetest") - (version "5.4.1") + (version "5.5.1") (source (origin (method git-fetch) (uri (git-reference @@ -60,11 +61,8 @@ (file-name (git-file-name name version)) (sha256 (base32 - "062ilb7s377q3hwfhl8q06vvcw2raydz5ljzlzwy2dmyzmdcndb8")) + "042v71gkk0xfixcsn82az2fri0n28fgf9d2zcz31bijqmg5q7imj")) (modules '((guix build utils))) - (patches - (search-patches - "minetest-add-MINETEST_MOD_PATH.patch")) (snippet '(begin ;; Delete bundled libraries. @@ -77,12 +75,18 @@ "-DENABLE_FREETYPE=1" "-DENABLE_GETTEXT=1" "-DENABLE_SYSTEM_JSONCPP=TRUE" - (string-append "-DIRRLICHT_INCLUDE_DIR=" - (assoc-ref %build-inputs "irrlicht") + (string-append "-DIRRLICHTMT_INCLUDE_DIR=" + (assoc-ref %build-inputs "irrlicht-for-minetest") "/include/irrlicht") (string-append "-DCURL_INCLUDE_DIR=" (assoc-ref %build-inputs "curl") - "/include/curl")) + "/include/curl") + (string-append "-DZSTD_INCLUDE_DIR=" + (assoc-ref %build-inputs "zstd") + "/include/zstd") + (string-append "-DZSTD_LIBRARY=" + (assoc-ref %build-inputs "zstd") + "/lib/libzstd.so")) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-sources @@ -123,7 +127,7 @@ ("freetype" ,freetype) ("gettext" ,gettext-minimal) ("gmp" ,gmp) - ("irrlicht" ,irrlicht) + ("irrlicht-for-minetest" ,irrlicht-for-minetest) ("jsoncpp" ,jsoncpp) ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) @@ -134,7 +138,8 @@ ("mesa" ,mesa) ("ncurses" ,ncurses) ("openal" ,openal) - ("sqlite" ,sqlite))) + ("sqlite" ,sqlite) + ("zstd" ,zstd "lib"))) (propagated-inputs (list minetest-data)) (synopsis "Infinite-world block sandbox game") @@ -159,7 +164,7 @@ in different ways.") (file-name (git-file-name name version)) (sha256 (base32 - "0i45lbnikvgj9kxdp0yphpjjwjcgp4ibn49xkj78j5ic1s9n8jd4")))) + "12cpaiww148szvnrc8r8cffwvl33smnrl7k29sh401yv0pbqi3j8")))) (build-system trivial-build-system) (native-inputs `(("source" ,source))) diff --git a/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch b/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch deleted file mode 100644 index 41338e6e6f..0000000000 --- a/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch +++ /dev/null @@ -1,156 +0,0 @@ -From d10ea2ad7efc2364a8a2007b4c6d3e85511e2f84 Mon Sep 17 00:00:00 2001 -From: Maxime Devos <maximedevos@telenet.be> -Date: Tue, 3 Aug 2021 01:00:23 +0200 -Subject: [PATCH] Add environment variable MINETEST_MOD_PATH - -This adds an environment variable MINETEST_MOD_PATH. -When it exists, Minetest will look there for mods -in addition to ~/.minetest/mods/. Mods can still be -installed to ~/.minetest/mods/ with the built-in installer. - -With thanks to Liliana Marie Prikler. ---- - builtin/mainmenu/pkgmgr.lua | 7 +++---- - doc/menu_lua_api.txt | 8 +++++++- - src/content/subgames.cpp | 11 +++++++++++ - src/script/lua_api/l_mainmenu.cpp | 23 +++++++++++++++++++++++ - src/script/lua_api/l_mainmenu.h | 2 ++ - 5 files changed, 46 insertions(+), 5 deletions(-) - -diff --git a/builtin/mainmenu/pkgmgr.lua b/builtin/mainmenu/pkgmgr.lua -index 787936e31..d8fba0ebe 100644 ---- a/builtin/mainmenu/pkgmgr.lua -+++ b/builtin/mainmenu/pkgmgr.lua -@@ -682,10 +682,9 @@ function pkgmgr.preparemodlist(data) - local game_mods = {} - - --read global mods -- local modpath = core.get_modpath() -- -- if modpath ~= nil and -- modpath ~= "" then -+ local modpaths = core.get_modpaths() -+ --XXX what was ‘modpath ~= ""’ and ‘modpath ~= nil’ for? -+ for _,modpath in ipairs(modpaths) do - get_mods(modpath,global_mods) - end - -diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt -index b3975bc1d..132444b14 100644 ---- a/doc/menu_lua_api.txt -+++ b/doc/menu_lua_api.txt -@@ -218,7 +218,13 @@ Package - content which is downloadable from the content db, may or may not be i - * returns path to global user data, - the directory that contains user-provided mods, worlds, games, and texture packs. - * core.get_modpath() (possible in async calls) -- * returns path to global modpath -+ * returns path to global modpath, where mods can be installed -+* core.get_modpaths() (possible in async calls) -+ * returns list of paths to global modpaths, where mods have been installed -+ -+ The difference with "core.get_modpath" is that no mods should be installed in these -+ directories by Minetest -- they might be read-only. -+ - * core.get_clientmodpath() (possible in async calls) - * returns path to global client-side modpath - * core.get_gamepath() (possible in async calls) -diff --git a/src/content/subgames.cpp b/src/content/subgames.cpp -index e9dc609b0..d73f95a1f 100644 ---- a/src/content/subgames.cpp -+++ b/src/content/subgames.cpp -@@ -61,6 +61,12 @@ std::string getSubgamePathEnv() - return subgame_path ? std::string(subgame_path) : ""; - } - -+std::string getModPathEnv() -+{ -+ char *mod_path = getenv("MINETEST_MOD_PATH"); -+ return mod_path ? std::string(mod_path) : ""; -+} -+ - SubgameSpec findSubgame(const std::string &id) - { - if (id.empty()) -@@ -110,6 +116,11 @@ SubgameSpec findSubgame(const std::string &id) - std::set<std::string> mods_paths; - if (!user_game) - mods_paths.insert(share + DIR_DELIM + "mods"); -+ -+ Strfnd mod_search_paths(getModPathEnv()); -+ while (!mod_search_paths.at_end()) -+ mods_paths.insert(mod_search_paths.next(PATH_DELIM)); -+ - if (user != share || user_game) - mods_paths.insert(user + DIR_DELIM + "mods"); - -diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp -index 3e9709bde..903ac3a22 100644 ---- a/src/script/lua_api/l_mainmenu.cpp -+++ b/src/script/lua_api/l_mainmenu.cpp -@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., - #include "lua_api/l_internal.h" - #include "common/c_content.h" - #include "cpp_api/s_async.h" -+#include "util/strfnd.h" - #include "gui/guiEngine.h" - #include "gui/guiMainMenu.h" - #include "gui/guiKeyChangeMenu.h" -@@ -502,6 +503,26 @@ int ModApiMainMenu::l_get_modpath(lua_State *L) - return 1; - } - -+/******************************************************************************/ -+int ModApiMainMenu::l_get_modpaths(lua_State *L) -+{ -+ const char *c_modpath = getenv("MINETEST_MOD_PATH"); -+ if (c_modpath == NULL) -+ c_modpath = ""; -+ int index = 1; -+ lua_newtable(L); -+ Strfnd mod_search_paths{std::string(c_modpath)}; -+ while (!mod_search_paths.at_end()) { -+ std::string component = mod_search_paths.next(PATH_DELIM); -+ lua_pushstring(L, component.c_str()); -+ lua_rawseti(L, -2, index); -+ index++; -+ } -+ ModApiMainMenu::l_get_modpath(L); -+ lua_rawseti(L, -2, index); -+ return 1; -+} -+ - /******************************************************************************/ - int ModApiMainMenu::l_get_clientmodpath(lua_State *L) - { -@@ -949,6 +970,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top) - API_FCT(get_mapgen_names); - API_FCT(get_user_path); - API_FCT(get_modpath); -+ API_FCT(get_modpaths); - API_FCT(get_clientmodpath); - API_FCT(get_gamepath); - API_FCT(get_texturepath); -@@ -983,6 +1005,7 @@ void ModApiMainMenu::InitializeAsync(lua_State *L, int top) - API_FCT(get_mapgen_names); - API_FCT(get_user_path); - API_FCT(get_modpath); -+ API_FCT(get_modpaths); - API_FCT(get_clientmodpath); - API_FCT(get_gamepath); - API_FCT(get_texturepath); -diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h -index 33ac9e721..a6a54a2cb 100644 ---- a/src/script/lua_api/l_mainmenu.h -+++ b/src/script/lua_api/l_mainmenu.h -@@ -112,6 +112,8 @@ class ModApiMainMenu: public ModApiBase - - static int l_get_modpath(lua_State *L); - -+ static int l_get_modpaths(lua_State *L); -+ - static int l_get_clientmodpath(lua_State *L); - - static int l_get_gamepath(lua_State *L); --- -2.32.0 - |