# Contributor: Dan Vratil <vratil@progdansoft.com>
# Contributor: Ng Oon-Ee <n g o o n e e AT g mail dot com>
# Contributor: Amaury Couste <amaury.couste@gmail.com>
# Contributor: James Rayner <iphitus@gmail.com>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Contributor: Nuno Aniceto aka quarkup <nuno.aja@gmail.com>
# Contributor: Det <nimetonmaili AT gmail dot com> ## This list soon should be a separate file
pkgname='nvidia-all'
true && pkgname=('nvidia-all' 'nvidia-utils')
pkgver='260.19.44'
pkgrel=1
_arch='x86_64' && _pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32" && md5sums=('3dfce350616ad70d626b531a15c8604f')
[ "$CARCH" = "i686" ] && _arch='x86' && _pkg="NVIDIA-Linux-${_arch}-${pkgver}" && md5sums=('c99b0710a43db3aafb4f27408194e910')
url='http://www.nvidia.com/'
arch=('i686' 'x86_64')
license=('custom')
source=("http://us.download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run"
'20-nvidia.conf')
md5sums+=('541cb36684b6764ccba73d7afe268bf5')
_KERNELS=`ls /usr/src | sed 's|linux-||'`
build() {
rm -rf ${_pkg}
# Extract the nvidia drivers
sh "${_pkg}.run" --extract-only
# Loop through all detected kernels and build modules
#for _kernver in `file /boot/* | grep 'Linux kernel.*boot executable' | grep 'vmlinuz' | sed 's|.*version \([^ ]\+\).*|\1|'`;
for _kernver in $_KERNELS; do
cd "${srcdir}/${_pkg}"
cp -a kernel kernel-${_kernver}
cd kernel-${_kernver}
msg "Found kernel: $_kernver"
msg2 "Building module..."
make SYSSRC=/usr/src/linux-${_kernver} module &> /dev/null
done
}
package_nvidia-utils() {
pkgdesc='NVIDIA drivers utilities and libraries'
depends=('xorg-server' 'libxvmc')
optdepends=('gtk2: nvidia-settings')
conflicts=('libgl')
provides=('libgl' 'libcl')
install='nvidia-utils.install'
backup=('etc/X11/xorg.conf.d/20-nvidia.conf')
cd ${_pkg}
# X driver
install -D -m755 nvidia_drv.so $pkgdir/usr/lib/xorg/modules/drivers/nvidia_drv.so
# GLX extension module for X
install -D -m755 libglx.so.$pkgver $pkgdir/usr/lib/xorg/modules/extensions/libglx.so.$pkgver
ln -s libglx.so.$pkgver $pkgdir/usr/lib/xorg/modules/extensions/libglx.so # X doesn't find glx otherwise
# OpenGL library
install -D -m755 libGL.so.$pkgver $pkgdir/usr/lib/libGL.so.$pkgver
# OpenGL core library
install -D -m755 libnvidia-glcore.so.$pkgver $pkgdir/usr/lib/libnvidia-glcore.so.$pkgver
# XvMC
install -D -m644 libXvMCNVIDIA.a $pkgdir/usr/lib/libXvMCNVIDIA.a
install -D -m755 libXvMCNVIDIA.so.$pkgver $pkgdir/usr/lib/libXvMCNVIDIA.so.$pkgver
# VDPAU
install -D -m755 libvdpau_nvidia.so.$pkgver $pkgdir/usr/lib/vdpau/libvdpau_nvidia.so.$pkgver
# CUDA
install -D -m755 libcuda.so.$pkgver $pkgdir/usr/lib/libcuda.so.$pkgver
install -D -m755 libnvcuvid.so.$pkgver $pkgdir/usr/lib/libnvcuvid.so.$pkgver
# nvidia-tls library
install -D -m755 tls/libnvidia-tls.so.$pkgver $pkgdir/usr/lib/libnvidia-tls.so.$pkgver
# OpenCL
install -D -m755 libnvidia-compiler.so.$pkgver $pkgdir/usr/lib/libnvidia-compiler.so.$pkgver
install -D -m755 libOpenCL.so.1.0.0 $pkgdir/usr/lib/libOpenCL.so.1.0.0
install -D -m644 nvidia.icd $pkgdir/etc/OpenCL/vendors/nvidia.icd
install -D -m755 libnvidia-cfg.so.$pkgver $pkgdir/usr/lib/libnvidia-cfg.so.$pkgver
# create soname links
for _lib in $(find $pkgdir -name '*.so*'); do
_soname="$(dirname ${_lib})/$(readelf -d "$_lib" | sed -nr 's/.*Library soname: \[(.*)\].*/\1/p')"
if [ ! -e "${_soname}" ]; then
ln -s "$(basename ${_lib})" "${_soname}"
ln -s "$(basename ${_soname})" "${_soname/.[0-9]*/}"
fi
done
# nvidia-xconfig
install -D -m755 nvidia-xconfig $pkgdir/usr/bin/nvidia-xconfig
install -D -m644 nvidia-xconfig.1.gz $pkgdir/usr/share/man/man1/nvidia-xconfig.1.gz
# nvidia-settings
install -D -m755 nvidia-settings $pkgdir/usr/bin/nvidia-settings
install -D -m644 nvidia-settings.1.gz $pkgdir/usr/share/man/man1/nvidia-settings.1.gz
install -D -m644 nvidia-settings.desktop $pkgdir/usr/share/applications/nvidia-settings.desktop
install -D -m644 nvidia-settings.png $pkgdir/usr/share/pixmaps/nvidia-settings.png
sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i $pkgdir/usr/share/applications/nvidia-settings.desktop
# nvidia-bug-report
install -D -m755 nvidia-bug-report.sh $pkgdir/usr/bin/nvidia-bug-report.sh
# nvidia-smi
install -D -m755 nvidia-smi $pkgdir/usr/bin/nvidia-smi
install -D -m644 nvidia-smi.1.gz $pkgdir/usr/share/man/man1/nvidia-smi.1.gz
install -D -m644 LICENSE $pkgdir/usr/share/licenses/nvidia/LICENSE
ln -s nvidia $pkgdir/usr/share/licenses/nvidia-utils
install -D -m644 README.txt $pkgdir/usr/share/doc/nvidia/README
install -D -m644 NVIDIA_Changelog $pkgdir/usr/share/doc/nvidia/NVIDIA_Changelog
ln -s nvidia $pkgdir/usr/share/doc/nvidia-utils
# Install xorg.conf.d file for nvidia autodetection in xorg.conf-less configurations
install -D -m644 $srcdir/20-nvidia.conf $pkgdir/etc/X11/xorg.conf.d/20-nvidia.conf
}
package_nvidia-all(){
pkgdesc='NVIDIA drivers for all kernels on the system'
conflicts=('nvidia-71xx' 'nvidia-96xx' 'nvidia-173xx' 'nvidia-legacy' 'nvidia')
depends=("nvidia-utils=${pkgver}")
makedepends=('kernel26-headers')
install='nvidia-all.install'
for _kernver in $_KERNELS; do
msg2 "Installing module..."
install -D -m644 ${_pkg}/kernel-${_kernver}/nvidia.ko "${pkgdir}/lib/modules/${_kernver}/kernel/drivers/video/nvidia.ko"
done
# Blacklist the Nouveau driver (avoiding possible conflicts by appending the -all suffix)
install -d -m755 "${pkgdir}/etc/modprobe.d"
echo "blacklist nouveau" > "${pkgdir}/etc/modprobe.d/nouveau_blacklist-all.conf"
}