CPackIFW: Add CPACK_IFW_REPOSITORIES_DIRECTORIES variable

Add CPACK_IFW_REPOSITORIES_DIRECTORIES variable to specify
additional repositories dirs that will be used to resolve and
repack dependent components
This commit is contained in:
Konstantin Podsvirov
2017-08-17 21:30:22 +03:00
parent d3760354a5
commit 5fe64511d6
4 changed files with 54 additions and 0 deletions

View File

@@ -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.

View File

@@ -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
# """""
#

View File

@@ -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();

View File

@@ -148,6 +148,7 @@ private:
bool OnlineOnly;
bool ResolveDuplicateNames;
std::vector<std::string> PkgsDirsVector;
std::vector<std::string> RepoDirsVector;
};
#endif