From 610464c12e0ef71b2bea28973b70630c4ce9a70e Mon Sep 17 00:00:00 2001 From: Justin Borodinsky Date: Wed, 18 Mar 2015 20:30:26 -0500 Subject: [PATCH] QtAutogen: Ensure write access to AutogenInfo.cmake (#15416) ConfigureFile uses the input file permissions, but we require write access in cmQtAutoGenerators::SetupAutoGenerateTarget to append to the file. --- Source/cmQtAutoGenerators.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 42c18f7da..08092c744 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -22,6 +22,8 @@ # include "cmLocalVisualStudioGenerator.h" #endif +#include + #include #include #include @@ -582,6 +584,18 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget const* target) makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(), false, true, false); + // Ensure we have write permission in case .in was read-only. + mode_t perm = 0; +#if defined(WIN32) && !defined(__CYGWIN__) + mode_t mode_write = S_IWRITE; +#else + mode_t mode_write = S_IWUSR; +#endif + cmSystemTools::GetPermissions(outputFile, perm); + if (!(perm & mode_write)) + { + cmSystemTools::SetPermissions(outputFile, perm | mode_write); + } if (!configDefines.empty() || !configIncludes.empty() || !configUicOptions.empty())