| 218 | } |
| 219 | |
| 220 | int cmCPackGenerator::InstallProject() |
| 221 | { |
| 222 | cmCPackLogger(cmCPackLog::LOG_OUTPUT, "Install projects" << std::endl); |
| 223 | this->CleanTemporaryDirectory(); |
| 224 | |
| 225 | std::string bareTempInstallDirectory = |
| 226 | this->GetOption("CPACK_TEMPORARY_DIRECTORY"); |
| 227 | std::string tempInstallDirectory = bareTempInstallDirectory; |
| 228 | cmValue v = this->GetOption("CPACK_SET_DESTDIR"); |
| 229 | bool setDestDir = v.IsOn() || cmIsInternallyOn(v); |
| 230 | if (!setDestDir) { |
| 231 | tempInstallDirectory += this->GetPackagingInstallPrefix(); |
| 232 | } |
| 233 | |
| 234 | int res = 1; |
| 235 | if (!cmsys::SystemTools::MakeDirectory(bareTempInstallDirectory)) { |
| 236 | cmCPackLogger( |
| 237 | cmCPackLog::LOG_ERROR, |
| 238 | "Problem creating temporary directory: " |
| 239 | << (!tempInstallDirectory.empty() ? tempInstallDirectory : "(NULL)") |
| 240 | << std::endl); |
| 241 | return 0; |
| 242 | } |
| 243 | |
| 244 | if (setDestDir) { |
| 245 | std::string destDir = cmStrCat("DESTDIR=", tempInstallDirectory); |
| 246 | cmSystemTools::PutEnv(destDir); |
| 247 | } else { |
| 248 | // Make sure there is no destdir |
| 249 | cmSystemTools::PutEnv("DESTDIR="); |
| 250 | } |
| 251 | |
| 252 | // prepare default created directory permissions |
| 253 | mode_t default_dir_mode_v = 0; |
| 254 | mode_t* default_dir_mode = nullptr; |
| 255 | cmValue default_dir_install_permissions = |
| 256 | this->GetOption("CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS"); |
| 257 | if (cmNonempty(default_dir_install_permissions)) { |
| 258 | cmList items{ default_dir_install_permissions }; |
| 259 | for (auto const& arg : items) { |
| 260 | if (!cmFSPermissions::stringToModeT(arg, default_dir_mode_v)) { |
| 261 | cmCPackLogger(cmCPackLog::LOG_ERROR, |
| 262 | "Invalid permission value '" |
| 263 | << arg |
| 264 | << "'." |
| 265 | " CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS " |
| 266 | "value is invalid." |
| 267 | << std::endl); |
| 268 | return 0; |
| 269 | } |
| 270 | } |
| 271 | |
| 272 | default_dir_mode = &default_dir_mode_v; |
| 273 | } |
| 274 | |
| 275 | // If the CPackConfig file sets CPACK_INSTALL_COMMANDS then run them |
| 276 | // as listed |
| 277 | if (!this->InstallProjectViaInstallCommands(setDestDir, |
no test coverage detected