Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-84286

Fix dependencies.json files

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Done
    • Affects Version/s: 5.15.0 RC2
    • Fix Version/s: 6.0.0
    • Component/s: QML: Tooling

      Description

      qmltypes files have a "dependencies" entry where modules are listed of which the types are included by "cross-registration". "cross-registration" is the process of registering the types of a different module into the module that depends on them. For example, QtObject and other QtQml types are registered into QtQuick even though they clearly belong to QtQml. qmlplugindump analyzes the dependencies by loading both modules and subsequently comparing the list of types available. Types available from both modules are excluded from the module containing the dependencies entries. For example, many modules depend on QtQuick. Therefore, the QtQuick.Controls qmltypes file does not list Item etc. We did not properly state the dependency between QtQuick and QtQml before 5.15. Therefore, all the QtQml types were listed twice, once in QtQml's qmltypes and once in QtQuick's qmltypes.

      With 5.15 we generate the qmltypes files not by loading the plugins, but by analyzing the QML_ELEMENT and similar macros. We therefore cannot list types that don't belong to the same module. This is why the QtQml types have disappeared from the QtQuick qmltypes file.

      To fix this, the dependencies have to be amended, so that Qt Creator knows that the QtQml types are in fact available from QtQuick. There are probably more cases like this.

      In Qt 6, we use an entirely different approach to dependencies between modules. Instead of registering types multiple times, we let the engine actually load the dependent module. In Qt 6, the QtQml types are actually only available in QtQml, and QtQuick's qmldir file has a line "import QtQml" that instructs the engine to load QtQml whenever QtQuick is loaded. Therefore, we need to drop all the dependencies for all modules that have been cleaned up this way in Qt 6.

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              Assignee:
              ulherman Ulf Hermann
              Reporter:
              ulherman Ulf Hermann
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes