[opensuse-factory] Re: Dependencies of python3-qt5-devel, hplip build failures for ppc64 and armv7l
Hi, Am Dienstag, 27. August 2019, 13:21:46 CEST schrieb Martin Wilck:
Hi,
the hplip build fails on openSUSE:Factory:PowerPC because of the following dependency change:
hplip (buildreq) -> python3-qt5-devel -> libqt5-qttools-devel -> libqt5-qttools-doc -> clang = 8.0.0
... because clang is unavailable on ppc64.
clang = 8.0.0 is not available as it's at version 8.0.1 meanwhile.
Likewise, the following chain breaks the build on armv7l:
hplip (buildreq) -> python3-qt5-devel -> libqt5-qtwebengine-devel -> libavcodec58 -> libdav1d.so.1
It seems that I can fix my build using #!BuildIgnore. Yet I'd like to question whether these are really hard dependencies. Is it reasonable to require libavcodec to be installed in order to compile for Qt5?
Not a python3-qt or even Qt issue - ffmpeg is not installable. Both of those issues seem to be caused by not completely built projects, which can happen for ports as they don't have a separate /snapshots repository with consistent packges. So just be patient, it should resolve itself. Cheers, Fabian
Regards, Martin
-- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On Tue, 2019-08-27 at 14:56 +0200, Fabian Vogt wrote:
Both of those issues seem to be caused by not completely built projects, which can happen for ports as they don't have a separate /snapshots repository with consistent packges. So just be patient, it should resolve itself.
I figured this myself in the meantime, although I think there is an actual problem with libqt5-qttools (boo#1148374). But the general point I was trying to make is different. Quite obviously, it's not necessary to have libavcodec58 installed in order to build hplip. So something is wrong with the dependency chain that implies this requirement. I understand that the *run-time* dependency of qtwebkit on libavcodec makes sense, but in the build system it's different. We need to make a better distinction between run-time and build-time dependencies, so that during build we pull only those dependencies that are really required for building. We mostly create "Requires:" dependencies from the end-user point of view (e.g. user needs audio support when surfing the web, as simotek argued). For the build system, that may lead to exaggerated dependencies. So we'd need something like "Requires(runtimeonly): ...". Fixing this would fix bogus build failures like the ones I reported, and possibly also speed up builds. Cheers, Martin N�����r��y隊Z)z{.���r�+�맲��r��z�^�ˬz��N�(�֜��^� ޭ隊Z)z{.���r�+��0�����Ǩ�
Hi, Am Dienstag, 27. August 2019, 16:19:10 CEST schrieb Martin Wilck:
On Tue, 2019-08-27 at 14:56 +0200, Fabian Vogt wrote:
Both of those issues seem to be caused by not completely built projects, which can happen for ports as they don't have a separate /snapshots repository with consistent packges. So just be patient, it should resolve itself.
I figured this myself in the meantime, although I think there is an actual problem with libqt5-qttools (boo#1148374).
But the general point I was trying to make is different. Quite obviously, it's not necessary to have libavcodec58 installed in order to build hplip. So something is wrong with the dependency chain that implies this requirement. I understand that the *run-time* dependency of qtwebkit on libavcodec makes sense, but in the build system it's different.
For python-qt5 it's actually easier to resolve, the various Qt modules are also in separate files in python-qt5, so can be split in there. It would mean looking at all packages requiring python-qt5 and adjusting their deps though.
We need to make a better distinction between run-time and build-time dependencies, so that during build we pull only those dependencies that are really required for building. We mostly create "Requires:" dependencies from the end-user point of view (e.g. user needs audio support when surfing the web, as simotek argued). For the build system, that may lead to exaggerated dependencies. So we'd need something like "Requires(runtimeonly): ...".
All %{name}-devel packages usually require %{name}, so runtime deps are pulled in as dependencies of buildtime deps. In the hplip case you might get away with just not BuildRequiring python3-qt5. Cheers, Fabian
Fixing this would fix bogus build failures like the ones I reported, and possibly also speed up builds.
Cheers, Martin
-- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On Tue, 2019-08-27 at 16:43 +0200, Fabian Vogt wrote:
We need to make a better distinction between run-time and build- time dependencies, so that during build we pull only those dependencies that are really required for building. We mostly create "Requires:" dependencies from the end-user point of view (e.g. user needs audio support when surfing the web, as simotek argued). For the build system, that may lead to exaggerated dependencies. So we'd need something like "Requires(runtimeonly): ...".
All %{name}-devel packages usually require %{name}, so runtime deps are pulled in as dependencies of buildtime deps.
Yes, and this quasi-automatism is perhaps part of the problem? Is it really always necessary that %{name}-devel depends on %{name}?
In the hplip case you might get away with just not BuildRequiring python3-qt5.
No, that doesn't work. "configure" fails already in the compiler test. Thanks, Martin N�����r��y隊Z)z{.���r�+�맲��r��z�^�ˬz��N�(�֜��^� ޭ隊Z)z{.���r�+��0�����Ǩ�
On 8/28/19 5:50 AM, Martin Wilck wrote:
On Tue, 2019-08-27 at 16:43 +0200, Fabian Vogt wrote:
We need to make a better distinction between run-time and build- time dependencies, so that during build we pull only those dependencies that are really required for building. We mostly create "Requires:" dependencies from the end-user point of view (e.g. user needs audio support when surfing the web, as simotek argued). For the build system, that may lead to exaggerated dependencies. So we'd need something like "Requires(runtimeonly): ...".
All %{name}-devel packages usually require %{name}, so runtime deps are pulled in as dependencies of buildtime deps.
Yes, and this quasi-automatism is perhaps part of the problem? Is it really always necessary that %{name}-devel depends on %{name}?
In C/C++ packages generally its necessary for %{name}-devel to at least require lib%{name} for linking, in the case of python it may not be necessary, however many python packages (and other libraries) provide some unit testing that gets run in the %check stage, to run the unit tests it is likely that many of the %name packages will be required alongside the %name-devel packages. python-qt5 is probably a case where no other packages using python-qt5-devel will be running unit checks that require %name-devel, however, many using UI forms may require libqt5-qttools which requires much of Qt but not webengine. More generally dropping Requires: ${name} from %{name}-devel broadly will probably break a bunch of things, but would also make builds more efficient. -- Simon Lees (Simotek) http://simotek.net Emergency Update Team keybase.io/simotek SUSE Linux Adelaide Australia, UTC+10:30 GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On Aug 28 2019, Simon Lees <sflees@suse.de> wrote:
More generally dropping Requires: ${name} from %{name}-devel broadly will probably break a bunch of things, but would also make builds more efficient.
The devel package usually only contains *.so symlinks, which are unusable without the actual files. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On 8/28/19 5:13 PM, Andreas Schwab wrote:
On Aug 28 2019, Simon Lees <sflees@suse.de> wrote:
More generally dropping Requires: ${name} from %{name}-devel broadly will probably break a bunch of things, but would also make builds more efficient.
The devel package usually only contains *.so symlinks, which are unusable without the actual files.
In the case of C / C++ yes, but other languages are different. -- Simon Lees (Simotek) http://simotek.net Emergency Update Team keybase.io/simotek SUSE Linux Adelaide Australia, UTC+10:30 GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
participants (4)
-
Andreas Schwab
-
Fabian Vogt
-
Martin Wilck
-
Simon Lees