Method:

Install the appropriate build-deps for these git checkouts from
freedesktop.org. This should be solved mostly by apt-get build-dep
xserver-xorg.

mesa: mesa_7_0_branch (don't actually install this, just have it handy
for building xserver)
xorg-macros: master
libXfont: libXfont-1.2-branch
xserver: server-1.4-branch
xf86-input-evdev: 0405f7b
xf86-input-keyboard: ae630ae
xf86-input-mouse: abc65be

Then, using the notes below, and perhaps the git building instructions
for xserver on freedesktop.org, build these into a X server executable
in a convenient prefix.

For use on 2.6.29, you will need to patch your fglrx kernel module
source as follows:
<contained in attachment>
In addition, you will need to link/copy from the kernel source root:
drivers/acpi/acpica/ into your linux-headers-VERSION/include/acpi/acpica
, due to dirty things the fglrx driver does.

Instructions, patch, and notes adapted from various internet forums,
firstly
http://www.phoronix.com/forums/showthread.php?t=16173


NOTES:

for building xserver:
./configure --prefix=/opt/gfx-test --with-xkb-path=/usr/share/X11/xkb
--enable-glx --with-mesa-source=/home/user/mesa

for libXfont to work, you will need to use this patch:
diff --git a/src/FreeType/fttools.c b/src/FreeType/fttools.c
index 5393558..36a59b9 100644
--- a/src/FreeType/fttools.c
+++ b/src/FreeType/fttools.c
@@ -44,11 +44,9 @@
 #include "ft.h"

 /* backward compatibility hack */
-#if (FREETYPE_VERSION < 2001008)
 # ifndef ft_isdigit
 #  define ft_isdigit isdigit
 # endif
-#endif

 #ifndef LSBFirst
 #define LSBFirst 0


A smarter path to accomplish this for the interested may be to hack the
symbol/api bits fglrx and it's dri want back into xserver-1.[56], but I
don't know how successful such an endeavor could be, especially with
newer upcoming Mesa/Gallium/DRI versions probably obsoleting this.

The above would of course need much cleaning to be packagable, and
reminds me of the bad old days of needing 16 different X servers, but
would be workable for the stubborn.
diff -Nparu a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c
--- a/common/lib/modules/fglrx/build_mod/firegl_public.c	2009-01-23 20:00:26.000000000 -0200
+++ b/common/lib/modules/fglrx/build_mod/firegl_public.c	2009-02-13 15:25:00.000000000 -0200
@@ -1460,7 +1460,11 @@ KCL_TYPE_Pid ATI_API_CALL KCL_GetTgid(vo
  */
 KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void)
 {
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
+    return current->cred->euid;
+#else
     return current->euid;
+#endif
 }
 
 /** /brief Delay execution for the specified number of microseconds
@@ -1832,15 +1836,30 @@ int ATI_API_CALL KCL_PosixSecurityCapChe
  */
 void ATI_API_CALL KCL_PosixSecurityCapSetIPCLock(unsigned int lock)
 {
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
+    struct cred *new = prepare_creds();
+    if (!new) {
+	    printk(KERN_ERR "fglrx: could not allocate memory\n");
+	    return;
+    }
+#else
+#define new current
+#endif
     if (lock == 0 )
     {
-        cap_lower(current->cap_effective, CAP_IPC_LOCK);
+        cap_lower(new->cap_effective, CAP_IPC_LOCK);
     }
     else
     {
-        cap_raise(current->cap_effective, CAP_IPC_LOCK);
+        cap_raise(new->cap_effective, CAP_IPC_LOCK);
     }    
-    return; 
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
+    commit_creds(new);
+#else
+#undef new
+#endif
 }
 
 /** \brief Get number of available RAM pages
diff -Nparu a/common/lib/modules/fglrx/build_mod/firegl_public.h b/common/lib/modules/fglrx/build_mod/firegl_public.h
--- a/common/lib/modules/fglrx/build_mod/firegl_public.h	2009-01-23 20:00:26.000000000 -0200
+++ b/common/lib/modules/fglrx/build_mod/firegl_public.h	2009-02-16 14:02:50.000000000 -0300
@@ -18,6 +18,7 @@
 #define _FIREGL_PUBLIC_H_
 
 #include <stdarg.h>
+#include <asm/pgtable.h>
 #include "kcl_pci.h"
 #include "kcl_io.h"
 
@@ -590,6 +591,11 @@ extern unsigned long        KCL_SYSINFO_
 #define cpu_has_pge test_bit(X86_FEATURE_PGE, &boot_cpu_data.x86_capability)
 #endif
 
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
+#undef pgprot_writecombine
+#undef pgprot_noncached
+#endif
+
 #ifndef pgprot_writecombine
 #define pgprot_writecombine(prot) __pgprot((pgprot_val(prot) & ~(_PAGE_PCD)) | _PAGE_PWT)
 #endif
@@ -598,6 +604,7 @@ extern unsigned long        KCL_SYSINFO_
 #define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT)
 #endif
 
+
 #endif //FIREGL_USWC_SUPPORT
 
 
diff -Nparu a/common/lib/modules/fglrx/build_mod/kcl_acpi.c b/common/lib/modules/fglrx/build_mod/kcl_acpi.c
--- a/common/lib/modules/fglrx/build_mod/kcl_acpi.c	2009-01-23 20:00:26.000000000 -0200
+++ b/common/lib/modules/fglrx/build_mod/kcl_acpi.c	2009-02-13 15:25:00.000000000 -0200
@@ -18,6 +18,12 @@
 #include <linux/autoconf.h>
 #include <linux/acpi.h>
 
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
+#include <acpi/acpica/acconfig.h>
+#include <acpi/acpica/aclocal.h>
+#include <acpi/acpica/acobject.h>
+#endif
+
 #include "kcl_config.h"
 #include "kcl_type.h"
 #include "kcl_acpi.h"
 #include "kcl_acpi.h"

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to