summaryrefslogtreecommitdiffstats
path: root/tools/devtool
Commit message (Collapse)AuthorAgeFilesLines
* Add support for parallel extraction of component archivesArttu Tarkiainen2022-04-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Build commandline tools without pluginsSamuli Piippo2022-03-031-0/+2
| | | | | | | | | Commandline tools do not require plugins to be included in static binaries, skip all of them. This avoids unnecessary system dependencies for the tools. Change-Id: I3c50f8ec436ef9d73c4cb551ed48047bf181ccbb Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Add support for handling archive files with libarchiveArttu Tarkiainen2021-09-141-24/+15
| | | | | | | | | | | | | | | | | | | | | | libarchive is a multi-format archive and compression library written in C and licensed under the new BSD license. Usage of libarchive brings in support for additional archive formats (in addition to 7z) with the installer framework, like zip and tar, with several available compression methods like gzip, bzip2 and xz. libarchive will coexist as a supported archive format handler with the LZMA SDK currently used in the framework, which will continue to be used for handling the 7-Zip file format. This change introduces classes for handling archive operations using both libraries, removes most calls to the old Lib7z facade and migrates the code base to use the new handling methods. Task-number: QTIFW-2255 Change-Id: I8d77110ded503060495a3d6fdfdbc26281df9453 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Cppcheck: Fix local variable shadowing outer variableKatja Marttila2021-03-092-16/+16
| | | | | Change-Id: Idff9a40c5089b4de7b8afd1c280603601317beda Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Restructure logging utilitiesArttu Tarkiainen2021-02-041-2/+3
| | | | | | | | | | | | | | Create a singleton-pattern class as an encapsulation unit for holding and altering the state of debug printing attributes. Move related code from various places under a single umbrella header file for logging utilities, with some minor stylistic changes & cleanup. This acts as a preparatory change for providing non-blocking headless CLI runs when there is no TTY attached - that will be fixed in a follow-up change. Change-Id: Ib7f72cf75362c3ea6713058e92eda997d6df55c3 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Add possibility to compress metadata per repositoryKatja Marttila2020-03-241-1/+1
| | | | | | | | | | | | Added two new configure options for repogen. --unite-metadata will create both 'old' style meta 7z, which is one per component, and new style which is one per repository. --unite-metadata-only will create only new syntax meta 7z. One meta 7z per repository will significantly decrease the download time if there are several packages in one repository. Change-Id: I651b24e93fdef3efb6253ee9b119ebad3bae4d59 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Update usage of Apple-related terminologyArttu Tarkiainen2019-08-162-2/+2
| | | | | | | | | | | Replace deprecated Q_OS_OSX macro used in several places with the newer Q_OS_MACOS. Old style reference of Apple's desktop operating system name as "OS X" in documentation and files are also replaced with "macOS" where applicable. Task-number: QTIFW-1406 Change-Id: I0561d5e0d964917ac4fca0702d58a06b85d30e57 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Replace 0 with nullptrKatja Marttila2019-01-091-1/+1
| | | | | | | Prevents a lot of warnings seen in QtCreator Change-Id: I63bf95aca68a04fc9fd0eecbe29c63e9b9c47efd Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Fix devtoolKatja Marttila2019-01-041-3/+13
| | | | | | | | | | | After we implemented maintenancetool signing, we wrote the binary magic marker to separate installer.dat file in maintenancetool (like we have always done in macOS in both installer and maintenancetool). Devtool needs to know about this change too to fetch the magic marker from correct place. Task-number: QTIFW-1222 Change-Id: I08e74596033cb33ccb9c49d9db1ee7b4beef59ca Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Fix devtool's segmentation fault when using operationTakayuki ORITO2018-03-131-6/+6
| | | | | | | change the name of the variable to parse the arguments of operation command. Change-Id: I251b17e6e48b0a5c12636199de57bbb761b3ac23 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Explicitly declare implicit dependency on QtQml in devtoolJake Petroules2017-09-131-3/+2
| | | | | | Change-Id: I4ef19a4733d5c469676f3b419c6f4adf1e6ff0de Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Merge remote-tracking branch 'origin/2.0'Katja Marttila2017-01-307-119/+84
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Changelog dist/config/config.xml dist/packages/org.qtproject.ifw.binaries/meta/package.xml dist/packages/org.qtproject.ifw/meta/package.xml installerfw.pri src/libs/installer/lib7z_create.h src/libs/kdtools/kdgenericfactory.cpp src/libs/kdtools/kdgenericfactory.h src/libs/kdtools/kdupdaterapplication.cpp src/libs/kdtools/kdupdaterapplication.h src/libs/kdtools/kdupdaterupdatesourcesinfo.cpp src/libs/kdtools/kdupdaterupdatesourcesinfo.h src/libs/kdtools/localpackagehub.cpp src/libs/kdtools/localpackagehub.h src/libs/kdtools/updatefinder.cpp src/libs/kdtools/updatefinder.h tools/binarycreator/resources/mkdmg.sh Change-Id: Iab2513f549832d2e750e77131c673457ab265af4
| * License header update to GPL-EXCEPTKatja Marttila2017-01-267-119/+84
| | | | | | | | | | Change-Id: I6426c4e8f932cf26c6c638dec18d0c12e22972d1 Reviewed-by: Janne Anttila <janne.anttila@theqtcompany.com>
* | Revert "Allow signing maintenancetool in Windows"Katja Marttila2016-09-151-10/+1
| | | | | | | | | | | | | | | | | | | | This reverts commit 76fd6e8f2953347ea0bf7a57b643968784bc9acc. The change caused that two installation files were needed - one executable and one dat file. Many users did not find it acceptable. We need to figure out something else. Change-Id: Ief12cd47f9897cee8a234d8611a5c18296d42b1c Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Merge remote-tracking branch 'origin/2.0'Katja Marttila2016-06-211-0/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Changelog dist/config/config.xml dist/packages/org.qtproject.ifw.binaries/meta/package.xml dist/packages/org.qtproject.ifw/meta/package.xml installerfw.pri src/libs/7zip/7zip.pro src/libs/7zip/win/CPP/7zip/UI/Common/Update.cpp src/libs/installer/component.cpp src/libs/installer/lib7z_facade.cpp src/libs/installer/packagemanagercore.cpp src/libs/installer/proxycredentialsdialog.h src/sdk/translations/ja.ts tests/auto/installer/messageboxhandler/tst_messageboxhandler.cpp tests/auto/installer/scriptengine/tst_scriptengine.cpp tests/auto/installer/settings/tst_settings.cpp Change-Id: I3bb98b8490b3c3eb7f664c1abb7417155b5430b2
| * add make install functionality with INSTALL_ROOTKatja Marttila2016-05-191-0/+3
| | | | | | | | | | | | Change-Id: I8bad1c9bbe7b705ff0842f15fb0c9bc6c127e9bc Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
* | Allow signing maintenancetool in WindowsKatja Marttila2016-06-211-1/+10
| | | | | | | | | | | | | | | | | | Signing was not possible for maintenancetool since metadata was added to binary. Separated metadata to installer.dat like in OS X. Task-number: QTIFW-667 Change-Id: I74ef307c51a2f43059475dd943d6f0910925fa86 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Merge remote-tracking branch 'origin/2.0'Iikka Eklund2016-01-207-28/+21
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: installerfw.pri src/libs/kdtools/kdgenericfactory.cpp src/libs/kdtools/kdgenericfactory.h src/libs/kdtools/kdupdaterapplication.cpp src/libs/kdtools/kdupdaterapplication.h src/libs/kdtools/kdupdaterupdatesourcesinfo.cpp src/libs/kdtools/kdupdaterupdatesourcesinfo.h sync.profile Change-Id: Ifdc8b065f89b7e241bd3788ed79768e21888161f
| * Update license headersIikka Eklund2015-12-297-28/+21
| | | | | | | | | | | | | | | | | | Update existing license headers. LGPL -> LGPLv21. Update copyright year as well. Change-Id: Ie1d71f8c68186b8f625f409ddf94691f178093c9 Reviewed-by: Katja Marttila <katja.marttila@theqtcompany.com> Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
* | Rename files. Remove {kd} prefix. Remove {kdupdater} prefix.Karsten Heimrich2015-07-141-1/+1
| | | | | | | | | | Change-Id: I88c93cab718f4659296d5f7f562beefd747a366f Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
* | Make use of the new varadic template feature + cosmetic changes.Karsten Heimrich2015-07-101-1/+1
| | | | | | | | | | | | | | | | Change constructor to take the a package manager argument. Add a package manager member to the operation. Remove setter function. Change-Id: Iffb860e24089beb6496ac4ee479d547a29463728 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* | Unify translated error messagesKai Koehne2015-06-243-26/+26
| | | | | | | | | | | | | | | | | | | | | | | | * Enclose file paths in "" * Localize file paths with QDir::toNativeSeparators. * Make sure sentences end with a '.' * Append error details always by ':', e.g. tr("Failed to copy file '%1': %2").(...) * Use 'directory' instead of 'folder' everywhere Change-Id: Ie045f429f72ad5045c96537465c5fb9d2e99d250 Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
* | Split the huge header file in more dedicated ones.Karsten Heimrich2015-06-101-0/+2
| | | | | | | | | | Change-Id: I35a1500d5a9bb8986765488660cf0487c32d9720 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* | Remove pseudo static core instance, fixes autotests.Karsten Heimrich2015-05-061-3/+1
| | | | | | | | | | | | | | | | | | | | | | We need the core engine in operations anyway, so pass the pointer to the create function instead of setting it on our own after the operation was created. The only reason to introduce the static was the ~UpdateOperation() destructor, which now can get the value from its internal data instead of using the static instance call. Change-Id: Ide27542837355ec8c642a6687ca02977983f84fa Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
* | Fix some warnings in devtoolNiels Weber2015-04-291-5/+5
| | | | | | | | | | Change-Id: I9d12cd49ad4d82ec8f48798f087929fa3ee07fa8 Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
* | Use positional arguments instead of options.kh2015-04-241-31/+114
|/ | | | | | | | As requested use positional arguments instead of options to run the devtool. Should help unifying further additions to the tool. Change-Id: I794a7f7956d86082111f8aa1b14012c3695c965d Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* Update CopyrightKai Koehne2015-02-187-49/+49
| | | | | Change-Id: I8dde6629cfd461104364d5cdc255cb54b58283fa Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
* Dump binary content for both installer and maintenance tool.kh2015-02-051-4/+2
| | | | | Change-Id: I749912ebba5e1765f0d60e089a0366f59e09279b Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* Rename the exceptions class to be more generic.kh2014-11-241-1/+1
| | | | | Change-Id: Ia96477920055ee6a6f15be1334516746ddf3573b Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* Fix binary data extractionChristoph VogtlÃĪnder2014-11-131-8/+8
| | | | | | | | | | | | Extract binary data based on list of available package names when using "devtool --dump" or "--create-offline-repository" installer option. An entry in meta data resource only exists if the component actually has meta data (e.g. a script) so it is not possible to rely on sub directory structure after copying meta data to extract binary data. Change-Id: Icd70d3495a921229f0043360b93905dc36cf6514 Task-number: QTIFW-574 Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
* Fix unregistering resources. Fix --operation argument parsing.kh12014-11-041-7/+7
| | | | | | | | | In case of dump we register some resources, though since we return immediately after the function call, never unregister. We need to split the arguments on our own, the parser does not. Change-Id: Id97e0a4d8a3c15fd0027a09514a9c0a6930e7fdb Reviewed-by: Niels Weber <niels.weber@digia.com>
* Remove superfluous include.kh12014-10-311-1/+0
| | | | | Change-Id: I24b7cfe2bc67eb4b0d4a63e4a75e4171e7f0d4ea Reviewed-by: Niels Weber <niels.weber@digia.com>
* Add LGPLv3 as new licenseKai Koehne2014-10-167-98/+49
| | | | | | | Change-Id: I61158f956894e209dccf83744b4753774676099d Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com> Reviewed-by: Niels Weber <niels.weber@digia.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
* Overhaul the binary format API.kh12014-10-152-8/+15
| | | | | | | | | | | | | | Adjust some naming. Add documentation. Make the Resource class handle files only, this is sufficient to read and map inbuild resources. Keep the QResources inside the manager as well, no need to handle them separate. Remove read, write functions from collection class, the API was just unclear how to use. Still it is far from intuitive in the manager class either. If we open a Resource, we need to close it on our own case they are pointers. Change-Id: Ic8aa32a84a15ac774fe1194ba0dbb5733f7216d6 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* Fix warning and handle file scheme like files better.kh12014-10-102-2/+3
| | | | | | | | | Calling setFileName() prints a warning if the path is reset without calling close() before. Convert the source path with file:/// scheme to local file. Change-Id: Ie21e7e8ad8f76dbe1afc1843ff5bf7fb4598123a Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Fix broken update option.kh12014-10-101-6/+11
| | | | | | | | | | | We need to read the marker on our own, BinaryContent::binaryLayout() throws cause it cannot read the full layout in case of maintenance tool binary (part of the stuff is inside the .dat file). To be able to read the layout from the .dat file, we need to open it. Pass the right file to relace, in both cases the executable. Change-Id: Ic76e78a2ee289f3d59d51cc8984d84ab5edf5b46 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Fix relative path issue.kh12014-10-101-2/+3
| | | | | Change-Id: Ia866503bf503a4b1dce8fbb44cc4240463302eb8 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Add missing help option.kh12014-10-101-0/+1
| | | | | Change-Id: Ie70cf698e1761b26a6d6ff11a782c0a871587132 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Rewrite binary layout read/ write implementation.kh12014-09-043-65/+44
| | | | | | | | | | Move BinaryLayout into its own file. Calculate the segment offsets in place instead of letting the caller do the work. Adjust autotest to match the new behavior. Adjust uses to the new behavior. Change-Id: Iba7a4398bd097f1768c33f0c528efd12b7458541 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Split and implement new installer base, update checker.kh12014-09-043-16/+7
| | | | | | | | | | | | | Based on the former patches, split the installer base into its own class. Use the new binary content read functions. Adjust uses to match the new classes. Adjust installer base /update checker signature and inheritance. Remove all now superfluous functions from binary content. Core engine instantiates the operations now, makes reading and writing more generic. Move product key check into QInstaller namespace. Make use of the new command line parser. Change-Id: I00aff79085b69ce627906881b43f374681ea7e91 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Let the binary layout function find the cookie on its own.kh12014-08-291-4/+3
| | | | | | | | | Saves some ugly looking call convention, as we need to find the cookie anyway, pass the cookie instead of the position. Change-Id: I2227576a8ad251fac5312fc477f8381287b0d36d Reviewed-by: Niels Weber <niels.weber@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Make BinaryFormatEngineHandler a real singleton.kh12014-08-291-3/+2
| | | | | | | | It is really needed only once. Change-Id: I0b2231432541c2781afe55105f88809db4fe19e1 Reviewed-by: Niels Weber <niels.weber@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Adjust implementation to not use the collection manager.kh12014-08-291-2/+2
| | | | | Change-Id: Ie38460ff4a94b5583cabb1ecad97cd6c9a906c15 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Rename binary format classes and functions. Move to QInstaller.kh12014-08-273-24/+25
| | | | | | | | | | Adjust some minor implementation details. Some renaming of member variables and function names is left out but will follow in later patches. Add some documentation. Change-Id: I929dcbe13fa701be5224b9e5fdf8d19bfff81235 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Niels Weber <niels.weber@digia.com>
* Move permissions handling after rename.kh12014-07-151-2/+1
| | | | | | | | | At least on Linux we lost the executable permission while doing a rename before setPermissions(...). Not so urgent in these cases, though more correct. Change-Id: Ibb1ca9f04fe94732ff22afd004fbf921255df690 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Make the marker and the find function class members.kh12014-07-152-7/+11
| | | | | | | Prepare for QTIFW-292 and QTIFW-345. Change-Id: I065366742d28e72bc5ae55e70eabf6532b809fea Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
* Move class BinaryContent into its own file.kh12014-07-153-1/+3
| | | | | | | Prepare for QTIFW-292 and QTIFW-345. Change-Id: I938b5aa728e8f81eb9521df5753ad80ac630d96e Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
* Introduce developer tool.kh12014-07-118-0/+845
Supports dump binary content, run operation and update existing binary with new installer base. The support for starting with binary data of a different installer got dropped completely, use update and run instead. Change-Id: I41073d0bfc9a4c4da18fbb9f49fd3e65bb54b501 Reviewed-by: Kai Koehne <kai.koehne@digia.com>