libX11 and XCB repositories now use git for source control management (SCM). The git repository was created to integrate the XCB work in the X11 library and at the same time do real testing of alternatives to CVS. See the instructions for using freedesktop.org repositories.
To build XCB from source, you need to have installed at least:
- git 1.2
- pkgconfig 0.15.0
- automake 1.7
- autoconf 2.50
- libtool 1.5.6
- python 2.x (not python 3)
- gperf 3.0.1 (for some of the xcb/util libraries)
(Trivial patches to support earlier versions, or a note that earlier versions "just work", would be welcome.)
To do 'make check' or 'make dist', you also need:
- check 0.9.4
- How to get a copy of a git module:
git clone git://anongit.freedesktop.org/git/xorg/lib/libX11(this will create a 'libX11' directory in the working directory)
- git will create a
.gitdirectory inside the source directory where it stores all the info
There are multiple modules. The modules you need to checkout, build, and install for XCB are, in order:
- from X.org git:
- xorg/util/macros (see note below)
- xorg/proto/x11proto and xorg/lib/libXdmcp, to optionally support XDM-AUTHORIZATION-1
- three of the XCB repositories:
To build Xlib with support for XCB, first build XCB as above. After that, the modules you need to checkout, build, and install for Xlib are, in order:
- from X.org git:
Note that aclocal needs to be able to find the files installed from xorg/util/macros. You may need to set ACLOCAL="aclocal -I /usr/local/share/aclocal" or similar before running autogen.sh or autoreconf.
To build the XCB demos, you need two more repositories:
- xcb/util (also needed for the XCB backend of cairo)
There are also two experimental XCB repositories:
- xcb/xhsb (experimental Haskell bindings)
- xcb/libXamine (X protocol inspection library which makes use of the XML protocol descriptions)
This is a fairly complex operation at this point. Watch out for pkgconfig problems, esp. distinguishing
/usr/X11R6 in the config. Note that proto/X11 and xcb-proto exist only to install header files, so typing
make all will produce the message "Nothing to be done for 'all'". That's normal.
We have documented our procedure for ReleasingXcb.
Mailing List and other resources
The XCB mailing list is hosted by freedesktop.org.
Jeremy has set up a new xcb-commit mailing list to notify users of cvs commits. We also have a CIA project page where people can find RSS feeds of xcb commits ( [!] currently not tracking git commits).
Freedesktop's bugzilla is used to report bugs, suggest enhancements, and submit patches. Use the build product XCB.
There is also an #xcb IRC channel on freenode.net.
Implementation and Status
The protocol layer of XCB is implemented as a set of XML protocol descriptions, along with a python-based C binding generator. The remainder of XCB consists of C code.
protocol description format; this documentation is included in the xcb-proto package.has documented the XML/XCB
The structure of XCB is designed to be as simple as possible while making common usage convenient and reasonably efficient. XCB is designed to work transparently with POSIX Thread programs or single-threaded programs: on platforms where POSIX threads are unavailable, it will be compilable without.
The X core requests have been implemented in XCB, as well as the BIG-REQUESTS, XC-Misc, SHAPE, SHM, DPMS, Render, Randr, GLX, XFIXES, Composite, DAMAGE and XEvIE extensions. A multithreaded demonstration program uses XCB for animated graphics in multiple windows. Other demos for Render, event monitoring, access to connection setup data, and DPMS also exist.
BartMassey has done some work on establishing correctness properties of the core data dispatch mechanism of XCB using a model of XCB written in the Z formal specification notation. This is good, since the mechanism is complex, and the previous version was known to have defects.
Making a release