diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2008-09-22 22:12:54 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2008-09-22 22:12:54 (GMT) |
commit | 52e6733fbcaf34d333fe33212ac0ba7df5689d73 (patch) | |
tree | 61b8323418a4b1b046774ba6e72be0609fe75891 /Source | |
parent | 33e87980cbe68dba76f53cde07889e5dbdd385f7 (diff) | |
download | CMake-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.cxx | 172 |
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; } //---------------------------------------------------------------------- |