Merge topic 'cpack-nsis-no-release-version'

7947890 CPack: Fix NSIS version check without release version (#9721)
This commit is contained in:
Brad King 2013-03-12 13:46:43 -04:00 committed by CMake Topic Stage
commit 19922ac1d2
1 changed files with 24 additions and 12 deletions

View File

@ -432,11 +432,14 @@ int cmCPackNSISGenerator::InitializeInternal()
int retVal = 1; int retVal = 1;
bool resS = cmSystemTools::RunSingleCommand(nsisCmd.c_str(), bool resS = cmSystemTools::RunSingleCommand(nsisCmd.c_str(),
&output, &retVal, 0, this->GeneratorVerbose, 0); &output, &retVal, 0, this->GeneratorVerbose, 0);
cmsys::RegularExpression versionRex("v([0-9]+.[0-9]+)"); cmsys::RegularExpression versionRex("v([0-9]+.[0-9]+)");
if ( !resS || retVal || !versionRex.find(output)) cmsys::RegularExpression versionRexCVS("v(.*)\\.cvs");
if ( !resS || retVal ||
(!versionRex.find(output) && !versionRexCVS.find(output))
)
{ {
std::string tmpFile = this->GetOption("CPACK_TOPLEVEL_DIRECTORY"); const char* topDir = this->GetOption("CPACK_TOPLEVEL_DIRECTORY");
std::string tmpFile = topDir ? topDir : ".";
tmpFile += "/NSISOutput.log"; tmpFile += "/NSISOutput.log";
cmGeneratedFileStream ofs(tmpFile.c_str()); cmGeneratedFileStream ofs(tmpFile.c_str());
ofs << "# Run command: " << nsisCmd.c_str() << std::endl ofs << "# Run command: " << nsisCmd.c_str() << std::endl
@ -448,6 +451,8 @@ int cmCPackNSISGenerator::InitializeInternal()
<< "Please check " << tmpFile.c_str() << " for errors" << std::endl); << "Please check " << tmpFile.c_str() << " for errors" << std::endl);
return 0; return 0;
} }
if ( versionRex.find(output))
{
double nsisVersion = atof(versionRex.match(1).c_str()); double nsisVersion = atof(versionRex.match(1).c_str());
double minNSISVersion = 2.09; double minNSISVersion = 2.09;
cmCPackLogger(cmCPackLog::LOG_DEBUG, "NSIS Version: " cmCPackLogger(cmCPackLog::LOG_DEBUG, "NSIS Version: "
@ -455,11 +460,18 @@ int cmCPackNSISGenerator::InitializeInternal()
if ( nsisVersion < minNSISVersion ) if ( nsisVersion < minNSISVersion )
{ {
cmCPackLogger(cmCPackLog::LOG_ERROR, cmCPackLogger(cmCPackLog::LOG_ERROR,
"CPack requires NSIS Version 2.09 or greater. NSIS found on the system " "CPack requires NSIS Version 2.09 or greater. "
"was: " "NSIS found on the system was: "
<< nsisVersion << std::endl); << nsisVersion << std::endl);
return 0; return 0;
} }
}
if ( versionRexCVS.find(output))
{
// No version check for NSIS cvs build
cmCPackLogger(cmCPackLog::LOG_DEBUG, "NSIS Version: CVS "
<< versionRexCVS.match(1).c_str() << std::endl);
}
this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", nsisPath.c_str()); this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", nsisPath.c_str());
this->SetOptionIfNotSet("CPACK_NSIS_EXECUTABLES_DIRECTORY", "bin"); this->SetOptionIfNotSet("CPACK_NSIS_EXECUTABLES_DIRECTORY", "bin");
const char* cpackPackageExecutables const char* cpackPackageExecutables