diff options
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.h')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.h | 91 |
1 files changed, 69 insertions, 22 deletions
diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index b29808228..c0c55c4cc 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2024 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -35,6 +35,8 @@ #include "packagemanagerproxyfactory.h" #include "packagesource.h" #include "qinstallerglobal.h" +#include "component.h" +#include "fileutils.h" #include "sysinfo.h" #include "updatefinder.h" @@ -52,13 +54,15 @@ using namespace KDUpdater; namespace QInstaller { struct BinaryLayout; -class Component; +struct AliasSource; +class AliasFinder; class ScriptEngine; class ComponentModel; -class TempDirDeleter; +class ComponentAlias; class InstallerCalculator; class UninstallerCalculator; class RemoteFileEngineHandler; +class ComponentSortFilterProxyModel; class PackageManagerCorePrivate : public QObject { @@ -69,7 +73,7 @@ class PackageManagerCorePrivate : public QObject public: explicit PackageManagerCorePrivate(PackageManagerCore *core); explicit PackageManagerCorePrivate(PackageManagerCore *core, qint64 magicInstallerMaker, - const QList<OperationBlob> &performedOperations); + const QList<OperationBlob> &performedOperations, const QString &datFileName); ~PackageManagerCorePrivate(); static bool isProcessRunning(const QString &name, const QList<ProcessInfo> &processes); @@ -89,8 +93,10 @@ public: bool directoryWritable(const QString &path) const; QString maintenanceToolName() const; + QString maintenanceToolAliasPath() const; QString installerBinaryPath() const; QString offlineBinaryName() const; + QString datFileName(); void writeMaintenanceConfigFiles(); void readMaintenanceConfigFiles(const QString &targetDir); @@ -98,10 +104,16 @@ public: void writeMaintenanceTool(OperationList performedOperations); void writeOfflineBaseBinary(); + void writeMaintenanceToolAlias(const QString &maintenanceToolName); + QString componentsXmlPath() const; QString configurationFileName() const; bool buildComponentTree(QHash<QString, Component*> &components, bool loadScript); + bool buildComponentAliases(); + + template <typename T> + bool loadComponentScripts(const T &components, const bool postScript = false); void cleanUpComponentEnvironment(); ScriptEngine *componentScriptEngine() const; @@ -111,6 +123,7 @@ public: void clearUpdaterComponentLists(); QList<Component*> &replacementDependencyComponents(); QHash<QString, QPair<Component*, Component*> > &componentsToReplace(); + QHash<QString, QStringList > &componentReplaces(); void clearInstallerCalculator(); InstallerCalculator *installerCalculator() const; @@ -161,10 +174,11 @@ public: m_performedOperationsCurrentSession.clear(); } - void installComponent(Component *component, double progressOperationSize, - bool adminRightsGained = false); + void unpackComponents(const QList<Component *> &components, double progressOperationSize); + + void installComponent(Component *component, double progressOperationSize); + PackageManagerCore::Status fetchComponentsAndInstall(const QStringList& components); - bool runningProcessesFound(); void setComponentSelection(const QString &id, Qt::CheckState state); signals: @@ -177,9 +191,10 @@ signals: public: UpdateFinder *m_updateFinder; - UpdateFinder *m_compressedFinder; + AliasFinder *m_aliasFinder; QSet<PackageSource> m_packageSources; QSet<PackageSource> m_compressedPackageSources; + QSet<AliasSource> m_aliasSources; std::shared_ptr<LocalPackageHub> m_localPackageHub; QStringList m_filesForDelayedDeletion; @@ -207,6 +222,8 @@ public: QList<QInstaller::Component*> m_updaterComponentsDeps; QList<QInstaller::Component*> m_updaterDependencyReplacements; + QHash<QString, QInstaller::ComponentAlias *> m_componentAliases; + OperationList m_ownedOperations; OperationList m_performedOperationsOld; OperationList m_performedOperationsCurrentSession; @@ -230,47 +247,65 @@ private slots: } void handleMethodInvocationRequest(const QString &invokableMethodName); + void addPathForDeletion(const QString &path); private: + void unpackAndInstallComponents(const QList<Component *> &components, + const double progressOperationSize); + void deleteMaintenanceTool(); + void deleteMaintenanceToolAlias(); void registerMaintenanceTool(); void unregisterMaintenanceTool(); void writeMaintenanceToolBinary(QFile *const input, qint64 size, bool writeBinaryLayout); void writeMaintenanceToolBinaryData(QFileDevice *output, QFile *const input, const OperationList &performed, const BinaryLayout &layout); + void writeMaintenanceToolAppBundle(OperationList &performedOperations); void runUndoOperations(const OperationList &undoOperations, double undoOperationProgressSize, - bool adminRightsGained, bool deleteOperation); + bool deleteOperation); PackagesList remotePackages(); - PackagesList compressedPackages(); - LocalPackagesHash localInstalledPackages(); + LocalPackagesMap localInstalledPackages(); + QList<ComponentAlias *> componentAliases(); + bool fetchMetaInformationFromRepositories(DownloadType type = DownloadType::All); - bool fetchMetaInformationFromCompressedRepositories(); - bool addUpdateResourcesFromRepositories(bool parseChecksum, bool compressedRepository = false); + bool addUpdateResourcesFromRepositories(bool compressedRepository = false); void processFilesForDelayedDeletion(); - void findExecutablesRecursive(const QString &path, const QStringList &excludeFiles, QStringList *result); - QStringList runningInstallerProcesses(const QStringList &exludeFiles); bool calculateComponentsAndRun(); bool acceptLicenseAgreements() const; bool askUserAcceptLicense(const QString &name, const QString &content) const; + bool acceptRejectCliQuery() const; bool askUserConfirmCommand() const; bool packageNeedsUpdate(const LocalPackage &localPackage, const Package *update) const; + void commitPendingUnstableComponents(); + void createAutoDependencyHash(const QString &componentName, const QString &oldValue, const QString &newValue); + void createLocalDependencyHash(const QString &componentName, const QString &dependencies); + void updateComponentInstallActions(); + + bool enableAllCategories(); + void enableRepositoryCategory(const RepositoryCategory &repoCategory, const bool enable); + + bool installablePackagesFound(const QStringList& components); + + // remove once we deprecate isSelected, setSelected etc... + void restoreCheckState(); + void storeCheckState(); private: PackageManagerCore *m_core; MetadataJob m_metadataJob; + TempPathDeleter m_tmpPathDeleter; bool m_updates; - bool m_compressedUpdates; + bool m_aliases; bool m_repoFetched; bool m_updateSourcesAdded; qint64 m_magicBinaryMarker; int m_magicMarkerSupplement; - bool m_componentsToInstallCalculated; - bool m_foundEssentialUpdate;; + bool m_foundEssentialUpdate; mutable ScriptEngine *m_componentScriptEngine; mutable ScriptEngine *m_controlScriptEngine; @@ -278,6 +313,8 @@ private: QHash<QString, QPair<Component*, Component*> > m_componentsToReplaceAllMode; QHash<QString, QPair<Component*, Component*> > m_componentsToReplaceUpdaterMode; + QHash<QString, QPair<Component::UnstableError, QString>> m_pendingUnstableComponents; + InstallerCalculator *m_installerCalculator; UninstallerCalculator *m_uninstallerCalculator; @@ -285,16 +322,26 @@ private: ComponentModel *m_defaultModel; ComponentModel *m_updaterModel; + ComponentSortFilterProxyModel *m_componentSortFilterProxyModel; QObject *m_guiObject; QScopedPointer<RemoteFileEngineHandler> m_remoteFileEngineHandler; QHash<QString, QVariantMap> m_licenseItems; -private: - // remove once we deprecate isSelected, setSelected etc... - void restoreCheckState(); - void storeCheckState(); QHash<Component*, Qt::CheckState> m_coreCheckedHash; + QList<Component*> m_deletedReplacedComponents; + AutoDependencyHash m_autoDependencyComponentHash; + LocalDependencyHash m_localDependencyComponentHash; + QHash<QString, Component *> m_componentByNameHash; + + QStringList m_localVirtualComponents; + + // < name (component replacing others), components to replace> + QHash<QString, QStringList > m_componentReplaces; + + QString m_datFileName; + bool m_allowCompressedRepositoryInstall; + int m_connectedOperations; }; } // namespace QInstaller |