2009-10-09 This is a set of packages that will incorporate a modern X server (1.7) into Splack (Bobware) 12.1. This distribution release originally shipped X server 1.4, as it mirrors Slackware 12.1. Prerequisites: ===== This procedure assumes you are using Splack (Bobware) 12.1-rc7 or newer. You should install the distribution's X11 stack since our changes are not a complete replacement. You will need a custom kernel to use the modern libdrm shipped as part of this set. See the "Custom Kernel" section. Custom Kernel: ===== binutils: Splack 12.1 has a binutils flaw that manifests itself when building 64-bit kernels. As a workaround, you must create 64-bit names for a few of the tools. As root: cd /usr/local/bin for UTIL in \ ar ld nm objcopy objdump ranlib readelf size strip ; do ln -sf /usr/bin/$UTIL sparc64-bobware-linux-$UTIL ; done ATi display controllers: For users of Sun-branded ATi cards (XVR-300 == ATi FireGL V3100 (RV370), etc) and probably PC-based ATi cards as well, Dave Airlie's drm-2.6 tree is the recommended kernel base. At the time of writing, this is a 2.6.31-rc9 based kernel with Radeon development patches. ATi kernel build procedure summary: 1. Clone the upstream repository. git clone "http://git.kernel.org/?p=linux/kernel/git/airlied/drm-2.6.git" 2. Follow the drm-next branch. git checkout --track -b drm-next origin/drm-next 3. Configure your kernel. You may use the currently running kernel's /proc/config.gz as a guide. You will need to enable the DRM module for Radeon-based cards. 4. Builds need use the gcc64 cross-compiler. Use: CROSS_COMPILE=sparc64-bobware-linux- make to compile your kernel. 5. Install and reboot Author's ATi notes: - The radeondrmfb doesn't seem to work on my system as it can't read my monitor's EDID. I needed to build this as a module, and rely on the PROM console for an on-screen login prompt. - Related to the above, since the kernel is unable to set up the graphics board, kernel modesetting (KMS) is not possible on my machine. Reports about other hardware are welcomed. Other display controllers: Untested. Documentation for this section wanted! Installing the packages: ===== Both binary packages and the source plus build scripts used to create them are provided. Binary packages: The binary packages require a few system package upgrades before the bulk of the new system can be installed. These packages should be installed with: upgradepkg --install-new --reinstall 1/ System software tar xz pkgtools 2/ Minimally required X11 packages freetype glew libX11 libXft libXrandr libXv libdrm libpciaccess libxcb mesa pixman xf86-input-evdev xkeyboard-config xorg-server xrandr 3/ Optional drivers xf86-video-ati xf86-input-mouse xf86-input-keyboard If you intend on using a non-ATi graphic card, then you will need to fetch the sources for your board separately, as well as install the development packages. A special note: Two versions of "fixesproto", "inputproto", and "xextproto" are included. The upstream X11 build tree is in flux at the moment. Generally, xorg-server and the xf86-*-* drivers require the newer releases, and application software (including mesa) requires the older ones. If a build fails, try swapping out to the other set. 4/ Protocol headers bigreqsproto dri2proto fixesproto inputproto randrproto renderproto xcb-proto xcmiscproto xextproto xf86driproto xproto xtrans 5/ Toolchain components intltool libtool util-macros Many existing Splack 12.1 X11 applications may need to be rebuilt. When originally compiled, they may have linked against the "xcb-xlib" library. This library has been dropped from XCB since then, and is no longer available. Programs compiled against the library will fail with a linker error. You will need to recompile those packages. You should first ensure that the compiler will not attempt to link this library in the future. Remove all references to it from your libtool archive files: find /usr/lib -name "*.la" -exec \ sed -e "s:-lxcb-xlib:: ; s:/usr/lib/libxcb-xlib.la::" -i \{\} \; After this, you may use the .SlackBuild scripts to rebuild your programs. An example is included: 6/ Rebuilt X11 applications rxvt Source packages: The package lists above can be reused as a guide for a source build order. Generally, the order necessary for building the X11 stack is: 1/ System software 2/ Toolchain components 3/ Protocol headers 4/ X11 packages Some ordering experimentation needed, a two-pass build process isn't unreasonable. 5/ X drivers 6/ X11 applications Hardware acceleration with DRI (2D, 3D, Xvideo): ===== It is recommended that this work be performed after you have verified your X server functions properly. Using the DRI functionality of your system may require a kernel patch. If your graphics card is on a secondary PCI domain, an interaction issue between libdrm and the kernel will prevent proper setup. This is captured in the following freedesktop.org ticket: Check your graphic board's domain with 'lspci'. If the leading field is anything other than "0000:", then you may want to use the patch attached to comment #36 of the ticket. You can verify whether DRI is operating correctly by searching your Xorg.0.log for attempts to re-open the DRI device in the "drmOpenByBusid" call. If this failed, but the earlier "drmOpenDevice" succeeded, then you may wish to integrate the patch into your kernel build. Author's DRI notes: - As tested on my system, all acceleration works as expected and at the equivalent capability of a PC-based stack. However, it seems my system will cause a hard-reset when using Mesa's R300 driver for a few minutes. No other acceleration causes this.