Preserve environment variables across calls to cmCTestScriptHandler::RunConfigurationScript. This will help prevent problems like we are currently experiencing (regarding CMake continuous dashboards only running once each day because the HOME environment variable is modified indirectly by a command in a called script, but affects the environment in the calling script).
This commit is contained in:
parent
68ed752b7d
commit
4d3a387ac6
|
@ -583,6 +583,10 @@ void cmCTestScriptHandler::SleepInSeconds(unsigned int secondsToWait)
|
||||||
int cmCTestScriptHandler::RunConfigurationScript
|
int cmCTestScriptHandler::RunConfigurationScript
|
||||||
(const std::string& total_script_arg, bool pscope)
|
(const std::string& total_script_arg, bool pscope)
|
||||||
{
|
{
|
||||||
|
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||||
|
cmSystemTools::SaveRestoreEnvironment sre;
|
||||||
|
#endif
|
||||||
|
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
this->ScriptStartTime =
|
this->ScriptStartTime =
|
||||||
|
|
|
@ -1673,6 +1673,18 @@ void cmSystemTools::RestoreEnv(const std::vector<std::string>& env)
|
||||||
PutEnv(eit->c_str());
|
PutEnv(eit->c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
cmSystemTools::SaveRestoreEnvironment::SaveRestoreEnvironment()
|
||||||
|
{
|
||||||
|
this->Env = cmSystemTools::GetEnvironmentVariables();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
cmSystemTools::SaveRestoreEnvironment::~SaveRestoreEnvironment()
|
||||||
|
{
|
||||||
|
cmSystemTools::RestoreEnv(this->Env);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void cmSystemTools::EnableVSConsoleOutput()
|
void cmSystemTools::EnableVSConsoleOutput()
|
||||||
|
|
|
@ -358,6 +358,20 @@ public:
|
||||||
AppendEnv to put the environment back to the way it
|
AppendEnv to put the environment back to the way it
|
||||||
was. */
|
was. */
|
||||||
static void RestoreEnv(const std::vector<std::string>& env);
|
static void RestoreEnv(const std::vector<std::string>& env);
|
||||||
|
|
||||||
|
/** Helper class to save and restore the environment.
|
||||||
|
Instantiate this class as an automatic variable on
|
||||||
|
the stack. Its constructor saves a copy of the current
|
||||||
|
environment and then its destructor restores the
|
||||||
|
original environment. */
|
||||||
|
class SaveRestoreEnvironment
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SaveRestoreEnvironment();
|
||||||
|
virtual ~SaveRestoreEnvironment();
|
||||||
|
private:
|
||||||
|
std::vector<std::string> Env;
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** Setup the environment to enable VS 8 IDE output. */
|
/** Setup the environment to enable VS 8 IDE output. */
|
||||||
|
|
Loading…
Reference in New Issue