# ATI driver problems / What IS considered a "stable" release?

## baygins

Maybe it sounds like the start of a philosophical discussion, but I find it hard to consider the latest snapshots of the 2006.0 release anything BUT "stable"; from a certain point of view.

Here is the deal:

I wanted to install the "stable/normal" release of 2006.0 on my IBM ThinkPad T60 that has a ATI Mobility X1400 on it.  I also wanted to have a working desktop environment with a respectable window manager, such as KDE, Gnome or Enlightenment E16.  Here is exactly what I did to do the install:

(1) put a brand new hard disk in the laptop, so that I can do the install without worrying about dual/triple booting.  After all, a clean slate is always a good way to start learning and installing, right?

(2) downloaded, burnt and booted from the Install LiveCD 2006.0

(3) followed the installation intructions very carefully: partitioned my HDD (/boot, / and swap), formatted the partitions with ext3 filesystem, connected to the mirror site, downloaded the Stage3-i686 and the latest Portage snapshot from 08/06.

(4) extracted the tarballs appropriately, downloaded the "gentoo-sources" version of the kernel, configured the kernel by doing a "make menuconfig".  I took into consideratio everything that relates to ATI driver building (like disabling DRI in kernel, etc.)

(5) and then, did the "emerge --sync".  Completed the rest of the installation successfully and rebooted.

(6) Now, at this point, I (naively) assumed that if I did an "emerge ati-drivers", that I would have gotten the "appropriate version of the drivers for the current snapshot (08/06)" downloaded and compiled/installed.

Instead, here is what happens (shared by many frustrated users who have an ATI chipset):

(1) the compilation/installation of ATI drivers fail for "fglrx", because, the supposedly stable version 8.27.10, considers my Xorg 7.0 not compatible.

(2) I, then, have to UnMask a whole bunch of things to get Xorg 7.1, but now I end up in a code path, that is considered to be "not stable" or "testing"

My question is this:

(1) why can the "ATI stable" drivers (supposedly 8.27.10) not co-exist with another "stable" package as of this snapshot (08/06), which is Xorg 7.0?

(2) if the whole purpose of using a stable system is to have "stable packages" that just work with each other, why can the release maintainers (is that the name of a person?   :Very Happy:  ) not take these conflicts into consideration?

(3) If Xorg 7.0 IS considered to be stable and the ONLY ATI driver release that will compile/install without complaining about a version mismatch is something like 8.26.8, then why the heck do the "powers that be" not put that version as "stable" and mark the newer one as "testing"?

Am I missing something big here?  Can someone please educate me on the intricacies of Gentoo package management?

Thanks,

--selimLast edited by baygins on Tue Aug 08, 2006 3:34 pm; edited 1 time in total

----------

## NeddySeagoon

baygins,

Welcome to Gentoo.

There has been a philosophical debate about which version of Xorg (7.0 ir 7.1) should be declared stable on Gentoo. In the end, it was decided that Xorg 7.1 would be stable on all achitectures that did not have binary blob drivers provided by ATI or nVidia. So x86 and x86_64 used Xorg 7.0.

I won't go into the rights and wrongs of that decision - thats what happened.

Xorg 7.0 and Xorg 7.1 have different Application Binary Interfaces (ABI), which is why the binary blobs don't work with Xorg 7.1. Very recently, ATI released a new binary blob with Xorg 7.1 compatibility, which is what you attempted to install. 

Gentoo does not consider ati-drivers-8.27.10 stable. Its ebuild has

```
KEYWORDS="-* ~amd64 ~x86"
```

set. That means broken on everything except amd64 and x86, where its considered testing.

Looking at the ati-drivers KEYWORDS shows

```
/usr/portage/x11-drivers/ati-drivers $ grep KEYWORDS ./*

./ati-drivers-8.14.13-r2.ebuild:KEYWORDS="-* amd64 x86"

./ati-drivers-8.14.13-r3.ebuild:KEYWORDS="-* amd64 x86"

./ati-drivers-8.14.13-r4.ebuild:KEYWORDS="-* ~amd64 ~x86"

./ati-drivers-8.14.13-r5.ebuild:KEYWORDS="-* ~amd64 ~x86"

./ati-drivers-8.16.20-r1.ebuild:KEYWORDS="-*" #~amd64 ~x86"

./ati-drivers-8.16.20.ebuild:KEYWORDS="-*" #~amd64 ~x86"

./ati-drivers-8.18.6-r1.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.18.6.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.18.8-r1.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.18.8-r2.ebuild:KEYWORDS="amd64"

./ati-drivers-8.18.8.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.19.10.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.20.8.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.21.7-r1.ebuild:KEYWORDS="amd64 x86"

./ati-drivers-8.21.7.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.22.5.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.23.7.ebuild:KEYWORDS="~amd64 ~x86"

./ati-drivers-8.24.8.ebuild:KEYWORDS="-* ~amd64 ~x86"

./ati-drivers-8.25.18.ebuild:KEYWORDS="-* ~amd64 ~x86"

./ati-drivers-8.26.18-r1.ebuild:KEYWORDS="-* ~amd64 ~x86"

./ati-drivers-8.26.18.ebuild:KEYWORDS="-* ~amd64 ~x86"

./ati-drivers-8.27.10-r1.ebuild:KEYWORDS="-* ~amd64 ~x86"

./ati-drivers-8.27.10.ebuild:KEYWORDS="-* ~amd64 ~x86"

```

or in summary, only  

```
./ati-drivers-8.14.13-r2.ebuild:KEYWORDS="-* amd64 x86"

./ati-drivers-8.14.13-r3.ebuild:KEYWORDS="-* amd64 x86"

./ati-drivers-8.21.7-r1.ebuild:KEYWORDS="amd64 x86"
```

are considered stable.

It follows that to get 8.27.10, you downloaded and installed it from the ATI site, which is not supported by Gentoo or you asked Gentoo to install a testing version for you.

----------

## baygins

NeddySagoon,

Thank you for providing a detailed explanation.  It really helps me understand the Gentoo scene a lot better.  But here is a follow up question:

If I followed the instructions from the 2006.0 Install book, and do NOT have anything in my /etc/make.conf that has 

```
ACCEPT_KEYWORDS="~x86"
```

or in other words, if I did NOT explicitly ask the Portage system to pull in anything to be in the test phase, how come when I do 

```
emerge ati-drivers
```

I end up pulling/compiling version 8.27.10 of the drivers?

To make sure, again, I did not go to ATI's website to pull the drivers and I DID do a clean install.  

So can we infer from this, that if one is to follow the instructions posted on the Gentoo website http://www.gentoo.org/doc/en/handbook/handbook-x86.xml, then he will end up with Stable Xorg 7.0 and UnStable ATI 8.27.10?  That is EXACTLY what happened to me with the 2006.0 Stage3 tarball and August 6th, 2006 snapshot (08/06).

I am confused now   :Confused: 

Thanks,

--selim

----------

## NeddySeagoon

baygins,

The handbook you linked does not cover installing Xorg or the ati-drivers. It stops at a basic console install with all the services working.

You can get 'testing' packages in three ways, you add 

```
ACCEPT_KEYWORDS="~x86"
```

to your /etc/make.conf. That gets you an entire testing system, which is what I run. I don't reccomend it to users new to linux or those that cannlt fix it themselves when it breaks - and it does sometimes.

You can also use the file /etc/portage/package.keywords to unmask individual testing packages. an entry of

```
x11-drivers/ati-drivers ~x86
```

here will get you the latest testing ATI drivers and portage will continue to manage it for you.

[**don't do this at home**] Lastly you can use 

```
ACCEPT_KEYWORDS="~x86" emerge-ati-drivers
```

portage has no idea you have installed the testing ati-drivers and will downgrade it for you at the next emerge -uD world. You won't like that If Xorg was working, it won't be after you reboot. [/**don't do this at home**]

If I force my ~x86 install to pretend to install the stable ati drivers

```
ACCEPT_KEYWORDS="-~x86" emerge-ati-drivers -pv 

x11-drivers/ati-drivers-8.21.7-r1  USE="opengl" 36,226 kB
```

Which is correct.

Sight of your 

```
emerge --info
```

and

```
emerge ati-drivers -vp
```

would be useful.

----------

## baygins

Well, I thought I made a mistake but things, still, dont seem to be working for me.  In the initial installs, I used "~x86" the ATI drivers so that I could pull in the latest release, but this time I did not do that.

I simply emerged Xorg, which ended up pulling 7.0-r1.  When doing so, I also gave the 

```
USE="dri"
```

 directive, as suggested by the Modular Xorg HowTo.

When I try to emerge the ATI drivers (veresion 8.21.7-r1, because I am not unmasking them now), it ALWAYS fails at the compilation of "fglrx.ko".  It says, 

```
install: cannot stat 'fglrx.ko': No such file or directory
```

So, what am I missing here?  After all, these are the only 2 steps I took after the initial install and the subsequent 

```
emerge --sync
```

For reference, my "emerge info"

```
Gentoo Base System version 1.6.15

Portage 2.1-r1 (default-linux/x86/2006.0, gcc-3.4.6, glibc-2.3.6-r4, 2.6.17-gentoo-r4 i686)

=================================================================

System uname: 2.6.17-gentoo-r4 i686 Genuine Intel(R) CPU           T2400  @ 1.83GHz

app-admin/eselect-compiler: [Not Present]

dev-lang/python:     2.4.3-r1

dev-python/pycrypto: 2.0.1-r5

dev-util/ccache:     [Not Present]

dev-util/confcache:  [Not Present]

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.59-r7

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2

sys-devel/binutils:  2.16.1-r3

sys-devel/gcc-config: 1.3.13-r3

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.11-r2

ACCEPT_KEYWORDS="x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=i686 -pipe"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/X11/xkb"

CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/revdep-rebuild /etc/terminfo"

CXXFLAGS="-O2 -march=i686 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"

GENTOO_MIRRORS="http://gentoo.osuosl.org/ ftp://distro.ibiblio.org/pub/linux/distributions/gentoo/ http://distro.ibiblio.org/pub/linux/distributions/gentoo/ ftp://ftp.gtlib.gatech.edu/pub/gentoo http://www.gtlib.gatech.edu/pub/gentoo "

MAKEOPTS="-j4"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"

USE="x86 X alsa apache2 apm arts avi berkdb bitmap-fonts cli crypt cups dlloader dri eds emboss encode esd foomaticdb fortran gdbm gif gnome gpm gstreamer gtk gtk2 imlib ipv6 isdnlog jpeg kde libg++ libwww mad mikmod motif mp3 mpeg ncurses nls nptl ogg opengl oss pam pcre pdflib perl png pppd python qt qt3 qt4 quicktime readline reflection sdl session spell spl ssl tcpd truetype truetype-fonts type1-fonts udev vorbis xml xmms xorg xv zlib elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux userland_GNU video_cards_radeon video_cards_fglrax video_cards_vesa"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

```

and my ati drivers info

```

These are the packages that would be merged, in order:

Calculating dependencies   ... done!

[ebuild  N    ] x11-drivers/ati-drivers-8.21.7-r1  USE="opengl" 0 kB 

Total size of downloads: 0 kB

```

Also, I want to post the entire text output of the ATI drivers' emerge session, but I cannot seem to find a way to dump it.  I looked under "/var/log/emerge.log", but the contents are so diminutively limited compared to what I see on the screen.  Can I send the output to a file, such as

```
emerge ati-drivers > ati_drivers.txt
```

Thanks,

--selim

----------

## NeddySeagoon

baygins.

 *baygins wrote:*   

> I used "~x86" the ATI drivers so that I could pull in the latest release

 

Thats how you got the mix the first time ~x86=testing, not stable. Many testing packages have other testing dependancies.

Thats solved.

Hmm - you should not need to emerge ati-drivers  yourself with Xorg 7.0.

From your emerge --info, I think you have a typo in your VIDEO_CARDS entry in /etc/make.conf.

You have video_cards_fglrax - notice the rax the 'a' should not be there?

Fix that then 

```
emerge  x11-drivers/ati-drivers
```

fglrx.ko is the ati-drivers kernel module. Check that your /usr/src/linux symbolic link points to the kernel you are running.

```
uname -a
```

will show that. You must have a properly configured kernel source tree at /usr/src/linux to build kernel modules. This means that if you did a universal install and used the kernel from the CD, you must make and run your own kernel before you can add any kernel modules.

----------

## sageman

You can get portage to log more verbose information by putting

```

PORT_LOGDIR="/var/log/portage"

```

in make.conf. Log files in there should include the whole emerge process text.

I think I've run into "emerge foo > foo.bar" not working the way I expect before, because gcc errors are typically printed to STDERR (I believe) and the ">" dealie only will redirect STDOUT stuff.

Also, I highly suggest the portlog-info script, found here: http://tdegreni.free.fr/gentoo/portlog-info. It helps parse all the logs that'll crop up after you add the PORT_LOGDIR line in make.conf.

----------

## baygins

Thanks for the tip.  I started getting the kind of messages I was looking for.  Now for the silly errors and warnings the ATI driver build process throws:

```
 [32;01m*[0m Determining the location of the kernel source code

 [32;01m*[0m Found kernel source directory:

 [32;01m*[0m     /usr/src/linux

 [32;01m*[0m Found sources for kernel version:

 [32;01m*[0m     2.6.17-gentoo-r4

 [32;01m*[0m Checking for MTRR support enabled ...

[A[120C  [34;01m[ [32;01mok[34;01m ][0m

 [32;01m*[0m Checking for AGP support enabled ...

[A[120C  [34;01m[ [32;01mok[34;01m ][0m

 [32;01m*[0m Checking for DRM support disabled ...

[A[120C  [34;01m[ [32;01mok[34;01m ][0m

 [32;01m*[0m X11 implementation is xorg-x11.

>>> Unpacking source...

 [32;01m*[0m Unpacking Ati drivers ...

[A[120C  [34;01m[ [32;01mok[34;01m ][0m

>>> Source unpacked.

>>> Compiling source in /var/tmp/portage/ati-drivers-8.21.7-r1 ...

 [32;01m*[0m Building the DRM module...

make: Entering directory `/usr/src/linux-2.6.17-gentoo-r4'

  CC [M]  /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agp3.o

  CC [M]  /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/nvidia-agp.o

  CC [M]  /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agpgart_be.o

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agpgart_be.c: In function `__fgl_agp_init':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agpgart_be.c:8173: warning: implicit declaration of function `pm_register'

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agpgart_be.c: In function `__fgl_agp_cleanup':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agpgart_be.c:8183: warning: implicit declaration of function `pm_unregister_all'

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agpgart_be.c: At top level:

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/agpgart_be.c:6077: warning: 'ati_gart_base' defined but not used

  CC [M]  /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/i7505-agp.o

  CC [M]  /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.o

In file included from /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:162:

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.h:267:5: warning: "FIREGL_VMA_INFO" is not defined

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:228: error: syntax error before string constant

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:228: warning: type defaults to `int' in declaration of `MODULE_PARM'

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:228: warning: function declaration isn't a prototype

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:228: warning: data definition has no type or storage class

In file included from /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/drm_proc.h:41,

                 from /var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:333:

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/drmP.h:561:5: warning: "__HAVE_VBL_IRQ" is not defined

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/drmP.h:664:5: warning: "__HAVE_VBL_IRQ" is not defined

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/drmP.h:936:5: warning: "__HAVE_SG" is not defined

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:407:5: warning: "FIREGL_VMA_INFO" is not defined

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:425:5: warning: "FIREGL_VMA_INFO" is not defined

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `firegl_stub_open':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:530: warning: assignment discards qualifiers from pointer target type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `firegl_stub_putminor':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:579: warning: `inter_module_put' is deprecated (declared at include/linux/module.h:567)

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:581: warning: `inter_module_unregister' is deprecated (declared at include/linux/module.h:564)

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `firegl_stub_register':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:601: warning: `inter_module_register' is deprecated (declared at include/linux/module.h:563)

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:632: warning: `inter_module_put' is deprecated (declared at include/linux/module.h:567)

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: At top level:

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3509: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3510: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3511: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3512: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3513: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3514: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3515: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3516: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3518: warning: initialization from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3528: warning: function declaration isn't a prototype

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `test_inter_module_interface':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3594: warning: `inter_module_put' is deprecated (declared at include/linux/module.h:567)

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3600: warning: `inter_module_put' is deprecated (declared at include/linux/module.h:567)

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `__ke_agp_allocate_memory_phys_list':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3858: warning: passing arg 3 of pointer to function makes integer from pointer without a cast

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `__ke_agp_bind_memory':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3897: warning: passing arg 1 of pointer to function from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `__ke_agp_unbind_memory':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3910: warning: passing arg 1 of pointer to function from incompatible pointer type

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function `__ke_smp_call_function':

/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:4139: warning: passing arg 1 of `smp_call_function' from incompatible pointer type

make[1]: *** [/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.o] Error 1

make: *** [_module_/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod] Error 2

make: Leaving directory `/usr/src/linux-2.6.17-gentoo-r4'

 [33;01m*[0m DRM module not built

>>> Source compiled.

>>> Test phase [not enabled]: x11-drivers/ati-drivers-8.21.7-r1

>>> Install ati-drivers-8.21.7-r1 into /var/tmp/portage/ati-drivers-8.21.7-r1/image/ category x11-drivers

 [32;01m*[0m Installing fglrx module

install: cannot stat `fglrx.ko': No such file or directory

!!! ERROR: x11-drivers/ati-drivers-8.21.7-r1 failed.

Call stack:

  ebuild.sh, line 1539:   Called dyn_install

  ebuild.sh, line 1013:   Called src_install

  ati-drivers-8.21.7-r1.ebuild, line 182:   Called linux-mod_src_install

  linux-mod.eclass, line 497:   Called die

!!! doins fglrx.ko failed

!!! If you need support, post the topmost build error, and the call stack if relevant.

```

Why is this compile/build failing?  Am I missing a file/directory in the source code tree?  Do I need to do something beforehand?

I thought the whole idea of a "STABLE" release was that, when you emerge the packages, the general expectation is that they will "just work".  And considering ATI is one of the most dominant graphic chipsets out there, I guess it is fair to say that I am not out there trying something that nobody has done before (naive assumption   :Very Happy:  ) and I should expect it to work.  Has anyone been through this before?

--selim

----------

## sageman

Quick aside, assuming that ATI drivers are going to work well because ATI is a big name is not true. Unfortunately, ATI's binary drivers for Linux, frankly, suck.

Yeah, it is funny that getting "stable" Gentoo to actually "just work" is, unfortunately, not [yet] the case.

The fglrx.ko it is mentioning is a kernel module. But, it is specifically saying that the module was not built, after claiming an error. But the build says it found the sources. Hmm. Looks like some issues within include/linux/module.h. Try this

```

emerge linux-headers; etc-update && env-update && source /etc/profile

```

----------

## NeddySeagoon

baygins,

The reality of the situation is that only ATI know whats in their closed driver.  For all the rest of your install, you can read every character of source code and fix it when it breaks.  Both ATI and nVidia provide binary drivers. The very idea of binary modules is fatally flawed but on the whole, nVidia do a better job that ATI.

Warnings are about things the develper could do better, not the Gentoo develper in the case, the ATI developer. Its their module.

gcc decided it broke at

```
make[1]: *** [/var/tmp/portage/ati-drivers-8.21.7-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.o] Error 1 
```

but there is no useful error. Further down, the

```
 cannot stat `fglrx.ko': No such file or directory 
```

is a result of the above error.

The next step is to get control of the version of the ATI drivers you use by using the files /etc/portage/package.keywords and /etc/portage/package.mask to allow the use of carefully controlled versions, or possibly go back to an earlier kernel.

As an nVidia user, I can do the analysis and build but not test very well.

Having tried emerging the driver against the 2.6.15-r1 and 2.6.17-r4 kernels, it gets past the error when built with 2.6.15-r1 (I didn't let it finish), so it appears that something has changed in the kernel and the latest stable ATI driver has not kept up.

Edit ati-drivers-8.24.8 builds against the 2.6.17-r4 kernel and should work with Xorg 7.0 too.

I'm not downloading 36Mb a time to build the rest to see if they build too, thats left as an exercise for the reader.

----------

## Deathwing00

Moved from Installing Gentoo to Kernel & Hardware.

----------

## webdawg

I get this same error emerging my xorg-x11 as it trys to emerge the ati drivers.

does anyone have a soulution to this as i would like to use fglrx

----------

## Deathwing00

Try emerging the ~arch version of the drivers. The stable one didn't work for me either and gave me that error, however the ~arch version does work fine.

----------

## baygins

 *Deathwing00 wrote:*   

> Try emerging the ~arch version of the drivers. The stable one didn't work for me either and gave me that error, however the ~arch version does work fine.

 

OK, so does that mean that we will have to get the ~arch version of the entire X11 stack?  Because, the latests (8.27.10) version of ATI drivers require the minor version of X11 to be 1 instead of 0, in other words Xorg 7.0 instead of Xorg 7.1?

I really dont like this idea of unmasking packages one by one just to get a video driver work.  Who IS deciding that these packages are STABLE?

In my definition, a STABLE package is one where when I emerge it, it "simply works".  It builds and installs.  It does not throw any errors when installed on an entirely "stable" system, ie all the rest of the packages are ALSO STABLE.  So, in programmatic terms:

```

$STABLE_X_VER = "7.0_r1"                      # at any point of Portage, there is ONE Xorg marked stable, right?

WHILE Version(Xorg) == $STABLE_X_VER          # latest version of Xorg that is marked stable anyways!

      FOR EACH "ATI Driver version"           # 8.21, 8.25, .27, etc

         IF "ATI Driver" WORKS  THEN          # WORKS means, it "simply builds/installs without any errors"

             Mark Driver "stable"

         ELSE

             Mark Driver "unstable"

      END FOR

END WHILE

```

Is any package moderator/admin/maintainer reading these posts?  Does the above make sense?  I am sure I am not the only one being burnt by this silly issue.  

I really like the Gentoo distro, because it gives so much power and capabiltiy to the user.  But I think, it could be made a little bit more user-friendly, rather than having the user go through the pain of searching for answers in thousands of different posts in different forums, and then marking packages one by one, until the time when magically the combination you have starts working.

I think, we, as the Gentoo community could do better.

Thanks,

--selim

----------

## Deathwing00

First of all, I use the stable modular X11. Second, if I remember correctly, it has nothing to do with the version of X as far as it is >=6.9. The problem is that the kernel 2.6.17 is not compatible with the stable drivers, thus you have to use the ~arch ones. Simply:

```
echo "x11-drivers/ati-drivers ~x86" >> /etc/portage/package.keywords
```

----------

## baygins

 *Deathwing00 wrote:*   

> First of all, I use the stable modular X11. Second, if I remember correctly, it has nothing to do with the version of X as far as it is >=6.9. The problem is that the kernel 2.6.17 is not compatible with the stable drivers, thus you have to use the ~arch ones. Simply:
> 
> ```
> echo "x11-drivers/ati-drivers ~x86" >> /etc/portage/package.keywords
> ```
> ...

 

Help me understand the concept of "stable" releases then.  When I pull in either "gentoo-sources" or "vanilla-sources", are they going to be the stable releases of the kernels?  If so, why does a stable kernel NOT work with a stable driver?

If not, then how can I get a stable kernel?

Again, I think the idea of a stable Gentoo system release (at least in my mind) should be one where ALL stable components work with each other.  

Is there a way I can get release information about a particular kernel release BEFORE I emerge/build?  If the README or INSTALLNOTES can point out the fact that ATI drivers version 8.27.10 are NOT compatible with this kernel release, I am happy.  If I am pointed to another option, I am happy.  

What I am not happy with is the fact that a simple "emerge" command does not get me where I want.  I HAVE TO mock around with package masking, a lot!

Also, when I unmask the drivers, like you suggested, what happens is that I start getting the 8.27.10 version of the ATI drivers.  But guess what:  those versions ARE NOT COMPATIBLE with the stable version of Xorg7.0_r1.  So this starts a domino effect of unmasking about couple of dozen other packages JUST to make it work.

Maybe what I am looking for is nirvana, or something like that.  But, I think it is a fair expectation that at any point in time, when a user does an "emerge package_name", it should not pull in components that are NOT compatible with ALL OTHER stable packages in the system.  This goes for the kernel as well.  Looking at it from a more sensible point of view, if a driver does NOT work with a current stable release of a kernel, then JUST DONT mark it stable.  Simple!

You will appreciate that I am not venting AT you   :Smile:  , rather AT the situation   :Evil or Very Mad:   at hand. 

--selim

----------

## NeddySeagoon

baygins,

The kernel has moved on ... the ATI binary blob moves at a different rate. Its not under gentoos control at all.

Like I have already said, the concept of binary drivers is flawed - you are seeing one aspect of the flaw.

You might want to file a bug at bugs.gentoo.org about it.

The rule of thumb is no bugs for 30 days allows a package to be considered for stable.

----------

## baygins

 *NeddySeagoon wrote:*   

> baygins,
> 
> The kernel has moved on ... the ATI binary blob moves at a different rate. Its not under gentoos control at all.
> 
> Like I have already said, the concept of binary drivers is flawed - you are seeing one aspect of the flaw.
> ...

 

Thanks for the pointers.  I will open a bug and see what happens.

--selim

----------

