Commit Graph

2115 Commits (85d235877d9da5725841bd53db4e2c1c858a2d94)

Author SHA1 Message Date
Timothée Keller 2a732020ff Windeployqt: change qml import handling
Made it so that qml dependencies will be imported for all invoked
binaries, rather than just the first one.

Task-number: QTBUG-99125
Pick-to: 6.4
Change-Id: I0d97905c59281a03ef2126ae1c436f1034e1575d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-11 13:02:58 +01:00
Tor Arne Vestbø 9a2198f9cd macdeployqt: Don't remove rpaths more than once
In a universal build the tool will find multiple duplicated rpaths,
but the install_name tool doesn't like it if we try to remove it
more than once.

Fixes: QTBUG-109738
Pick-to: 6.5 6.4 6.2
Change-Id: I4a8bea0ad3e47b28e6384ceead551edc83e30d26
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-01-10 16:21:12 +01:00
Joerg Bornemann 8aa15f060d windeployqt: Remove support for QtQuick1
This module is long gone.

Pick-to: 6.5
Task-number: QTBUG-105135
Change-Id: I58bb2dd04a278830a34747267c6c6058614b7342
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-10 11:30:02 +01:00
Timothée Keller b53701d3aa Windeployqt: Remove quint64 type for QtModule
Changed the type of the QtModule enum to no longer be quint64, since
the bitset change doesn't require it anymore.

Pick-to: 6.5 6.4
Change-Id: I000107d23da959c28c26086f0b704252f36619f8
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-01-09 12:49:09 +01:00
Giuseppe D'Angelo e816f91541 Moc: avoid double underscores in a generated identifier
In order to generate metadata for a class `NS::Class`, moc will
"mangle" its name by turning the colons into underscores. This
however makes the generated name have a double underscore, and
all names with double underscores are reserved.

Instead, replace double colons with another string ("SCOPE").

We are then going to use this mangled name to create other identifiers.
To do so, underscores may get appended and prepended to the mangled name
(e.g. "qt_metadata_" + mangled_name + "_t"). This means that a leading
or trailing underscore in the mangled name would also be problematic;
avoid that as well.

Pick-to: 6.5
Fixes: QTBUG-109851
Change-Id: I01391a57920545fc75f78ef4bfefaf6d3dd7b447
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-09 12:28:08 +01:00
Ahmad Samir 1356ca05c2 RCCFileInfo: refactor
- Initialize members in-class, and in ctor init-list as needed. This
  simplifies the constructor and is generally safer as one can't forget
  to initialize a member, especially built-in types
- Add copy control members, this is actually a move only class because
  of the QMultiHash<QString, RCCFileInfo*> member and the destructor
  calling qDeleteAll
- Minor, save a couple of bytes by reordering the members so that they
  are in 8 byte chunks as much as possible, sizeof(*this) is now 104,
  was 120

Change-Id: Idcf7c5a99fdf02854e09e3c1cade6c8d238ed492
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-07 17:23:18 +02:00
Thiago Macieira dd7931d580 syncqt: add some debugging to the ELF version script parsing
Drive-by fix spelling-grammar.

Pick-to: 6.5
Task-number: QTBUG-109790
Change-Id: I69ecc04064514f939896fffd1736d3bb49e73ee1
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-01-06 17:31:37 +00:00
Alexey Edelev fdeaf3054c Avoid full optimization of syncqt if QT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS is set
Skip adding full optimization flags when compiling syncqt if
QT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS is set.

Pick-to: 6.5
Task-number: QTBUG-109792
Change-Id: I585a459f3ca014cbeb3398b4f55d1da393c3c7d1
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-06 12:02:39 +01:00
Alexey Edelev 6f7d09677a Change the RUNTIME_OUTPUT_DIRECTORY for configure-time executables
Set the RUNTIME_OUTPUT_DIRECTORY for configure-time executables so
executable will be located inside the QT_BUILD_DIR. This allows to
re-build syncqt and make sure ithat ts binary is replaced and located
in the libexec directory.

Comment on how to rebuild syncqt. Configure-time tools reserve the
original tool name for the imported executable. To re-build syncqt use
'syncqt_build' target.

Task-number: QTBUG-109792
Change-Id: Id7d912b1d75d18d82cb2a69fbd62b89440120d78
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-05 20:01:21 +01:00
Ahmad Samir b5701ca5a2 RCCFileInfo: get lastModified file time in UTC directly
These are time stamps, and they use toMsecsSinceEpoch(), no point
getting the time in Local time zone then converting it.

Change-Id: I2db2db5f9ebc062e65514a592fa7fa00cf1d179d
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-05 14:46:38 +02:00
Ahmad Samir 41867c25f8 Use QFileInfo's file times in UTC for file timestamps
This is inherently faster than getting it in UTC from the underlying
native API stat call, then converting it to the Local Time Zone just to
compare them. The same goes for any use-case where you get a QDateTime
then the first thing you do is call t.to{Msec,Secs}SinceEpoch().

Change-Id: Ic13bcfd99b937c9f10f102ea7741832950a553c6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-01-04 19:15:52 +02:00
Alexey Edelev f071421558 Check if "-stagingDir" is passed from the command
Check if "-stagingDir" is passed from the command line before trying
to copy files to it.

Pick-to: 6.5
Change-Id: Id39882e4e955bd54328c8e747377b9d49f977378
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-04 13:42:07 +01:00
Alexey Edelev ad7ad62d17 Avoid breaking version script generator state
Pass every line to parseVersionScriptContent to not break the
version script generator state. The parser doesn't collect characters
from comment block, so the line containing the 'ignore-next' ELFVERSION
tag produces empty buffer for the further parsing process. Call the
parseVersionScriptContent function even on empty buffers to make sure
that 'ignore-next' counts lines correcly.

Pick-to: 6.5
Fixes: QTBUG-109790
Change-Id: I5f77893462d397f6738a5da1af6ed8dd8a2df70a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-01-04 13:42:06 +01:00
Alexey Edelev 947dd880cc Replace syncqt arguments with rsp file
syncqt arguments contain full paths and may exceed the supported
command line size on some platforms. Use a single rsp file to pass
all arguments to syncqt.

Added the missing end-of-line terminators for error messages.

Pick-to: 6.5
Change-Id: I60ad0f6770458d5256e67f042a63a3c16cd5ecb5
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-02 23:16:30 +01:00
Alexey Edelev 9c56a77027 Move '--sign' argument to the end of the androiddeployqt command
The '--sign' argument may and may not accept two follow arguments
to specify signing path and alias from the command line. This
functionality breaks the parsing of command line arguments that
follow the '--sign' argument and expect that '--sign' is used with
no follow arguments. It does make sense to check if the arguments
passed after the --sign staring with '--' to make sure that '--sign'
with no arguments is meant to be used.

Pick-to: 6.4 6.5
Fixes: QTBUG-109619
Change-Id: I4ee7fe953e5378c00760d84ec58f9e89e4348944
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2023-01-02 14:50:51 +01:00
Lu YaNing e62a3383fb Clean up unused variables
Amends commit 5bb178c479 and
c8b07f7da3

Change-Id: I709390e52263bf0fadb083d6f2c29562b1877a8b
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-12-22 19:16:03 +08:00
Ahmad Samir 348911a4e7 RCCFileInfo: use QString prepend optimization
Instead of using QStringBuilder (which always allocates a new QString to
hold the result of the concatenation), reuse the existing QString, and
use prepend which will typically have allocated extra space, reducing
the chances it will reallocate.

Change-Id: Ic4ef775246db58e56152a6ede1a75f7621950dd9
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-12-19 20:37:05 +00:00
Marc Mutz b8c2a0c18a QtMiscUtils: add missing toAsciiUpper(), use it in moc
... to make moc code locale-independent.

The C toupper function is locale-dependent. Given the right locale
(Türkiye, e.g.), toupper('i') is either

- İ (LATIN CAPITAL LETTER I WITH DOT ABOVE; if representable) or
- i (unchanged; if it isn't)

Both results are wrong for the present use-case.

Fix by adding QtMiscTools::toAsciiUpper(), complementing existing
toAsciiLower(), and using that. It's private API, but moc.h, despite
the name, is not a public header.

Pick-to: 6.5 6.4 6.2 5.15
Task-number: QTBUG-109235
Change-Id: Iaf071ba2113b672aa0aed3da6a4e1d47fb659365
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-18 12:45:30 +01:00
Ulf Hermann 5a0dcda171 CMake: Allow contents of resources to be replaced by empty files
This makes it possible to process QML files using qmlcachegen, and
retain the file nodes in the resource file system, but remove their
actual content from the binary. To do so, you need to mark your files
with the QT_DISCARD_FILE_CONTENTS source file property.

Fixes: QTBUG-87676
Fixes: QTBUG-103481
Fixes: QTBUG-102024
Fixes: QTBUG-102785
Change-Id: I93d5a2bfca1739ff1e0f74c8082eb8aa451b9815
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2022-12-17 20:43:51 +01:00
David Edmundson c7425aa295 dbus: Fix path to moc file in generated qdbusxml2cpp
qdbusxml2cpp takes a filename to use for generated output. It may be in
the form 'name.cpp' or just 'name'.

For the moc file we need to convert this from a path to a name of a file
in the same relative folder. It's not uncommon for this name to contain
dots as sometimes a dbus interface name is used directly.  For the cases
where a suffix is not provided the whole name should be used.

Pick-to: 6.5
Change-Id: I3bf4ae8b2b9121184c2786009e8b5abcc5e3e410
Reviewed-by: Mate Barany <mate.barany@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-12-16 17:21:57 +00:00
Timothée Keller f8a9047c9c Windeployqt: add missing module and plugin
Added the QtOpcUa module, as well as the relevant opcua plugin

Fixes: QTBUG-109336
Pick-to: 6.4
Change-Id: I5edd886e6224de14cd2b68727655c64514ef5158
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-12-16 18:21:57 +01:00
Timothée Keller 832a337831 Windeployqt: change platform plugin base filter
Add infix to "qwindows" for platform plugin search if it exists, to
account for libinfix builds

Task-number: QTBUG-105820
Pick-to: 6.4
Change-Id: I7a3c671fb6cdb4a216f6f4bffb445add4f8e0c83
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-12-09 16:16:47 +01:00
Edward Welbourne ae6186c7e8 Adapt QTimeZone to handle Qt::TimeSpec machinery
[ChangeLog][QtCore][QTimeZone] QTimeZone is now always defined;
feature timezone now controls most of its prior API and some new API
is added, most of it always present, to enable QTimeZone to package a
Qt::TimeSpec and, for Qt::OffsetFromUTC, its offset. Prior to this
change, APIs using Qt::TimeSpec had to provide a separate function
taking a QTimeZone alongside a function taking a Qt::TimeSpec and
optional offset; it will now be possible to unify these into a single
function taking a QTimeZone. Adaptation of other Qt classes to do so
shall follow.

Task-number: QTBUG-108199
Change-Id: If5ec3cc63920af882ebb333bf69cde266b1f6ad7
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-12-09 16:16:47 +01:00
Timothée Keller 7a4b89fb00 Update list of windeployqt modules
Added Quick-controls,dialogs,layouts,shapes,test,timeline,3d- modules
to the windeployqt module list

Task-number: QTBUG-105135
Pick-to: 6.4
Change-Id: Id5bbaa4b86f1ec9861ee308cec6deff50704c77f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-12-09 02:40:12 +00:00
Øystein Heskestad 3fedcd4e4a Add Boyer-Moore Latin-1 string searcher with optional case sensitivity
[ChangeLog][QtCore][QString] Added Boyer-Moore Latin-1 string searcher with optional case sensitivity

Task-number: QTBUG-100236
Change-Id: I200a0dac7c8012add1ee02511dba791d233115e0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-12-08 17:56:47 +01:00
Timothée Keller bb5d4094e0 Update list of windeployqt modules
Added Positioningquick, Sensorsquick, Webenginequick, and Webviewquick
modules to windeployqt list

Task-number: QTBUG-105135
Pick-to: 6.4
Change-Id: I26c0b5006453c8533ff94967b2e8f03ede88bf7e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-12-08 17:56:47 +01:00
Mårten Nordheim effd3b4d83 macdeployqt: Add networkinformation as plugins to be deployed
This was missed during original patch

Pick-to: 6.4
Fixes: QTBUG-108677
Change-Id: Icd8960f2f41468dc12c3269b12df777acd962753
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2022-12-07 18:31:49 +00:00
Alexey Edelev cff4cde412 Allow 'We mean it.' disclaimer to have follow text
Replace the regex that looks for 'We mean it.' disclaimer with simple
string lookup to allow the disclaimer to have a follow text or be in
the middle of the sentence.

Amends b89d63515b

Task-number: QTBUG-87480
Change-Id: I2a9d7306beb51de62d00b79980a12da6f170df93
Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2022-12-07 14:58:41 +01:00
Timothée Keller 8c33fe9ded Update list of windeployqt modules
Added DBus, StateMachine and 3DLogic modules to windeployqt module list

Task-number: QTBUG-105135
Pick-to: 6.4
Change-Id: Ied8624e87f62bd655db8b82cf9fe20d72873d823
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-12-06 01:19:44 +01:00
Timothée Keller 58861f78c0 Windeployqt: adjust bitset change for scaling
Replaced the ullong with Modulebitsets for when the number of modules
exceeds 64

Pick-to: 6.4
Change-Id: I489d35bc53d6aacf7907f75957bd8c6d21fbeb60
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-12-03 05:45:31 +01:00
Alessandro Portale 724329b79e androiddeployqt: Avoid extra modifying of gradle's *.properties files
On each run of androiddeployqt involving gradle, the "merging" of
gradle's *.properties files inserted empty lines.

Change-Id: I7a8314cd0adf4d85663f17ac22967a08cab42b91
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-12-02 10:34:52 +00:00
Stefan Sichler f60d6f4ffa moc: don't include any std headers before user class headers
don't `#include <memory>` before including the header of the user's
class(es), because the user may want to configure certain aspects of
stl/crt before including any standard headers.

Change-Id: I58f13d3604358221e3375a309eb747efecf3f990
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-11-30 08:34:37 +01:00
Alexey Edelev 5a72b327fd syncqt: Use absolute paths to aliased header files in corner cases
If source and build directories are located on different Windows
disks, or one of them contains a symbolic link in the path,
std::filesystem:relative is unable to calculate the relative path.
So the generated header files contain empty entries. In this cases
use the absolute file paths for include directives in the header file
aliases.

Fixes: QTBUG-108452
Change-Id: Iefc8f0ce2b54dcc31971d4a1944bf7fa55f8164e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-11-29 12:35:40 +01:00
Ulf Hermann 481338751b moc: Output the "cloned" flag for methods
We will need it in QML to determine which signal out of a number of
"overloads" to generate handlers for.

Task-number: QTBUG-108762
Change-Id: Ib73eeb59dbf037bd03faf0d841860d9ebc9e7032
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-11-27 12:47:30 +01:00
Vladimir Belyavsky 5cf72ee6ab macdeployqt: Fix QtMultimedia plugins deployment
It was not updated accordingly after QtMultimedia redesign in Qt 6.
This wasn't a real problem because multimedia plugins were
eliminated in principle. But it was true only until Qt 6.4, where
plugins system for multimedia backends has been reintroduced.

Fixes: QTBUG-108742
Fixes: QTBUG-107057
Pick-to: 6.4
Change-Id: I31be5fc20e5bdf8050c04a30492e80d96eb437fb
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
2022-11-25 06:49:00 +00:00
Timothée Keller 3a967deebd Update windeployqt plugins
Added scxmldatamodel to plugin mappings

Task-number: QTBUG-100700
Pick-to: 6.4
Change-Id: I58af7c0e47d3d9b7fc4d733610dcee8a7cb17228
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-11-19 04:34:36 +01:00
Oliver Wolff ac0cf6a5cc windeployqt: replace enum with bitset
we are running out of enum values for the flags.

Pick-to: 6.4
Change-Id: Idd7cabb0c46c0c95eb4a87d047defb15ddeef024
Reviewed-by: Timothée Keller <timothee.keller@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-11-17 11:10:58 +01:00
Maxime Roussin-Bélanger f0178e83d4 syncqt: remove unnecessary check for not empty string
The previous if checks it.

Change-Id: I03321da3d6886e1788ad48433d451a5cc643f8dd
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2022-11-16 13:05:04 -04:00
Maxime Roussin-Bélanger 65c1b12f9f syncqt: use empty() to check for empty std::string
Change-Id: I5ce11d0440d76aee4b12b9638eff6fa0071bc2b7
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2022-11-16 13:05:04 -04:00
Maxime Roussin-Bélanger d193fcdf0d syncqt: change to const-ref iteration variable in a for-loop
There is no need to copy the string from the container.

Change-Id: Idebe6a40e6f76ea22d8a8dc6d5d65f3fa277b9d9
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2022-11-16 13:05:04 -04:00
Yuhang Zhao bd7fa4a537 Windows: centralize how we handle error messages
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>
2022-11-16 19:44:43 +08:00
Timothée Keller 1498c82073 Update list of windeployqt modules
Added QtMqtt and QtPdf to the windeployqt module list

Task-number: QTBUG-105135
Pick-to: 6.4
Change-Id: Ic8a8a0c157663088341ed5a1a417dcb57a717286
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-11-08 19:44:58 +01:00
Alexey Edelev 10372c074b Make sure that module can be imported by the provided QML import path
When resolving QML module dependencies we scan the produced by the
build system import paths for the required QML modules. Previously the
check in androiddeployqt only was confirming that the required import
starts with the one of import paths. This worked well unless the
required import is nested in higher level import path. In the situation
when we have the following build structure:
  build_dir/
    imports/
       MyModule/
          ...
and both 'build_dir' and 'build_dir/imports' directories are in QML
import paths, the MyModule QML module is resolved by the
'build_dir/imports'. But androiddeployqt assumed that it's found by
'build_dir' import path and copied the whole 'imports' directory as
the 'MyModule' QML module. The resulting bundle then had the
following content:
  qml/
    imports/
      MyModule/
        ...
  ...
instead of the correct one:
  qml/
    MyModule/
      ...
  ...

This checks if import path contains the required url-based module
path before using it as the base directory to copy the module.

Amends 0a73fb10005053945571e6cdb0b03d916715c112

Pick-to: 6.2 6.4
Fixes: QTBUG-108194
Change-Id: I79e1a8a67f62e5ae4a899ba1a4f49ee4ad44ebf9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Dominik Holland <dominik.holland@qt.io>
2022-11-08 14:08:51 +01:00
Timothée Keller cbd688d410 Update list of windeployqt modules
Added QtCharts, QtDataVisualization, QtRemoteObjects, QtScxml, and QtNetworkAuthorization to the windeployqt module list

Task-number: QTBUG-105135
Pick-to: 6.2 6.4
Change-Id: I16f2897583518c4577eeeda2dc0a6f413fef9794
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-11-07 10:47:49 +01:00
Marc Mutz 1c6bf3e09e Port from container::count() and length() to size() - V5
This is a semantic patch using ClangTidyTransformator as in
qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8, but extended to
handle typedefs and accesses through pointers, too:

    const std::string o = "object";

    auto hasTypeIgnoringPointer = [](auto type) { return anyOf(hasType(type), hasType(pointsTo(type))); };

    auto derivedFromAnyOfClasses = [&](ArrayRef<StringRef> classes) {
        auto exprOfDeclaredType = [&](auto decl) {
            return expr(hasTypeIgnoringPointer(hasUnqualifiedDesugaredType(recordType(hasDeclaration(decl))))).bind(o);
        };
        return exprOfDeclaredType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes))));
    };

    auto renameMethod = [&] (ArrayRef<StringRef> classes,
                            StringRef from, StringRef to) {
        return makeRule(cxxMemberCallExpr(on(derivedFromAnyOfClasses(classes)),
                            callee(cxxMethodDecl(hasName(from), parameterCountIs(0)))),
                        changeTo(cat(access(o, cat(to)), "()")),
                        cat("use '", to, "' instead of '", from, "'"));
    };

    renameMethod(<classes>, "count", "size");
    renameMethod(<classes>, "length", "size");

except that the on() matcher has been replaced by one that doesn't
ignoreParens().

a.k.a qt-port-to-std-compatible-api V5 with config Scope: 'Container'.

Added two NOLINTNEXTLINEs in tst_qbitarray and tst_qcontiguouscache,
to avoid porting calls that explicitly test count().

Change-Id: Icfb8808c2ff4a30187e9935a51cad26987451c22
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-11-03 14:59:24 +01:00
Alexey Edelev b813a5b120 Remove the special handling of the qml directory when parsing xml deps
The 'qml-root-path' option is not mandatory to have value when using
CMake, even if Qml/Quick is used in the project. This happens when
the project doesn't use .qml files. In this case the 'qml' directory
from Qt6Quick_<abi>-android-dependencies.xml is treated as a normal
folder for scanning and androiddeployqt deploys all the QML plugins
with their dependencies.

It looks like the 'qml' directory was added to bundled file in times
when qmlimportscanner was not implemented, so the need of its use is
redundant. This removes both adding the 'qml' directory as the bundled
dependency and the special case that avoids its scanning. This fix is
applicable for both CMake and qmake.

Amends 54c959643e

Task-number: QTBUG-106035
Task-number: QTBUG-107589
Change-Id: Idd55617b8ca8ab1d210cce737548ee486ea94986
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2022-11-03 09:16:42 +01:00
Alexey Edelev 769a28242e androiddeployqt: Add the missing return value check
The check doesn't affect the flow, since the same check fails the
androiddeployqt execution later, when resolving all elf dependencies.
Skipping the dependency from xml at earlier stage will allow to continue
deployment procedure, without the missing plugins and their dependencies.

Amends 54c959643e

Task-number: QTBUG-106035
Task-number: QTBUG-107589
Change-Id: Ic3d38e05f8ad283244c87858fee29d1035a0da15
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-11-03 09:16:04 +01:00
Ville Voutilainen b82c5f9b7f Android: Fix signing of APKs that are generated when an AAB is also built
To simplify matters, this removes the support for signing APKs with
just jarsigner. apksigner is always used for APKs, and jarsigner is
used for AABs. I consider that to be just fine, you _have_ to start
using apksigner eventually, and the time for that is long past.

Pick-to: 6.4 6.2 5.15
Task-number: QTBUG-91255
Change-Id: I211ae796db0f2619265deb1f30ab3cc5d1ecfbc9
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-11-02 13:32:37 +02:00
Alexey Edelev 720d5cc1a4 Add flag that skips Qml import scanning to android deployment settings
If Qml module is not found it doesn't make sense to run any
functionality that is related to Qml inside androiddeployqt. Add the
deployment setting option that indicates this explicitly and set it
to true when Qml module is not found by CMake or by qmake.

Task-number: QTBUG-106939
Pick-to: 6.4 6.2
Change-Id: I1e6cffbdd230007feffe7448617097c10238a6c9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-10-31 15:39:14 +02:00
Timothée Keller 61a4880cb3 Windeployqt command line module expansion
Added command line option for passing core5compat module in windeployqt

Task-number: QTBUG-104845
Pick-to: 6.2 6.4
Change-Id: I6a0e13532edac4580e03d83be79f7db4ac54e3bf
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2022-10-27 19:34:58 +02:00