summaryrefslogtreecommitdiffstats
path: root/tests/auto
Commit message (Collapse)AuthorAgeFilesLines
* Fix expected status on createoffline testsArttu Tarkiainen2024-04-051-3/+3
| | | | | | | | For some failure cases, the correct status is now PackageManagerCore::Canceled. Change-Id: Id62c6a06b73eab576977c38a4c66d9e2e1863b9b Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Allow overwriting undo in some operationsKatja Marttila2024-04-0516-59/+458
| | | | | | | | | | | | | | Added possibility to overwrite undo in copy, move, delete, mkdir, rmdir, appendfile and prependfile operations. Undo is performed when component is uninstalled or updated, by adding UNDOOPERATION to the end of argument list will skip the undo operation. Also added unit tests for rmdir and prependfile operations Task-number: QTIFW-3333 Task-number: QTIFW-393 Change-Id: I88dbb16d2ebabe42b4ff810e6196da0be8b4cc65 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Speed up cache validationKatja Marttila2024-03-221-1/+1
| | | | | | | | | | | | | Cache validation takes some time especially in Windows, mostly the time is spent in opening the files for the integrity check. Instead of writing the sha checksum to file to verify the integrity, name the file itself with the sha checksum. Then it is enough to check if the correct file exists and we don't need to open the file. Task-number: QTIFW-3328 Change-Id: I36835d783ccf2f6aad8c83e14ec19cbdfc6db71e Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CLI: Perform commands primarily from default repositoriesKatja Marttila2024-03-051-4/+53
| | | | | | | | | | | | | | | | | | Especially in installers which contains huge amount of repositories, it takes a long time to perform commands from CLI. If the repositories are filtered using categories, it saves a lot of time if the components to install/update etc. are tried to install/update from the defaultly selected repository categories. Assuming that the component is found from the defaultly selected repositories. If the component is not found from defaultly selected repository categories, then all categories are searched for the component. Implemented also a filter logic, where the components to install are searched earlier, if the component is not found then we can exit early. Task-number: QTIFW-3251 Change-Id: I1274b5f56dbff293554cb21839a8cea63a7d2dcc Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CI: Fix ProcessWrapper test fail in RedHatKatja Marttila2024-01-102-2/+3
| | | | | | | | | In CI, the ProcessWrapper test sometimes failes, and sometimes passes, as the target in CI constantly changes skipping the test for now in all Linux platforms until we can find the real root cause for the fail. Change-Id: Ideb11db08e689eed1d490a5f4d9529ca27023eb8 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CI: Update BLACKLISTED redhat versionKatja Marttila2024-01-091-1/+1
| | | | | Change-Id: Iff8798080939dea7cf54e05a8624630ab58f1b75 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Allow disabling usage of configured repositories for offline installersArttu Tarkiainen2023-12-292-0/+2
| | | | | | | | | | | | | | Previously, offline installers did not consider configured repositories for metadata fetch, but this was changed in a fix for bug report QTIFW-3078. Some users were relying on the previous behavior, so make it configurable in the installer's config file, and default to the new behavior. Task-number: QTIFW-3160 Change-Id: I26c0ab825f080f81ce2320e0be5f75334207c33e Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Add buildCpuArchitecture() to systemInfoKatja Marttila2023-11-221-0/+2
| | | | | | | | To access buildCpuArchitecture from script Task-number: QTIFW-3224 Change-Id: I02086f7d3e064fe53d6fa9322b8832110c40c6b1 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Enable component script postload setting per repositoryKatja Marttila2023-10-166-1/+121
| | | | | | | | | | | | | | This is a custom requirement for Qt Online Installer. Qt Online Installer has a huge amount of scripts to be evaluated. Most of the scripts don't need an evaluation unless those are installed. Skipping the evaluation of scripts has quite significant performance impact. As the postLoad setting in component level is a big task, enabling support for Qt Online Installer to set the postLoad value to scripts per repository. Task-number: QTIFW-3173 Change-Id: If37d7ff39ad07ee56e9a9559c837966c23d76d6e Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add support for JSON formatted component alias source filesArttu Tarkiainen2023-10-063-9/+54
| | | | | | | | | | | The JSON formatted source file follows the same properties as the officially supported XML declaration file. The undocumented (private) file format support is added for installers extended via the ProductKeyCheck API, that can use the JSON format. Task-number: QTIFW-3175 Change-Id: If1463a1e3796b818feb8682d66e443e09fefcf15 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* CLI: adjust 'search' command behavior with --type optionArttu Tarkiainen2023-10-051-2/+0
| | | | | | | | | | | | | | In case the "--type=aliases|packages" option is omitted, search first for aliases, and if not found, search for components. If the option is specified, search only given type. This changes the behavior from previous one, where only aliases were considered for the search by default, if the type option was omitted. Change-Id: Ie01ea85e1b88376f8df3edbf864d1e78788c3464 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Evaluate component aliases only for command line installer runsArttu Tarkiainen2023-10-021-0/+8
| | | | | | | | | | Return early from building the component aliases for non-CLI runs, to save some time from the metadata evaluation phase. The aliases are currently only usable from installer's CLI. Change-Id: Id8acde1b8353f498e3dfd0bd69156b17de245105 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Fix qHash return valueKatja Marttila2023-09-291-2/+2
| | | | | | | | qHash return value in Qt6 is size_t. Making relevant changes so that no warnings occur when building with Qt5 or Qt6. Change-Id: Ia4d8de49b163a59b58ec7c1eea83979b174b1bd1 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Update terminology for dependency properties for aliasesArttu Tarkiainen2023-09-294-22/+22
| | | | | | | | | Change "Requires" to "Required" and use plural form for the dependency properties, to be more uniform with the dependency properties for components. Change-Id: Iccb36701bc32ebafd27914272225ad1615c5f9fa Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Fix allowing selecting an alias depending on unstable alias for installArttu Tarkiainen2023-09-292-1/+21
| | | | | | | | | | | | | | | | | | | | | | | | For the sanity check calculations, all component aliases are manually selected to detect possible errors in packaging preventing installing of an alias. As the order of install for selected aliases is undefined, in some cases the installer did not detect that an alias requires an unstable alias. Consider an example scenario: * aliasA -> requires aliasB * aliasB -> requires aliasC * aliasC -> missing from installer The unstable status is set the first time we query for the required aliases of an alias, so the case for "ReferenceToUnstable" could go amiss if the required aliases list for "aliasA" was populated before for "aliasB". Fix by populating the required aliases and components in the order of the alias dependency graph. Change-Id: Id2fc9e3e1b315f5be98ca8915a0938abad1a2eb5 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Add support for optional alias dependenciesArttu Tarkiainen2023-09-293-5/+81
| | | | | | | | | | | | In addition to RequiresComponent and RequiresAlias, introduce new OptionalComponent and OptionalAlias properties for component aliases. The new properties are used to declare optional requirements for aliases, which do not cause the declaring alias to become unstable in case the referred component or alias is missing from the installer. Task-number: QTIFW-3166 Change-Id: I43c8cd08099e879180ec7e028b55836750c727bd Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Add auto-tests for component aliasesArttu Tarkiainen2023-09-1411-32/+420
| | | | | | Task-number: QTIFW-2978 Change-Id: I2ed1368dbaf793f1035d93af88c4c2e73c4271b3 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Enable blacklisted testsKatja Marttila2023-09-053-13/+0
| | | | | | | | | | The fail has already been fixed to IFW, no need to blacklist these tests any more when building with Qt6.5 Task-number: QTIFW-3087 Change-Id: I9d2a25d12cfe5fb98083826936878ce3770db0d2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Merge remote-tracking branch 'origin/4.6' into masterKatja Marttila2023-08-241-1/+1
|\ | | | | | | Change-Id: Idadf4fb3047f72880e5a86f76eb21b659589cd17
| * DownloadArchivesJob: allow download retries for command line runsArttu Tarkiainen2023-08-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, on network errors or hash verification failures, the download job would be canceled when running the installer from CLI. This was to prevent infinite retries in case the automatic or default answer for the error message boxes was to retry. Add a retry counter and allow retrying the failed downloads from CLI runs until the max count is reached. Task-number: QTIFW-3098 Change-Id: Iee95f0eb4e47af89c74ffdd9ad6026bda6c87664 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Fix deprecated QVariant usageKatja Marttila2023-08-231-3/+44
| | | | | | | | | | | | | | | | | | Also adding tests for UpdateOperations which used the deprecated QVariant functions Task-number: QTIFW-3077 Change-Id: I5b6b975631b4d0380511f614b0cad1f90a4849e8 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Fix scriptengine testKatja Marttila2023-08-221-0/+1
| | | | | | | | | | | | | | | | Evaluating scripts which has gui components needs a valid packagenamanagergui when building with Qt6 Task-number: QTIFW-3087 Change-Id: I3ac03f90cb490e7769e6af7db6f7be198ed06b8f Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Start using Qt 6.5 branch with IFWHeikki Halmet2023-08-173-0/+13
| | | | | | | | | | | | | | | | | | This also blacklist test function loadComponentUserInterfaces Task-number: COIN-1050 Task-number: QTIFW-3087 Change-Id: I7c59570b07a54b50898ef0c1bf23ff83540f36bd Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Omit thisObject creation in javascript codeKatja Marttila2023-06-121-8/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Originally, new Component object was created for javascript so that the garbage collector would not destroy the object. This caused the thisObject in javascript to differ from the object in packageManagerCore, which in Qt6.5 lead to warning messages when each script was evaluated: "Warning: :1: Calling C++ methods with 'this' objects different from the one they were retrieved from is broken, due to historical reasons. The original object is used as 'this' object." Fixes so that the new object creation is omitted and QJSEngine::CppOwnership is set to Component object so that garbage collector won't destroy it. Task-number: QTIFW-1829 Change-Id: Ia131d88fc83122f11c5b19a431e7db45e0ba18f9 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Fix tests built with Qt6Katja Marttila2023-06-084-6/+11
|/ | | | | | | | | Due to api changes in Qt6 versus Qt5 we need minor changes to both tests and to IFW itself. Task-number: QTIFW-3064 Change-Id: I7e08161db074c96a6d639a2ff8b4c3d73f59e3cf Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Unify handling of processes to close for 'updating' componentsArttu Tarkiainen2023-04-215-51/+0
| | | | | | | | | | | | | | | | | | | There was behavioral mismatch of handling processes to stop for updates between GUI and CLI modes. For CLI, each command that would make changes to components would recursively check the installation directory for running processes early on, and block continuing if such processes were found. In addition to this, the component scripts may have requested to stop processes before performing component 'updates' (add/remove/update). For GUI, only the latter functionality was utilized, so remove the early checks from the CLI side to make the behavior uniform. Task-number: QTIFW-2927 Task-number: QTIFW-3009 Change-Id: I028e699c43ef4352593b49ccc8a927644916c41a Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Metadata cache: add derived class for metadata cacheArttu Tarkiainen2023-04-041-13/+18
| | | | | | | | | | | | By creating a separate class for the metadata cache that inherits GenericDataCache<Metadata>, we can move the responsibility of setting up the cache type and version from calling clients to the class constructors. This way there is less risk of accidentally forgetting setting the default type and version of the cache - especially the version, which is always a static value in IFW. Change-Id: I02f931395ca472a206d51207279fddbe12ba3897 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Verify meta file integrity from cacheArttu Tarkiainen2023-04-032-12/+15
| | | | | | | | | | | | | | | | | | Calculate and store a checksum for each included file when extracing meta.7z archives. When the respective meta item will be loaded from cache on the next run, each file referenced in its Updates.xml will be checked from disk, that it exist and that its checksum matches the one calculated when the file was originally extracted. If the files in cache are not intact, the meta item will be refreshed (downloaded and extracted again). Also bump the IFW cache format version, as the existing caches need to be repopulated to include the new checksum files. Task-number: QTIFW-3023 Change-Id: I6a8431ffb52cfff69e3cb84cccd4b3d5a1fe21da Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Optimize Updates.xml parsingKatja Marttila2023-03-214-1/+46
| | | | | | | | | | | | | Updates.xml was downloaded first to TEMP/MaintenanceTool.xml and from there renamed to TEMP/remoterepo-XXXXX/Updates.xml. This is quite time consuming operation in Windows. Fixed so that the Updates.xml is downloaded directly to TEMP/remoterepo-XXXXX. This change speeds up Updates.xml parsing around 70 percent in Windows. Task-number: QTIFW-2805 Change-Id: I1cb282beb2ce2648f5b0e43919800c92465538b4 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Optimize Updates.xml parsingKatja Marttila2023-02-092-0/+2
| | | | | | | | | | | | | | | | | Updates.xml file elements are read and based on that the installer calculates for example applicable updates. The files were parsed one by one which was not very optimal at least in Windows when reading a lot of files. Fixing the reading so that all files can be read and parsed using QtConcurrent. Also changing the class structure so that the private class is removed and private functions used instead. Another option would have been to create header file to the private class due to the Q_OBJECT definition in ParseXMLFilesTask. Task-number: QTIFW-2805 Change-Id: I40d1c75b87f4bf1f5a8fcd874edf84023891bdcc Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Check sha1 checksum per repositoryKatja Marttila2023-02-0923-1/+303
| | | | | | | | | | | | | | Updates.xml contains Checksum variable which can be set to false to skip the archives checksum verification. The variable was read from one arbitrary Updates.xml file and that was used in all downloads. Fixed so that the checksum is read per Updates.xml. This change also speeds up the component generation phase as it no longer needs to read Updates.xml file. Task-number: QTIFW-2805 Task-number: QTIFW-2928 Change-Id: Id28dd370ef200aec67cb85cbbc1d08d925b43c21 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add common base class for the installer calculator classesArttu Tarkiainen2023-02-081-25/+25
| | | | | | | | As the classes already share similar features and public API, it would make sense to inherit a common abstract class to define the interface. Change-Id: I7ed278b1b049b7ec12c4401e55fdf39306b0ab85 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Merge remote-tracking branch 'origin/4.5'Arttu Tarkiainen2023-01-272-4/+3
|\ | | | | | | Change-Id: I07baba6a0e64b6022e6a933708e199551be7dd2f
| * Support detecting invalid dependency resolutions on component selectionArttu Tarkiainen2023-01-262-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IFW could already previously detect circular and missing dependencies by running a precheck calculation when building the component tree. However, there can be also cases of where the user selection results in unsolvable changes to components. One such case was the erroneous possibility to uninstall a component marked with ForcedInstallation, if any of its dependencies was checkable and the user unselected it for uninstallation. Add support for reacting to such errors in the component tree view, displaying a message box about the invalid dependency resolvation error, and blocking further navigation until the component selection passes the dependency calculations. Also attempt some refactoring the related code to simplify the different call sequences resulting in recalculation of the components. Change-Id: I9dc78f858bd4be7932f89f8e14bbfd97fbd3a0f6 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Tests: fix 'make check' failing after consecutive callsArttu Tarkiainen2022-12-221-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'elevatedexecuteoperation' test invoked qmake in its project file directory when ran, overwriting the original Makefile. This would cause problems on the consecutive "make check" invocations after first, if qmake was originally ran with a custom command line arguments. For example, setting 'CONFIG+=libarchive' would be lost and the test would try to link against the default lib7z.a, which would not be found on libarchive enabled builds. Fix by calling the qmake executable with the version option instead, we just need to check that the executable could be started, no need to actually run it for the test sub-project. Change-Id: Ie10c1622fa529c1338d427b7c757f8cc5834e0ac Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Optimize Updates.xml parsingKatja Marttila2022-12-222-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDomDocument::setContent is time consuming operation especially when there are thousands of Updates.xml to be parsed. Using QXmlStreamReader for parsing the xml content instead, the Updates.xml content is already validated in metadata job after download. In Windows, using QXmlStreamReader instead of QDomDocument decreases the xml parsing time from ~10 seconds to ~1 seconds when there are thousands of Updates.xml to be parsed. Task-number: QTIFW-2924 Change-Id: I14f5eba5b72f451a12ab4e3bf6b2f00b5f66faaf Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Merge remote-tracking branch 'origin/4.5' into masterKatja Marttila2022-12-1320-9/+222
|\| | | | | | | Change-Id: Id8121e6b4cdda23c8c44cf779e35dce8d9a28090
| * Fix replaced removal on updateKatja Marttila2022-12-019-0/+84
| | | | | | | | | | | | | | | | | | | | If component is replaced with a component which is installed as autodependency to other component, the replaced component was not uninstalled on update. Task-number: QTIFW-2887 Change-Id: Ibad04df765191f0e399c6f6020cdf081dba5d803 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
| * Cleanup installer calculator classesKatja Marttila2022-11-301-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As there are several optimizations done, the single click of component in component selection tree is not slow anymore. Cleaning the code so it is easier to maintain. Basically this revers commit a28cf55b5a5007c0dd952b3012c076d9da329f0f but as there are bug fixes made after that so pure revert could not be done. Task-number: QTIFW-2885 Change-Id: Id486d5dc68c42c31b4848cd19a1761bcfe242db6 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
| * Make Settings operation to support _OLD and placeholdersKatja Marttila2022-11-255-2/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting can be a file. The Settings path was hard coded to .dat file, which made it impossible to move the settings file to a different location or use some other settings file instead. This change saves the settings path with placeholder name, which is resolved before performing settings operation or undo operation. In case settings path is hard coded to .dat file and the settings file is relocated, this can be overcome by setting variable name _OLD to point to the location where the settings file originally was. Installer uses this _OLD syntax to resolve the new location. For example in the following example Tools.ini is relocated from OldLocation to NewLocation. Setting the installer values the following way will tell installer to use the settings from NewLocation instead of OldLocation. installer.setValue("MY_OWN_EXECUTABLE", "C:/Qt/NewLocation/Tools.ini") installer.setValue("MY_OWN_EXECUTABLE_OLD", "C:/Qt/OldLocation/Tools.ini") Task-number: QTIFW-2882 Change-Id: I47dc68dfba8a49f37ab361edc8c64d3e5523e02e Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
| * Fix errors occurring in full uninstall on macOSKatja Marttila2022-11-255-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Maintenance Tool can be retrieved from online repositories like any other component. The component contains files which are listed to remove correct files in uninstall. As Maintenance Tool differs a bit from other components in the matter that it should not be deleted in full uninstall as it is running, we need to exclude the Maintenance Tool (which we call also installerbasebinary), from the file list. Maintenance Tool itself is removed in PackageManagerCorePrivate::deleteMaintenanceTool() Task-number: QTIFW-2875 Change-Id: I33a16e632e3b354099b749d8dde7b65f5cef8f43 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
| * Fix updater view behavior for non-checkable componentsArttu Tarkiainen2022-11-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As the components can still be selected with the selection buttons above the view, it makes little sense to artificially limit selecting individual items for update and hiding their check state. Also the documented use case for the property - making a parent component non-checkable so only some of its children should be checked - does not apply for the updater view. Apply similar fix to forced installation components, which should be also toggleable for updates. Task-number: QTIFW-836 Change-Id: I18f34c4e8ee1e24e761e50edd3066ec4aea3432e Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Add test for essential content sha updateKatja Marttila2022-12-128-6/+83
| | | | | | | | | | | | | | | | | | | | | | Also clearing the foundEssentialUpdate flag in clearAllComponentLists() function so that unit tests core status will match. As the unit tests are not done to fully cleared core the foundEssentialUpdate was set to true although the update was done and other components were installed. Task-number: QTIFW-2732 Change-Id: I9b6754595b4b20b1ddc95d7587d98474a6967add Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Add possibility to post load install scriptsKatja Marttila2022-11-047-12/+71
| | | | | | | | | | | | | | | | | | | | | | This change adds attribute, postLoad, to existing <Script> -element. Using <Script postLoad="True"> will call the script loading and evaluation only to those components which are selected for install or update right before the components installation start. Task-number: QTIFW-2820 Change-Id: Ic1967d329cbb5de6a0216ff3f76cc2ede178db80 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Merge remote-tracking branch 'origin/4.5'Arttu Tarkiainen2022-11-033-0/+53
|\| | | | | | | Change-Id: Ic3759bb073b00a168ec3348122484514e02138f5
| * Merge remote-tracking branch 'origin/4.4' into 4.5Arttu Tarkiainen2022-11-033-0/+53
| |\ | | | | | | | | | Change-Id: If99e84c5f6e6914f0d90770053ce6850e70ed403
| | * Windows: fix installation error with concurrent Extract operationsArttu Tarkiainen2022-09-013-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was an issue with the Extract operations when using the same "targetDir" argument for multiple archives. The DirectoryGuard object creating the missing leading directories would occasionally run into a race condition when multiple threads competed with creating the directories. Fix by adding installer specific implementation similar to QDir::mkpath(), but which checks if the directory was created elsewhere at every directory level. Also convert an existing similar case with the Extract operation to use the new function. Task-number: QTIFW-2752 Change-Id: I4451e931309edb536294314b11c903189dacf2f0 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | | Tests: Fix debug messages from cli testKatja Marttila2022-10-311-24/+31
|/ / | | | | | | | | | | Change-Id: I05ad82311a050d9b463e96e97c031f6d38153883 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Add possibility to synchronize metadata cache manuallyArttu Tarkiainen2022-10-211-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The contents of the cache subdirectories and manifest.json may mismatch if the installer process is killed after the metadata fetch, because the manifest file is normally synchronized only when the cache object gets destroyed. While this is a recoverable error, it creates unnecessary overhead of discarding broken items and downloading them again. Add support for synchronizing the cache by the caller and do so each time the cache is updated by Metadatajob. Task-number: QTIFW-2817 Change-Id: Ia4cd3de44d57e8d732d11dc26968aa87323ada0f Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Allow generation and signing of MT in macosKatja Marttila2022-10-204-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously maintenance tool could be updated from online repository placing installerbase to repository and setting setInstallerBaseBinary() in install script. The maintenancetool app bundle was written in the code and installerbase placed under .app/Contents/MacOS/. This prevented the maintenancetool app bundle to be signed and notarized. Fixed so that the whole app bundle can be placed to repository. This does not break the signing nor notarization as the whole bundle is copied as it is. The setInstallerBaseBinary() is still needed in the install script so that the installer knows which bundle is the maintenance tool. Old way of updating maintenancetool still exists, if the installerbaseBinary does not contain the ending 'app' installer assumes that the maintenance tool is the executable itself instead of whole app bundle. This change also adds a new binarycreator switch --create-maintenancetool, which can be used in macos to create the app bundle for maintenance tool. Task-number: QTIFW-2750 Change-Id: I3483ddb815d035644e826559947f6f9de4af9361 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>