Commit eaff66db authored by Bill Hoffman's avatar Bill Hoffman
Browse files

ENH: merge in changes for RC 6, fix cpack working from symlink is the only change

parent ea7a5c45
......@@ -354,7 +354,7 @@ ENDMACRO (CMAKE_BUILD_UTILITIES)
SET(CMake_VERSION_MAJOR 2)
SET(CMake_VERSION_MINOR 6)
SET(CMake_VERSION_PATCH 2)
SET(CMake_VERSION_RC 5)
SET(CMake_VERSION_RC 6)
# CVS versions are odd, if this is an odd minor version
# then set the CMake_VERSION_DATE variable
IF("${CMake_VERSION_MINOR}" MATCHES "[13579]$")
......
Changes in CMake 2.6.2 RC 6
- Fix bug#7669 cpack did not work when sym-linked after install
Changes in CMake 2.6.2 RC 5
- Add beta BundleUtilities.cmake file
- CPackRPM 7435 fixes to add optional post-install
......
......@@ -886,7 +886,7 @@ int cmCPackGenerator::Initialize(const char* name, cmMakefile* mf,
{
this->MakefileMap = mf;
this->Name = name;
if ( !this->FindRunningCMake(argv0) )
if ( !this->SetCMakeRoot() )
{
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Cannot initialize the generator" << std::endl);
......@@ -942,165 +942,29 @@ const char* cmCPackGenerator::GetOption(const char* op)
}
//----------------------------------------------------------------------
int cmCPackGenerator::FindRunningCMake(const char* arg0)
int cmCPackGenerator::SetCMakeRoot()
{
int found = 0;
// Find our own executable.
std::vector<cmStdString> failures;
this->CPackSelf = arg0;
cmSystemTools::ConvertToUnixSlashes(this->CPackSelf);
failures.push_back(this->CPackSelf);
this->CPackSelf = cmSystemTools::FindProgram(this->CPackSelf.c_str());
if(!cmSystemTools::FileExists(this->CPackSelf.c_str()))
{
failures.push_back(this->CPackSelf);
this->CPackSelf = "/usr/local/bin/ctest";
}
if(!cmSystemTools::FileExists(this->CPackSelf.c_str()))
{
failures.push_back(this->CPackSelf);
cmOStringStream msg;
msg << "CPack can not find the command line program ctest.\n";
msg << " argv[0] = \"" << arg0 << "\"\n";
msg << " Attempted paths:\n";
std::vector<cmStdString>::iterator i;
for(i=failures.begin(); i != failures.end(); ++i)
{
msg << " \"" << i->c_str() << "\"\n";
}
cmCPackLogger(cmCPackLog::LOG_ERROR, msg.str().c_str()
<< std::endl);
return 0;
}
std::string dir;
std::string file;
if(cmSystemTools::SplitProgramPath(this->CPackSelf.c_str(),
dir, file, true))
{
this->CMakeSelf = dir += "/cmake";
this->CMakeSelf += cmSystemTools::GetExecutableExtension();
if(cmSystemTools::FileExists(this->CMakeSelf.c_str()))
{
found = 1;
}
}
if ( !found )
{
failures.push_back(this->CMakeSelf);
#ifdef CMAKE_BUILD_DIR
std::string intdir = ".";
#ifdef CMAKE_INTDIR
intdir = CMAKE_INTDIR;
#endif
this->CMakeSelf = CMAKE_BUILD_DIR;
this->CMakeSelf += "/bin/";
this->CMakeSelf += intdir;
this->CMakeSelf += "/cmake";
this->CMakeSelf += cmSystemTools::GetExecutableExtension();
#endif
if(!cmSystemTools::FileExists(this->CMakeSelf.c_str()))
{
failures.push_back(this->CMakeSelf);
cmOStringStream msg;
msg << "CPack can not find the command line program cmake.\n";
msg << " argv[0] = \"" << arg0 << "\"\n";
msg << " Attempted paths:\n";
std::vector<cmStdString>::iterator i;
for(i=failures.begin(); i != failures.end(); ++i)
{
msg << " \"" << i->c_str() << "\"\n";
}
cmCPackLogger(cmCPackLog::LOG_ERROR, msg.str().c_str()
<< std::endl);
return 0;
}
}
// do CMAKE_ROOT, look for the environment variable first
std::string cMakeRoot;
std::string modules;
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT" << std::endl);
if (getenv("CMAKE_ROOT"))
{
cMakeRoot = getenv("CMAKE_ROOT");
modules = cMakeRoot + "/Modules/CMake.cmake";
}
if(modules.empty() || !cmSystemTools::FileExists(modules.c_str()))
{
// next try exe/..
cMakeRoot = cmSystemTools::GetProgramPath(this->CMakeSelf.c_str());
std::string::size_type slashPos = cMakeRoot.rfind("/");
if(slashPos != std::string::npos)
{
cMakeRoot = cMakeRoot.substr(0, slashPos);
}
// is there no Modules direcory there?
modules = cMakeRoot + "/Modules/CMake.cmake";
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< modules.c_str() << std::endl);
}
// use the CMAKE_ROOT from cmake which should have been
// found by now
const char* root=
this->MakefileMap->GetDefinition("CMAKE_ROOT");
if (!cmSystemTools::FileExists(modules.c_str()))
{
// try exe/../share/cmake
cMakeRoot += CMAKE_DATA_DIR;
modules = cMakeRoot + "/Modules/CMake.cmake";
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< modules.c_str() << std::endl);
}
#ifdef CMAKE_ROOT_DIR
if (!cmSystemTools::FileExists(modules.c_str()))
{
// try compiled in root directory
cMakeRoot = CMAKE_ROOT_DIR;
modules = cMakeRoot + "/Modules/CMake.cmake";
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< modules.c_str() << std::endl);
}
#endif
#ifdef CMAKE_PREFIX
if (!cmSystemTools::FileExists(modules.c_str()))
if(root)
{
// try compiled in install prefix
cMakeRoot = CMAKE_PREFIX CMAKE_DATA_DIR;
modules = cMakeRoot + "/Modules/CMake.cmake";
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< modules.c_str() << std::endl);
this->CMakeRoot = root;
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< this->CMakeRoot.c_str() << std::endl);
this->SetOption("CMAKE_ROOT", this->CMakeRoot.c_str());
return 1;
}
#endif
if (!cmSystemTools::FileExists(modules.c_str()))
{
// try
cMakeRoot = cmSystemTools::GetProgramPath(this->CMakeSelf.c_str());
cMakeRoot += CMAKE_DATA_DIR;
modules = cMakeRoot + "/Modules/CMake.cmake";
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< modules.c_str() << std::endl);
}
if(!cmSystemTools::FileExists(modules.c_str()))
{
// next try exe
cMakeRoot = cmSystemTools::GetProgramPath(this->CMakeSelf.c_str());
// is there no Modules direcory there?
modules = cMakeRoot + "/Modules/CMake.cmake";
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< modules.c_str() << std::endl);
}
if (!cmSystemTools::FileExists(modules.c_str()))
{
// couldn't find modules
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Could not find CMAKE_ROOT !!!" << std::endl
<< "CMake has most likely not been installed correctly." << std::endl
<<"Modules directory not found in" << std::endl
<< cMakeRoot.c_str()
<< std::endl);
return 0;
}
this->CMakeRoot = cMakeRoot;
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Looking for CMAKE_ROOT: "
<< this->CMakeRoot.c_str() << std::endl);
this->SetOption("CMAKE_ROOT", this->CMakeRoot.c_str());
return 1;
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Could not find CMAKE_ROOT !!!"
<< std::endl
<< "CMake has most likely not been installed correctly."
<< std::endl
<<"Modules directory not found in"
<< std::endl);
return 0;
}
//----------------------------------------------------------------------
......
......@@ -88,7 +88,7 @@ public:
bool IsSet(const char* name) const;
//! Set all the variables
int FindRunningCMake(const char* arg0);
int SetCMakeRoot();
//! Set the logger
void SetLogger(cmCPackLog* log) { this->Logger = log; }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment