You are not logged in.

#1 2006-11-26 19:23:19

Lone_Wolf
Forum Moderator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,964

Nouveau driver (OSS 3D driver for Nvidia)

I have tried to make packages for the nouveau driver with success, but would like feedback from other users before submitting them to AUR.

To keep things clean and maintanable, i decided to create 3 packages :
nouveau-git                     ---- the kernel modules
libdrm-nouveau-git           ---- userspace part that replaces libdrm
xf86-video-nouveau-git     ---- the driver itself (the easiest package)


nouveau-git

# Contributor : Lone_Wolf lonewolf@xs4all.nl

pkgname=nouveau-git
pkgver=20061126
pkgrel=1
pkgdesc="Kernel modules for nouveau driver"
url="http://nouveau.freedesktop.org/wiki/"
license=('GPL')
depends=(glibc)
sources=()
md5sums=()
options=('NOLIBTOOL')
install=nouveau-git.install


_kernver=2.6.18-ARCH
# GIT variables
_gitroot="git://anongit.freedesktop.org/git/mesa/drm/"
_gitname="drm"

build() {
  mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/char/drm
  cd $startdir/src
  msg "Connecting to git.freedesktop.org GIT server...."

  if [ -d $startdir/src/$_gitname ] ; then
  cd $_gitname && git-pull origin
  msg "The local files are updated."
  else
  git clone $_gitroot
  fi
  msg "GIT checkout done or server timeout"
  msg "Starting make..."
  cp -r $startdir/src/$_gitname $startdir/src/$_gitname-build
  cd ${_gitname}-build
  git checkout nouveau-1
#  ./autogen.sh
#  ./configure --prefix=/usr
#  make ||return 1
#  make DESTDIR=$startdir/pkg install
  cd linux-core
  make ||return 1
  # install drm.ko and nouveau.ko kernel modules
  # drm.ko is renamed to drm-nouveau.ko to avoid problems with the existing drm.ko module
  install -D -m644 drm.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/char/drm/drm-nouveau.ko
  install -D -m644 nouveau.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/char/drm/nouveau.ko
} 

nouveau-git.install

# arg 1:  the new package version
post_install() {

  KERNEL_VERSION='2.6.18-ARCH'
  depmod -v $KERNEL_VERSION  > /dev/null 2>&1

  echo ">>>"
  echo ">>> Make sure you have installed the xf86-video-nouveau-git package also"
  echo ">>> To make this work execute the following as root :"
  echo ">>> rmmod nvidia"
  echo ">>> modprobe drm
  echo ">>> modprobe -o --drm drm-nouveau"
  echo ">>> modprobe nouveau"
  echo ">>>"
  echo ">>> Now edit your /etc/X11/xorg.conf to use the nouveau driver:"
  echo ">>> Change in Section "Device" the Driver line to Driver "nouveau" "
  echo ">>>"
  echo ">>> Now start Xorg and run for cover !! "
  echo ">>>"
  /bin/true
         
}

# arg 1:  the new package version
# arg 2:  the old package version
post_upgrade() {
  post_install $1
  rmmod drm-nouveau || echo 'In order to use the new nvidia module, exit Xserver and unload it manually.'
}

# arg 1:  the old package version
post_remove() {
  KERNEL_VERSION='2.6.18-ARCH'
  depmod -v $KERNEL_VERSION     > /dev/null 2>&1     
}

op=$1
shift
$op $*

libdrm-nouveau-git

# Contributor : Lone_Wolf lonewolf@xs4all.nl

pkgname=libdrm-nouveau-git
pkgver=20061126
pkgrel=1
pkgdesc="Userspace interface for nouveau driver"
url="http://nouveau.freedesktop.org/wiki/"
license=('GPL')
depends=('glibc' 'nouveau-git')
conflicts=('libdrm')
provides=('libdrm')
sources=()
md5sums=()
options=('NOLIBTOOL')

# GIT variables
_gitroot="git://anongit.freedesktop.org/git/mesa/drm/"
_gitname="drm"

build() {
  mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/char/drm
  cd $startdir/src
  msg "Connecting to git.freedesktop.org GIT server...."

  if [ -d $startdir/src/$_gitname ] ; then
  cd $_gitname && git-pull origin
  msg "The local files are updated."
  else
  git clone $_gitroot
  fi
  msg "GIT checkout done or server timeout"
  msg "Starting make..."
  cp -r $startdir/src/$_gitname $startdir/src/$_gitname-build
  cd ${_gitname}-build
  git checkout nouveau-1
  ./autogen.sh
  ./configure --prefix=/usr
  make ||return 1
  make DESTDIR=$startdir/pkg install
} 

xf86-video-nouveau-git

# Contributor : Lone_Wolf lonewolf@xs4all.nl

pkgname=xf86-video-nouveau-git
pkgver=20061126
pkgrel=1
pkgdesc="OSS 3D driver for nvidia cards"
url="http://nouveau.freedesktop.org/wiki/"
license=('GPL')
depends=('libdrm-nouveau-git' 'glibc')
source=()
md5sums=()
options=('NOLIBTOOL')
_gitroot="git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau/"
_gitname="xf86-video-nouveau"

build() {
  cd $startdir/src
  msg "Connecting to git.freedesktop.org GIT server...."

  if [ -d $startdir/src/$_gitname ] ; then
  cd $_gitname && git-pull origin
  msg "The local files are updated."
  else
  git clone $_gitroot
  fi
  msg "GIT checkout done or server timeout"
  msg "Starting make..."
  cp -r $startdir/src/$_gitname $startdir/src/$_gitname-build
  cd ${_gitname}-build
  ./autogen.sh
  ./configure --prefix=/usr
  make ||return 1
  make DESTDIR=$startdir/pkg install
} 

Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

#2 2006-11-30 23:25:01

Lone_Wolf
Forum Moderator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,964

Re: Nouveau driver (OSS 3D driver for Nvidia)

50 views but no comments .

I've looked at  things a bit better, and the 3 packages work, but don't have any 3D functions.
It looks more like a replacement for the NV driver.
Something is missing, and i think it's the DRI driver.

A DRI CVS is mentioned on the nouveau wiki frontpage, but there are no instructions how to use it.
It has a makefile, so i'm going to try building it and make a 4th package.
I have to find out where to put the nouveau_dri.so driver and what libgl package can use it.
The most likely candidate is the mesa libgl-dri package.


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

#3 2006-11-30 23:31:08

chrismortimore
Member
From: Edinburgh, UK
Registered: 2006-07-15
Posts: 655

Re: Nouveau driver (OSS 3D driver for Nvidia)

Once my exams are out the way (last one is the 12th) I'll give them a whizz on my 6600GT and FX5200Go for you.  Until then, however, I'm strictly in no-tinker mode.


Desktop: AMD Athlon64 3800+ Venice Core, 2GB PC3200, 2x160GB Maxtor DiamondMax 10, 2x320GB WD Caviar RE, Nvidia 6600GT 256MB
Laptop: Intel Pentium M, 512MB PC2700, 60GB IBM TravelStar, Nvidia 5200Go 64MB

Offline

#4 2006-12-01 18:53:51

slubman
Member
From: Grenoble (France)
Registered: 2004-08-04
Posts: 86
Website

Re: Nouveau driver (OSS 3D driver for Nvidia)

Hi

I've just get the nouveau driver installed successfully. But i had to tweak some things in your PKGBUILDS.


here you'll found the PKGBUILD i finally got.

nouveau-git (i hadn't git installed before compiling)

# Contributor : Lone_Wolf lonewolf@xs4all.nl

pkgname=nouveau-git
pkgver=20061126
pkgrel=1
pkgdesc="Kernel modules for nouveau driver"
url="http://nouveau.freedesktop.org/wiki/"
license=('GPL')
depends=(glibc)
makedepends=('git')
sources=()
md5sums=()
options=('NOLIBTOOL')
install=nouveau-git.install


_kernver=2.6.18-ARCH
# GIT variables
_gitroot="git://anongit.freedesktop.org/git/mesa/drm/"
_gitname="drm"

build() {
    mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/char/drm
    cd $startdir/src
    msg "Connecting to git.freedesktop.org GIT server...."

    if [ -d $startdir/src/$_gitname ] ; then
        cd $_gitname && git-pull origin
        msg "The local files are updated."
    else
        git clone $_gitroot
    fi
    msg "GIT checkout done or server timeout"
    msg "Starting make..."
    cp -r $startdir/src/$_gitname $startdir/src/$_gitname-build
    cd ${_gitname}-build
    git checkout nouveau-1
    #  ./autogen.sh
    #  ./configure --prefix=/usr
    #  make ||return 1
    #  make DESTDIR=$startdir/pkg install
    cd linux-core
    make ||return 1
    # install drm.ko and nouveau.ko kernel modules
    # drm.ko is renamed to drm-nouveau.ko to avoid problems with the existing drm.ko module
    install -D -m644 drm.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/char/drm/drm-nouveau.ko
    install -D -m644 nouveau.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/char/drm/nouveau.ko
}

libdrm-nouveau-git: nothing to change

xf86-video-nouveau-git: faced 2 problems when trying to build this package: · Missing xf86driproto (so added to makedepends). · Compilation failure when trying to build the manpage. I edit the PKGBUILD with a dirty hack to avoid manpage compilation.

# Contributor : Lone_Wolf lonewolf@xs4all.nl

pkgname=xf86-video-nouveau-git
pkgver=20061126
pkgrel=1
pkgdesc="OSS 3D driver for nvidia cards"
url="http://nouveau.freedesktop.org/wiki/"
license=('GPL')
depends=('libdrm-nouveau-git' 'glibc')
makedepends=('xf86driproto')
source=()
md5sums=()
options=('NOLIBTOOL')
_gitroot="git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau/"
_gitname="xf86-video-nouveau"

build() {
    cd $startdir/src
    msg "Connecting to git.freedesktop.org GIT server...."
    
    if [ -d $startdir/src/$_gitname ] ; then
    cd $_gitname && git-pull origin
    msg "The local files are updated."
    else
    git clone $_gitroot
    fi
    msg "GIT checkout done or server timeout"
    msg "Starting make..."
    cp -r $startdir/src/$_gitname $startdir/src/$_gitname-build
    cd $startdir/src/${_gitname}-build

    ##### Avoid manpage compilation #####
    mv Makefile.am Makefile.am.old
    cat Makefile.am.old | sed -e 's/SUBDIRS = src man/SUBDIRS = src/g' > Makefile.am
    mv configure.ac configure.ac.old
    cat configure.ac.old | sed -e 's/XORG_MANPAGE_SECTIONS/# XORG_MANPAGE_SECTIONS/g' | sed -e 's/man/Makefile//g' > configure.ac
    ##### End of hack #####

    ./autogen.sh
    ./configure --prefix=/usr
    make || return 1
    make DESTDIR=$startdir/pkg install
}

here are my 2cents smile

Offline

#5 2006-12-01 19:56:51

Lone_Wolf
Forum Moderator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,964

Re: Nouveau driver (OSS 3D driver for Nvidia)

Thanks for the input, chrismortimore and slubman .

I have found a gentoo ebuild that shows that to get DRI , we'll have to build mesa from cvs and add the nouveau dri driver to it.
As i have the feeling the pkgbuilds will need lots of changing before they are ready for AUR, the next version of the pkgbuilds will be put on       http://pastebin.archlinux.org  and i'll modify the first post by replacing the pkgbuilds with links to pastebin.
(probably in the first half of next week).

There will be a total of 4 packages, 3 git and 1 cvs.
The normal naming scheme will make this confusing, so i propose to use another scheme with exp (for experimental) as last part  so they will be easily recognizable as belonging together.

This will result in these packages :

nouveau-dri-exp    Mesa CVS with nouveau DRI driver
nouveau-drm-exp DRM kernel modules
nouveau-libdrm-exp DRM userspace parts
xf86-video-nouveau-exp the xorg driver


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

#6 2007-02-04 00:40:00

Lone_Wolf
Forum Moderator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,964

Re: Nouveau driver (OSS 3D driver for Nvidia)

I had problems with compiling the mesa part and decided to stop working on it temporarily.
As the nouveau developers have improved/clarified the 3D part, i'm going to give it another go soon.

(thanks for the message, sushi)

Last edited by Lone_Wolf (2007-02-04 00:40:16)


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

Board footer

Powered by FluxBB