#37 QML RPM dependency generator
Opened 3 years ago by ngompa. Modified 6 months ago

Right now, we currently have to manually specify dependencies for QML modules. This is increasingly problematic as KDE Plasma increasingly uses QML for applications.

It should be possible for us to auto-detect QML modules being provided and used and generate dependencies accordingly.


This will require a Change proposal to introduce, since we need it to be in effect before mass rebuild.

Metadata Update from @ngompa:
- Issue set to the milestone: Fedora 35 (was: Fedora 34)

3 years ago

This is being deferred to F36...

Metadata Update from @ngompa:
- Issue set to the milestone: Fedora Linux 36 (was: Fedora 35)

2 years ago

Metadata Update from @siosm:
- Issue tagged with: packaging

2 years ago

F36 is mighty close. I'm assuming there's no progress here so it will need to be deferred to F37?

Metadata Update from @ngompa:
- Issue set to the milestone: Fedora Linux 37 (was: Fedora Linux 36)

2 years ago

Metadata Update from @siosm:
- Issue untagged with: packaging

2 years ago

Metadata Update from @siosm:
- Issue tagged with: packaging

2 years ago

Metadata Update from @ngompa:
- Issue set to the milestone: Future Release (was: Fedora Linux 37)

a year ago

Generating Provides seems straight-forward, but detecting Requires seems a lot trickier, since in many cases the QML sources are embedded as Qt Resources.

Generating Provides seems straight-forward, but detecting Requires seems a lot trickier, since in many cases the QML sources are embedded as Qt Resources.

This one Rex posted above might help. I know bash but this seems above my understanding as it dives into the libraries https://build.opensuse.org/package/view_file/openSUSE:Factory/qml-autoreqprov/qmldirreqprov.sh?expand=1

I've come back around to this issue after a recent discussion and found that the files module names are easy to determine and should be able to be extracted when built or via some macro for KDE packages.

So this macro would look for files in /usr/lib64/qt5/qml/org/kde called qmldir. It would then read those files and extract anything that begins with the word module and say that this package provides that module (or modules).

For example:

/usr/lib64/qt5/qml/org/kde/activities/qmldir
# This file was automatically generated by ECMQmlModule and should not be modified
module org.kde.activities

How does the automatic provides system work? e.g. if during the rpm build the system notices it has a .cmake file, then it sets somewhere that users can install it using dnf install 'cmake(blah)'. We should be able to adapt this system to also include QML modules. Can anyone point me to where that's done?

Automatic provides generation is merged and building for Rawhide now: https://koji.fedoraproject.org/koji/buildinfo?buildID=2337587

I'm keeping this ticket open for us to figure out requires generation for non-compiled QML.

Log in to comment on this ticket.

Metadata
Boards 1
Packaging Status: Triaged