|Summary:||x11-libs/qt-webkit should not always require dev-libs/icu|
|Product:||Gentoo Linux||Reporter:||Alec Meyers <alecm_88>|
|Component:||[OLD] Library||Assignee:||Qt Bug Alias <qt>|
|Severity:||enhancement||CC:||alecm_88, daniele.segato, dschridde+gentoobugs|
|Package list:||Runtime testing required:||---|
Description Alec Meyers 2012-04-07 00:02:31 UTC
Bug 407315 added the icu dependency because it breaks build of qt-webkit[gstreamer] when libxml[icu] is installed. I don't have gstreamer or icu installed, so I don't understand why I would need to build with icu. icu is an annoying dependency because it breaks ABI every update, which means I have to rebuild qt-webkit more often than needed (and it takes a long time) I edited the ebuild to remove the icu dependency, and qt-webkit builds perfectly fine for me. Reproducible: Always
Comment 1 Davide Pesavento 2012-04-07 15:11:19 UTC
Now that qt-webkit-4.8.1 is EAPI 4, we can add USE=icu and REQUIRED_USE="gstreamer? ( icu )". Alternatively, we can block libxml2[icu] if USE=gstreamer is enabled. I prefer the first solution.
Comment 2 Alec Meyers 2012-04-10 20:56:53 UTC
For me, it doesn't matter since I don't use gstreamer. But the the first seems better to me too, since icu is a build-time option, and blocking can cause people pain (in case they need libxml[icu]) But, it I understand the problem correctly, the problem is mismatching icu support in qt-webkit and libxml2, right? Since gstreamer depends on libxml, could you do something like: gstreamer? ( dev-libs/libxml2[=icu] ) so that you can have either both with icu or both without icu? That would help people who use gstreamer to get away without icu.
Comment 3 Davide Pesavento 2012-04-10 21:24:40 UTC
(In reply to comment #2) > Since gstreamer depends on libxml, could you do something like: > > gstreamer? ( dev-libs/libxml2[=icu] ) > > so that you can have either both with icu or both without icu? That would > help people who use gstreamer to get away without icu. No, that would be incorrect, because qt-webkit does _not_ depend on libxml2. That's why I suggested a blocker instead of a dependency.
Comment 4 Alec Meyers 2012-04-10 22:17:39 UTC
But if it depends on gstreamer, and gstreamer depends on libxml2, you have libxml2 installed either way. (And if gstreamer didn't depend on libxml2, then there wouldn't be a problem, right?) Maybe there's some rule about it, but from a practical standpoint, I don't see a way this could cause any undesired side-effect. And again, for me personally, it does not matter as long as icu is not pulled in if I don't use gstreamer :)
Comment 5 Davide Pesavento 2012-04-10 22:57:25 UTC
Indirect dependencies are irrelevant. DEPEND and RDEPEND should list only _direct_ dependencies, the transitive closure is then automatically computed by the package manager. Hypothetically, if gstreamer removed its libxml2 dependency, you would be able to build qt-webkit without having libxml2 installed. Thus adding the dependency would be wrong.
Comment 6 Alec Meyers 2012-04-10 23:35:48 UTC
If the libxml2 dependency were removed you could also build qt-webkit with or without icu, since libxml2's header will not get pulled in through gstreamer's, and there won't be a conflicting declaration. But I don't intend to argue - just giving ideas. If you choose either of the solutions in Comment 1, I'll be perfectly satisfied too :)
Comment 7 Davide Pesavento 2012-04-12 17:14:32 UTC
(In reply to comment #1) > Now that qt-webkit-4.8.1 is EAPI 4, we can add USE=icu and > REQUIRED_USE="gstreamer? ( icu )". > This is now implemented. Closing.
Comment 8 Alec Meyers 2012-04-14 18:48:50 UTC
Thanks a lot, Davide!
Comment 9 ta2002 2012-05-20 06:45:10 UTC
(In reply to comment #3) > (In reply to comment #2) > > Since gstreamer depends on libxml, could you do something like: > > > > gstreamer? ( dev-libs/libxml2[=icu] ) > > > > so that you can have either both with icu or both without icu? That would > > help people who use gstreamer to get away without icu. > > No, that would be incorrect, because qt-webkit does _not_ depend on libxml2. > That's why I suggested a blocker instead of a dependency. Yes, but libxml2 with the icu USE flag is what breaks qt-webkit. I don't like the solution at all, especially since the goal of many is to keep icu OFF OF THE SYSTEM. I don't expect my gripe to change anything, especially since gentoo makes it relatively easy to overcome poor decisions such as this, which means I now have another package in /usr/local/portage. But for anyone else who comes across this bug and wants an alternative solution, I recommend (I believe this is more correct logic than that offered in comment 2) changing the lines (really only adding the dev-libs/libxml2 line and commenting out the REQUIRED_USE="gstreamer? ( icu )" line) in the qt-webkit ebuild to: gstreamer? ( dev-libs/glib:2 media-libs/gstreamer:0.10 media-libs/gst-plugins-base:0.10 dev-libs/libxml2[!icu?] )
Comment 10 Markos Chandras (RETIRED) 2012-05-20 08:26:48 UTC
Even though I dont like your attitude, lets reopen this bug for further examination
Comment 11 Davide Pesavento 2012-05-21 14:49:39 UTC
REQUIRED_USE is gone from qt-webkit-4.8.9999 (in qt overlay). In its place I added a blocker on libxml2[icu] when icu USE flag is disabled. This change will be applied to the tree on the next version bump (4.8.2), due tomorrow.
Comment 12 Davide Pesavento 2012-05-22 21:52:21 UTC
Fixed (again) in qt-webkit-4.8.2
Comment 13 Daniele Segato 2012-06-09 16:40:27 UTC
It's been a while now I'm having pain upgrading my system about this icu, libxml2 and qt-webkit. I didn't even heard about icu before that causing me issue with upgrading the system. This time again, because qt-webkit-3.8.2 is blocking libxml2 which is required by lot of other packages.... Can someone nicely explain me what's going on? why libxml2 cause issues to qt-webkit, is blocking really the only option? no intention of bothering here, I really just want to understand thanks.
Comment 14 Davide Pesavento 2012-06-09 19:15:26 UTC
(In reply to comment #13) > This time again, because qt-webkit-3.8.2 is blocking libxml2 which is > required by lot of other packages.... > No, qt-webkit blocks libxml2[icu] only, i.e. libxml2 compiled with "icu" USE flag *enabled*. To solve the blocker, you just have to emerge libxml2 with USE="-icu". > Can someone nicely explain me what's going on? > > why libxml2 cause issues to qt-webkit, is blocking really the only option? > no intention of bothering here, I really just want to understand > Please see bug 407315 for the reason behind the blocker.
Comment 15 Daniele Segato 2012-06-09 19:22:03 UTC
That "simple" thing is not possible for me because chromium require libxml2[icu] as dependency and chromium is used by lot of peoples so I wonder, is there any other way but blocking it?
Comment 16 Alec Meyers 2012-06-09 19:31:05 UTC
Your other option is building qt-webkit with icu support :)
Comment 17 Davide Pesavento 2012-06-09 19:47:45 UTC
(In reply to comment #15) > That "simple" thing is not possible for me because chromium require > libxml2[icu] as dependency > > and chromium is used by lot of peoples > > so I wonder, is there any other way but blocking it? As I said, have a look at bug 407315: qt-webkit[gstreamer,-icu] *will* fail to build against libxml2[icu]. There's nothing we can do about it. Complain upstream. If you need libxml2[icu] for chromium, other possible workarounds are: 1) enable icu USE flag for qt-webkit (as suggested by Alec) 2) disable gstreamer USE flag for qt-webkit (but you'll lose HTML5 audio/video support) Your choice.
Comment 18 Daniele Segato 2012-06-09 20:19:22 UTC
Building qt-webkit with icu support is perfectly fine to me, thanks