diff options
author | Katja Marttila <katja.marttila@qt.io> | 2016-09-20 14:45:24 +0300 |
---|---|---|
committer | Iikka Eklund <iikka.eklund@qt.io> | 2016-11-09 07:08:48 +0000 |
commit | e7f93217182233383851a25ae21bd950d05b408a (patch) | |
tree | 978adb275ec5b3f52a93a610ef5d50d27c6a2479 /src/libs/installer/packagemanagercore.cpp | |
parent | 6e5ef08718b7b638b57dda4ef4a7bdbfe8046743 (diff) |
allow installing compressed packages
This change introduces new feature to add 7z packages to be
installed. Packages must be installer repositories (created with repogen),
compressed to 7z file and named as qtbsp or 7z. Selecting compressed package
is done either with button in component selection page or with
--installCompressedRepository parameter given to installer or to maintenancetool.
Button will not be created by default. If you want to show the button
either build IFW with DEFINES+=INSTALLCOMPRESSED or enable the button in control
script with allowCompressedRepositoryInstall() in ComponentSelectionPageCallback
Task-number: QTIFW-886
Change-Id: Ia060092c348991d5195393b7dc154205f8bf92a5
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 731171f61..971ca694d 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1153,8 +1153,37 @@ PackagesList PackageManagerCore::remotePackages() } /*! + Checks for compressed packages to install. Returns \c true if newer versions exist + and they can be installed. +*/ +bool PackageManagerCore::fetchCompressedPackagesTree() +{ + const LocalPackagesHash installedPackages = d->localInstalledPackages(); + if (!isInstaller() && status() == Failure) + return false; + + if (!d->fetchMetaInformationFromCompressedRepositories()) + return false; + + if (!d->addUpdateResourcesFromRepositories(true, true)) { + return false; + } + + PackagesList packages; + const PackagesList &compPackages = d->compressedPackages(); + if (compPackages.isEmpty()) + return false; + packages.append(compPackages); + const PackagesList &rPackages = d->remotePackages(); + packages.append(rPackages); + + return fetchPackagesTree(packages, installedPackages); +} + + +/*! Checks for packages to install. Returns \c true if newer versions exist - and they can be installed and sets the status of the update to \c Success. + and they can be installed. */ bool PackageManagerCore::fetchRemotePackagesTree() { @@ -1177,6 +1206,9 @@ bool PackageManagerCore::fetchRemotePackagesTree() if (!d->fetchMetaInformationFromRepositories()) return false; + if (!d->fetchMetaInformationFromCompressedRepositories()) + return false; + if (!d->addUpdateResourcesFromRepositories(true)) return false; @@ -1184,6 +1216,11 @@ bool PackageManagerCore::fetchRemotePackagesTree() if (packages.isEmpty()) return false; + return fetchPackagesTree(packages, installedPackages); +} + +bool PackageManagerCore::fetchPackagesTree(const PackagesList &packages, const LocalPackagesHash installedPackages) { + bool success = false; if (!isUpdater()) { success = fetchAllPackages(packages, installedPackages); @@ -1366,12 +1403,12 @@ void PackageManagerCore::addUserRepositories(const QStringList &repositories) \sa {installer::setTemporaryRepositories}{installer.setTemporaryRepositories} \sa addUserRepositories() */ -void PackageManagerCore::setTemporaryRepositories(const QStringList &repositories, bool replace) +void PackageManagerCore::setTemporaryRepositories(const QStringList &repositories, bool replace, + bool compressed) { QSet<Repository> repositorySet; foreach (const QString &repository, repositories) - repositorySet.insert(Repository::fromUserInput(repository)); - + repositorySet.insert(Repository::fromUserInput(repository, compressed)); settings().setTemporaryRepositories(repositorySet, replace); } |