diff --git a/fairmq/sdk/DDSEnvironment.cxx b/fairmq/sdk/DDSEnvironment.cxx index 3f28047b..a1ac2131 100644 --- a/fairmq/sdk/DDSEnvironment.cxx +++ b/fairmq/sdk/DDSEnvironment.cxx @@ -20,16 +20,24 @@ namespace mq { namespace sdk { // TODO https://github.com/FairRootGroup/DDS/issues/224 -auto LoadDDSEnv(const boost::filesystem::path& config_home, const boost::filesystem::path& prefix) +auto LoadDDSEnv(const boost::filesystem::path& config_home) -> void { - setenv("DDS_LOCATION", prefix.c_str(), 1); + setenv("DDS_LOCATION", DDSInstallPrefix.c_str(), 1); if (!config_home.empty()) { setenv("HOME", config_home.c_str(), 1); } std::string path(std::getenv("PATH")); path = DDSExecutableDir + std::string(":") + path; setenv("PATH", path.c_str(), 1); + +#ifndef __APPLE__ + std::string ldVar("LD_LIBRARY_PATH"); + std::string ld(std::getenv(ldVar.c_str())); + ld = DDSLibraryDir + std::string(":") + ld; + setenv(ldVar.c_str(), ld.c_str(), 1); +#endif + std::istringstream cmd; cmd.str("DDS_CFG=`dds-user-defaults --ignore-default-sid -p`\n" "if [ -z \"$DDS_CFG\" ]; then\n" @@ -41,31 +49,32 @@ auto LoadDDSEnv(const boost::filesystem::path& config_home, const boost::filesys struct DDSEnvironment::Impl { - Impl(Path config_home, Path prefix) - : fConfigHome(std::move(config_home)) - , fInstallPrefix(std::move(prefix)) + explicit Impl(Path config_home) + : fCount() + , fConfigHome(std::move(config_home)) { - LoadDDSEnv(fConfigHome, fInstallPrefix); + LoadDDSEnv(fConfigHome); if (fConfigHome.empty()) { fConfigHome = std::getenv("HOME"); } } + struct Tag {}; + friend auto operator<<(std::ostream& os, Tag) -> std::ostream& { return os << "DDSEnvironment"; } + tools::InstanceLimiter fCount; + Path fConfigHome; - Path fInstallPrefix; }; -DDSEnvironment::DDSEnvironment(Path config_home, Path prefix) - : fImpl(std::make_shared(std::move(config_home), std::move(prefix))) +DDSEnvironment::DDSEnvironment(Path config_home) + : fImpl(std::make_shared(std::move(config_home))) {} auto DDSEnvironment::GetConfigHome() const -> Path { return fImpl->fConfigHome; } -auto DDSEnvironment::GetInstallPrefix() const -> Path { return fImpl->fInstallPrefix; } - auto operator<<(std::ostream& os, DDSEnvironment env) -> std::ostream& { - return os << "$DDS_LOCATION: " << env.GetInstallPrefix() << ", " + return os << "$DDS_LOCATION: " << DDSInstallPrefix << ", " << "$DDS_CONFIG_HOME: " << env.GetConfigHome() / DDSEnvironment::Path(".DDS"); } diff --git a/fairmq/sdk/DDSEnvironment.h b/fairmq/sdk/DDSEnvironment.h index ad0517c3..96faa7aa 100644 --- a/fairmq/sdk/DDSEnvironment.h +++ b/fairmq/sdk/DDSEnvironment.h @@ -18,14 +18,6 @@ namespace fair { namespace mq { namespace sdk { -/** - * @brief Sets up the DDS environment - * @param config_home Path under which DDS creates a ".DDS" runtime directory for configuration and logs - * @param prefix Path where DDS is installed - */ -auto LoadDDSEnv(const boost::filesystem::path& config_home = "", const boost::filesystem::path& prefix = DDSInstallPrefix) - -> void; - /** * @class DDSEnvironment DDSSession.h * @brief Sets up the DDS environment (object helper) @@ -36,10 +28,9 @@ class DDSEnvironment using Path = boost::filesystem::path; /// @brief See fair::mq::sdk::LoadDDSEnv - explicit DDSEnvironment(Path config_home = "", Path prefix = DDSInstallPrefix); + explicit DDSEnvironment(Path config_home = ""); auto GetConfigHome() const -> Path; - auto GetInstallPrefix() const -> Path; friend auto operator<<(std::ostream& os, DDSEnvironment env) -> std::ostream&; private: