diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ef3b371a4..6686fc7f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,7 +17,7 @@ variables: - mkdir cmakebuild - mkdir -p artifact/minetest/usr/ - cd cmakebuild - - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE .. + - cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=TRUE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE .. - make -j2 - make install artifacts: diff --git a/build/WindowsApp/buildwin32.sh b/build/WindowsApp/buildwin32.sh index c79a5164a..2ebce3838 100644 --- a/build/WindowsApp/buildwin32.sh +++ b/build/WindowsApp/buildwin32.sh @@ -81,7 +81,7 @@ cmake .. \ -DCMAKE_INSTALL_PREFIX=/tmp \ -DBUILD_CLIENT=1 -DBUILD_SERVER=0 \ -DCMAKE_TOOLCHAIN_FILE=$toolchain_file \ - -DRUN_IN_PLACE=0 \ + -DRUN_IN_PLACE=1 \ \ -DENABLE_SOUND=1 \ -DENABLE_CURL=1 \ diff --git a/build/WindowsApp/buildwin64.sh b/build/WindowsApp/buildwin64.sh index 0ee87f911..219562554 100644 --- a/build/WindowsApp/buildwin64.sh +++ b/build/WindowsApp/buildwin64.sh @@ -81,7 +81,7 @@ cmake .. \ -DCMAKE_INSTALL_PREFIX=/tmp \ -DBUILD_CLIENT=1 -DBUILD_SERVER=0 \ -DCMAKE_TOOLCHAIN_FILE=$toolchain_file \ - -DRUN_IN_PLACE=0 \ + -DRUN_IN_PLACE=1 \ \ -DENABLE_SOUND=1 \ -DENABLE_CURL=1 \ diff --git a/build/iOS/MultiCraft/MultiCraft.xcodeproj/project.pbxproj b/build/iOS/MultiCraft/MultiCraft.xcodeproj/project.pbxproj index e6b9fa112..8d46637b9 100755 --- a/build/iOS/MultiCraft/MultiCraft.xcodeproj/project.pbxproj +++ b/build/iOS/MultiCraft/MultiCraft.xcodeproj/project.pbxproj @@ -1940,7 +1940,7 @@ GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", __IOS__, - "RUN_IN_PLACE=0", + "RUN_IN_PLACE=1", "USE_GETTEXT=1", "USE_CURL=1", "USE_SOUND=1", @@ -2035,7 +2035,7 @@ "$(inherited)", "NDEBUG=1", __IOS__, - "RUN_IN_PLACE=0", + "RUN_IN_PLACE=1", "USE_GETTEXT=1", "USE_CURL=1", "USE_SOUND=1", diff --git a/doc/client_lua_api.md b/doc/client_lua_api.md index 8ef3bfb2e..e222a2c91 100644 --- a/doc/client_lua_api.md +++ b/doc/client_lua_api.md @@ -33,9 +33,6 @@ the `init.lua` scripts in a shared environment. Paths ----- * `RUN_IN_PLACE=1` (Windows release, local build) - * `$path_user`: - * Linux: `` - * Windows: `` * `$path_share` * Linux: `` * Windows: `` @@ -43,16 +40,12 @@ Paths * `$path_share` * Linux: `/usr/share/minetest` * Windows: `/minetest-0.4.x` - * `$path_user`: - * Linux: `$HOME/.minetest` - * Windows: `C:/users//AppData/minetest` (maybe) Mod load path ------------- Generic: * `$path_share/clientmods/` -* `$path_user/clientmods/` (User-installed mods) In a run-in-place version (e.g. the distributed windows version): diff --git a/doc/lua_api.txt b/doc/lua_api.txt index c4991ee0b..d7370ff7b 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -30,27 +30,16 @@ the `init.lua` scripts in a shared environment. Paths ----- -* `RUN_IN_PLACE=1` (Windows release, local build) - * `$path_user`: - * Linux: `` - * Windows: `` +* `RUN_IN_PLACE=1` * `$path_share` * Linux: `` * Windows: `` -* `RUN_IN_PLACE=0`: (Linux release) - * `$path_share` - * Linux: `/usr/share/minetest` - * Windows: `/minetest-0.4.x` - * `$path_user`: - * Linux: `$HOME/.minetest` - * Windows: `C:/users//AppData/minetest` (maybe) Games ----- Games are looked up from: * `$path_share/games/gameid/` -* `$path_user/games/gameid/` where `gameid` is unique to each game. @@ -86,8 +75,6 @@ Generic: * `$path_share/games/gameid/mods/` * `$path_share/mods/` -* `$path_user/games/gameid/mods/` -* `$path_user/mods/` (User-installed mods) * `$worldpath/worldmods/` In a run-in-place version (e.g. the distributed windows version): diff --git a/src/client.cpp b/src/client.cpp index 298cfe50c..f3a0c3636 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -773,7 +773,7 @@ void Client::initLocalMapSaving(const Address &address, } #ifdef _WIN32 - const std::string world_path = porting::path_user + const std::string world_path = porting::path_share + DIR_DELIM + "worlds" + DIR_DELIM + "server_" + hostname + "_" + std::to_string(address.getPort()); @@ -1981,5 +1981,5 @@ void Client::unregisterModStorage(const std::string &name) std::string Client::getModStoragePath() const { - return porting::path_user + DIR_DELIM + "client" + DIR_DELIM + "mod_storage"; + return porting::path_share + DIR_DELIM + "client" + DIR_DELIM + "mod_storage"; } diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp index 1299f93f9..9369ff214 100644 --- a/src/client/clientlauncher.cpp +++ b/src/client/clientlauncher.cpp @@ -598,7 +598,7 @@ bool ClientLauncher::create_engine_device() params.ZBufferBits = 24; #ifdef __ANDROID__ params.PrivateData = porting::app_global; - params.OGLES2ShaderPath = std::string(porting::path_user + DIR_DELIM + + params.OGLES2ShaderPath = std::string(porting::path_share + DIR_DELIM + "media" + DIR_DELIM + "Shaders" + DIR_DELIM).c_str(); #endif diff --git a/src/debug.cpp b/src/debug.cpp index 8498697bc..a5758a379 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -294,7 +294,7 @@ long WINAPI Win32ExceptionHandler(struct _EXCEPTION_POINTERS *pExceptInfo) MINIDUMP_USER_STREAM mdus; bool minidump_created = false; - std::string dumpfile = porting::path_user + DIR_DELIM PROJECT_NAME ".dmp"; + std::string dumpfile = porting::path_share + DIR_DELIM PROJECT_NAME ".dmp"; std::string version_str(PROJECT_NAME " "); version_str += g_version_hash; diff --git a/src/game.cpp b/src/game.cpp index 7daaecceb..692fcd268 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -607,7 +607,6 @@ public: m_fetched.insert(name); paths_insert(dst_paths, porting::path_share, name); - paths_insert(dst_paths, porting::path_user, name); } }; diff --git a/src/guiEngine.cpp b/src/guiEngine.cpp index 7c87cbbe5..d091ea002 100644 --- a/src/guiEngine.cpp +++ b/src/guiEngine.cpp @@ -128,7 +128,7 @@ void MenuMusicFetcher::fetchSounds(const std::string &name, int i; for(i=0; i<10; i++) dst_paths.insert(base + DIR_DELIM + name + "."+itos(i)+".ogg"); - base = porting::path_user + DIR_DELIM + "sounds"; + base = porting::path_share + DIR_DELIM + "sounds"; dst_paths.insert(base + DIR_DELIM + name + ".ogg"); for(i=0; i<10; i++) dst_paths.insert(base + DIR_DELIM + name + "."+itos(i)+".ogg"); diff --git a/src/main.cpp b/src/main.cpp index 93536398e..303aa4246 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -420,11 +420,11 @@ static void setup_log_params(const Settings &cmd_args) static bool create_userdata_path() { #if defined(__ANDROID__) || defined(__IOS__) - if (fs::PathExists(porting::path_user)) + if (fs::PathExists(porting::path_share)) return true; #endif // Create user data directory - return fs::CreateDir(porting::path_user); + return fs::CreateDir(porting::path_share); } static bool init_common(const Settings &cmd_args, int argc, char *argv[]) @@ -477,15 +477,15 @@ static bool read_config_file(const Settings &cmd_args) g_settings_path = cmd_args.get("config"); } else { std::vector filenames; - filenames.push_back(porting::path_user + DIR_DELIM + "blockcolor.conf"); + filenames.push_back(porting::path_share + DIR_DELIM + "blockcolor.conf"); // Legacy configuration file location - filenames.push_back(porting::path_user + + filenames.push_back(porting::path_share + DIR_DELIM + ".." + DIR_DELIM + "blockcolor.conf"); #if RUN_IN_PLACE // Try also from a lower level (to aid having the same configuration // for many RUN_IN_PLACE installs) - filenames.push_back(porting::path_user + + filenames.push_back(porting::path_share + DIR_DELIM + ".." + DIR_DELIM + ".." + DIR_DELIM + "blockcolor.conf"); #endif @@ -510,7 +510,7 @@ static void init_log_streams(const Settings &cmd_args) #if RUN_IN_PLACE std::string log_filename = DEBUGFILE; #else - std::string log_filename = porting::path_user + DIR_DELIM + DEBUGFILE; + std::string log_filename = porting::path_share + DIR_DELIM + DEBUGFILE; #endif if (cmd_args.exists("logfile")) log_filename = cmd_args.get("logfile"); @@ -667,7 +667,7 @@ static bool auto_select_world(GameParams *game_params) // If there are no worlds, automatically create a new one } else { // This is the ultimate default world path - world_path = porting::path_user + DIR_DELIM + "worlds" + + world_path = porting::path_share + DIR_DELIM + "worlds" + DIR_DELIM + "world"; infostream << "Creating default world at [" << world_path << "]" << std::endl; diff --git a/src/mods.cpp b/src/mods.cpp index b1029b6a8..3ca8cc24e 100644 --- a/src/mods.cpp +++ b/src/mods.cpp @@ -355,11 +355,11 @@ ClientModConfiguration::ClientModConfiguration(const std::string &path): ModConfiguration(path) { std::set paths; - std::string path_user = porting::path_user + DIR_DELIM + "clientmods"; + std::string path_share = porting::path_share + DIR_DELIM + "clientmods"; paths.insert(path); - paths.insert(path_user); + paths.insert(path_share); - std::string settings_path = path_user + DIR_DELIM + "mods.conf"; + std::string settings_path = path_share + DIR_DELIM + "mods.conf"; addModsFormConfig(settings_path, paths); } #endif diff --git a/src/porting.cpp b/src/porting.cpp index 24a251bcb..264c297ee 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -145,9 +145,8 @@ void signal_handler_init(void) // Default to RUN_IN_PLACE style relative paths std::string path_share = ".."; -std::string path_user = ".."; std::string path_locale = path_share + DIR_DELIM + "locale"; -std::string path_cache = path_user + DIR_DELIM + "cache"; +std::string path_cache = path_share + DIR_DELIM + "cache"; std::string getDataPath(const char *subpath) @@ -379,7 +378,6 @@ bool setSystemPaths() DWORD len = GetEnvironmentVariable("APPDATA", buf, sizeof(buf)); FATAL_ERROR_IF(len == 0 || len > sizeof(buf), "Failed to get APPDATA"); - path_user = std::string(buf) + DIR_DELIM + PROJECT_NAME; return true; } @@ -415,7 +413,7 @@ bool setSystemPaths() trylist.push_back(bindir + DIR_DELIM ".."); #ifdef __ANDROID__ - trylist.push_back(path_user); + trylist.push_back(path_share); #endif for (std::list::const_iterator @@ -439,8 +437,7 @@ bool setSystemPaths() } #ifndef __ANDROID__ - path_user = std::string(getenv("HOME")) + DIR_DELIM "." - + PROJECT_NAME; + #endif return true; @@ -463,9 +460,7 @@ bool setSystemPaths() } CFRelease(resources_url); - path_user = std::string(getenv("HOME")) - + "/Library/Application Support/" - + PROJECT_NAME; + return true; } @@ -475,8 +470,7 @@ bool setSystemPaths() bool setSystemPaths() { path_share = STATIC_SHAREDIR; - path_user = std::string(getenv("HOME")) + DIR_DELIM "." - + lowercase(PROJECT_NAME); + return true; } @@ -499,11 +493,9 @@ void initializePaths() std::string execpath(buf); path_share = execpath + DIR_DELIM ".."; - path_user = execpath + DIR_DELIM ".."; if (detectMSVCBuildDir(execpath)) { path_share += DIR_DELIM ".."; - path_user += DIR_DELIM ".."; } } else { errorstream << "Failed to get paths by executable location, " @@ -524,9 +516,8 @@ void initializePaths() std::string execpath(buf); path_share = execpath; - path_user = execpath; } - path_cache = path_user + DIR_DELIM + "cache"; + path_cache = path_share + DIR_DELIM + "cache"; #else infostream << "Using system-wide paths (NOT RUN_IN_PLACE)" << std::endl; @@ -544,13 +535,12 @@ void initializePaths() path_cache = std::string(home_dir) + DIR_DELIM + ".cache" + DIR_DELIM + PROJECT_NAME; } else { - // If neither works, use $PATH_USER/cache - path_cache = path_user + DIR_DELIM + "cache"; + // If neither works, use $PATH_SHARE/cache + path_cache = path_share + DIR_DELIM + "cache"; } #endif infostream << "Detected share path: " << path_share << std::endl; - infostream << "Detected user path: " << path_user << std::endl; infostream << "Detected cache path: " << path_cache << std::endl; #ifdef USE_GETTEXT diff --git a/src/porting.h b/src/porting.h index 9fab9af10..aee8e3297 100644 --- a/src/porting.h +++ b/src/porting.h @@ -144,7 +144,6 @@ extern std::string path_share; Linux: "~/." Mac: "~/Library/Application Support/" */ -extern std::string path_user; /* Path to gettext locale files diff --git a/src/porting_android.cpp b/src/porting_android.cpp index 7dbb9827f..dd6add4f3 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -145,7 +145,7 @@ void cleanupAndroid() #ifdef GPROF errorstream << "Shutting down GPROF profiler" << std::endl; - setenv("CPUPROFILE", (path_user + DIR_DELIM + "gmon.out").c_str(), 1); + setenv("CPUPROFILE", (path_share + DIR_DELIM + "gmon.out").c_str(), 1); moncleanup(); #endif @@ -206,9 +206,8 @@ void initializePathsAndroid() cls_File, mt_getAbsPath, "getCacheDir"); path_storage = getAndroidPath(cls_Env, NULL, cls_File, mt_getAbsPath, "getExternalStorageDirectory"); - path_user = path_storage + DIR_DELIM + "Android/data/net.blockcolor.game/files"; - path_share = path_user; - path_locale = path_user + DIR_DELIM + "locale"; + path_share = path_storage + DIR_DELIM + "Android/data/net.blockcolor.game/files"; + path_locale = path_share + DIR_DELIM + "locale"; } void showInputDialog(const std::string& acceptButton, const std::string& hint, diff --git a/src/porting_ios.cpp b/src/porting_ios.cpp index 94b5dee09..b96a8bb55 100644 --- a/src/porting_ios.cpp +++ b/src/porting_ios.cpp @@ -31,8 +31,6 @@ namespace porting { void initializePathsiOS() { char buf[128]; - ioswrap_paths(PATH_DOCUMENTS, buf, sizeof(buf)); - path_user = std::string(buf); ioswrap_paths(PATH_LIBRARY_SUPPORT, buf, sizeof(buf)); path_share = std::string(buf); path_locale = std::string(buf) + "/locale"; diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index 588046412..51741a35e 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -667,7 +667,7 @@ int ModApiMainMenu::l_create_world(lua_State *L) const char *name = luaL_checkstring(L, 1); int gameidx = luaL_checkinteger(L,2) -1; - std::string path = porting::path_user + DIR_DELIM + std::string path = porting::path_share + DIR_DELIM "worlds" + DIR_DELIM + name; @@ -753,7 +753,7 @@ int ModApiMainMenu::l_get_mapgen_names(lua_State *L) int ModApiMainMenu::l_get_modpath(lua_State *L) { std::string modpath = fs::RemoveRelativePathComponents( - porting::path_user + DIR_DELIM + "mods" + DIR_DELIM); + porting::path_share + DIR_DELIM + "mods" + DIR_DELIM); lua_pushstring(L, modpath.c_str()); return 1; } @@ -762,7 +762,7 @@ int ModApiMainMenu::l_get_modpath(lua_State *L) int ModApiMainMenu::l_get_gamepath(lua_State *L) { std::string gamepath = fs::RemoveRelativePathComponents( - porting::path_user + DIR_DELIM + "games" + DIR_DELIM); + porting::path_share + DIR_DELIM + "games" + DIR_DELIM); lua_pushstring(L, gamepath.c_str()); return 1; } @@ -771,7 +771,7 @@ int ModApiMainMenu::l_get_gamepath(lua_State *L) int ModApiMainMenu::l_get_texturepath(lua_State *L) { std::string gamepath = fs::RemoveRelativePathComponents( - porting::path_user + DIR_DELIM + "textures"); + porting::path_share + DIR_DELIM + "textures"); lua_pushstring(L, gamepath.c_str()); return 1; } @@ -953,11 +953,11 @@ bool ModApiMainMenu::isMinetestPath(std::string path) return true; /* mods */ - if (fs::PathStartsWith(path,fs::RemoveRelativePathComponents(porting::path_user + DIR_DELIM + "files"))) + if (fs::PathStartsWith(path,fs::RemoveRelativePathComponents(porting::path_share + DIR_DELIM + "files"))) return true; /* worlds */ - if (fs::PathStartsWith(path,fs::RemoveRelativePathComponents(porting::path_user + DIR_DELIM + "worlds"))) + if (fs::PathStartsWith(path,fs::RemoveRelativePathComponents(porting::path_share + DIR_DELIM + "worlds"))) return true; diff --git a/src/server.cpp b/src/server.cpp index 97d4a1efd..1cbbfd4ec 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2371,7 +2371,7 @@ void Server::fillMediaCache() paths.push_back(mod.path + DIR_DELIM + "media"); paths.push_back(mod.path + DIR_DELIM + "models"); } - paths.push_back(porting::path_user + DIR_DELIM + "textures" + DIR_DELIM + "server"); + paths.push_back(porting::path_share + DIR_DELIM + "textures" + DIR_DELIM + "server"); // Collect media file information from paths into cache for(std::vector::iterator i = paths.begin(); diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 74c3ef923..b2ea07d44 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -42,9 +42,9 @@ std::string getFilePath() std::string serverlist_file = g_settings->get("serverlist_file"); std::string dir_path = "client" DIR_DELIM "serverlist" DIR_DELIM; - fs::CreateDir(porting::path_user + DIR_DELIM "client"); - fs::CreateDir(porting::path_user + DIR_DELIM + dir_path); - return porting::path_user + DIR_DELIM + dir_path + serverlist_file; + fs::CreateDir(porting::path_share + DIR_DELIM "client"); + fs::CreateDir(porting::path_share + DIR_DELIM + dir_path); + return porting::path_share + DIR_DELIM + dir_path + serverlist_file; } diff --git a/src/subgame.cpp b/src/subgame.cpp index e5b1ae977..657d0691d 100644 --- a/src/subgame.cpp +++ b/src/subgame.cpp @@ -74,7 +74,6 @@ SubgameSpec findSubgame(const std::string &id) if(id == "") return SubgameSpec(); std::string share = porting::path_share; - std::string user = porting::path_user; std::vector find_paths; Strfnd search_paths(getSubgamePathEnv()); @@ -149,7 +148,6 @@ std::set getAvailableGameIds() std::set gameids; std::set gamespaths; gamespaths.insert(porting::path_share + DIR_DELIM + "games"); - gamespaths.insert(porting::path_user + DIR_DELIM + "games"); Strfnd search_paths(getSubgamePathEnv()); @@ -233,7 +231,7 @@ std::vector getAvailableWorlds() while (!search_paths.at_end()) worldspaths.insert(search_paths.next(PATH_DELIM)); - worldspaths.insert(porting::path_user + DIR_DELIM + "worlds"); + worldspaths.insert(porting::path_share + DIR_DELIM + "worlds"); infostream << "Searching worlds..." << std::endl; for (std::set::const_iterator i = worldspaths.begin(); i != worldspaths.end(); ++i) { @@ -259,7 +257,7 @@ std::vector getAvailableWorlds() } // Check old world location do{ - std::string fullpath = porting::path_user + DIR_DELIM + "world"; + std::string fullpath = porting::path_share + DIR_DELIM + "world"; if(!fs::PathExists(fullpath)) break; std::string name = "Old World";