summaryrefslogtreecommitdiffstats
path: root/src/manager-lib/installationtask.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Write the installation-report into its own folderDominik Holland2025-07-111-2/+11
| | | | | Change-Id: Ie31346041346cae368c9ce29977ed321e64d7cdc Reviewed-by: Robert Griebl <[email protected]>
* Move the temporary dir used for installations into the apps dirRobert Griebl2025-07-111-2/+3
| | | | | | | | When using extended security attributes, some may not survive the cross-filesystem move from /tmp to the final location. Change-Id: I2bacf844b56b6fa4f5bbc86b96a19bb5129ad09d Reviewed-by: Dominik Holland <[email protected]>
* Move info.yaml and appIcon during installation instead of copying itDominik Holland2025-07-111-2/+2
| | | | | | | This will preserve the extended attributes set on the files. Change-Id: I623f8b8494040cd6a9e18220b606bf340558006b Reviewed-by: Robert Griebl <[email protected]>
* Add an option to package up and install extended file attributesRobert Griebl2025-07-111-0/+7
| | | | | | | | | | | | Just run the packager with the additonal option --include-extended-attributes As for libarchive: we have to switch from the plain "ustar" to the "restricted-pax" (aka "bsdtar") format, which is actually just "ustar" plus xattr support. Change-Id: I07f77abb491cbd515689c986c59253b4d0244555 Reviewed-by: Dominik Holland <[email protected]>
* Sudo: enforce singleton instantiation and cleanupRobert Griebl2025-07-111-2/+3
| | | | | | | | | | | | | We already have the fallback (non-root) implementation for Sudo, so it does make sense to always have a SudoClient instance available, which simplifies the code using it. This also made it possible to get rid of the magic removeRecursiveHelper function and call into SudoClient explicitly where needed. Change-Id: I48ad48edb35e5ddca2c8b171649d5d785e1b3f14 Pick-to: 6.10 Reviewed-by: Dominik Holland <[email protected]>
* Mark security critical files according to QUIP 23Zoltan Gera2025-05-151-0/+1
| | | | | | | Fixes: QTBUG-135747 Pick-to: 6.9 6.8 Change-Id: I3254d2607b6c80d3fec003263a91f0cee4dd69c6 Reviewed-by: Robert Griebl <[email protected]>
* Fix icon handling for installable packagesRobert Griebl2024-11-281-7/+9
| | | | | | | | | | | | | | | | | | | | | * The package format documentation and code had drifted apart over time and did not match very well. Mostly fixed the code to behave as documented, but relaxed the (documented) requirement that every package must have an icon. * Also clarified the difference between package and app/intent icons. * Most crucially, the packager did not check that the package's icon cannot be in a sub-directory, which led to broken packages in case the icon was put in a sub-directory. * Added unit new tests to prevent future regressions. * Increased the icon size limit from 256KB to 1MB while at it. Change-Id: I8b789f47330c1bf7c2e8a76ecd2c49a5bbf29412 Pick-to: 6.8 Reviewed-by: Dominik Holland <[email protected]>
* Fix data-race on taskRequestingInstallationAcknowledge parameterRobert Griebl2024-06-111-22/+26
| | | | | | | | | | | | | | The backing PackageInfo* for the 'package' parameter was modified in the installation thread (setBaseDir), AFTER the signal was emitted on the UI thread and QML was able to access the baseDir property. The idea of using a temporary Package object for that signal emission was not a wise choice, but we cannot easily change that now without breaking the QML API for PackageManager. Change-Id: Ib042292e11b42a89263360e501fe7eb90a4ca765 Pick-to: 6.8 6.7 6.5 6.2 5.15 Reviewed-by: Dominik Holland <[email protected]>
* Clazy: fixesRobert Griebl2024-01-081-2/+2
| | | | | | Change-Id: I2f9f0245e1d0ac0c6ee618a0c90f31aaa1465e93 Pick-to: 6.7 Reviewed-by: Dominik Holland <[email protected]>
* Clazy: modernizeRobert Griebl2024-01-081-3/+3
| | | | | | Change-Id: I8abe9b5b62d255b93754af84b82fbf88ca9b78a4 Pick-to: 6.7 Reviewed-by: Dominik Holland <[email protected]>
* Modernize string literalsRobert Griebl2024-01-081-7/+10
| | | | | | | | | Replace all our custom qSL/qL1S/qL1C macros with standard C++ and QString unicode string literals. Change-Id: I9e0b69fb46525421f408f260518a69b8f8125d99 Pick-to: 6.7 Reviewed-by: Dominik Holland <[email protected]>
* Name all threads started directly by the AMRobert Griebl2023-12-181-1/+3
| | | | | | | | | Don't just rely on the class name, but use a common prefix to make it easier to correlate threads in ps output. Change-Id: I4f9b302e9e275a9825d1ffd29200294a66fb16e6 Pick-to: 6.7 Reviewed-by: Dominik Holland <[email protected]>
* TSAN: fix data races in PackageManagerRobert Griebl2023-12-121-0/+2
| | | | | | | | | These have been there for years and have never triggered, but now that TSAN found the races, it's time to fix them. Change-Id: I31fc3e9254d1a2145198621d55c812cd7226510b Pick-to: 6.7 6.6 6.5 Reviewed-by: Dominik Holland <[email protected]>
* Make Sudo universally available for all buildsRobert Griebl2023-11-271-2/+3
| | | | | | | | | | | This way we do not have to guard all locations where sudo.h is included. Also fix missing or superfluous includes. Change-Id: Icbf7133662fa49a037322cd49b843f14fe7e16a4 Pick-to: 6.6 6.5 6.2 Reviewed-by: Dominik Holland <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* Fix thread affinity for installation task acknowledgeRobert Griebl2023-08-031-0/+2
| | | | | | | | | | | | The temporary Package and Application objects handed out by the taskRequestingInstallationAcknowledge signal belonged to the worker thread of the InstallationTask, which prevented any property from being used in a QML binding, as the QML engine lives in the main thread. Change-Id: I6f49718984a78b781c4f7a98e0e38c4f9ac9ccea Pick-to: 5.15 6.2 6.5 6.6 Reviewed-by: Dominik Holland <[email protected]>
* Clang-Tidy / Clazy warnings and modernizationRobert Griebl2023-08-011-1/+1
| | | | | Change-Id: Iafd5fbd3636068caa36f11e121233c5732f7a545 Reviewed-by: Bernd Weimer <[email protected]>
* Remove all of the legacy installer user-id separation codeRobert Griebl2023-07-141-22/+0
| | | | | | | | | | | | | | | This code is very old and pre-dates modern sandboxing concepts via kernel namespaces. The only thing it did, was to chown() each application's installation directory to a unique uid. The actual runtime did however never setuid() to the app's private uid when starting it, as this was not easily possible anymore with the switch to the Sudo-helper forking mechanism. Neither the configuration, nor the PackageManager properties were ever documented, so we are effectively removing private API only. Change-Id: Id4959630fafb408614d1359614ccb74a84e06157 Reviewed-by: Dominik Holland <[email protected]>
* Also expose applications in taskRequestingInstallationAcknowledgeRobert Griebl2023-05-091-0/+8
| | | | | | | | | | Since switching to the new multiple-apps-per-package architecture, the actual infos about the apps in the package were not exposed via the requesting-acknowledge signal anymore. Change-Id: Id535c5d8710998ce26043ec8e56cd1881961628d Pick-to: 5.15 6.2 6.5 Reviewed-by: Dominik Holland <[email protected]>
* Use SPDX license identifiersDominik Holland2022-06-151-30/+4
| | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I09660e42dea769d720ff30e652485d9861cea965 Reviewed-by: Robert Griebl <[email protected]>
* Fix QScopedPointer::take deprecation warningMÃ¥rten Nordheim2022-03-241-2/+4
| | | | | | | | | By switching to unique_ptr. Fixes: QTBUG-101999 Pick-to: 6.3 Change-Id: I39959da8561991b1657d1210692afff0c25e36a1 Reviewed-by: Robert Griebl <[email protected]>
* Detect and prevent installing the same package multiple times in parallelRobert Griebl2022-03-221-0/+7
| | | | | | Change-Id: I8aa7e1f520346b6c946b0e1e122808d638ccb52c Pick-to: 6.3 6.2 5.15 Reviewed-by: Bernd Weimer <[email protected]>
* Handle an empty or invalid documentDir correctlyRobert Griebl2022-03-221-1/+1
| | | | | | | | | | | | | | | | Not specifying the documentDir, but enabling the installer would - unexpectedly - use $PWD as documentDir. The code does now follow the documentation: if not set, no document directories will be created on package installation. Also, we now fail early if the documentDir and installationDir are sub-directories of each other, as that would lead to mayhem on PackageManager::cleanupBrokenInstallations(). Change-Id: Id8d89f82bf0d63c771f3d86a963c66681f43f195 Fixes: QTBUG-101881 Pick-to: 6.3 6.2 5.15 Reviewed-by: Bernd Weimer <[email protected]>
* Untangle the icon/name/description/categories messRobert Griebl2022-03-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The documentation and the implementation disagreed quite heavily in regards to the icon, name, description and categories fields in the manifest for the package, each application and each intent. The implementation now follows the existing documentation, but also relaxing the requirements of icon and name being required for packages. Also, it was confusing that applications could not override these properties from the package like intents can do, so they also got these properties. Finally, everything is now correctly exposed to QML, with legacy wrappers in place to not break old code. In addition, the completely outdated applicationinfo unit-test was rewritten to test all the current field combinations. Change-Id: Ie5ad84bc6b771d6702b1994d1c8ae9f0204643b9 Pick-to: 6.3 6.3.0 Reviewed-by: Bernd Weimer <[email protected]> Reviewed-by: Dominik Holland <[email protected]>
* Wait for running apps to die on update installationsRobert Griebl2021-08-061-2/+13
| | | | | | | | | This was only done for removals, but it is even more important for update installations. Change-Id: I3cfe552908c9e8b1b130d814bac5f2d3265fe845 Pick-to: 5.15 Reviewed-by: Bernd Weimer <[email protected]>
* Fix leak on taskRequestingInstallationAcknowledgeRobert Griebl2021-08-061-3/+3
| | | | | | Change-Id: Ic3b3ec4caa982f78e14cf991757277ff59d5e682 Pick-to: 5.15 Reviewed-by: Bernd Weimer <[email protected]>
* Update copyright headers to 2021 an finally switch to the GPLRobert Griebl2021-06-011-25/+13
| | | | | | | | | Also removed all the SPDX tags and -QTAS license extensions. Change-Id: Ibd10fe37afcbba832831d027cf2f1891ca0226c0 Fixes: AUTOSUITE-1648 Fixes: AUTOSUITE-1646 Reviewed-by: Dominik Holland <[email protected]>
* Build optimization: include all moc cpps directly in the main cpp fileRobert Griebl2020-08-111-0/+2
| | | | | | | | This is a Qt module policy and helps a lot with build times -- especially on CI setups. Change-Id: I90574deb7e7b215054a5037b99ee4e7c7a040568 Reviewed-by: Thomas Senyk <[email protected]>
* More documentation - especially regarding the new PackageManagerRobert Griebl2020-01-241-18/+4
| | | | | | | | | Also had to fix a few things in the PackageManager<->ApplicationInstaller compatibility layer, because it became obvious that things didn't work as expected while writing the documentation. Change-Id: I92de9a7142e9713fed0b60fd0b69c1a24ff8eb5e Reviewed-by: Dominik Holland <[email protected]>
* Add new package abstraction, part 2Robert Griebl2019-10-281-3/+2
| | | | | | | | | | | | The first commit in this series was b4aee167d3bc6b9f64229317fbc428b3f3b83c0d. This update fixes all the known bugs introduced in the change of the architecture, adds basic documentation and examples. The changes in the intent sub-system are in a separate patch for easier review, although they both depend on each other due to changes in the API. Change-Id: Ia78da7e10e2eb7adfa30625554af275453065a90 Reviewed-by: Dominik Holland <[email protected]>
* Rename from Luxoft AM to Qt AMRobert Griebl2019-08-051-1/+1
| | | | | | Change-Id: I84bbd9e7f735ed1864804a9887d3a02b7c925e53 Reviewed-by: Vladimir Minenko <[email protected]> Reviewed-by: Bernd Weimer <[email protected]>
* (Re)implement package and application blockingRobert Griebl2019-08-021-0/+484
This was deliberately left out of the first patch that introduced the package abstraction. As a side effect, the classes from the installer-lib had to be moved to the manager-lib, because the PackageManager is now a central part of the AM, that has to have access to other classes in the manager-lib. Change-Id: I94c1e62d3ffa769f3e053aab8730fea9133a7bc8 Reviewed-by: Dominik Holland <[email protected]>