Subject: need advice for integrating modular Xorg libraries and headers
To: None <pkgsrc-users@NetBSD.org>
From: Jeremy C. Reed <reed@reedmedia.net>
List: pkgsrc-users
Date: 04/15/2006 21:56:48
Please share you suggestions and advice for importing some modular Xorg
components.
I have been slowly working on packaging up many modular Xorg packages for
several months now. On some of my Linux, DragonFly and NetBSD systems I
use them a lot. I have been using many of these components for around 6
months and more (since I also have been using libX11 and et cetera from
xlibs for a lot longer).
A few times I have asked some about this, but received little feedback.
Here's the background:
A few of our essential packages are based on sources that get no more
maintenance. They were from the freedesktop.org xlibs project which was
mostly just a testing place.
But now, many softwares are requiring the features, headers and libraries
provided from these dead packages.
This list includes our:
x11/compositeext
x11/xextensions
x11/renderext
x11/randrext
x11/fixesext
x11/Xrandr
x11/Xrender
x11/Xcomposite
x11/Xfixes
x11/xcursor
fonts/Xft2
Newer maintained versions of these are available (from I think the same
developers) in the modular X.org project. (They have slightly different
package names, but basically same, but updated, results).
Also related to this is graphics/xpm -- its upstream hasn't been updated
for years. Modular X.org also has a maintained version. Same with libXaw.
So here's one situation:
Xft2's maintained replacement is libXft. It uses pkg-config by default to
find its dependencies, but that can be overridden by setting environment
variables. It needs libXrender.
So I have it buildlink against my x11-links against a native XFree86 on
NetBSD.
It fails to build later due to missing X11/Xregion.h include file. This is
provided by modular X.org's libX11 package or from monolithic (which also
has no maintenance) X.org. It is not provided with our native XFree86.
Note that I did not check newer XFree86. Also I know we may move to Xorg,
but that doesn't help other platforms using some other X implementation.
I am assuming that issues like this will probably occur in other places
too.
I prefer to not create custom packages that I have to maintain myself to
create this support and I don't want to patch packages to skip the modern
support. And I don't want us to stay with old unmaintained software.
My working fix is to simply allow it to depend on and install libX11 which
brings in libXau and libXdmcp. These are installed to /usr/pkg/lib and
/usr/pkg/include and don't get in the way with same named files. In my
experience the multiple versions of X11 components works fine. But I can
imagine that someday, somehow, their will be a conflict in the interfaces
where the different X implementations end up linking with or using each
other.
Right now we have builtin.mk files that attempt to figure out if the
support is available or not for some things. (In addition to Xregion.h,
the compositeext and fixesext features also do not appear to be provided
by XFree86.)
Packages that use some of these components include:
pango
cairo
libgdiplus
icewm
seamonkey
gtk2
kdebase3
lesstif
qt3-libs
qt3-libs
xscreensaver
Is it okay to allow libX11 to also be installed? What abouts its
dependencies? And libXext (needed by libXrandr)?
Does anyone care if they have some of these components installed twice
(for example they have XFree86's libX11 and modular X.org's libX11)?
I started planning to just replace the header extension files with the
newer ones, but that breaks things because pkg-config filenames have
changed for example (like our old Xfixes and fixesext/fixesproto). I don't
want to patch those too -- only to find out next that there are other
incompatibilities (like changed API).
It seems it would be best just to replace all these packages (as listed
at top of this email) at one time. Another reason to do this, is because
GTK, GNOME, QT developers on nearly all Linux platforms are already using
these new libraries and headers.
If anyone wants to play with this, see pkgsrc-wip. (I see I need to do
libXcomposite still.)
Jeremy C. Reed
p.s. As for me I am phasing out the monolithic X from my systems as it is
easier in the long run to just update a couple small packages versus
updating huge monolithic X.