build-System kaputt!? Wie reparieren?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

build-System kaputt!? Wie reparieren?

Beitrag von shh » 18.09.2009 13:24:48

Hi!
Ich habe hier 2x Lenny laufen.
Auf der einen Maschine (VirtualBox) läuft alles wie es soll, nur auf dem Hauptrechner habe ich anscheinend was kaputt gemacht.
Auch nachdem ich alles mögliche mit apt-get --reinstall install xxx yyy nochmal drüberinstalliert habe kompiliert das hier nicht so wie es soll.

Ich versuche xserver-xorg-video-ati mit nem Patch zu rekompilieren, dabei ist auch die /usr/include/drm/radeon_drm.h gepatcht.
radeon_drm.h könnt ihr hier anschauen: http://pastebin.com/m1733c0fe
Vorher hab ich brav folgendes gemacht:
apt-get build-dep xserver-xorg-video-ati
apt-get source xserver-xorg-video-ati
cd xserver-xorg-video-ati-6.9.0
dpkg-buildpackage
Dann patchen und im obj-Verzeichnis nochmal ein make:
  • satvdr:/usr/src/xserver-xorg-video-ati-6.9.0/obj-i486-linux-gnu# make
    make all-recursive
    make[1]: Entering directory `/usr/src/xserver-xorg-video-ati-6.9.0/obj-i486-linux-gnu'
    Making all in src
    make[2]: Entering directory `/usr/src/xserver-xorg-video-ati-6.9.0/obj-i486-linux-gnu/src'
    /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../src -I.. -I../../src/AtomBios/includes -Wall -I/usr/include/xorg -I/usr/include/pixman-1 -I/usr/include/drm -I/usr/include/X11/dri -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS -DATOM_BIOS_PARSER -DDRIVER_PARSER -Wall -g -O2 -MT radeon_video.lo -MD -MP -MF .deps/radeon_video.Tpo -c -o radeon_video.lo ../../src/radeon_video.c
    gcc -DHAVE_CONFIG_H -I. -I../../src -I.. -I../../src/AtomBios/includes -Wall -I/usr/include/xorg -I/usr/include/pixman-1 -I/usr/include/drm -I/usr/include/X11/dri -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS -DATOM_BIOS_PARSER -DDRIVER_PARSER -Wall -g -O2 -MT radeon_video.lo -MD -MP -MF .deps/radeon_video.Tpo -c ../../src/radeon_video.c -fPIC -DPIC -o .libs/radeon_video.o
    In file included from ../../src/radeon_video.c:14:
    /usr/include/drm/radeon_drm.h:583: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:609: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:626: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:634: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:643: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:647: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:685: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:697: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    /usr/include/drm/radeon_drm.h:714: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
    ../../src/radeon_video.c: In function ‘vga_sync_fields’:
    ../../src/radeon_video.c:4317: warning: suggest parentheses around arithmetic in operand of |
    make[2]: *** [radeon_video.lo] Fehler 1
    make[2]: Leaving directory `/usr/src/xserver-xorg-video-ati-6.9.0/obj-i486-linux-gnu/src'
    make[1]: *** [all-recursive] Fehler 1
    make[1]: Leaving directory `/usr/src/xserver-xorg-video-ati-6.9.0/obj-i486-linux-gnu'
    make: *** [all] Fehler 2
Wie gesagt, auf VirtualBox-Lenny läuft das tadellos durch (wie bei vielen anderen Leuten auch), also ist wohl irgendwas an meinem build-System kaputt.
Habt ihr ne Ahnung was da kaputt ist?
Vorschläge, wie man das richten kann?

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Re: build-System kaputt!? Wie reparieren?

Beitrag von armin » 18.09.2009 13:38:35

Hast du mal einen Link zu dem Patch? Kann es sein, dass er die "__user" Attribute hinzufügt, der Compiler diese aber nicht auflösen kann?
Eigentlich wird user im Kernel unter include/linux/compiler.h definiert und indirekt auch von radeon_drm.h eingebunden. Baust du auf beiden Rechnern gegen den gleichen Kernel? Schau dir mal include/linux/compiler.h in den Kernel Headern/Sourcen (je nachdem wogegen du baust) an. Wird auf beiden Systemen "__user" definiert?
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Re: build-System kaputt!? Wie reparieren?

Beitrag von shh » 18.09.2009 13:59:24

Hier ist der patch: http://lowbyte.de/vga-sync-fields/vga-s ... deon.patch

> Kann es sein, dass er die "__user" Attribute hinzufügt

Hmm, von __user sehe ich im patch nichts.

Maschine wo nix geht:
Da läuft beim Kompilieren der Standard 2.6.26-2-i686 Kernel, ein gepatchter 2.6.28er ist auch installiert.
In /usr/src habe ich den 2.6.26-2-i686 Kernel vom Debian-Repository mit apt-get source geholt
Den anderen von einem anderen repository auch mit apt-get source
  • satvdr:/usr/src/xserver-xorg-video-ati-6.9.0# locate compiler.h
    /usr/include/xorg/compiler.h
    /usr/src/linux-2.6-2.6.26/include/asm-alpha/compiler.h
    /usr/src/linux-2.6-2.6.26/include/asm-mips/compiler.h
    /usr/src/linux-2.6-2.6.26/include/linux/compiler.h
    /usr/src/linux-2.6-2.6.28/arch/alpha/include/asm/compiler.h
    /usr/src/linux-2.6-2.6.28/arch/mips/include/asm/compiler.h
    /usr/src/linux-2.6-2.6.28/include/linux/compiler.h
Hier geht's (die toolchain ist da, weil ich da zT noch was für ARM baue. Obiges radeon-modul soll aber ganz normales-i386 werden):
  • debian:/usr/src/xserver-xorg-video-ati-6.9.0# locate compiler.h
    /home/sigi/8.09/build_dir/linux-ixp4xx_generic/apex-1.5.14/include/linux/compiler.h
    /home/sigi/8.09/build_dir/linux-ixp4xx_generic/linux-2.6.26.8/include/asm-alpha/compiler.h
    /home/sigi/8.09/build_dir/linux-ixp4xx_generic/linux-2.6.26.8/include/asm-mips/compiler.h
    /home/sigi/8.09/build_dir/linux-ixp4xx_generic/linux-2.6.26.8/include/linux/compiler.h
    /home/sigi/8.09/build_dir/toolchain-armeb_gcc4.1.2/linux-2.6.26.8/include/asm-alpha/compiler.h
    /home/sigi/8.09/build_dir/toolchain-armeb_gcc4.1.2/linux-2.6.26.8/include/asm-mips/compiler.h
    /home/sigi/8.09/build_dir/toolchain-armeb_gcc4.1.2/linux-2.6.26.8/include/linux/compiler.h
    /home/sigi/8.09/build_dir/toolchain-armeb_gcc4.1.2/uClibc-0.9.29/include/linux/compiler.h
    /home/sigi/8.09/build_dir/toolchain-armeb_gcc4.1.2/uClibc_dev/usr/include/linux/compiler.h
    /home/sigi/8.09/staging_dir/toolchain-armeb_gcc4.1.2/include/linux/compiler.h
    /usr/include/xorg/compiler.h
Tja, keine Ahnung!
In /usr/include/xorg/compiler.h ist nichts von __user zu finden (bei beiden)

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Re: build-System kaputt!? Wie reparieren?

Beitrag von armin » 18.09.2009 14:15:36

Die compiler.h käme aus dem Linux-Kernel.
Das Problem ist wirklich __user, allerdings wurde dies tatsächlich nicht von deinem Patch hinzugefgt, osndern war schon da. In späteren Versionen wurde das dann entfernt.
Als Workaroud: Füge in Zeile 35 von /usr/include/drm/radeon_drm.h mal

Code: Alles auswählen

#ifndef __user
#define __user
#endif
ein. Das sollte dein Problem beheben.
Das es auf einem System von dir läuft und auf einem nicht scheint daran zu liegen, dass sich irgendwelche Pakete unterscheiden. Welches genau weiß ich gerade nicht ;)
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: build-System kaputt!? Wie reparieren?

Beitrag von Spasswolf » 18.09.2009 14:18:06

Trigger hat geschrieben:Hast du mal einen Link zu dem Patch? Kann es sein, dass er die "__user" Attribute hinzufügt, der Compiler diese aber nicht auflösen kann?
__user ist auch im Original Debian Header vorhanden.
Trigger hat geschrieben:Eigentlich wird user im Kernel unter include/linux/compiler.h definiert und indirekt auch von radeon_drm.h eingebunden. Baust du auf beiden Rechnern gegen den gleichen Kernel?
Man baut den Xorg Treiber nicht gegen die Kernelheader, ist ja schliesslich kein Kernelmodul.

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Re: build-System kaputt!? Wie reparieren?

Beitrag von armin » 18.09.2009 14:20:39

Spasswolf hat geschrieben:
Trigger hat geschrieben:Eigentlich wird user im Kernel unter include/linux/compiler.h definiert und indirekt auch von radeon_drm.h eingebunden. Baust du auf beiden Rechnern gegen den gleichen Kernel?
Man baut den Xorg Treiber nicht gegen die Kernelheader, ist ja schliesslich kein Kernelmodul.
Genau deshalb kompiliert der Spaß auch nicht (wie ich mitlwweile verstanden habe). __user ist eigentlich eine Kernelgeschichte, die sich warum auch immer in den Radeon-Treiber eingeschlichen hatte. Mittlerweile (sprich im aktuellen Sid-Treiber) ist __user ersatzlos gestrichen.

Aber FWIW: Schau dir mal die ersten Zeilen von /usr/include/drm/radeon_drm.h in Sid an:

Code: Alles auswählen

#ifndef __RADEON_DRM_H__
#define __RADEON_DRM_H__

#include <linux/types.h>
Die Radeon DRM-Unterstützung ist nämlich wiederum ein Kernelmodul.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Re: build-System kaputt!? Wie reparieren?

Beitrag von shh » 18.09.2009 14:57:05

mit der __user Definition läuft's. Herzlichen Dank!

D.h. nur durch die Installation eines neuen Kernels aus testing oder sid, ohne extra-libs, und ohne dass der Kernel läuft, lässt mir die __user Definition verschwinden?!? Huch! 8O

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: build-System kaputt!? Wie reparieren?

Beitrag von Spasswolf » 18.09.2009 15:02:18

shh hat geschrieben: D.h. nur durch die Installation eines neuen Kernels aus testing oder sid, ohne extra-libs, und ohne dass der Kernel läuft, lässt mir die __user Definition verschwinden?!? Huch! 8O
Der Header /usr/include/drm/radeon_drm.h stammt (in Lenny) aus dem Paket Debianlibrm-dev. In testing und unstable stammt er aus dem Paket Debianlinux-libc-dev.

Antworten