diff options
-rw-r--r-- | Help/release/dev/cpackifw-repositories-directories.rst | 8 | ||||
-rw-r--r-- | Modules/CPackIFW.cmake | 6 | ||||
-rw-r--r-- | Source/CPack/IFW/cmCPackIFWGenerator.cxx | 39 | ||||
-rw-r--r-- | Source/CPack/IFW/cmCPackIFWGenerator.h | 1 |
4 files changed, 54 insertions, 0 deletions
diff --git a/Help/release/dev/cpackifw-repositories-directories.rst b/Help/release/dev/cpackifw-repositories-directories.rst new file mode 100644 index 0000000000..cda74b8957 --- /dev/null +++ b/Help/release/dev/cpackifw-repositories-directories.rst @@ -0,0 +1,8 @@ +cpackifw-repositories-directories +--------------------------------- + +* The :module:`CPackIFW` module gained new + :variable:`CPACK_IFW_REPOSITORIES_DIRECTORIES` variable to specify + additional repositories dirs that will be used to resolve and + repack dependent components. This feature available only + since QtIFW 3.1. diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake index 02104107a4..0b42c83d54 100644 --- a/Modules/CPackIFW.cmake +++ b/Modules/CPackIFW.cmake @@ -260,6 +260,12 @@ # Additional prepared packages dirs that will be used to resolve # dependent components. # +# .. variable:: CPACK_IFW_REPOSITORIES_DIRECTORIES +# +# Additional prepared repository dirs that will be used to resolve and +# repack dependent components. This feature available only +# since QtIFW_ 3.1. +# # Tools # """"" # 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 |