diff options
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 25 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 6 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 8 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.h | 1 | ||||
-rw-r--r-- | src/sdk/installerbase.cpp | 2 | ||||
-rw-r--r-- | src/sdk/installerbase_p.cpp | 3 |
6 files changed, 24 insertions, 21 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 442d8bd92..2dda4205f 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -77,6 +77,7 @@ static QFont sVirtualComponentsFont; static bool sNoForceInstallation = false; static bool sVirtualComponentsVisible = false; +static bool sCreateLocalRepositoryFromBinary = false; static QScriptValue checkArguments(QScriptContext *context, int amin, int amax) { @@ -558,6 +559,18 @@ void PackageManagerCore::setNoForceInstallation(bool value) sNoForceInstallation = value; } +/* static */ +bool PackageManagerCore::createLocalRepositoryFromBinary() +{ + return sCreateLocalRepositoryFromBinary; +} + +/* static */ +void PackageManagerCore::setCreateLocalRepositoryFromBinary(bool create) +{ + sCreateLocalRepositoryFromBinary = create; +} + RunMode PackageManagerCore::runMode() const { return isUpdater() ? UpdaterMode : AllMode; @@ -1927,18 +1940,6 @@ QString PackageManagerCore::findDisplayVersion(const QString &componentName, return findDisplayVersion(replaceWith, components, versionKey, visited); } -bool PackageManagerCore::createLocalRepositoryFromBinary() const -{ - return d->m_createLocalRepositoryFromBinary; -} - -void PackageManagerCore::setCreateLocalRepositoryFromBinary(bool create) -{ - if (!isOfflineOnly()) - return; - d->m_createLocalRepositoryFromBinary = create; -} - ComponentModel *PackageManagerCore::componentModel(PackageManagerCore *core, const QString &objectName) const { ComponentModel *model = new ComponentModel(4, core); diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index c3c42fad7..f99898717 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -98,6 +98,9 @@ public: static bool noForceInstallation(); static void setNoForceInstallation(bool value); + static bool createLocalRepositoryFromBinary(); + static void setCreateLocalRepositoryFromBinary(bool create); + bool fetchLocalPackagesTree(); LocalPackagesHash localInstalledPackages(); @@ -233,9 +236,6 @@ public: bool needsRestart() const; bool finishedWithSuccess() const; - Q_INVOKABLE bool createLocalRepositoryFromBinary() const; - Q_INVOKABLE void setCreateLocalRepositoryFromBinary(bool create); - public Q_SLOTS: bool runInstaller(); bool runUninstaller(); diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 7b9b61e38..cf2c190af 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -168,7 +168,6 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core) , m_updateSourcesAdded(false) , m_componentsToInstallCalculated(false) , m_proxyFactory(0) - , m_createLocalRepositoryFromBinary(false) , m_defaultModel(0) , m_updaterModel(0) { @@ -193,7 +192,6 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core, q , m_magicBinaryMarker(magicInstallerMaker) , m_componentsToInstallCalculated(false) , m_proxyFactory(0) - , m_createLocalRepositoryFromBinary(false) , m_defaultModel(0) , m_updaterModel(0) , m_dependsOnLocalInstallerBinary(false) @@ -519,7 +517,6 @@ void PackageManagerCorePrivate::initialize() { m_coreCheckedHash.clear(); m_componentsToInstallCalculated = false; - m_createLocalRepositoryFromBinary = false; // first set some common variables that may used e.g. as placeholder // in some of the settings variables or in a script or... @@ -1433,13 +1430,14 @@ bool PackageManagerCorePrivate::runInstaller() m_settings.applicationVersion())); const int progressOperationCount = countProgressOperations(componentsToInstall) - + (m_createLocalRepositoryFromBinary ? 1 : 0); // add one more operation as we support progress + // add one more operation as we support progress + + (PackageManagerCore::createLocalRepositoryFromBinary() ? 1 : 0); double progressOperationSize = componentsInstallPartProgressSize / progressOperationCount; foreach (Component *component, componentsToInstall) installComponent(component, progressOperationSize, adminRightsGained); - if (m_createLocalRepositoryFromBinary) { + if (m_core->isOfflineOnly() && PackageManagerCore::createLocalRepositoryFromBinary()) { emit m_core->titleMessageChanged(tr("Creating local repository")); ProgressCoordinator::instance()->emitLabelAndDetailTextChanged(QString()); ProgressCoordinator::instance()->emitLabelAndDetailTextChanged(tr("Creating local repository")); diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index d2d97e115..358b1c6e4 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -249,7 +249,6 @@ private: QSet<Component*> m_componentsToUninstall; QString m_componentsToInstallError; FileDownloaderProxyFactory *m_proxyFactory; - bool m_createLocalRepositoryFromBinary; ComponentModel *m_defaultModel; ComponentModel *m_updaterModel; diff --git a/src/sdk/installerbase.cpp b/src/sdk/installerbase.cpp index 0509f9cab..03b87bbb2 100644 --- a/src/sdk/installerbase.cpp +++ b/src/sdk/installerbase.cpp @@ -322,6 +322,8 @@ int main(int argc, char *argv[]) core.addUserRepositories(repoList); } else if (argument == QLatin1String("--no-force-installations")) { PackageManagerCore::setNoForceInstallation(true); + } else if (argument == QLatin1String("--create-offline-repository")) { + PackageManagerCore::setCreateLocalRepositoryFromBinary(true); } else { std::cerr << "Unknown option: " << argument << std::endl; } diff --git a/src/sdk/installerbase_p.cpp b/src/sdk/installerbase_p.cpp index 611e491bf..bf96a797a 100644 --- a/src/sdk/installerbase_p.cpp +++ b/src/sdk/installerbase_p.cpp @@ -303,6 +303,9 @@ void InstallerBase::showUsage() << "Set system proxy on Win and Mac. This option has no effect on Linux." << std::endl; std::cout << std::setw(55) << std::setiosflags(std::ios::left) << " --verbose" << std::setw(40) << "Show debug output on the console" << std::endl; + std::cout << std::setw(55) << std::setiosflags(std::ios::left) << " --create-offline-repository" + << std::setw(40) << "Offline installer only: Create a local repository inside the installation " + "directory based on the offline installer's content" << std::endl; std::cout << "\nDeveloper:"<< std::endl; std::cout << std::setw(55) << std::setiosflags(std::ios::left) |