BUG: Bundle installation needs all file permissions to be preserved from the build tree.
This commit is contained in:
parent
fa70bf5b28
commit
0525d8be58
@ -318,7 +318,8 @@ bool cmFileCommand::HandleMakeDirectoryCommand(
|
|||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
struct cmFileInstaller
|
struct cmFileInstaller
|
||||||
{
|
{
|
||||||
bool InstallFile(const char* fromFile, const char* toFile, bool always);
|
bool InstallFile(const char* fromFile, const char* toFile, bool always,
|
||||||
|
bool no_permissions);
|
||||||
bool InstallDirectory(const char* source,
|
bool InstallDirectory(const char* source,
|
||||||
const char* destination,
|
const char* destination,
|
||||||
bool always,
|
bool always,
|
||||||
@ -334,7 +335,7 @@ struct cmFileInstaller
|
|||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile,
|
bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile,
|
||||||
bool always)
|
bool always, bool no_permissions)
|
||||||
{
|
{
|
||||||
// Inform the user about this file installation.
|
// Inform the user about this file installation.
|
||||||
std::string message = "Installing ";
|
std::string message = "Installing ";
|
||||||
@ -352,7 +353,10 @@ bool cmFileInstaller::InstallFile(const char* fromFile, const char* toFile,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set permissions of the destination file.
|
// Set permissions of the destination file.
|
||||||
if(!cmSystemTools::SetPermissions(toFile, this->FilePermissions))
|
// TODO: Take out no_permissions and replace with a user option to
|
||||||
|
// preserve source permissions explicitly.
|
||||||
|
if(!no_permissions &&
|
||||||
|
!cmSystemTools::SetPermissions(toFile, this->FilePermissions))
|
||||||
{
|
{
|
||||||
cmOStringStream e;
|
cmOStringStream e;
|
||||||
e << "Problem setting permissions on file \"" << toFile << "\"";
|
e << "Problem setting permissions on file \"" << toFile << "\"";
|
||||||
@ -405,7 +409,7 @@ bool cmFileInstaller::InstallDirectory(const char* source,
|
|||||||
std::string toFile = destination;
|
std::string toFile = destination;
|
||||||
toFile += "/";
|
toFile += "/";
|
||||||
toFile += dir.GetFile(fileNum);
|
toFile += dir.GetFile(fileNum);
|
||||||
if(this->InstallFile(fromPath.c_str(), toFile.c_str(), always))
|
if(this->InstallFile(fromPath.c_str(), toFile.c_str(), always, true))
|
||||||
{
|
{
|
||||||
smanifest_files += ";";
|
smanifest_files += ";";
|
||||||
smanifest_files += toFile.substr(destDirLength);
|
smanifest_files += toFile.substr(destDirLength);
|
||||||
@ -1081,7 +1085,7 @@ bool cmFileCommand::HandleInstallCommand(
|
|||||||
{
|
{
|
||||||
// Install this file.
|
// Install this file.
|
||||||
if(!installer.InstallFile(fromFile.c_str(), toFile.c_str(),
|
if(!installer.InstallFile(fromFile.c_str(), toFile.c_str(),
|
||||||
copy_always))
|
copy_always, false))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user