diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CPack/IFW/cmCPackIFWGenerator.cxx | 39 | ||||
-rw-r--r-- | Source/CPack/IFW/cmCPackIFWGenerator.h | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.cxx b/Source/CPack/IFW/cmCPackIFWGenerator.cxx index a1df32caeb..97e792ab65 100644 --- a/Source/CPack/IFW/cmCPackIFWGenerator.cxx +++ b/Source/CPack/IFW/cmCPackIFWGenerator.cxx @@ -56,6 +56,22 @@ int cmCPackIFWGenerator::PackageFiles() } } + if (!this->RepoDirsVector.empty()) { + if (!this->IsVersionLess("3.1")) { + for (std::vector<std::string>::iterator it = + this->RepoDirsVector.begin(); + it != this->RepoDirsVector.end(); ++it) { + ifwCmd += " --repository " + *it; + } + } else { + cmCPackIFWLogger(WARNING, "The \"CPACK_IFW_REPOSITORIES_DIRECTORIES\" " + << "variable is set, but content will be skiped, " + << "because this feature available only since " + << "QtIFW 3.1. Please update your QtIFW instance." + << std::endl); + } + } + if (!this->OnlineOnly && !this->DownloadedPackages.empty()) { ifwCmd += " -i "; std::set<cmCPackIFWPackage*>::iterator it = @@ -128,6 +144,22 @@ int cmCPackIFWGenerator::PackageFiles() } } + if (!this->RepoDirsVector.empty()) { + if (!this->IsVersionLess("3.1")) { + for (std::vector<std::string>::iterator it = + this->RepoDirsVector.begin(); + it != this->RepoDirsVector.end(); ++it) { + ifwCmd += " --repository " + *it; + } + } else { + cmCPackIFWLogger(WARNING, "The \"CPACK_IFW_REPOSITORIES_DIRECTORIES\" " + << "variable is set, but content will be skipped, " + << "because this feature available only since " + << "QtIFW 3.1. Please update your QtIFW instance." + << std::endl); + } + } + if (this->OnlineOnly) { ifwCmd += " --online-only"; } else if (!this->DownloadedPackages.empty() && @@ -266,6 +298,13 @@ int cmCPackIFWGenerator::InitializeInternal() cmSystemTools::ExpandListArgument(dirs, this->PkgsDirsVector); } + // Additional repositories dirs + this->RepoDirsVector.clear(); + if (const char* dirs = + this->GetOption("CPACK_IFW_REPOSITORIES_DIRECTORIES")) { + cmSystemTools::ExpandListArgument(dirs, this->RepoDirsVector); + } + // Installer this->Installer.Generator = this; this->Installer.ConfigureFromOptions(); diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.h b/Source/CPack/IFW/cmCPackIFWGenerator.h index 9d635f8221..9fd14bd0d8 100644 --- a/Source/CPack/IFW/cmCPackIFWGenerator.h +++ b/Source/CPack/IFW/cmCPackIFWGenerator.h @@ -148,6 +148,7 @@ private: bool OnlineOnly; bool ResolveDuplicateNames; std::vector<std::string> PkgsDirsVector; + std::vector<std::string> RepoDirsVector; }; #endif |