Merge topic 'write-cache-atomically'
9eb8e4b
Write CMakeCache.txt atomically (#13040)
This commit is contained in:
commit
36a85b4cd5
|
@ -13,6 +13,7 @@
|
|||
#include "cmCacheManager.h"
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmCacheManager.h"
|
||||
#include "cmGeneratedFileStream.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmake.h"
|
||||
#include "cmVersion.h"
|
||||
|
@ -431,9 +432,8 @@ bool cmCacheManager::SaveCache(const char* path)
|
|||
{
|
||||
std::string cacheFile = path;
|
||||
cacheFile += "/CMakeCache.txt";
|
||||
std::string tempFile = cacheFile;
|
||||
tempFile += ".tmp";
|
||||
std::ofstream fout(tempFile.c_str());
|
||||
cmGeneratedFileStream fout(cacheFile.c_str());
|
||||
fout.SetCopyIfDifferent(true);
|
||||
if(!fout)
|
||||
{
|
||||
cmSystemTools::Error("Unable to open cache file for save. ",
|
||||
|
@ -561,10 +561,7 @@ bool cmCacheManager::SaveCache(const char* path)
|
|||
}
|
||||
}
|
||||
fout << "\n";
|
||||
fout.close();
|
||||
cmSystemTools::CopyFileIfDifferent(tempFile.c_str(),
|
||||
cacheFile.c_str());
|
||||
cmSystemTools::RemoveFile(tempFile.c_str());
|
||||
fout.Close();
|
||||
std::string checkCacheFile = path;
|
||||
checkCacheFile += cmake::GetCMakeFilesDirectory();
|
||||
cmSystemTools::MakeDirectory(checkCacheFile.c_str());
|
||||
|
|
Loading…
Reference in New Issue