BUG: If the destination is the same as source, do not copy file. Fixes Bug #956 - make install broken
This commit is contained in:
parent
9d61ea38dd
commit
04a8572b99
@ -549,51 +549,54 @@ bool cmFileCommand::HandleInstallCommand(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cmSystemTools::FileExists(ctarget.c_str()) )
|
if ( !cmSystemTools::SameFile(ctarget.c_str(), destfile.c_str()) )
|
||||||
{
|
{
|
||||||
cmSystemTools::RemoveFile(destfile.c_str());
|
if ( cmSystemTools::FileExists(ctarget.c_str()) )
|
||||||
if ( !cmSystemTools::CopyFileAlways(ctarget.c_str(),
|
|
||||||
destination.c_str()) )
|
|
||||||
{
|
{
|
||||||
std::string errstring = "cannot copy file: " + ctarget +
|
cmSystemTools::RemoveFile(destfile.c_str());
|
||||||
" to directory : " + destination + ".";
|
if ( !cmSystemTools::CopyFileAlways(ctarget.c_str(),
|
||||||
this->SetError(errstring.c_str());
|
destination.c_str()) )
|
||||||
return false;
|
|
||||||
}
|
|
||||||
switch( itype )
|
|
||||||
{
|
|
||||||
case cmTarget::MODULE_LIBRARY:
|
|
||||||
case cmTarget::SHARED_LIBRARY:
|
|
||||||
case cmTarget::EXECUTABLE:
|
|
||||||
case cmTarget::INSTALL_PROGRAMS:
|
|
||||||
|
|
||||||
if ( !cmSystemTools::SetPermissions(destfile.c_str(),
|
|
||||||
#if defined( _MSC_VER ) || defined( __MINGW32__ )
|
|
||||||
S_IREAD | S_IWRITE | S_IEXEC
|
|
||||||
#elif defined( __BORLANDC__ )
|
|
||||||
S_IRUSR | S_IWUSR | S_IXUSR
|
|
||||||
#else
|
|
||||||
S_IRUSR | S_IWUSR | S_IXUSR |
|
|
||||||
S_IRGRP | S_IXGRP |
|
|
||||||
S_IROTH | S_IXOTH
|
|
||||||
#endif
|
|
||||||
) )
|
|
||||||
{
|
{
|
||||||
cmOStringStream err;
|
std::string errstring = "cannot copy file: " + ctarget +
|
||||||
err << "Problem setting permissions on file: " << destfile.c_str();
|
" to directory : " + destination + ".";
|
||||||
perror(err.str().c_str());
|
this->SetError(errstring.c_str());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
switch( itype )
|
||||||
|
{
|
||||||
|
case cmTarget::MODULE_LIBRARY:
|
||||||
|
case cmTarget::SHARED_LIBRARY:
|
||||||
|
case cmTarget::EXECUTABLE:
|
||||||
|
case cmTarget::INSTALL_PROGRAMS:
|
||||||
|
|
||||||
|
if ( !cmSystemTools::SetPermissions(destfile.c_str(),
|
||||||
|
#if defined( _MSC_VER ) || defined( __MINGW32__ )
|
||||||
|
S_IREAD | S_IWRITE | S_IEXEC
|
||||||
|
#elif defined( __BORLANDC__ )
|
||||||
|
S_IRUSR | S_IWUSR | S_IXUSR
|
||||||
|
#else
|
||||||
|
S_IRUSR | S_IWUSR | S_IXUSR |
|
||||||
|
S_IRGRP | S_IXGRP |
|
||||||
|
S_IROTH | S_IXOTH
|
||||||
|
#endif
|
||||||
|
) )
|
||||||
|
{
|
||||||
|
cmOStringStream err;
|
||||||
|
err << "Problem setting permissions on file: " << destfile.c_str();
|
||||||
|
perror(err.str().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
smanifest_files += ";" + destfile;
|
||||||
}
|
}
|
||||||
smanifest_files += ";" + destfile;
|
else
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( !optional )
|
|
||||||
{
|
{
|
||||||
std::string errstring = "cannot find file: " +
|
if ( !optional )
|
||||||
ctarget + " to install.";
|
{
|
||||||
this->SetError(errstring.c_str());
|
std::string errstring = "cannot find file: " +
|
||||||
return false;
|
ctarget + " to install.";
|
||||||
|
this->SetError(errstring.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user