diff options
author | Naios <naios-dev@live.de> | 2016-04-14 20:30:31 +0200 |
---|---|---|
committer | Naios <naios-dev@live.de> | 2016-04-14 21:30:43 +0200 |
commit | 2038c311001982dba100d33a6fbb8797f9de1c87 (patch) | |
tree | 82e0f3a1901197138aeab63621c0c4c1abf0cb22 /src/server/game/Scripting/ScriptReloadMgr.cpp | |
parent | 48776d9ce9ecb846cc049f70ceb18176226af1bf (diff) |
Core/Scripting: Disallow the build directory to contain spaces
* I wasn't able to work arround a path which contains spaces,
since it seems like a CMake specific issue.
* Closes #16947
(cherry picked from commit 42eeb28a8b9c1f3ae2d667e4238e956a4a95bd6c)
Diffstat (limited to 'src/server/game/Scripting/ScriptReloadMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptReloadMgr.cpp | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/src/server/game/Scripting/ScriptReloadMgr.cpp b/src/server/game/Scripting/ScriptReloadMgr.cpp index a6a13d00aeb..f13bd16d6c6 100644 --- a/src/server/game/Scripting/ScriptReloadMgr.cpp +++ b/src/server/game/Scripting/ScriptReloadMgr.cpp @@ -309,15 +309,6 @@ namespace std }; } -/// Escapes spaces in the given path -static std::string EscapeWindowsPath(std::string str) -{ -#ifdef _WIN32 - boost::algorithm::replace_all(str, " ", "\\ "); -#endif - return str; -} - /// Invokes a synchronous CMake process with the given arguments template<typename... T> static int InvokeCMakeCommand(T&&... args) @@ -518,6 +509,17 @@ public: if (!sWorld->getBoolConfig(CONFIG_HOTSWAP_ENABLED)) return; + if (BuiltInConfig::GetBuildDirectory().find(" ") != std::string::npos) + { + TC_LOG_ERROR("scripts.hotswap", "Your build directory path \"%s\" " + "contains spaces, which isn't allowed for compatibility reasons! " + "You need to create a build directory which doesn't contain any space character " + "in it's path!", + BuiltInConfig::GetBuildDirectory().c_str()); + + return; + } + { auto const library_directory = GetLibraryDirectory(); if (!fs::exists(library_directory) || !fs::is_directory(library_directory)) @@ -1116,7 +1118,7 @@ private: TC_LOG_INFO("scripts.hotswap", "Rerunning CMake because there were sources added or removed..."); _build_job->UpdateCurrentJob(BuildJobType::BUILD_JOB_RERUN_CMAKE, - InvokeAsyncCMakeCommand(EscapeWindowsPath(BuiltInConfig::GetBuildDirectory()))); + InvokeAsyncCMakeCommand(BuiltInConfig::GetBuildDirectory())); } /// Invokes a new build of the current active module job @@ -1129,9 +1131,9 @@ private: _build_job->UpdateCurrentJob(BuildJobType::BUILD_JOB_COMPILE, InvokeAsyncCMakeCommand( - "--build", EscapeWindowsPath(BuiltInConfig::GetBuildDirectory()), - "--target", EscapeWindowsPath(_build_job->GetProjectName()), - "--config", EscapeWindowsPath(_build_job->GetBuildDirective()))); + "--build", BuiltInConfig::GetBuildDirectory(), + "--target", _build_job->GetProjectName(), + "--config", _build_job->GetBuildDirective())); } /// Invokes a new asynchronous install of the current active module job @@ -1144,10 +1146,10 @@ private: _build_job->UpdateCurrentJob(BuildJobType::BUILD_JOB_INSTALL, InvokeAsyncCMakeCommand( - "-DCOMPONENT=" + EscapeWindowsPath(_build_job->GetProjectName()), - "-DBUILD_TYPE=" + EscapeWindowsPath(_build_job->GetBuildDirective()), - "-P", EscapeWindowsPath(fs::absolute("cmake_install.cmake", - BuiltInConfig::GetBuildDirectory()).generic_string()))); + "-DCOMPONENT=" + _build_job->GetProjectName(), + "-DBUILD_TYPE=" + _build_job->GetBuildDirective(), + "-P", fs::absolute("cmake_install.cmake", + BuiltInConfig::GetBuildDirectory()).generic_string())); } /// Sets the CMAKE_INSTALL_PREFIX variable in the CMake cache @@ -1258,8 +1260,8 @@ private: TC_LOG_INFO("scripts.hotswap", "Invoking CMake cache correction..."); auto const error = InvokeCMakeCommand( - "-DCMAKE_INSTALL_PREFIX:PATH=" + EscapeWindowsPath(fs::current_path().generic_string()), - EscapeWindowsPath(BuiltInConfig::GetBuildDirectory())); + "-DCMAKE_INSTALL_PREFIX:PATH=" + fs::current_path().generic_string(), + BuiltInConfig::GetBuildDirectory()); if (error) { |