Bug 1217776

Summary: rpm-build pulling Qt6 dependency without need
Product: [openSUSE] openSUSE Tumbleweed Reporter: Marcus Rückert <mrueckert>
Component: KDE Workspace (Plasma)Assignee: E-Mail List <opensuse-kde-bugs>
Status: REOPENED --- QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: fvogt, kocelfc
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: Other   
See Also: https://bugzilla.opensuse.org/show_bug.cgi?id=1224157
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Marcus Rückert 2023-12-04 14:43:13 UTC
```
zypper in obs-service-source_validator
Loading repository data...
Reading installed packages...
[TechPreview] $ZYPP_SINGLE_RPMTRANS=1 : New rpm install backend is enabled
              If you find any bugs or issues please let us know:
              https://bugzilla.opensuse.org/
              Component: libzypp (or zypper)
              And please attach the /var/log/zypper.log to the bug report.
Resolving package dependencies...

The following 15 NEW packages are going to be installed:
  gcc13-c++ gcc-c++ libqt5-qtdeclarative-tools libQt6JsonRpc6 libQt6LanguageServer6 libQt6QmlCompiler6 libstdc++6-devel-gcc13 obs-service-source_validator python-rpm-packaging qml-autoreqprov qt6-base-common-devel qt6-declarative-tools qt6-macros rpm-build rpm-build-perl

15 new packages to install.
Overall download size: 29,6 MiB. Already cached: 0 B. After the operation, additional 107,8 MiB will be used.
```

I tracked this down to `zypper in rpm-build`
which then triggers:

```
rpm -q --requires libQt6Qml6
(qml-autoreqprov if rpm-build)
```

on some Qt devel package I could understand a dependency like this. but for a library package this feels excessive. source_validator/rpmbuild should not build  a Qt6 devel stack.
Comment 1 Fabian Vogt 2023-12-05 08:21:48 UTC
This is intentional. Any package shipping .qml files needs the .qml dependency generator in qml-autoreqprov, but not all such applications pull in QML -devel packages (at least for Qt 5 there were such cases, not sure for Qt 6). It might be possible to slim this down a bit, but not completely.
Comment 2 Marcus Rückert 2023-12-05 15:29:03 UTC
this seems completely backwards. making rpm-build pull in the whole Qt devel stack is wrong. fix some Qt core devel package to pull the dependency generator. but not have rpmbuild be the trigger.

something like

`(qml-autoreqprov if libQt6Core-devel)` or so would be way better.
Comment 3 Fabian Vogt 2023-12-05 15:36:39 UTC
See comment 1:

(In reply to Fabian Vogt from comment #1)
> not all such applications pull in QML -devel packages (at least for Qt 5 there were such cases, not sure
> for Qt 6)
Comment 4 Marcus Rückert 2023-12-05 15:41:11 UTC
I am specifically not talking about the QML devel package but a Qt core package.

if python bindings or so are a problem then let those packages also pull the generator ... but not every dev who uses some Qt apps and needs source validator should have to install qt devel packages.
Comment 5 Marcus Rückert 2023-12-05 15:42:46 UTC
the alternative would be an rpmlint check similar to the one we just did for "symlinked scripts in /usr/bin" ... check if a package has QML files and the correct requires. if not error out with "please add a BuildRequires for qml-autoreqprov"
Comment 6 Fabian Vogt 2023-12-05 15:56:26 UTC
(In reply to Marcus Rückert from comment #4)
> I am specifically not talking about the QML devel package but a Qt core
> package.
> 
> if python bindings or so are a problem then let those packages also pull the
> generator ... but not every dev who uses some Qt apps and needs source
> validator should have to install qt devel packages.

qtpaths6 could be moved to some other package or the path hardcoded in qml-autoreqprov, then qt6-base-common-devel would no longer be necessary.
Comment 7 Marcus Rückert 2023-12-15 17:58:46 UTC
submitted fixes to both qt5 and qt6 to remove this dependency.
Comment 8 Kostadin Shishmanov 2024-05-13 10:55:25 UTC
*** Bug 1224157 has been marked as a duplicate of this bug. ***
Comment 9 Kostadin Shishmanov 2024-05-13 10:56:20 UTC
Still reproducible, here is the full list of things it wants to pull in:

binutils cmake cmake-full debugedit dwz gcc gcc13 gcc13-c++ gcc-c++ gettext-tools glibc-devel jq libasan8 libctf0 libctf-nobfd0 libhwasan0 libitm1 libjq1 libjsoncpp25 liblsan0 libonig5 libqt5-qtdeclarative-tools libQt6JsonRpc6 libQt6LanguageServer6 libQt6QmlCompiler6 librhash1 librpmbuild10 libstdc++6-devel-gcc13 libtsan2 libxcrypt-devel linux-glibc-devel make ninja patch python311-packaging python-rpm-macros python-rpm-packaging qml-autoreqprov qt6-base-common-devel qt6-declarative-tools qt6-macros rpm-build rpm-build-perl
Comment 10 Fabian Vogt 2024-05-13 11:03:18 UTC
(In reply to Kostadin Shishmanov from comment #9)
> Still reproducible, here is the full list of things it wants to pull in:
> 
> binutils cmake cmake-full debugedit dwz gcc gcc13 gcc13-c++ gcc-c++
> gettext-tools glibc-devel jq libasan8 libctf0 libctf-nobfd0 libhwasan0
> libitm1 libjq1 libjsoncpp25 liblsan0 libonig5 libqt5-qtdeclarative-tools
> libQt6JsonRpc6 libQt6LanguageServer6 libQt6QmlCompiler6 librhash1
> librpmbuild10 libstdc++6-devel-gcc13 libtsan2 libxcrypt-devel
> linux-glibc-devel make ninja patch python311-packaging python-rpm-macros
> python-rpm-packaging qml-autoreqprov qt6-base-common-devel
> qt6-declarative-tools qt6-macros rpm-build rpm-build-perl

Most of those are just rpm-build and its deps, unrelated to this. The bug report you linked is about opi, it should not pull in rpm-build.
Comment 11 Kostadin Shishmanov 2024-05-13 11:09:52 UTC
(In reply to Fabian Vogt from comment #10)
> (In reply to Kostadin Shishmanov from comment #9)
> > Still reproducible, here is the full list of things it wants to pull in:
> > 
> > binutils cmake cmake-full debugedit dwz gcc gcc13 gcc13-c++ gcc-c++
> > gettext-tools glibc-devel jq libasan8 libctf0 libctf-nobfd0 libhwasan0
> > libitm1 libjq1 libjsoncpp25 liblsan0 libonig5 libqt5-qtdeclarative-tools
> > libQt6JsonRpc6 libQt6LanguageServer6 libQt6QmlCompiler6 librhash1
> > librpmbuild10 libstdc++6-devel-gcc13 libtsan2 libxcrypt-devel
> > linux-glibc-devel make ninja patch python311-packaging python-rpm-macros
> > python-rpm-packaging qml-autoreqprov qt6-base-common-devel
> > qt6-declarative-tools qt6-macros rpm-build rpm-build-perl
> 
> Most of those are just rpm-build and its deps, unrelated to this. The bug
> report you linked is about opi, it should not pull in rpm-build.

It's listed as a dependency as you can see on line 47 here: https://build.opensuse.org/projects/utilities/packages/opi/files/opi.spec
Comment 12 Fabian Vogt 2024-05-13 11:14:33 UTC
(In reply to Kostadin Shishmanov from comment #11)
> (In reply to Fabian Vogt from comment #10)
> > (In reply to Kostadin Shishmanov from comment #9)
> > > Still reproducible, here is the full list of things it wants to pull in:
> > > 
> > > binutils cmake cmake-full debugedit dwz gcc gcc13 gcc13-c++ gcc-c++
> > > gettext-tools glibc-devel jq libasan8 libctf0 libctf-nobfd0 libhwasan0
> > > libitm1 libjq1 libjsoncpp25 liblsan0 libonig5 libqt5-qtdeclarative-tools
> > > libQt6JsonRpc6 libQt6LanguageServer6 libQt6QmlCompiler6 librhash1
> > > librpmbuild10 libstdc++6-devel-gcc13 libtsan2 libxcrypt-devel
> > > linux-glibc-devel make ninja patch python311-packaging python-rpm-macros
> > > python-rpm-packaging qml-autoreqprov qt6-base-common-devel
> > > qt6-declarative-tools qt6-macros rpm-build rpm-build-perl
> > 
> > Most of those are just rpm-build and its deps, unrelated to this. The bug
> > report you linked is about opi, it should not pull in rpm-build.
> 
> It's listed as a dependency as you can see on line 47 here:
> https://build.opensuse.org/projects/utilities/packages/opi/files/opi.spec

Apparently it's optional and unlikely to be used, so it could be changed. You can reassign bug 1224157 to opi.