summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2008-09-22 22:12:54 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2008-09-22 22:12:54 (GMT)
commit52e6733fbcaf34d333fe33212ac0ba7df5689d73 (patch)
tree61b8323418a4b1b046774ba6e72be0609fe75891 /Source
parent33e87980cbe68dba76f53cde07889e5dbdd385f7 (diff)
downloadCMake-52e6733fbcaf34d333fe33212ac0ba7df5689d73.zip
CMake-52e6733fbcaf34d333fe33212ac0ba7df5689d73.tar.gz
CMake-52e6733fbcaf34d333fe33212ac0ba7df5689d73.tar.bz2
BUG: fix 7669, cpack did not work with symlinks
Diffstat (limited to 'Source')
-rw-r--r--Source/CPack/cmCPackGenerator.cxx172
1 files changed, 18 insertions, 154 deletions
diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx
index 5090606..46117ff 100644
--- a/Source/CPack/cmCPackGenerator.cxx
+++ b/Source/CPack/cmCPackGenerator.cxx
@@ -944,163 +944,27 @@ const char* cmCPackGenerator::GetOption(const char* op)
//----------------------------------------------------------------------
int cmCPackGenerator::FindRunningCMake(const char* arg0)
{
- 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;
}
//----------------------------------------------------------------------