summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-03-01 17:54:22 +0200
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-04-21 17:24:31 +0300
commitd14b1b34bafc7cc82383e8032f3adb626747849b (patch)
tree9e6568c3bc3f2eab072055c711264677dbe869cd /tools
parentbda347d641ba6fdbec5f201bb89e1a8ac88b4c5b (diff)
Add support for parallel extraction of component archives
Introduce ConcurrentOperationRunner class used for running installer operations concurrently in the global thread pool. Add execution groups for operations; Unpack operations are run concurrently for all components requesting installation, operations belonging to Install group are run sequentially for sorted components one at a time as before. From the default registered operations the Extract op is moved to Unpack group. Move the previously on-the-fly backup steps of Extract operation to the ExtractArchiveOperation::backup(), so that backups are done before any archives are extracted, and that we know if any of the archives requires administrator privileges to unpack. Reparent QInstaller::Error to QException to support throwing and catching exceptions across thread boundaries. Use RAII for the server-side objects of the classes supporting the remote client-server protocol of installer framework. The concurrent extraction revealed that it was still possible that the local socket was disconnected and thus the RemoteServer- Connection thread finished before receiving and processing the final "Destroy" command packet, leaking the dynamically allocated objects. Task-number: QTIFW-2566 Change-Id: Ib8c2928b9405b7b3465c731018df73acb51e949f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'tools')
-rw-r--r--tools/archivegen/archivegen.pro2
-rw-r--r--tools/binarycreator/binarycreator.pro2
-rw-r--r--tools/devtool/devtool.pro2
-rw-r--r--tools/repogen/repogen.pro2
4 files changed, 4 insertions, 4 deletions
diff --git a/tools/archivegen/archivegen.pro b/tools/archivegen/archivegen.pro
index fef39ae6f..7440f0843 100644
--- a/tools/archivegen/archivegen.pro
+++ b/tools/archivegen/archivegen.pro
@@ -5,7 +5,7 @@ INCLUDEPATH += . ..
include(../../installerfw.pri)
QT -= gui
-QT += qml xml
+QT += qml xml concurrent
CONFIG -= import_plugins
CONFIG(lzmasdk) {
diff --git a/tools/binarycreator/binarycreator.pro b/tools/binarycreator/binarycreator.pro
index df83cc0d5..1266b91c6 100644
--- a/tools/binarycreator/binarycreator.pro
+++ b/tools/binarycreator/binarycreator.pro
@@ -5,7 +5,7 @@ INCLUDEPATH += . ..
include(../../installerfw.pri)
QT -= gui
-QT += qml xml
+QT += qml xml concurrent
CONFIG -= import_plugins
diff --git a/tools/devtool/devtool.pro b/tools/devtool/devtool.pro
index 71d2d2b87..def7066af 100644
--- a/tools/devtool/devtool.pro
+++ b/tools/devtool/devtool.pro
@@ -1,7 +1,7 @@
TEMPLATE = app
TARGET = devtool
-QT = core network qml xml
+QT = core network qml xml concurrent
include(../../installerfw.pri)
diff --git a/tools/repogen/repogen.pro b/tools/repogen/repogen.pro
index c8ef74e8b..73f1eafe5 100644
--- a/tools/repogen/repogen.pro
+++ b/tools/repogen/repogen.pro
@@ -5,7 +5,7 @@ INCLUDEPATH += . ..
include(../../installerfw.pri)
QT -= gui
-QT += qml xml
+QT += qml xml concurrent
CONFIG -= import_plugins