X.org installation from git repository
authordavshao <davshao@web>
Mon, 10 May 2010 03:19:31 +0000 (20:19 -0700)
committerCharlie <root@leaf.dragonflybsd.org>
Mon, 10 May 2010 03:19:31 +0000 (20:19 -0700)
docs/developer/GEMdrmKMS/index.mdwn

index 86d2edb..d6219bc 100644 (file)
@@ -66,3 +66,95 @@ Now here is an example using latest Mesa and everything else from git where the
     [    95.508] (II) RADEON(0): Setting screen physical size to 508 x 285
 
 Ironically I knew I was on the right track porting the latest git versions of the X.org stack when I succeeded in locking up hard my machine.  That meant a real hardware acceleration module was being loaded by that the previous kernel could not handle it, which was why the latest drm from FreeBSD had to be imported for Radeon r600.
+
+## Installing from pkgsrc
+
+As of 2010-05-09, I find it necessary on x86_64 to use the following patch for
+pkgsrc gstreamer0.10, an eventual dependency of the full xfce desktop:
+
+    --- pkgsrc/multimedia/gstreamer0.10/Makefile.orig       2010-03-29 16:04:23 -0700
+    +++ pkgsrc/multimedia/gstreamer0.10/Makefile    2010-03-29 16:09:04 -0700
+    @@ -44,6 +44,11 @@
+     .include "../../mk/bsd.prefs.mk"
+    +# __udivti3 error otherwise
+    +.if ${OPSYS} == "DragonFly" && ${MACHINE_ARCH} == "x86_64"
+    +MAKEFLAGS+=    CCVER=gcc44
+    +.endif
+    +
+     .if ${OPSYS} == "NetBSD"
+     # We must have a glib2 compiled with the RTLD_GLOBAL fix; if not, plugins
+     # won't work at all.
+
+See for example the following bug report for more details:
+<http://mail-index.netbsd.org/pkgsrc-bugs/2010/03/30/msg037304.html>
+
+## Building a separate version of X.org
+
+We try something **ill-advised**, we build a separate version of X.org in another directory, say */opt/xbeta*,
+on the same machine where we have installed the latext pkgsrc.  We do this because we have no choice but to
+use the graphics hardware on this machine, but the risk is that it is very easy to link the wrong libraries
+from pkgsrc.
+
+### expat and gettext
+
+We start with installing into */opt/xbeta* [expat 2.0.1](http://sourceforge.net/projects/expat/)
+and [gettext 0.17](http://www.gnu.org/software/gettext/).
+
+### Git repository for most of X.org
+
+We use the following listing:
+
+[freedesktop.org git repository browser](http://cgit.freedesktop.org/)
+
+One can easily script getting, updating, and building the projects listed on that page.
+
+### Example of using ldd
+
+    $ ldd ./libXau.so.6          
+    ./libXau.so.6:
+       libc.so.7 => /usr/lib/libc.so.7 (0x800640000)
+    $ ldd ./libXdmcp.so.6        
+    ./libXdmcp.so.6:
+        libc.so.7 => /usr/lib/libc.so.7 (0x800640000)
+
+### libxcb problem with Python 2.6 cElementTree
+
+Library *xcb/libxcb* unfortunately needs to be built early and there is a catch for
+using pkgsrc Python 2.6.  Unfortunately at the current time not all of
+*cElementTree* appears to be functional; therefore, one needs a patch similar to
+
+    diff --git a/src/c_client.py b/src/c_client.py
+    index d86d05e..36a7039 100755
+    --- a/src/c_client.py
+    +++ b/src/c_client.py
+    @@ -1,5 +1,5 @@
+     #!/usr/bin/env python
+    -from xml.etree.cElementTree import *
+    +from xml.etree.ElementTree import *
+     from os.path import basename
+     import getopt
+     import sys
+
+### libXext
+
+      CCLD   libXext.la
+    /usr/libexec/binutils217/elf/ld: .libs/extutil.o: relocation R_X86_64_PC32 against `xgeExtRegister' can not be used when making a shared   object; recompile with -fPIC
+    /usr/libexec/binutils217/elf/ld: final link failed: Bad value
+
+Use the following patch from <http://lists.x.org/archives/xorg-devel/2009-November/003724.html>
+
+    diff --git a/src/Xge.c b/src/Xge.c
+    index 7a583e5..2ea5d27 100644
+    --- a/src/Xge.c
+    +++ b/src/Xge.c
+    @@ -294,7 +294,7 @@ _xgeEventToWire(Display* dpy, XEvent* re, xEvent* event)
+     /*
+      * Extensions need to register callbacks for their events.
+      */
+    -Bool
+    +_X_HIDDEN Bool
+     xgeExtRegister(Display* dpy, int offset, XExtensionHooks* callbacks)
+     {
+         XGEExtNode* newExt;