mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Core/Common: Add a generic config helper to access built-in overwriteable paths.
* Adds CMAKE_COMMAND and CMAKE_BINARY_DIR to revision_data.h * Move the source and mysql exe path handling out of the DBUpdater. * Make some Config methods const for correctness. * Remove C & CXX flags from revision_data.h (was unused and didn't capture all cxx vars) * Reorder the link order to prevent `ld` from ignoring the file * Ref #15671
This commit is contained in:
@@ -3,7 +3,9 @@
|
||||
#define _HASH "@rev_hash@"
|
||||
#define _DATE "@rev_date@"
|
||||
#define _BRANCH "@rev_branch@"
|
||||
#define _CMAKE_COMMAND "@CMAKE_COMMAND@"
|
||||
#define _SOURCE_DIRECTORY "@CMAKE_SOURCE_DIR@"
|
||||
#define _BUILD_DIRECTORY "@BUILDDIR@"
|
||||
#define _MYSQL_EXECUTABLE "@MYSQL_EXECUTABLE@"
|
||||
#define _FULL_DATABASE "TDB_full_world_6.03_2015_11_08.sql"
|
||||
#define _HOTFIXES_DATABASE "TDB_full_hotfixes_6.03_2015_11_08.sql"
|
||||
@@ -13,6 +15,4 @@
|
||||
#define VER_FILEVERSION_STR "@rev_hash@ @rev_date@ (@rev_branch@ branch)"
|
||||
#define VER_PRODUCTVERSION VER_FILEVERSION
|
||||
#define VER_PRODUCTVERSION_STR VER_FILEVERSION_STR
|
||||
#define COMPILER_C_FLAGS "@CMAKE_C_FLAGS@"
|
||||
#define COMPILER_CXX_FLAGS "@CMAKE_CXX_FLAGS@"
|
||||
#endif // __REVISION_DATA_H__
|
||||
|
||||
52
src/common/Configuration/BuiltInConfig.cpp
Normal file
52
src/common/Configuration/BuiltInConfig.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "BuiltInConfig.h"
|
||||
#include "Config.h"
|
||||
#include "GitRevision.h"
|
||||
|
||||
template<typename Fn>
|
||||
static std::string GetStringWithDefaultValueFromFunction(
|
||||
std::string const& key, Fn getter)
|
||||
{
|
||||
std::string const value = sConfigMgr->GetStringDefault(key, "");
|
||||
return value.empty() ? getter() : value;
|
||||
}
|
||||
|
||||
std::string BuiltInConfig::GetCMakeCommand()
|
||||
{
|
||||
return GetStringWithDefaultValueFromFunction(
|
||||
"CMakeCommand", GitRevision::GetCMakeCommand);
|
||||
}
|
||||
|
||||
std::string BuiltInConfig::GetBuildDirectory()
|
||||
{
|
||||
return GetStringWithDefaultValueFromFunction(
|
||||
"BuildDirectory", GitRevision::GetBuildDirectory);
|
||||
}
|
||||
|
||||
std::string BuiltInConfig::GetSourceDirectory()
|
||||
{
|
||||
return GetStringWithDefaultValueFromFunction(
|
||||
"SourceDirectory", GitRevision::GetSourceDirectory);
|
||||
}
|
||||
|
||||
std::string BuiltInConfig::GetMySQLExecutable()
|
||||
{
|
||||
return GetStringWithDefaultValueFromFunction(
|
||||
"MySQLExecutable", GitRevision::GetMySQLExecutable);
|
||||
}
|
||||
42
src/common/Configuration/BuiltInConfig.h
Normal file
42
src/common/Configuration/BuiltInConfig.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BUILT_IN_CONFIG_H
|
||||
#define BUILT_IN_CONFIG_H
|
||||
|
||||
#include <string>
|
||||
|
||||
/// Provides helper functions to access built-in values
|
||||
/// which can be overwritten in config
|
||||
namespace BuiltInConfig
|
||||
{
|
||||
/// Returns the CMake command when any is specified in the config,
|
||||
/// returns the built-in path otherwise
|
||||
std::string GetCMakeCommand();
|
||||
/// Returns the build directory path when any is specified in the config,
|
||||
/// returns the built-in one otherwise
|
||||
std::string GetBuildDirectory();
|
||||
/// Returns the source directory path when any is specified in the config,
|
||||
/// returns the built-in one otherwise
|
||||
std::string GetSourceDirectory();
|
||||
/// Returns the path to the mysql executable (`mysql`) when any is specified
|
||||
/// in the config, returns the built-in one otherwise
|
||||
std::string GetMySQLExecutable();
|
||||
|
||||
} // namespace BuiltInConfig
|
||||
|
||||
#endif // BUILT_IN_CONFIG_H
|
||||
@@ -62,7 +62,7 @@ bool ConfigMgr::Reload(std::string& error)
|
||||
return LoadInitial(_filename, error);
|
||||
}
|
||||
|
||||
std::string ConfigMgr::GetStringDefault(std::string const& name, const std::string& def)
|
||||
std::string ConfigMgr::GetStringDefault(std::string const& name, const std::string& def) const
|
||||
{
|
||||
std::string value = _config.get<std::string>(ptree::path_type(name, '/'), def);
|
||||
|
||||
@@ -71,7 +71,7 @@ std::string ConfigMgr::GetStringDefault(std::string const& name, const std::stri
|
||||
return value;
|
||||
}
|
||||
|
||||
bool ConfigMgr::GetBoolDefault(std::string const& name, bool def)
|
||||
bool ConfigMgr::GetBoolDefault(std::string const& name, bool def) const
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -85,12 +85,12 @@ bool ConfigMgr::GetBoolDefault(std::string const& name, bool def)
|
||||
}
|
||||
}
|
||||
|
||||
int ConfigMgr::GetIntDefault(std::string const& name, int def)
|
||||
int ConfigMgr::GetIntDefault(std::string const& name, int def) const
|
||||
{
|
||||
return _config.get<int>(ptree::path_type(name, '/'), def);
|
||||
}
|
||||
|
||||
float ConfigMgr::GetFloatDefault(std::string const& name, float def)
|
||||
float ConfigMgr::GetFloatDefault(std::string const& name, float def) const
|
||||
{
|
||||
return _config.get<float>(ptree::path_type(name, '/'), def);
|
||||
}
|
||||
|
||||
@@ -41,10 +41,10 @@ public:
|
||||
|
||||
bool Reload(std::string& error);
|
||||
|
||||
std::string GetStringDefault(std::string const& name, const std::string& def);
|
||||
bool GetBoolDefault(std::string const& name, bool def);
|
||||
int GetIntDefault(std::string const& name, int def);
|
||||
float GetFloatDefault(std::string const& name, float def);
|
||||
std::string GetStringDefault(std::string const& name, const std::string& def) const;
|
||||
bool GetBoolDefault(std::string const& name, bool def) const;
|
||||
int GetIntDefault(std::string const& name, int def) const;
|
||||
float GetFloatDefault(std::string const& name, float def) const;
|
||||
|
||||
std::string const& GetFilename();
|
||||
std::list<std::string> GetKeysByString(std::string const& name);
|
||||
|
||||
@@ -17,6 +17,16 @@ char const* GitRevision::GetBranch()
|
||||
return _BRANCH;
|
||||
}
|
||||
|
||||
char const* GitRevision::GetCMakeCommand()
|
||||
{
|
||||
return _CMAKE_COMMAND;
|
||||
}
|
||||
|
||||
char const* GitRevision::GetBuildDirectory()
|
||||
{
|
||||
return _BUILD_DIRECTORY;
|
||||
}
|
||||
|
||||
char const* GitRevision::GetSourceDirectory()
|
||||
{
|
||||
return _SOURCE_DIRECTORY;
|
||||
@@ -71,13 +81,3 @@ char const* GitRevision::GetProductVersionStr()
|
||||
{
|
||||
return VER_PRODUCTVERSION_STR;
|
||||
}
|
||||
|
||||
char const* GitRevision::GetCompilerCFlags()
|
||||
{
|
||||
return COMPILER_C_FLAGS;
|
||||
}
|
||||
|
||||
char const* GitRevision::GetCompilerCXXFlags()
|
||||
{
|
||||
return COMPILER_CXX_FLAGS;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,8 @@ namespace GitRevision
|
||||
char const* GetHash();
|
||||
char const* GetDate();
|
||||
char const* GetBranch();
|
||||
char const* GetCMakeCommand();
|
||||
char const* GetBuildDirectory();
|
||||
char const* GetSourceDirectory();
|
||||
char const* GetMySQLExecutable();
|
||||
char const* GetFullDatabase();
|
||||
@@ -34,8 +36,6 @@ namespace GitRevision
|
||||
char const* GetLegalCopyrightStr();
|
||||
char const* GetFileVersionStr();
|
||||
char const* GetProductVersionStr();
|
||||
char const* GetCompilerCFlags();
|
||||
char const* GetCompilerCXXFlags();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -87,10 +87,10 @@ if( NOT WIN32 )
|
||||
endif()
|
||||
|
||||
target_link_libraries(bnetserver
|
||||
common
|
||||
shared
|
||||
database
|
||||
ipc
|
||||
shared
|
||||
common
|
||||
zmqpp
|
||||
format
|
||||
${MYSQL_LIBRARY}
|
||||
|
||||
@@ -137,6 +137,26 @@ WrongPass.BanType = 0
|
||||
|
||||
WrongPass.Logging = 0
|
||||
|
||||
#
|
||||
# SourceDirectory
|
||||
# Description: The path to your TrinityCore source directory.
|
||||
# If the path is left empty, the built-in CMAKE_SOURCE_DIR is used.
|
||||
# Example: "../TrinityCore"
|
||||
# Default: ""
|
||||
|
||||
SourceDirectory = ""
|
||||
|
||||
#
|
||||
# MySQLExecutable
|
||||
# Description: The path to your mysql cli binary.
|
||||
# If the path is left empty, built-in path from cmake is used.
|
||||
# Example: "C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql.exe"
|
||||
# "mysql.exe"
|
||||
# "/usr/bin/mysql"
|
||||
# Default: ""
|
||||
|
||||
MySQLExecutable = ""
|
||||
|
||||
#
|
||||
###################################################################################################
|
||||
|
||||
@@ -180,26 +200,6 @@ LoginDatabase.WorkerThreads = 1
|
||||
|
||||
Updates.EnableDatabases = 0
|
||||
|
||||
#
|
||||
# Updates.SourcePath
|
||||
# Description: The path to your TrinityCore source directory.
|
||||
# If the path is left empty, built-in CMAKE_SOURCE_DIR is used.
|
||||
# Example: "../TrinityCore"
|
||||
# Default: ""
|
||||
|
||||
Updates.SourcePath = ""
|
||||
|
||||
#
|
||||
# Updates.MySqlCLIPath
|
||||
# Description: The path to your mysql cli binary.
|
||||
# If the path is left empty, built-in path from cmake is used.
|
||||
# Example: "C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql.exe"
|
||||
# "mysql.exe"
|
||||
# "/usr/bin/mysql"
|
||||
# Default: ""
|
||||
|
||||
Updates.MySqlCLIPath = ""
|
||||
|
||||
#
|
||||
# Updates.AutoSetup
|
||||
# Description: Auto populate empty databases.
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "UpdateFetcher.h"
|
||||
#include "DatabaseLoader.h"
|
||||
#include "Config.h"
|
||||
#include "BuiltInConfig.h"
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
@@ -35,23 +36,17 @@ using namespace boost::process;
|
||||
using namespace boost::process::initializers;
|
||||
using namespace boost::iostreams;
|
||||
|
||||
std::string DBUpdaterUtil::GetMySqlCli()
|
||||
std::string DBUpdaterUtil::GetCorrectedMySQLExecutable()
|
||||
{
|
||||
if (!corrected_path().empty())
|
||||
return corrected_path();
|
||||
else
|
||||
{
|
||||
std::string const entry = sConfigMgr->GetStringDefault("Updates.MySqlCLIPath", "");
|
||||
if (!entry.empty())
|
||||
return entry;
|
||||
else
|
||||
return GitRevision::GetMySQLExecutable();
|
||||
}
|
||||
return BuiltInConfig::GetMySQLExecutable();
|
||||
}
|
||||
|
||||
bool DBUpdaterUtil::CheckExecutable()
|
||||
{
|
||||
boost::filesystem::path exe(GetMySqlCli());
|
||||
boost::filesystem::path exe(GetCorrectedMySQLExecutable());
|
||||
if (!exists(exe))
|
||||
{
|
||||
exe.clear();
|
||||
@@ -85,16 +80,6 @@ std::string& DBUpdaterUtil::corrected_path()
|
||||
return path;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
std::string DBUpdater<T>::GetSourceDirectory()
|
||||
{
|
||||
std::string const entry = sConfigMgr->GetStringDefault("Updates.SourcePath", "");
|
||||
if (!entry.empty())
|
||||
return entry;
|
||||
else
|
||||
return GitRevision::GetSourceDirectory();
|
||||
}
|
||||
|
||||
// Auth Database
|
||||
template<>
|
||||
std::string DBUpdater<LoginDatabaseConnection>::GetConfigEntry()
|
||||
@@ -111,7 +96,8 @@ std::string DBUpdater<LoginDatabaseConnection>::GetTableName()
|
||||
template<>
|
||||
std::string DBUpdater<LoginDatabaseConnection>::GetBaseFile()
|
||||
{
|
||||
return DBUpdater<LoginDatabaseConnection>::GetSourceDirectory() + "/sql/base/auth_database.sql";
|
||||
return BuiltInConfig::GetSourceDirectory() +
|
||||
"/sql/base/auth_database.sql";
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -169,7 +155,8 @@ std::string DBUpdater<CharacterDatabaseConnection>::GetTableName()
|
||||
template<>
|
||||
std::string DBUpdater<CharacterDatabaseConnection>::GetBaseFile()
|
||||
{
|
||||
return DBUpdater<CharacterDatabaseConnection>::GetSourceDirectory() + "/sql/base/characters_database.sql";
|
||||
return BuiltInConfig::GetSourceDirectory() +
|
||||
"/sql/base/characters_database.sql";
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -271,7 +258,7 @@ bool DBUpdater<T>::Update(DatabaseWorkerPool<T>& pool)
|
||||
|
||||
TC_LOG_INFO("sql.updates", "Updating %s database...", DBUpdater<T>::GetTableName().c_str());
|
||||
|
||||
Path const sourceDirectory(GetSourceDirectory());
|
||||
Path const sourceDirectory(BuiltInConfig::GetSourceDirectory());
|
||||
|
||||
if (!is_directory(sourceDirectory))
|
||||
{
|
||||
@@ -442,7 +429,7 @@ void DBUpdater<T>::ApplyFile(DatabaseWorkerPool<T>& pool, std::string const& hos
|
||||
boost::process::pipe errPipe = create_pipe();
|
||||
|
||||
child c = execute(run_exe(
|
||||
boost::filesystem::absolute(DBUpdaterUtil::GetMySqlCli()).generic_string()),
|
||||
boost::filesystem::absolute(DBUpdaterUtil::GetCorrectedMySQLExecutable()).generic_string()),
|
||||
set_args(args), bind_stdin(source), throw_on_error(),
|
||||
bind_stdout(file_descriptor_sink(outPipe.sink, close_handle)),
|
||||
bind_stderr(file_descriptor_sink(errPipe.sink, close_handle)));
|
||||
|
||||
@@ -57,7 +57,7 @@ struct UpdateResult
|
||||
class DBUpdaterUtil
|
||||
{
|
||||
public:
|
||||
static std::string GetMySqlCli();
|
||||
static std::string GetCorrectedMySQLExecutable();
|
||||
|
||||
static bool CheckExecutable();
|
||||
|
||||
@@ -71,8 +71,6 @@ class DBUpdater
|
||||
public:
|
||||
using Path = boost::filesystem::path;
|
||||
|
||||
static std::string GetSourceDirectory();
|
||||
|
||||
static inline std::string GetConfigEntry();
|
||||
|
||||
static inline std::string GetTableName();
|
||||
|
||||
@@ -140,11 +140,11 @@ set_target_properties(worldserver PROPERTIES LINK_FLAGS "${worldserver_LINK_FLAG
|
||||
|
||||
target_link_libraries(worldserver
|
||||
game
|
||||
common
|
||||
scripts
|
||||
shared
|
||||
database
|
||||
scripts
|
||||
ipc
|
||||
common
|
||||
g3dlib
|
||||
gsoap
|
||||
Detour
|
||||
|
||||
@@ -175,6 +175,45 @@ BindIP = "0.0.0.0"
|
||||
|
||||
ThreadPool = 2
|
||||
|
||||
#
|
||||
# CMakeCommand
|
||||
# Description: The path to your CMake binary.
|
||||
# If the path is left empty, the built-in CMAKE_COMMAND is used.
|
||||
# Example: "C:/Program Files (x86)/CMake/bin/cmake.exe"
|
||||
# "/usr/bin/cmake"
|
||||
# Default: ""
|
||||
|
||||
CMakeCommand = ""
|
||||
|
||||
#
|
||||
# BuildDirectory
|
||||
# Description: The path to your build directory.
|
||||
# If the path is left empty, the built-in CMAKE_BINARY_DIR is used.
|
||||
# Example: "../TrinityCore"
|
||||
# Default: ""
|
||||
|
||||
BuildDirectory = ""
|
||||
|
||||
#
|
||||
# SourceDirectory
|
||||
# Description: The path to your TrinityCore source directory.
|
||||
# If the path is left empty, the built-in CMAKE_SOURCE_DIR is used.
|
||||
# Example: "../TrinityCore"
|
||||
# Default: ""
|
||||
|
||||
SourceDirectory = ""
|
||||
|
||||
#
|
||||
# MySQLExecutable
|
||||
# Description: The path to your mysql cli binary.
|
||||
# If the path is left empty, built-in path from cmake is used.
|
||||
# Example: "C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql.exe"
|
||||
# "mysql.exe"
|
||||
# "/usr/bin/mysql"
|
||||
# Default: ""
|
||||
|
||||
MySQLExecutable = ""
|
||||
|
||||
#
|
||||
###################################################################################################
|
||||
|
||||
@@ -1148,26 +1187,6 @@ FeatureSystem.CharacterUndelete.Cooldown = 2592000
|
||||
|
||||
Updates.EnableDatabases = 15
|
||||
|
||||
#
|
||||
# Updates.SourcePath
|
||||
# Description: The path to your TrinityCore source directory.
|
||||
# If the path is left empty, built-in CMAKE_SOURCE_DIR is used.
|
||||
# Example: "../TrinityCore"
|
||||
# Default: ""
|
||||
|
||||
Updates.SourcePath = ""
|
||||
|
||||
#
|
||||
# Updates.MySqlCLIPath
|
||||
# Description: The path to your mysql cli binary.
|
||||
# If the path is left empty, built-in path from cmake is used.
|
||||
# Example: "C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql.exe"
|
||||
# "mysql.exe"
|
||||
# "/usr/bin/mysql"
|
||||
# Default: ""
|
||||
|
||||
Updates.MySqlCLIPath = ""
|
||||
|
||||
#
|
||||
# Updates.AutoSetup
|
||||
# Description: Auto populate empty databases.
|
||||
|
||||
Reference in New Issue
Block a user