Created
July 30, 2018 02:37
-
-
Save eyecreate/36c8a34addc24dce2742c43efd753d22 to your computer and use it in GitHub Desktop.
nvidia 396.45 package build script for Solus
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name : nvidia-glx-driver | |
version : '396.45' | |
release : 253 | |
source : | |
- http://us.download.nvidia.com/XFree86/Linux-x86_64/396.45/NVIDIA-Linux-x86_64-396.45.run : 30c2e29a45794227079730eac7c452da5290ea8f336ed2286dafd488e3695f20 | |
extract : no | |
homepage : https://nvidia.com | |
license : | |
- EULA | |
summary : | |
- NVIDIA Binary Driver (LTS Kernel) | |
- common : Shared assets for the NVIDIA GLX Driver | |
- current : NVIDIA Binary Driver (Current Kernel) | |
- modaliases : Files to help with DoFlicky driver detection | |
component : | |
- kernel.drivers | |
- common : xorg.driver | |
- current : kernel.drivers | |
- modaliases : kernel.drivers | |
- 32bit : xorg.driver | |
description: | | |
NVIDIA Binary Driver | |
rundeps : | |
- common : | |
- linux-driver-management | |
- libva-vdpau-driver | |
- egl-wayland | |
- libglvnd | |
- 32bit : | |
- nvidia-glx-driver-common | |
- libva-vdpau-driver-32bit | |
- libglvnd-32bit | |
- main : nvidia-glx-driver-common | |
- current : nvidia-glx-driver-common | |
conflicts : | |
- common : | |
- nvidia-304-glx-driver-common | |
- nvidia-340-glx-driver-common | |
patterns : | |
- common : /* | |
- modaliases : | |
- /usr/share/doflicky/modaliases | |
- /usr/share/linux-driver-management/modaliases | |
- 32bit : /usr/lib32 | |
- main : /lib/modules/*.lts | |
- current : /lib/modules/*.current | |
strip : no | |
debug : no | |
builddeps : | |
- pkgconfig(gtk+-2.0) | |
- pkgconfig(gtk+-3.0) | |
- pkgconfig(libelf) | |
- pkgconfig(xorg-server) | |
- linux-lts | |
- linux-lts-headers | |
- linux-current | |
- linux-current-headers | |
- libglvnd-32bit | |
permanent : | |
- /lib/modules | |
setup : | | |
# sh $sources/NVIDIA-Linux-x86_64-$version.run --extract-only | |
sh $sources/NVIDIA-Linux-x86_64-$version.run --extract-only | |
pushd NVIDIA* | |
# Prepare kernel trees | |
cp -a kernel lts_kernel | |
cp -a kernel current_kernel | |
# Patch for 4.14 | |
pushd current_kernel | |
%patch -p2 < $pkgfiles/4.14_task.patch | |
popd | |
# We need systemd units. | |
tar xf nvidia-persistenced-init.tar.bz2 | |
build : | | |
# Build kernel modules | |
%make -C lts_kernel SYSSRC="/lib/modules/%kernel_version_lts%/build" | |
%make -C current_kernel SYSSRC="/lib/modules/%kernel_version_current%/build" | |
install : | | |
# Install LTS kernel drivers | |
install -D -d -m 00755 $installdir/lib/modules/%kernel_version_lts%/kernel/drivers/video | |
install -m 00644 lts_kernel/*.ko $installdir/lib/modules/%kernel_version_lts%/kernel/drivers/video/. | |
# Install current kernel drivers | |
install -D -d -m 00755 $installdir/lib/modules/%kernel_version_current%/kernel/drivers/video | |
install -m 00644 current_kernel/*.ko $installdir/lib/modules/%kernel_version_current%/kernel/drivers/video/. | |
# Prepare modaliases from the LTS kernel | |
sh -e $pkgfiles/nvidia_supported nvidia ${package} README.txt lts_kernel/nvidia/nv-kernel.o_binary > modalias | |
install -D -m 00644 modalias $installdir/usr/share/doflicky/modaliases/${package}.modaliases | |
# New location, keep the old one around for a short while | |
install -D -m 00644 modalias $installdir/usr/share/linux-driver-management/modaliases/${package}.modaliases | |
# Install nvidia driver for xorg | |
install -D -m 00755 nvidia_drv.so $installdir/%libdir%/xorg/modules/drivers/nvidia_drv.so | |
# Install all binaries | |
install -D -d -m 00755 $installdir/usr/bin | |
install -m 00755 `find . -maxdepth 1 -type f -name "nvidia-*" -executable` $installdir/usr/bin/. | |
rm -v $installdir/usr/bin/nvidia-installer | |
# Install all libraries | |
install -D -d -m 00755 $installdir/usr/lib{32,64} | |
install -m 00755 lib*.so* $installdir/%libdir%/. | |
install -m 00755 tls/lib*.so* $installdir/%libdir%/. | |
install -m 00755 32/lib*.so* $installdir/usr/lib32/. | |
install -m 00755 32/tls/lib*.so* $installdir/usr/lib32/. | |
# Strip glvnd bits and OpenCL, we have those elsewhere | |
rm -v $installdir/usr/lib{32,64}/{libGLX.so.0,libGL.so.1.7.0,libOpenGL.so.0,libOpenCL.so.1.0.0,libGLdispatch.so*} | |
# Get weird guys in order first | |
ln -sv libGLESv2_nvidia.so.${version} $installdir/%libdir%/libGLESv2_nvidia.so.2 | |
ln -sv libGLESv2_nvidia.so.${version} $installdir/usr/lib32/libGLESv2_nvidia.so.2 | |
ln -sv libGLX_nvidia.so.${version} $installdir/%libdir%/libGLX_nvidia.so.0 | |
ln -sv libGLX_nvidia.so.${version} $installdir/usr/lib32/libGLX_nvidia.so.0 | |
function redo_libs() { | |
for gl in $* ; do | |
i=`dirname ${gl}` | |
clean=`echo $(basename ${gl})|sed -e 's@\.so\.%version%@@g'` | |
if [[ ! -e $i/${clean}.so.2 ]] ; then | |
if [[ ! -e $i/${clean}.so.1 ]] && [[ ! -e $i/${clean}.so.0 ]] ; then | |
ln -sv `basename ${gl}` $i/${clean}.so.1 | |
fi | |
fi | |
if [[ ! -e $i/{clean}.so ]]; then | |
ln -sv `basename ${gl}` $i/${clean}.so | |
fi | |
done | |
} | |
redo_libs $installdir/usr/lib64/lib*.so.%version% | |
redo_libs $installdir/usr/lib32/lib*.so.%version% | |
# Remove the non glvnd portions | |
rm -v $installdir/{%libdir%,/usr/lib32}/lib{EGL,GL,GLESv1_CM,GLESv2}.so* | |
rm -v $installdir/%libdir%/libglx.so* | |
# Move vdpau into the final position | |
install -D -d -m 00755 $installdir/usr/lib{32,64}/vdpau | |
mv -v $installdir/%libdir%/libvdpau* $installdir/%libdir%/vdpau/. | |
mv -v $installdir/usr/lib32/libvdpau* $installdir/usr/lib32/vdpau/. | |
# Data files | |
install -D -m 00644 nvidia-settings.desktop $installdir/usr/share/applications/nvidia-settings.desktop | |
sed -e 's@__UTILS_PATH__@/usr/bin@' -e 's@__PIXMAP_PATH__@/usr/share/pixmaps@' -i $installdir/usr/share/applications/nvidia-settings.desktop | |
install -D -m 00644 nvidia-settings.png $installdir/usr/share/pixmaps/nvidia-settings.png | |
install -D -m 00644 nvidia.icd $installdir/usr/share/OpenCL/vendors/nvidia.icd | |
# Vulkan | |
install -D -m 00644 nvidia_icd.json.template $installdir/usr/share/vulkan/icd.d/10_nvidia.json | |
sed -e 's@__NV_VK_ICD__@libGLX_nvidia.so.0@' -i $installdir/usr/share/vulkan/icd.d/10_nvidia.json | |
# EGL | |
install -D -m 00644 10_nvidia_wayland.json $installdir/usr/share/egl/egl_external_platform.d/10_nvidia_wayland.json | |
install -D -m 00644 10_nvidia.json $installdir/usr/share/egl/egl_external_platform.d/10_nvidia.json | |
# Make sure glvnd knows where to be | |
install -D -d -m 00755 $installdir/usr/share/glvnd/egl_vendor.d | |
install -m 00644 10_nvidia_wayland.json $installdir/usr/share/glvnd/egl_vendor.d/10_nvidia_wayland.json | |
install -m 00644 10_nvidia.json $installdir/usr/share/glvnd/egl_vendor.d/10_nvidia.json | |
# Keep settings UI happy | |
install -D -d -m 00755 $installdir/usr/share/nvidia | |
install -m 00644 nvidia-application-profiles-${version}-key-documentation $installdir/usr/share/nvidia/. | |
# Blacklist nouveau | |
install -D -d -m 00755 $installdir/usr/lib/modprobe.d | |
echo "blacklist nouveau" > $installdir/usr/lib/modprobe.d/nvidia.conf | |
# Init | |
install -D -m 00644 nvidia-persistenced-init/systemd/nvidia-persistenced.service.template \ | |
$installdir/usr/lib/systemd/system/nvidia-persistenced.service | |
sed -e 's@__USER__@nvidia-persistenced@' -i $installdir/usr/lib/systemd/system/nvidia-persistenced.service | |
# Additional files | |
install -D -m 00644 $pkgfiles/71-nvidia.rules $installdir/%libdir%/udev/rules.d/71-nvidia.rules | |
install -D -m 00644 $pkgfiles/nvidia-glx-driver.tmpfiles $installdir/%libdir%/tmpfiles.d/nvidia-glx-driver.conf | |
install -D -m 00644 $pkgfiles/nvidia-glx-driver.sysusers $installdir/%libdir%/sysusers.d/nvidia-glx-driver.conf | |
install -D -m 00755 $pkgfiles/create-uvm-dev-node $installdir/sbin/create-uvm-dev-node | |
# Make sure our glx is found, LDM will handle the main config file | |
install -D -m 00644 $pkgfiles/xorg.conf $installdir/usr/share/X11/xorg.conf.d/10-nvidia.conf | |
install -D -m 00644 libglx.so.${version} $installdir/%libdir%/nvidia/modules/libglx.so | |
ln -sv libglx.so $installdir/%libdir%/nvidia/modules/libglx.so.1 | |
# Nuke egl wayland conflict, we package it separately | |
rm -fv $installdir/%libdir%/libnvidia-egl-wayland* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment