diff options
author | Brad King <brad.king@kitware.com> | 2024-04-25 14:37:48 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-04-25 14:38:10 (GMT) |
commit | 063e050f75308ea8f339709c7d64a7047bf2d704 (patch) | |
tree | 6011fa5160d492d54cbd0be53c824cecef1c96cb | |
parent | 125adb74a62bc4e320ee870a1d73a40a9e243649 (diff) | |
parent | 60f5118c7b8c037b79e7f8595c75a75c59cc5aa9 (diff) | |
download | CMake-063e050f75308ea8f339709c7d64a7047bf2d704.zip CMake-063e050f75308ea8f339709c7d64a7047bf2d704.tar.gz CMake-063e050f75308ea8f339709c7d64a7047bf2d704.tar.bz2 |
Merge topic 'cpack-temp-var'
60f5118c7b cmCPackGenerator: Handle CPACK_TEMPORARY_[INSTALL]_DIRECTORY properly
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9455
-rw-r--r-- | Source/CPack/cmCPackGenerator.cxx | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index b7786d3..6889656 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -187,7 +187,7 @@ int cmCPackGenerator::InstallProject() this->CleanTemporaryDirectory(); std::string bareTempInstallDirectory = - this->GetOption("CPACK_TEMPORARY_INSTALL_DIRECTORY"); + this->GetOption("CPACK_TEMPORARY_DIRECTORY"); std::string tempInstallDirectoryStr = bareTempInstallDirectory; bool setDestDir = this->GetOption("CPACK_SET_DESTDIR").IsOn() || cmIsInternallyOn(this->GetOption("CPACK_SET_DESTDIR")); @@ -1218,6 +1218,60 @@ int cmCPackGenerator::Initialize(const std::string& name, cmMakefile* mf) // it, the default value should be: this->SetOptionIfNotSet("CPACK_PACKAGING_INSTALL_PREFIX", "/"); + // Special handling for CPACK_TEMPORARY[_INSTALL]_DIRECTORY. + // Note: Make sure that if only one of these variables is already set, the + // other will be set to the same value. If they are set to different + // values, however, we cannot proceed. + cmValue val1 = + this->MakefileMap->GetDefinition("CPACK_TEMPORARY_INSTALL_DIRECTORY"); + cmValue val2 = this->MakefileMap->GetDefinition("CPACK_TEMPORARY_DIRECTORY"); + if (val1 != val2) { + // One variable is set but not the other? + // Then set the other variable to the same value (even if it is invalid). + if (val1.Get() != nullptr && val2.Get() == nullptr) { + cmCPackLogger(cmCPackLog::LOG_WARNING, + "Variable CPACK_TEMPORARY_INSTALL_DIRECTORY is set, which " + "is not recommended. For backwards-compatibility we will " + "also set CPACK_TEMPORARY_DIRECTORY to the same value and " + "proceed. However, better set neither of them!" + << std::endl); + this->MakefileMap->AddDefinition("CPACK_TEMPORARY_DIRECTORY", val1); + } else if (val1.Get() == nullptr && val2.Get() != nullptr) { + cmCPackLogger( + cmCPackLog::LOG_WARNING, + "Variable CPACK_TEMPORARY_DIRECTORY is set, which is not recommended." + << std::endl); + cmCPackLogger( + cmCPackLog::LOG_DEBUG, + "For backwards-compatibility we will set " + "CPACK_TEMPORARY_INSTALL_DIRECTORY to the same value as " + "CPACK_TEMPORARY_DIRECTORY. However, better set neither of them!" + << std::endl); + this->MakefileMap->AddDefinition("CPACK_TEMPORARY_INSTALL_DIRECTORY", + val2); + } else { + cmCPackLogger(cmCPackLog::LOG_VERBOSE, + "CPACK_TEMPORARY_INSTALL_DIRECTORY is already set to: " + << val1 << std::endl); + cmCPackLogger( + cmCPackLog::LOG_VERBOSE, + "CPACK_TEMPORARY_DIRECTORY is already set to: " << val2 << std::endl); + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Variables CPACK_TEMPORARY_DIRECTORY and " + "CPACK_TEMPORARY_INSTALL_DIRECTORY are both set but to " + "different values. This is not supported!" + << std::endl); + return 0; + } + } else if (val1.Get() != nullptr && val2.Get() != nullptr) { + cmCPackLogger(cmCPackLog::LOG_WARNING, + "Variables CPACK_TEMPORARY_DIRECTORY and " + "CPACK_TEMPORARY_INSTALL_DIRECTORY are both set. Because " + "they are set to the same value we can still proceed. " + "However, better set neither of them!" + << std::endl); + } + return result; } @@ -1356,7 +1410,7 @@ bool cmCPackGenerator::ConfigureFile(const std::string& inName, int cmCPackGenerator::CleanTemporaryDirectory() { std::string tempInstallDirectory = - this->GetOption("CPACK_TEMPORARY_INSTALL_DIRECTORY"); + this->GetOption("CPACK_TEMPORARY_DIRECTORY"); if (cmsys::SystemTools::FileExists(tempInstallDirectory)) { cmCPackLogger(cmCPackLog::LOG_OUTPUT, "- Clean temporary : " << tempInstallDirectory << std::endl); |