nixpkgs/pkgs/os-specific/linux/nvidia-x11/builder-legacy173.sh
John Wiegley 28b6fb61e6 Change occurrences of gcc to the more general cc
This is done for the sake of Yosemite, which does not have gcc, and yet
this change is also compatible with Linux.
2014-12-26 11:06:21 -06:00

100 lines
3.1 KiB
Bash
Executable file

source $stdenv/setup
dontPatchELF=1 # must keep libXv, $out in RPATH
unpackFile() {
sh $src -x
}
buildPhase() {
if test -z "$libsOnly"; then
echo "Building linux driver against kernel: " $kernel;
cd usr/src/nv/
shopt -s nullglob
for a in $kpatches; do
patch -p1 < $a
done
# Workaround: get it to build on kernels that have CONFIG_XEN
# set. 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.
kernelVersion=$(cd $kernel/lib/modules && ls)
sysSource=$(echo $kernel/lib/modules/$kernelVersion/source)
sysOut=$(echo $kernel/lib/modules/$kernelVersion/build)
unset src # used by the nv makefile
make SYSSRC=$sysSource SYSOUT=$sysOut module
cd ../../..
fi
}
installPhase() {
# Install libGL and friends.
mkdir -p $out/lib
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
patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.*
patchelf --set-rpath $out/lib:$glPath $out/lib/libXvMCNVIDIA.so.*.*
set +e
# Legacy nvidia doesn't have cuda
patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.*
set -e
if test -z "$libsOnly"; then
# Install the kernel module.
mkdir -p $out/lib/modules/$kernelVersion/misc
cp usr/src/nv/nvidia.ko $out/lib/modules/$kernelVersion/misc
# Install the X driver.
mkdir -p $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
patchelf --set-rpath $out/lib $out/lib/xorg/modules/extensions/libglx.so.*.*
# Install the programs.
mkdir -p $out/bin
for i in nvidia-settings nvidia-xconfig; do
cp usr/bin/$i $out/bin/$i
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath $out/lib:$programPath:$glPath $out/bin/$i
done
# Header files etc.
cp -prd usr/include usr/share $out
# Patch the `nvidia-settings.desktop' file.
substituteInPlace $out/share/applications/nvidia-settings.desktop \
--replace '__UTILS_PATH__' $out/bin \
--replace '__PIXMAP_PATH__' $out/share/pixmaps
fi
}
genericBuild