mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-23 14:11:36 +00:00
a589bfae17
In most cases, this just meant changing kernelDev (now removed from linuxPackagesFor) to kernel.dev. Some packages needed more work (though whether that was because of my changes or because they were already broken, I'm not sure). Specifics: * psmouse-alps builds on 3.4 but not 3.10, as noted in the comments that were already there * blcr builds on 3.4 but not 3.10, as noted in comments that were already there * open-iscsi, ati-drivers, wis-go7007, and openafsClient don't build on 3.4 or 3.10 on this branch or on master, so they're marked broken * A version-specific kernelHeaders package was added The following packages were removed: * atheros/madwifi is superceded by official ath*k modules * aufs is no longer used by any of our kernels * broadcom-sta v6 (which was already packaged) replaces broadcom-sta * exmap has not been updated since 2011 and doesn't build * iscis-target has not been updated since 2010 and doesn't build * iwlwifi is part of mainline now and doesn't build * nivida-x11-legacy-96 hasn't been updated since 2008 and doesn't build Everything not specifically mentioned above builds successfully on 3.10. I haven't yet tested on 3.4, but will before opening a pull request. Signed-off-by: Shea Levy <shea@shealevy.com>
104 lines
3.2 KiB
Bash
Executable file
104 lines
3.2 KiB
Bash
Executable file
source $stdenv/setup
|
|
|
|
dontPatchELF=1 # must keep libXv, $out in RPATH
|
|
|
|
|
|
unpackFile() {
|
|
skip=$(sed 's/^skip=//; t; d' $src)
|
|
tail -n +$skip $src | xz -d | tar xvf -
|
|
sourceRoot=.
|
|
}
|
|
|
|
|
|
buildPhase() {
|
|
if test -z "$libsOnly"; then
|
|
# Create the module.
|
|
echo "Building linux driver against kernel: $kernel";
|
|
cd kernel
|
|
kernelVersion=$(cd $kernel/lib/modules && ls)
|
|
sysSrc=$(echo $kernel/lib/modules/$kernelVersion/source)
|
|
sysOut=$(echo $kernel/lib/modules/$kernelVersion/build)
|
|
unset src # used by the nv makefile
|
|
make SYSSRC=$sysSrc SYSOUT=$sysOut module
|
|
cd ..
|
|
fi
|
|
}
|
|
|
|
|
|
installPhase() {
|
|
|
|
# Install libGL and friends.
|
|
mkdir -p $out/lib/vendors
|
|
|
|
for f in \
|
|
libcuda libGL libnvcuvid libnvidia-cfg libnvidia-compiler \
|
|
libnvidia-encode libnvidia-glcore libnvidia-ml libnvidia-opencl \
|
|
libnvidia-tls libOpenCL libnvidia-tls libvdpau_nvidia
|
|
do
|
|
cp -prd $f.* $out/lib/
|
|
ln -snf $f.so.$versionNumber $out/lib/$f.so
|
|
ln -snf $f.so.$versionNumber $out/lib/$f.so.1
|
|
done
|
|
|
|
cp -p nvidia.icd $out/lib/vendors/
|
|
cp -prd tls $out/lib/
|
|
cp -prd libOpenCL.so.1.0.0 $out/lib/
|
|
ln -snf libOpenCL.so.1.0.0 $out/lib/libOpenCL.so
|
|
ln -snf libOpenCL.so.1.0.0 $out/lib/libOpenCL.so.1
|
|
|
|
patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.*
|
|
patchelf --set-rpath $out/lib:$glPath $out/lib/libvdpau_nvidia.so.*.*
|
|
patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.*
|
|
patchelf --set-rpath $openclPath $out/lib/libnvidia-opencl.so.*.*
|
|
|
|
if test -z "$libsOnly"; then
|
|
|
|
# Install the kernel module.
|
|
mkdir -p $out/lib/modules/$kernelVersion/misc
|
|
cp kernel/nvidia.ko $out/lib/modules/$kernelVersion/misc
|
|
|
|
# Install the X driver.
|
|
mkdir -p $out/lib/xorg/modules
|
|
cp -p libnvidia-wfb.* $out/lib/xorg/modules/
|
|
mkdir -p $out/lib/xorg/modules/drivers
|
|
cp -p nvidia_drv.so $out/lib/xorg/modules/drivers
|
|
mkdir -p $out/lib/xorg/modules/extensions
|
|
cp -p libglx.so.* $out/lib/xorg/modules/extensions
|
|
|
|
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-smi nvidia-xconfig; do
|
|
cp $i $out/bin/$i
|
|
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
|
|
--set-rpath $out/lib:$programPath:$glPath $out/bin/$i
|
|
done
|
|
|
|
# Header files etc.
|
|
mkdir -p $out/include/nvidia
|
|
cp -p *.h $out/include/nvidia
|
|
|
|
mkdir -p $out/share/man/man1
|
|
cp -p *.1.gz $out/share/man/man1
|
|
|
|
mkdir -p $out/share/applications
|
|
cp -p *.desktop $out/share/applications
|
|
|
|
mkdir -p $out/share/pixmaps
|
|
cp -p nvidia-settings.png $out/share/pixmaps
|
|
|
|
# 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
|