Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 411091

Summary: x11-libs/qt-webkit should not always require dev-libs/icu
Product: Gentoo Linux Reporter: Alec Meyers <alecm_88>
Component: [OLD] LibraryAssignee: Qt Bug Alias <qt>
Status: RESOLVED FIXED    
Severity: enhancement CC: alecm_88, daniele.segato, dschridde+gentoobugs
Priority: Low    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
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 gentoo-dev 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 gentoo-dev 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 gentoo-dev 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 gentoo-dev 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) gentoo-dev 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 gentoo-dev 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 gentoo-dev 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 gentoo-dev 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 gentoo-dev 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