Date: Wed, 18 Nov 2009 13:41:58 -0200 From: "Carlos A. M. dos Santos" <unixmania@gmail.com> To: Robert Noland <rnoland@freebsd.org> Cc: freebsd-x11@freebsd.org Subject: Re: ports/137373: x11/libX11: make dependance on x11/libxcb Message-ID: <e71790db0911180741o6647808byafeb33673293f224@mail.gmail.com> In-Reply-To: <1258552054.2303.72.camel@balrog.2hip.net> References: <200911170210.nAH2A3B2089193@freefall.freebsd.org> <1258477653.2303.48.camel@balrog.2hip.net> <e71790db0911171222s36b7e414gc0d1e9b0bd2cff64@mail.gmail.com> <19203.4505.30354.388990@gromit.timing.com> <e71790db0911171650x46c43427u84d9016fb03c2fef@mail.gmail.com> <1258552054.2303.72.camel@balrog.2hip.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Nov 18, 2009 at 11:47 AM, Robert Noland <rnoland@freebsd.org> wrote= : > On Tue, 2009-11-17 at 22:50 -0200, Carlos A. M. dos Santos wrote: >> On Tue, Nov 17, 2009 at 7:11 PM, John Hein <jhein@symmetricom.com> wrote= : >> > Carlos A. M. dos Santos wrote at 18:22 -0200 on Nov 17, 2009: >> > =A0> On Tue, Nov 17, 2009 at 3:07 PM, Robert Noland <rnoland@freebsd.o= rg> wrote: >> > =A0> > There is a pretty fair risk of breaking several other ports wit= h this. >> > =A0> > Other ports that also expect xcb to be present would need to be= modified >> > =A0> > to either have xcb disabled or fail if libX11 does not have the= needed >> > =A0> > functionality. >> > =A0> >> > =A0> That's exactly why I made it optional, default on, keeping the >> > =A0> default behavior. >> > >> > I think that what Robert may be saying is that even if it's default is >> > 'on', people will turn it off, and we might see lots of questions >> > about why this port or that port isn't working. >> >> If such reasoning had any value then you should start removing all the >> options on all ports right now. Run! >> >> > Maybe you can investigate a few ports that may need the xcb-ness >> > of libX11 and see what it takes to make them work in an xcb-free >> > flavor of libX11 (or hint at build time that they won't work >> > if libX11 doesn't have xcb). >> >> Ports that explicitly require xcb must do it via *DEPENDS in their >> respective makefiles, not by means of some under-the-hood dependency >> via libX11, which is an error. > > The issue I believe is that xcb is special... Ports which depend on xcb > do have options and/or dependencies on xcb, however I don't think that > is sufficient WRT libX11. =A0i.e. if you build a port with xcb enabled, > but libX11 was built without, I think you may be in for trouble. In this case something is already broken, either libX11, the application, or both. Building libX11 with xcb means that the Xlib API is implemented as wrappers around xcb calls instead of the original Xlib internals and X protocol requests. One can argue that building libX11 without xcb could result on ABI breakage but this would be a bug in libX11 that ought to be fixed. > I might be incorrect here, but I would like to see an EXP run proving it. > Preferably with some actual run-time testing as well. I have been running XFce, Firefox, Seamonkey and dozens of X applications for *months* without any issue. Most of those applications were written years before it started to depend on xcb. In fact, most of the X apps and the libraries they require were written years before xcb started to exist! >> > The alternative is to commit this change and just see what breaks. >> >> Ports that break are already broken and must be fixed. Of course we >> can pretend they are not broken and keep going, but that would be a >> shame. >> >> > But doing a little investigation ahead of time to give us a heads up >> > about what to expect would be useful. >> >> Simply put, turn off the dependency of libX11 on libxcb. Then mark >> libxb as FORBIDDEN and rebuild all packages that depend on libX11. Any >> port whose build breaks is ... well, broken. > > If xcb is disabled for everything, then it will be fine. I'm not proposing this, except as an investigation approach. >=A0My concern is for cases where libX11 doesn't have xcb enabled and > later a user installs a port that does have xcb enabled. You are missing the point. Applications that require libX11 rely on the *Xlib* API, not on the xcb API. So libX11 just - optionally - uses the xcb API, without exposing or extending it. I'd like to emphasize that this is *optional*. That's why the configuration script provides the "--without-xcb" option at all! --=20 My preferred quotation of Robert Louis Stevenson is "You cannot make an omelette without breaking eggs". Not because I like the omelettes, but because I like the sound of eggs being broken.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e71790db0911180741o6647808byafeb33673293f224>