#!/bin/sh
# Build nvidia-96xx LZM module

# Contributor: Alexander Markov <apsheronets@gmail.com>
# NVIDIA legacy drivers for kernel26, 96xx branch
# http://www.nvidia.com/

pkgname=nvidia-96xx
pkgver=96.43.09
pkgrel=1
arch=x86
filename=NVIDIA-Linux-${arch}-${pkgver}-pkg0.run
startdir=`pwd`

_kernver=`uname -r`

# Make temporary directories
mkdir src/
mkdir pkg/

# Download "sources"
[ -f $filename ] || wget -c "http://download.nvidia.com/XFree86/Linux-${arch}/${pkgver}/${filename}"

# Extract "sources"
cd ${startdir}/src/
sh ${startdir}/NVIDIA-Linux-${arch}-${pkgver}-pkg0.run --extract-only

cd ${startdir}/src/NVIDIA-Linux-${arch}-${pkgver}-pkg0/usr/src/nv/
ln -s Makefile.kbuild Makefile
make SYSSRC=/lib/modules/${_kernver}/build module || exit

# install kernel module
mkdir -p ${startdir}/pkg/lib/modules/${_kernver}/kernel/drivers/video/
install -m644 nvidia.ko ${startdir}/pkg/lib/modules/${_kernver}/kernel/drivers/video/

sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" ${startdir}/*.install

cd ${startdir}/src/NVIDIA-Linux-${arch}-${pkgver}-pkg0/usr/

mkdir -p ${startdir}/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1}
mkdir -p ${startdir}/pkg/usr/lib/xorg/modules/{extensions,drivers}
mkdir -p ${startdir}/pkg/usr/share/licenses/nvidia-96xx/

install lib/{libGLcore.so.${pkgver},libGL.so.${pkgver},libnvidia-cfg.so.${pkgver},tls/libnvidia-tls.so.${pkgver}} ${startdir}/pkg/usr/lib/ || exit
install -m644 share/man/man1/* ${startdir}/pkg/usr/man/man1/ || exit
rm ${startdir}/pkg/usr/man/man1/nvidia-installer.1.gz || exit
install X11R6/lib/libXv* ${startdir}/pkg/usr/lib/ || exit
install -m644 share/applications/nvidia-settings.desktop ${startdir}/pkg/usr/share/applications/ || exit
# fix nvidia .desktop file
sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i ${startdir}/pkg/usr/share/applications/nvidia-settings.desktop
install -m644 share/pixmaps/nvidia-settings.png ${startdir}/pkg/usr/share/pixmaps/ || exit
install X11R6/lib/modules/drivers/nvidia_drv.so ${startdir}/pkg/usr/lib/xorg/modules/drivers || exit
install X11R6/lib/modules/extensions/libglx.so.${pkgver} ${startdir}/pkg/usr/lib/xorg/modules/extensions || exit
install -m755 bin/nvidia-{settings,xconfig,bug-report.sh} ${startdir}/pkg/usr/bin/ || exit
cd ${startdir}/pkg/usr/lib/
ln -s /usr/lib/libGL.so.${pkgver} libGL.so || exit
ln -s /usr/lib/libGL.so.${pkgver} libGL.so.1 || exit
ln -s /usr/lib/libGLcore.so.${pkgver} libGLcore.so.1 || exit
ln -s /usr/lib/libnvidia-cfg.so.${pkgver} libnvidia-cfg.so.1 || exit
ln -s /usr/lib/libnvidia-tls.so.${pkgver} libnvidia-tls.so.1 || exit
cd ${startdir}/pkg/usr/lib/xorg/modules/extensions
ln -s /usr/lib/xorg/modules/extensions/libglx.so.${pkgver} libglx.so || exit

install -m644 ${startdir}/src/NVIDIA-Linux-${arch}-${pkgver}-pkg0/LICENSE ${startdir}/pkg/usr/share/licenses/nvidia-96xx/ || exit
install -D -m644 ${startdir}/src/NVIDIA-Linux-${arch}-${pkgver}-pkg0/usr/share/doc/README.txt ${startdir}/pkg/usr/share/doc/nvidia/README || exit

# Copy slaxbuild
cd ${startdir}/
mkdir -p ${startdir}/pkg/usr/src/slaxbuilds/
cp $0 ${startdir}/pkg/usr/src/slaxbuilds/

# Clean
find ${startdir}/pkg/ -type d | xargs chmod -v 755;
find ${startdir}/pkg/usr/man/ -type l -name "*.gz" | xargs -r gunzip -f
find ${startdir}/pkg/usr/man/ ! -type l -name "*.gz" | xargs -r gunzip
find ${startdir}/pkg/ | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded

# Make module
dir2lzm ${startdir}/pkg/ ${startdir}/${pkgname}-${pkgver}-${arch}-${pkgrel}.lzm && echo || exit

echo 'Remove temporary files (pkg/ and src/)'
rm -rf ${startdir}/pkg/ ${startdir}/src/
