Difference between revisions of "How to compile an experimental X server"

From ThinkWiki
Jump to: navigation, search
m (→‎The script)
(cat: howtos)
 
(18 intermediate revisions by one other user not shown)
Line 2: Line 2:
  
 
The following script automates fetching, compilation and installation of the following:
 
The following script automates fetching, compilation and installation of the following:
−
* Modular X.org server+libraries from CVS and GIT (see http://wiki.x.org/wiki/ModularDevelopersGuide and http://wiki.x.org/wiki/GitPage)
+
* Modular X.org server+libraries from GIT (see http://wiki.x.org/wiki/ModularDevelopersGuide and http://wiki.x.org/wiki/GitPage)
−
* libDRI and DRM kernel modules (see http://dri.freedesktop.org/wiki/Building)
+
* libDRM and DRM kernel modules from GIT (see http://dri.freedesktop.org/wiki/Building)
−
* Mesa libraries and DRI drivers (see http://www.mesa3d.org/install.html and http://www.mesa3d.org/cvs_access.html)
+
* Mesa libraries and DRI drivers from CVS (see http://www.mesa3d.org/install.html and http://www.mesa3d.org/cvs_access.html)
 +
* X keyboard configuration database from CVS (see http://www.freedesktop.org/wiki/Software_2fXKeyboardConfig)
 +
* Synaptics touchpad driver from GIT (see http://web.telia.com/~u89404340/touchpad)
  
 
By default all compilation happens in {{path|~/3d-pit}} and everything is installed into {{path|~/3d-pit/install}}. The built DRM kernel module is installed to {{path|/lib/modules/...}}. No other paths are touched (but run as a non-root user, just in case).
 
By default all compilation happens in {{path|~/3d-pit}} and everything is installed into {{path|~/3d-pit/install}}. The built DRM kernel module is installed to {{path|/lib/modules/...}}. No other paths are touched (but run as a non-root user, just in case).
Line 10: Line 12:
 
To save time not all X libraries are built, so you'll need the usual X development environment packages installed (see above links).
 
To save time not all X libraries are built, so you'll need the usual X development environment packages installed (see above links).
  
−
Currently only the ATI [[radeon]] X.org drivers and [[r300]] DRI driver are fetched and compiled. If you need different drivers, search for "<tt>radeon</tt>" and "<tt>r300</tt>" and modify as needed.
+
Currently only the ATI [[radeon]] X.org drivers and DRI driver (e.g., [[r300]]) are fetched and compiled. If you need different drivers, search for "<tt>radeon</tt>" "<tt>ati</tt>" and "<tt>r300</tt>" and modify as needed.
  
 
==The script==
 
==The script==
−
<pre>
+
{{CodeRef|build-experimental-X}}
−
#!/bin/bash
 
−
# Script to build X.org, DRI and Mesa from CVS and GIT.
 
−
# Source http://thinkwiki.org/index.php?title=How_to_compile_an_experimental_X_server
 
−
# See also:
 
−
#  http://wiki.x.org/wiki/ModularDevelopersGuide
 
−
#  http://wiki.x.org/wiki/GitPage
 
−
#  http://dri.freedesktop.org/wiki/Building
 
−
#  http://www.mesa3d.org/cvs_access.html
 
−
#  http://www.mesa3d.org/install.html
 
−
 
 
−
#############################################
 
−
# Init
 
−
 
 
−
PIT=$HOME/3d-pit    # Download and build here
 
−
DEST=$PIT/install  # Install here
 
−
 
 
−
set -e -E -v
 
−
 
 
−
#############################################
 
−
# Fetching and building libDRM and DRM kernel drivers
 
−
 
 
−
DRI_CVS=:pserver:anonymous@anoncvs.freedesktop.org:2401/cvs/dri
 
−
 
 
−
mkdir -p $PIT; cd $PIT
 
−
grep -qF $DRI_CVS ~/.cvspass || cvs -d $DRI_CVS login
 
−
[ -d drm ] || cvs -d $DRI_CVS co drm
 
−
 
 
−
cd drm
 
−
cvs update -C
 
−
 
 
−
./autogen.sh
 
−
CFLAGS=-march=pentium-m XCCFLAGS=-march=pentium=m ./configure --prefix=$DEST
 
−
make clean
 
−
make
 
−
make install
 
−
 
 
−
cd $PIT/drm/linux-core
 
−
make DRM_MODULES="radeon"
 
−
sudo sh -c 'rm -fv /lib/modules/`uname -r`/kernel/drivers/char/drm/*.ko; \
 
−
            cp -v *.ko /lib/modules/`uname -r`/extra/; \
 
−
            /sbin/depmod -a'
 
−
 
 
−
#############################################
 
−
# Fetching Mesa
 
−
 
 
−
MESA_CVS=:pserver:anonymous@anoncvs.freedesktop.org:2401/cvs/mesa
 
−
 
 
−
mkdir -p $PIT; cd $PIT
 
−
grep -qF $MESA_CVS ~/.cvspass || cvs -d $MESA_CVS login
 
−
[ -d Mesa ] || cvs -d $MESA_CVS co Mesa
 
−
 
 
−
cd Mesa
 
−
cvs update -C
 
−
# patch to make Google Earth use acceleration:
 
−
perl -i -pe 'print "//DISABLE " if m/^\s*FALLBACK_IF.*Line\.SmoothFlag/' \
 
−
  ./src/mesa/drivers/dri/r300/r300_render.c
 
−
 
 
−
#############################################
 
−
# Fetching and building X.org
 
−
 
 
−
XORG_CVS=:pserver:anoncvs@anoncvs.freedesktop.org:2401/cvs/xorg
 
−
XORG_GIT=git://anongit.freedesktop.org/git/xorg
 
−
 
 
−
X_CVS_DIRS="proto data util \
 
−
        driver/xf86-input-mouse driver/xf86-input-keyboard \
 
−
        lib/dmx lib/pciaccess lib/Xcomposite \
 
−
        lib/Xcursor lib/Xdamage lib/Xevie lib/Xext lib/Xfixes \
 
−
        lib/Xi lib/Xinerama lib/xkbui lib/Xmu lib/Xt \
 
−
        lib/Xrandr lib/Xrender lib/XRes lib/xtrans \
 
−
        lib/XTrap lib/Xv lib/XvMC lib/Xxf86dga lib/Xxf86misc \
 
−
        lib/Xxf86rush lib/Xxf86vm"
 
−
X_GIT_DIRS="xserver xcb driver/xf86-video-ati lib/libX11"
 
−
 
 
−
# In case of trouble try adding these to X_CVS_DIRS:
 
−
#  lib/Xau lib/ICE lib/SM lib/xkbfile lib/Xpm
 
−
#  lib/AppleWM lib/fontenc lib/FS lib/lbxutil lib/oldX lib/WindowsWM
 
−
#  lib/Xaw lib/Xdmcp lib/Xfont lib/Xfontcache lib/Xft
 
−
#  lib/Xp lib/XprintAppUtil lib/XprintUtil lib/XScrnSaver lib/Xtst
 
−
 
 
−
mkdir -p $PIT/xorg; cd $PIT/xorg
 
−
grep -qF $XORG_CVS ~/.cvspass || cvs -d $XORG_CVS login
 
−
for D in $X_CVS_DIRS; do
 
−
  [ -d $D ] || { echo @$D; cvs -d $XORG_CVS co $D; }
 
−
done
 
−
for D in $X_GIT_DIRS; do
 
−
  G=$XORG_GIT/$D; G=${G/xorg\/xcb/xcb}
 
−
  [ -d $D ] || { echo @$D; git clone $G $D; }
 
−
done
 
−
 
 
−
for D in $X_CVS_DIRS; do ( echo @$D; cd $D && cvs update -C ); done |grep -v '^\?'
 
−
for D in $X_GIT_DIRS; do ( echo @$D; cd $D && git pull ); done
 
−
 
 
−
( export PATH="$DEST/bin:$PATH" \
 
−
        PKG_CONFIG_PATH="$DEST/lib/pkgconfig:$PKG_CONFIG_PATH" \
 
−
        CACHE=$PIT/xorg/autoconf.cache  MAKE="make -j2"  QUIET=y
 
−
  nice ./util/modular/build.sh -n -m $PIT/Mesa $DEST 2>&1 \
 
−
  | tee xbuild.log )
 
−
sudo sh -c "chown -v root $DEST/bin/Xorg; \
 
−
            chmod -v 4711 $DEST/bin/Xorg"
 
−
 
 
−
#############################################
 
−
# Building Mesa (after installing X.org)
 
−
 
 
−
# This uses both old-style and new-style vars, to support older Mesa snapshots.
 
−
 
 
−
cd $PIT/Mesa
 
−
( export DRM_SOURCE_PATH=$PIT/drm \
 
−
        PKG_CONFIG_PATH="$DEST/lib/pkgconfig:$PKG_CONFIG_PATH" \
 
−
        DESTDIR=$DEST \
 
−
        INSTALL_DIR=$DEST \
 
−
        DRI_DRIVER_INSTALL_DIR=$DEST/lib/dri \
 
−
        DRI_DIRS=r300 \
 
−
        OPT_FLAGS='-O2 -g -march=pentium-m'
 
−
  make -e linux-dri-x86
 
−
  make -e install
 
−
  cp -v lib/r300_dri.so $DRI_DRIVER_INSTALL_DIR/ )
 
−
 
 
−
#############################################
 
−
# Creating a script which sets env vars
 
−
 
 
−
cat <<EOF > $DEST/bin/xsetenv
 
−
export PATH="$DEST/bin:$PATH"
 
−
export LD_LIBRARY_PATH=$DEST/lib
 
−
export LIBGL_DRIVERS_PATH=$DEST/lib/dri
 
−
EOF
 
−
 
 
−
echo "Run '. $DEST/bin/xsetenv' to point env vars to this installation."
 
−
</pre>
 
  
 
==Running==
 
==Running==
Line 149: Line 23:
 
Prepare a config file called (say) {{path|/etc/X11/xorg.dri-test.conf}} with DRI enabled.
 
Prepare a config file called (say) {{path|/etc/X11/xorg.dri-test.conf}} with DRI enabled.
  
−
Then, exit your current X server (e.g., via {{cmdroot|init 3}}) and run something like:
+
Then, exit your current X server (e.g., via {{cmdroot|init 3}}) and run this for a full session with the new X server:
 +
{{cmduser|1=. ~/3d-pit/install/bin/xsetenv; startx -- ~/3d-pit/install/bin/X -config xorg.dri-test.conf :0 >& xout.log}}
 +
 
 +
For a minimal test session, try something like this instead:
 
{{cmduser|1=. ~/3d-pit/install/bin/xsetenv; X -config xorg.dri-test.conf :0 >& xout.log & ( export DISPLAY=:0; sleep 3; kwin& xterm& )}}
 
{{cmduser|1=. ~/3d-pit/install/bin/xsetenv; X -config xorg.dri-test.conf :0 >& xout.log & ( export DISPLAY=:0; sleep 3; kwin& xterm& )}}
  
−
If all goes well, you'll get a minimal X session with just an xterm open. Some things to do now:
+
Some things to do now:
 
* {{cmduser|xdriinfo}}
 
* {{cmduser|xdriinfo}}
 
* {{cmduser|1=LIBGL_DEBUG=verbose glxinfo 2>&1 <nowiki>|</nowiki> less}}
 
* {{cmduser|1=LIBGL_DEBUG=verbose glxinfo 2>&1 <nowiki>|</nowiki> less}}
 
* {{cmduser|glxgears}}
 
* {{cmduser|glxgears}}
 
* {{cmduser|sudo less ~3d-pit/install/var/log/Xorg.0.log}}
 
* {{cmduser|sudo less ~3d-pit/install/var/log/Xorg.0.log}}
−
* {{cmduser|ppracer}} (and report on the [https://bugs.freedesktop.org/show_bug.cgi?id=6991 associated bug] including the relevant {{cmdroot|lspci -v}} lines)
+
* {{cmduser|ppracer}}
 
* {{cmduser|googleearth}} (Linux version [http://earth.google.com/download-earth.html here])
 
* {{cmduser|googleearth}} (Linux version [http://earth.google.com/download-earth.html here])
  
 
To keep up with the latest CVS and GIT versions, just run the script again. You don't need to (and shouldn't) delete {{path|~/3d-pit}} beforehand.
 
To keep up with the latest CVS and GIT versions, just run the script again. You don't need to (and shouldn't) delete {{path|~/3d-pit}} beforehand.
 +
 +
''If you encounter problems, please file bugs on the [https://bugs.freedesktop.org Freedesktop Bugzilla].''
  
 
[[Category:Scripts]]
 
[[Category:Scripts]]
 +
[[Category:HOWTOs]]

Latest revision as of 17:40, 2 July 2007

Some functions of the X.org server, such as 3D acceleration for newer cards, are under constant developments. To test the latest features, you need to build the X server and related software directly from the developers' CVS and GIT repositories. Since several projects and dozens of sub-projects are involved, this is a complicated task.

The following script automates fetching, compilation and installation of the following:

By default all compilation happens in ~/3d-pit and everything is installed into ~/3d-pit/install. The built DRM kernel module is installed to /lib/modules/.... No other paths are touched (but run as a non-root user, just in case).

To save time not all X libraries are built, so you'll need the usual X development environment packages installed (see above links).

Currently only the ATI radeon X.org drivers and DRI driver (e.g., r300) are fetched and compiled. If you need different drivers, search for "radeon" "ati" and "r300" and modify as needed.

The script

build-experimental-X (download)

Running

Just run the above. If prompted for a CVS password, press Enter. There are two sudo invocations for which you may need to provide a password.

Prepare a config file called (say) /etc/X11/xorg.dri-test.conf with DRI enabled.

Then, exit your current X server (e.g., via # init 3) and run this for a full session with the new X server: $ . ~/3d-pit/install/bin/xsetenv; startx -- ~/3d-pit/install/bin/X -config xorg.dri-test.conf :0 >& xout.log

For a minimal test session, try something like this instead: $ . ~/3d-pit/install/bin/xsetenv; X -config xorg.dri-test.conf :0 >& xout.log & ( export DISPLAY=:0; sleep 3; kwin& xterm& )

Some things to do now:

  • $ xdriinfo
  • $ LIBGL_DEBUG=verbose glxinfo 2>&1 | less
  • $ glxgears
  • $ sudo less ~3d-pit/install/var/log/Xorg.0.log
  • $ ppracer
  • $ googleearth (Linux version here)

To keep up with the latest CVS and GIT versions, just run the script again. You don't need to (and shouldn't) delete ~/3d-pit beforehand.

If you encounter problems, please file bugs on the Freedesktop Bugzilla.