summaryrefslogtreecommitdiffstats
path: root/src/tools/windeployqt/utils.cpp
Commit message (Collapse)AuthorAgeFilesLines
* windeployqt: Add parameter to extend timeout of qmlimportscannerOliver Wolff2025-08-191-2/+2
| | | | | | | | | | | | | | In big projects it is possible that the default timeout for running qmlimportscanner (30 seconds) is not enough. Give the user the option to extend that value. [ChangeLog][Tools][Windeployqt] Add option to control timeout for qmlimportscanner runs. Pick-to: 6.10 6.9 6.8 Fixes: QTBUG-138395 Change-Id: I5c9534bd141ec6fcb66d4e990e46cd2dfcef2647 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* windeployqt: Cache PEHeader informationOliver Wolff2025-07-291-10/+10
| | | | | | | | Do not read PE header information on every access but store the data once it's gathered. Change-Id: I883842d764638347fb73ddd17d5dfec61b99aa2e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* windeployqt: add PeHeaderInfo helper classOliver Wolff2025-07-291-303/+34
| | | | | | | | | | Clean up utils files and have code covering that area in a dedicated helper class. Preparation for upcoming caching of this data. Change-Id: I698321d65c8e07ed7166af01bddb3e678c36f2ad Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* windeployqt: Clean up findDependentQtLibraries & readPeExecutableOliver Wolff2025-07-291-42/+111
| | | | | | | | | Separate collecting of generic information from PE header files from dependency tracking. Cramming everything into one function hurts readability and maintainability. Change-Id: I6e56735969ed99b0361dcfce0a4d8d03ea761e72 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* windeployqt: readPeExecutable: Remove unused "isMinGW" parameterOliver Wolff2025-07-291-6/+3
| | | | | Change-Id: Ibee0168f029889bfc0e427dc5e8f89e7e8799918 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use QIODevice::readLineInto() instead of readLine() in loopsRym Bouabid2024-09-201-4/+3
| | | | | | | | | | | | | | Most of the callers of QIODevice::readLine() are reading a device line by line in a loop. Instead, use one QByteArray and modify it in every iteration using QIODevice::readLineInto(). Use a QByteArrayView instead of QByteArray when calling trimmed() as it's an expensive operation. Fixes: QTBUG-103108 Change-Id: Ic1af487a2fbf352cc21d76a41717944d034d3709 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* windeployqt: Use QProcess instead of an ad hoc reimplementationJoerg Bornemann2024-08-071-249/+20
| | | | | | | | | | We had a simplified reimplementation of QProcess in windeployqt. It existed, because "there's no QProcess in the bootstrap lib". Nowadays, windeployqt does not use the bootstraplib anymore, and we can just use QProcess. Change-Id: I31af4c0f1e647084f11f94d8ad2c13b4bf09a130 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* windeployqt: Proper error message when qtpaths.bat/.exe could not be runOliver Wolff2023-12-111-3/+7
| | | | | | | | | If qtpaths cannt be found windeployqt should complain about that fact. Previously it complained about "Unsupported platform". Pick-to: 6.7 6.6 6.5 Change-Id: I4db954633c31ceac69c4d3c0e55cbe942c3272fd Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* windeployqt: improve MSVC runtime detectionYuhang Zhao2023-11-021-3/+13
| | | | | | | | | | | | | | | MSVC runtime dlls also include vccorelibXXX.dll, concrtXXX.dll, beside these traditional dlls, it's also possible to link against the new UCRT runtime, the ucrtbase.dll (and possibly including the API Set dlls), so we need to add some more checks to make windeployqt more robust. I've tested a custom Qt build locally, which I managed to make it link to ucrtbase.dll only, and this code works fine. Pick-to: 6.6 Change-Id: I00bc8666d8850aac279b8747465879e39348ba02 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Timothée Keller <timothee.keller@qt.io>
* Remove elfreader and other unix leftovers from windeployqtOliver Wolff2023-08-221-33/+1
| | | | | | | | | | | Back then elfreader and other unix functionality was added for the purpose of having one generic deployment tool but it was never used. Remove the code to be more clear on what to expect. Pick-to: 6.6 Change-Id: I2b7a759de04afe0c5fb210ad65f1c86e32934f18 Reviewed-by: Timothée Keller <timothee.keller@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Update windeployqt with dxcLaszlo Agocs2023-06-271-0/+52
| | | | | | | | Basically an adjusted version of findD3dCompiler() that looks for two, not one, DLLs. The logic is the same, with added support for ARM64, though this has not been verified in practice. Fixes: QTBUG-114789 Change-Id: I1fec51fc98a5146e2770e13cf2f3b160ac4282d6 Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io>
* windeployqt: improve debug detectionYuhang Zhao2023-04-261-10/+6
| | | | | | | | | | MSVC binaries can also be stripped and according to my experiments they still work normally. So we should not limit this check to MinGW only. Change-Id: I026d75a38b94f309ad695cf8f700ed3ac160dd87 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Timothée Keller <timothee.keller@qt.io>
* windeployqt: Make determineDebugAndDependentLibs more readableOliver Wolff2023-03-311-20/+35
| | | | | | Change-Id: Ib06fb5f2bce9afe1bd799c3ff96abff5ddb063a9 Reviewed-by: Yuhang Zhao <yuhangzhao@deepin.org> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windeployqt: prevent directory creation for dryrunsTimothée Keller2023-03-241-6/+8
| | | | | | | | | Added a check for dryruns when creating directories, to properly reflect expected behavior. Pick-to: 6.5 Change-Id: I72063e4d32302d304f8174701e38e275b404706b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* windeployqt: a little readability improvementYuhang Zhao2023-01-231-1/+5
| | | | | | | | Break the long sentence to improve the logic readability a bit. Pick-to: 6.5 Change-Id: I3d0227e616a3c47e14ae7b5cfe4b47a39d778e5e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows: centralize how we handle error messagesYuhang Zhao2022-11-161-21/+11
| | | | | | | | | | | | | | | | Currently QtBase contains multiple implementation of how to get the Win32 and COM error messages, and they are almost exactly the same, what's worse, Qt already has a private QSystemError class to do such things, so we are re-inventing the wheel in many places. This patch removes all other custom error message implementations besides the QSystemError one. And since there are a lot of places need the COM error message, move the implementation to QSystemError so that it can handle both Win32 error and COM error. Since I'm touching these lines anyway, break them into short lines if they are above the length limit. Change-Id: I1067c874011800303f0f114b5cb8830ac6810fc0 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Port from qAsConst() to std::as_const()Marc Mutz2022-10-111-3/+3
| | | | | | | | | | | | | | | | We've been requiring C++17 since Qt 6.0, and our qAsConst use finally starts to bother us (QTBUG-99313), so time to port away from it now. Since qAsConst has exactly the same semantics as std::as_const (down to rvalue treatment, constexpr'ness and noexcept'ness), there's really nothing more to it than a global search-and-replace, with manual unstaging of the actual definition and documentation in dist/, src/corelib/doc/ and src/corelib/global/. Task-number: QTBUG-99313 Change-Id: I4c7114444a325ad4e62d0fcbfd347d2bbfb21541 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Use SPDX license identifiersLucie Gérard2022-05-161-27/+2
| | | | | | | | | | | | | 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. Task-number: QTBUG-67283 Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Tools: replace remaining uses of QLatin1String with QLatin1StringViewSona Kurazyan2022-05-031-2/+2
| | | | | | | Task-number: QTBUG-98434 Change-Id: Ie136f600f823019c29461561d4e30be66a66e87b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Tools: use _L1 for for creating Latin-1 string literalsSona Kurazyan2022-05-031-6/+8
| | | | | | | | | As a drive-by, fix qsizetype -> int narrowing conversion warnings for the touched lines. Task-number: QTBUG-98434 Change-Id: I6d4712a71b5ebf3f379f1f98ea476557bce963ef Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Tools: stop using QLatin1Char constructor for creating char literalsSona Kurazyan2022-05-021-25/+23
| | | | | | | | | | | Required for porting away from QLatin1Char/QLatin1String in scope of QTBUG-98434. As a drive-by, fix qsizetype -> int narrowing conversion warnings for the touched lines. Change-Id: Ib9e01ede4e0d7869fc95414d36f37df4a30b16b4 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Move macdeployqt and windeployqt from qttools to qtbaseJoerg Bornemann2021-11-231-0/+1006
Having all *deployqt tools in qtbase will allow us to couple deployment support more tightly with the build system. Change-Id: I299efdacfa6b66a303bb3996ff3ff84e723210a5 Reviewed-by: Kai Koehne <kai.koehne@qt.io>