summary refs log tree commit diff
path: root/pkgs/os-specific/linux/nvidia/builder.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/nvidia/builder.sh')
-rwxr-xr-xpkgs/os-specific/linux/nvidia/builder.sh93
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/nvidia/builder.sh b/pkgs/os-specific/linux/nvidia/builder.sh
new file mode 100755
index 00000000000..3d8f907c08a
--- /dev/null
+++ b/pkgs/os-specific/linux/nvidia/builder.sh
@@ -0,0 +1,93 @@
+source $stdenv/setup
+
+echo "Building linux driver against kernel: " $kernelOutPath;
+echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
+
+echo $nvidiasrc
+cp $nvidiasrc .
+chmod 755 ./*-NVIDIA*
+./*-NVIDIA* -x
+cd NVIDIA*/
+
+cd usr/src/nv/
+pwd -P
+
+#Clean up
+#make clean
+
+#Create the module
+echo $out
+mkdir $out
+make SYSSRC=$kernelOutPath/lib/modules/2.*/build/ module	
+
+#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 -sf $out/lib/libGLcore.so.1.0.9755 $out/lib/libGLcore.so
+ln -sf $out/lib/libGLcore.so.1.0.9755 $out/lib/libGLcore.so.1
+ln -sf $out/lib/libGL.so.1.0.9755 $out/lib/libGL.so
+ln -sf $out/lib/libGL.so.1.0.9755 $out/lib/libGL.so.1
+ln -sf $out/lib/libnvidia-cfg.so.1.0.9755 $out/lib/libnvidia-cfg.so.1
+ln -sf $out/lib/libnvidia-tls.so.1.0.9755 $out/lib/libnvidia-tls.so.1
+ln -sf $out/X11R6/lib/libXvMCNVIDIA.so.1.0.9755 $out/X11R6/lib/libXvMCNVIDIA.so.1
+ln -sf $out/X11R6/lib/libXvMCNVIDIA.so.1.0.9755 $out/lib/libXvMCNVIDIA.so.1
+ln -sf $out/X11R6/lib/modules/libnvidia-wfb.so.1.0.9755 $out/X11R6/lib/modules/libnvidia-wfb.so.1
+ln -sf $out/X11R6/lib/modules/libnvidia-wfb.so.1.0.9755 $out/lib/libnvidia-wfb.so.1
+ln -sf $out/X11R6/lib/modules/extensions/libglx.so.1.0.9755 $out/X11R6/lib/modules/extensions/libglx.so.1
+ln -sf $out/X11R6/lib/modules/extensions/libglx.so.1.0.9755 $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 -sf $out/lib/libGLcore.so.1.* libGLcore.so.1
+ln -sf $out/lib/libGL.la libGL.la
+ln -sf $out/lib/libGL.so.1.* libGL.so.1
+ln -sf $out/lib/libnvidia-cfg.so.1.* libnvidia-cfg.so.1
+ln -sf $out/lib/libnvidia-tls.so.1.* libnvidia-tls.so.1
+ensureDir /usr/lib/tls/
+ln -sf $out/lib/tls/libnvidia-tls.so.1.* /usr/lib/tls/libnvidia-tls.so.1
+ln -sf $out/X11R6/lib/modules/extensions/libglx.so.1.* libglx.so.1
+ln -sf $out/X11R6/lib/modules/libnvidia-wfb.so.1.* libnvidia-wfb.so.1
+ln -sf $out/X11R6/lib/modules/drivers/nvidia_drv.so nvidia_drv.so
+ln -sf $out/X11R6/lib/libXvMCNVIDIA.so.1.* libXvMCNVIDIA.so.1
+ln -sf $out/bin/tls_test_dso.so tls_test_dso.so
+ln -sf $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 -sf /usr/lib/libglx.so.1 libglx.so;
+ln -sf /usr/lib/libglx.so.1 libglx.so.1;
+ln -sf /usr/lib/libGLcore.so.1 libGLcore.so;
+ln -sf /usr/lib/libGLcore.so.1 libGLcore.so.1;
+ln -sf /usr/lib/libGL.so.1 libGL.so;
+ln -sf /usr/lib/libGL.so.1 libGL.so.1;
+ln -sf /usr/lib/libglx.la libglx.la;
+ln -sf /usr/lib/libglx.so.1 libglx.so;
+ln -sf /usr/lib/libglx.so.1 libglx.so.1;
+ln -sf /usr/lib/nvidia_drv.so nvidia_drv.so;
+ln -sf $out/src/nv/nvidia.ko $kernelOutPath/lib/modules/$(uname -r)/kernel/drivers/video/nvidia/nvidia.ko;
+
+"
+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
+