* NVIDIA driver: updated to 169.07. Cleaned up and purified: it
doesn't need symlinks in /usr anymore. nvidia-settings works properly now. svn path=/nixpkgs/trunk/; revision=10094
This commit is contained in:
parent
5d4fd5f529
commit
fc345ae130
@ -1,101 +1,76 @@
|
|||||||
source $stdenv/setup
|
source $stdenv/setup
|
||||||
|
|
||||||
echo "Building linux driver against kernel: " $kernelOutPath;
|
dontPatchELF=1 # must keep libXv, $out in RPATH
|
||||||
echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
|
|
||||||
|
|
||||||
echo $nvidiasrc
|
|
||||||
cp $nvidiasrc .
|
unpackFile() {
|
||||||
chmod 755 ./*-NVIDIA*
|
sh $src -x
|
||||||
./*-NVIDIA* -x
|
}
|
||||||
cd NVIDIA*/
|
|
||||||
|
|
||||||
|
buildPhase=myBuildPhase
|
||||||
|
myBuildPhase() {
|
||||||
|
echo "Building linux driver against kernel: " $kernel;
|
||||||
|
|
||||||
cd usr/src/nv/
|
cd usr/src/nv/
|
||||||
pwd -P
|
|
||||||
|
|
||||||
#Clean up
|
# Workaround: get it to build on kernels that have CONFIG_XEN set.
|
||||||
#make clean
|
# Disable the test, apply a patch to disable the Xen functionality.
|
||||||
|
#substituteInPlace Makefile.kbuild --replace xen_sanity_check fnord
|
||||||
|
#patch -p1 < $xenPatch
|
||||||
|
|
||||||
#Create the module
|
# Create the module.
|
||||||
echo $out
|
sysSrc=$(echo $kernel/lib/modules/2.*/build/)
|
||||||
mkdir $out
|
unset src # used by the nv makefile
|
||||||
make SYSSRC=$kernelOutPath/lib/modules/2.*/build/ module
|
make SYSSRC=$sysSrc module
|
||||||
|
cd ../../..
|
||||||
#go to the usr dir of the nvidia package
|
}
|
||||||
cd ../../
|
|
||||||
|
|
||||||
echo "Copying all files to " $out/lib""
|
|
||||||
|
|
||||||
cp -R * $out
|
|
||||||
|
|
||||||
#add extra symlinks in $out
|
|
||||||
ln -snf $out/lib/libGLcore.so.$versionNumber $out/lib/libGLcore.so
|
|
||||||
ln -snf $out/lib/libGLcore.so.$versionNumber $out/lib/libGLcore.so.1
|
|
||||||
ln -snf $out/lib/libGL.so.$versionNumber $out/lib/libGL.so
|
|
||||||
ln -snf $out/lib/libGL.so.$versionNumber $out/lib/libGL.so.1
|
|
||||||
ln -snf $out/lib/libnvidia-cfg.so.$versionNumber $out/lib/libnvidia-cfg.so.1
|
|
||||||
ln -snf $out/lib/libnvidia-tls.so.$versionNumber $out/lib/libnvidia-tls.so.1
|
|
||||||
ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber $out/X11R6/lib/libXvMCNVIDIA.so.1
|
|
||||||
ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber $out/lib/libXvMCNVIDIA.so.1
|
|
||||||
ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber $out/X11R6/lib/modules/libnvidia-wfb.so.1
|
|
||||||
ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber $out/lib/libnvidia-wfb.so.1
|
|
||||||
ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber $out/X11R6/lib/modules/extensions/libglx.so.1
|
|
||||||
ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber $out/lib/libglx.so.1
|
|
||||||
|
|
||||||
#TODO: patchelf binaries !
|
|
||||||
#patchelf --set-interpreter ${path glibc TODO /lib/ld-linux.so.2 $out/bin/....
|
|
||||||
|
|
||||||
#from dep on xorg-sys-opengl: add symlinks in /usr/lib/ (especially libGL.so.1) to the real location...
|
|
||||||
|
|
||||||
ensureDir /usr/lib/
|
|
||||||
cd /usr/lib
|
|
||||||
ln -snf $out/lib/libGLcore.so.$versionNumber libGLcore.so.1
|
|
||||||
ln -snf $out/lib/libGL.la libGL.la
|
|
||||||
ln -snf $out/lib/libGL.so.$versionNumber libGL.so.1
|
|
||||||
ln -snf $out/lib/libnvidia-cfg.so.$versionNumber libnvidia-cfg.so.1
|
|
||||||
ln -snf $out/lib/libnvidia-tls.so.$versionNumber libnvidia-tls.so.1
|
|
||||||
ensureDir /usr/lib/tls/
|
|
||||||
ln -snf $out/lib/tls/libnvidia-tls.so.$versionNumber /usr/lib/tls/libnvidia-tls.so.1
|
|
||||||
ln -snf $out/X11R6/lib/modules/extensions/libglx.so.$versionNumber libglx.so.1
|
|
||||||
ln -snf $out/X11R6/lib/modules/libnvidia-wfb.so.$versionNumber libnvidia-wfb.so.1
|
|
||||||
ln -snf $out/X11R6/lib/modules/drivers/nvidia_drv.so nvidia_drv.so
|
|
||||||
ln -snf $out/X11R6/lib/libXvMCNVIDIA.so.$versionNumber libXvMCNVIDIA.so.1
|
|
||||||
ln -snf $out/bin/tls_test_dso.so tls_test_dso.so
|
|
||||||
ln -snf $out/src/nv/nvidia.ko nvidia.ko
|
|
||||||
|
|
||||||
echo "YOU! need to add symlinks as root to the libs in the current $xorgOutPath/lib/xorg/modules/extensions/ (especially libglx.so)"
|
|
||||||
rwlibs="
|
|
||||||
cd $xorgOutPath/lib/xorg/modules/extensions/;
|
|
||||||
mv libglx.so libglx.so.org;
|
|
||||||
mv libglx.la libglx.la.org;
|
|
||||||
mv libGLcore.so libGLcore.so.org;
|
|
||||||
ln -snf /usr/lib/libglx.so.1 libglx.so;
|
|
||||||
ln -snf /usr/lib/libglx.so.1 libglx.so.1;
|
|
||||||
ln -snf /usr/lib/libGLcore.so.1 libGLcore.so;
|
|
||||||
ln -snf /usr/lib/libGLcore.so.1 libGLcore.so.1;
|
|
||||||
ln -snf /usr/lib/libGL.so.1 libGL.so;
|
|
||||||
ln -snf /usr/lib/libGL.so.1 libGL.so.1;
|
|
||||||
ln -snf /usr/lib/libglx.la libglx.la;
|
|
||||||
ln -snf /usr/lib/libglx.so.1 libglx.so;
|
|
||||||
ln -snf /usr/lib/libglx.so.1 libglx.so.1;
|
|
||||||
ln -snf /usr/lib/nvidia_drv.so nvidia_drv.so;
|
|
||||||
|
|
||||||
# rm /var/run/opengl-driver;
|
|
||||||
ln -snf /var/run/opengl-driver $out;
|
|
||||||
|
|
||||||
kerneldrvnvpath=$kernelOutPath/lib/modules/*-default/kernel/drivers/video/nvidia;
|
|
||||||
#echo TODO kerneldrvnvpath: \$kerneldrvnvpath
|
|
||||||
ln -snf $out/src/nv/nvidia.ko \$kerneldrvnvpath/nvidia.ko;
|
|
||||||
"
|
|
||||||
#TODO ADD ln -sf is sometimes not strong enough ...
|
|
||||||
|
|
||||||
rwlibsfile="$out/bin/nvidia-rewriteLibs.sh"
|
|
||||||
|
|
||||||
echo "--------------------------------------------------------"
|
|
||||||
echo "YOU MUST RUN $rwlibsfile as ROOT after this installation"
|
|
||||||
echo "--------------------------------------------------------"
|
|
||||||
echo $rwlibs > $rwlibsfile
|
|
||||||
chmod 755 $rwlibsfile
|
|
||||||
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
|
|
||||||
|
installPhase=myInstallPhase
|
||||||
|
myInstallPhase() {
|
||||||
|
|
||||||
|
# Install the kernel module.
|
||||||
|
ensureDir $out/lib
|
||||||
|
cp usr/src/nv/nvidia.ko $out/lib/
|
||||||
|
|
||||||
|
# Install libGL and friends.
|
||||||
|
cp -prd usr/lib/* usr/X11R6/lib/libXv* $out/lib/
|
||||||
|
|
||||||
|
ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so
|
||||||
|
ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so.1
|
||||||
|
ln -snf libGL.so.$versionNumber $out/lib/libGL.so
|
||||||
|
ln -snf libGL.so.$versionNumber $out/lib/libGL.so.1
|
||||||
|
ln -snf libnvidia-cfg.so.$versionNumber $out/lib/libnvidia-cfg.so.1
|
||||||
|
ln -snf libnvidia-tls.so.$versionNumber $out/lib/libnvidia-tls.so.1
|
||||||
|
ln -snf libnvidia-tls.so.$versionNumber $out/lib/tls/libnvidia-tls.so.1
|
||||||
|
ln -snf libXvMCNVIDIA.so.$versionNumber $out/lib/libXvMCNVIDIA_dynamic.so.1
|
||||||
|
ln -snf libcuda.so.$versionNumber $out/lib/libcuda.so.1
|
||||||
|
|
||||||
|
# Install the X driver.
|
||||||
|
ensureDir $out/lib/xorg/modules
|
||||||
|
cp -prd usr/X11R6/lib/modules/* $out/lib/xorg/modules/
|
||||||
|
|
||||||
|
ln -snf libnvidia-wfb.so.$versionNumber $out/lib/xorg/modules/libnvidia-wfb.so.1
|
||||||
|
ln -snf libglx.so.$versionNumber $out/lib/xorg/modules/extensions/libglx.so
|
||||||
|
|
||||||
|
# Install the programs.
|
||||||
|
ensureDir $out/bin
|
||||||
|
|
||||||
|
fullPath=$out/lib
|
||||||
|
for i in $libPath; do
|
||||||
|
fullPath=$fullPath:$i/lib
|
||||||
|
done
|
||||||
|
|
||||||
|
for i in nvidia-settings nvidia-xconfig; do
|
||||||
|
cp usr/bin/$i $out/bin/$i
|
||||||
|
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
|
||||||
|
--set-rpath $fullPath $out/bin/$i
|
||||||
|
done
|
||||||
|
|
||||||
|
# Header files etc.
|
||||||
|
cp -prd usr/include usr/share $out
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
genericBuild
|
||||||
|
@ -1,46 +1,26 @@
|
|||||||
{ stdenv
|
{stdenv, fetchurl, kernel, xlibs, gtkLibs}:
|
||||||
, fetchurl
|
|
||||||
|
|
||||||
, kernel
|
|
||||||
, coreutils
|
|
||||||
, xorg_server
|
|
||||||
|
|
||||||
#deps
|
|
||||||
,libXext, libX11
|
|
||||||
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
versionNumber = "100.14.19"; #important ! to also update this if the sources are updated, this is used as follows: extensions/libglx.so.$versionNumber
|
versionNumber = "169.07";
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "nvidiaDrivers-" + versionNumber;
|
name = "nvidiaDrivers-" + versionNumber;
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
nvidiasrc = fetchurl { #we cannot use $src since this variable is also used in the nvidia sources
|
url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg1.run";
|
||||||
#url = http://www.denbreejen.net/public/nixos/NVIDIA-Linux-x86-1.0-9755-pkg1.run;
|
sha256 = "1q4sbwcf24rvx72sj19pvhsmg5n8v2rfzsxf56mfxjbiy2jhjbaa";
|
||||||
#sha256 = "1985373866b1dcae80f3da66dbbbd3c28ad76e75a620865be321ee870ad9d1ea";
|
|
||||||
#url = http://us.download.nvidia.com/XFree86/Linux-x86/100.14.11/NVIDIA-Linux-x86-100.14.11-pkg1.run;
|
|
||||||
#sha256 = "8665370e590328cc5bf3d13737739a80dacbfb6844436cab03c992e84bf16b0c";
|
|
||||||
url = http://us.download.nvidia.com/XFree86/Linux-x86/100.14.19/NVIDIA-Linux-x86-100.14.19-pkg1.run;
|
|
||||||
sha256 = "4dc97d8ff5340954f3cd446093636261c54b147e9721eb295574207d79e9a7e7";
|
|
||||||
};
|
};
|
||||||
inherit versionNumber;
|
|
||||||
|
|
||||||
kernelOutPath = kernel.outPath;
|
#xenPatch = ./nvidia-2.6.24-xen.patch;
|
||||||
xorgOutPath = xorg_server.outPath;
|
|
||||||
|
|
||||||
buildInputs = [
|
inherit versionNumber kernel;
|
||||||
libXext libX11
|
|
||||||
|
libPath = [
|
||||||
|
gtkLibs.gtk gtkLibs.atk gtkLibs.pango gtkLibs.glib
|
||||||
|
xlibs.libXext xlibs.libX11 xlibs.libXv
|
||||||
];
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
libX11 libXext
|
|
||||||
];
|
|
||||||
|
|
||||||
NIX_LDFLAGS = "-rpath ${libX11}/lib -rpath ${libXext}/lib";
|
|
||||||
LD_LIBRARY_PATH = "${libX11}/lib:${libXext}/lib/";
|
|
||||||
}
|
}
|
||||||
|
@ -3427,9 +3427,7 @@ rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
nvidiaDrivers = import ../os-specific/linux/nvidia {
|
nvidiaDrivers = import ../os-specific/linux/nvidia {
|
||||||
inherit stdenv fetchurl kernel coreutils;
|
inherit stdenv fetchurl kernel xlibs gtkLibs;
|
||||||
xorg_server = xorg.xorgserver;
|
|
||||||
inherit (xlibs) libX11 libXext;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
gw6c = import ../os-specific/linux/gw6c {
|
gw6c = import ../os-specific/linux/gw6c {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user