Last active
December 27, 2015 17:39
-
-
Save CommanderAlchemy/7363616 to your computer and use it in GitHub Desktop.
nvidia-full-beta-all 331.20 PKBUILD
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
# Maintainer: Det | |
# Based on nvidia-beta-all: https://aur.archlinux.org/packages/nvidia-beta-all/, | |
# nvidia-utils-beta: https://aur.archlinux.org/packages/nvidia-utils-beta/ and | |
# lib32-nvidia-utils-beta: https://aur.archlinux.org/packages/lib32-nvidia-utils-beta/ | |
# Build the lib32 packages too? This only needs to be defined once and will | |
# remain until the packages are removed. "1" to enable. | |
_lib32=1 | |
# Use Pacman's versions instead of the binaries'. Should only be used in case of long version numbers | |
# (e.g. those with git-suffixes), as it takes a bit longer, due to needing to search the local repository. | |
# "1" to enable. | |
_pacman=0 | |
pkgname=nvidia-full-beta-all | |
pkgname+=('nvidia-utils-full-beta' 'nvidia-libgl-full-beta' 'opencl-nvidia-full-beta') | |
pkgver=331.20 | |
pkgrel=1 | |
arch=('i686' 'x86_64') | |
url="http://www.nvidia.com/" | |
license=('custom:NVIDIA') | |
options=('!strip') | |
if [ "$CARCH" = 'i686' ]; then | |
_arch='x86' | |
_pkg="NVIDIA-Linux-${_arch}-${pkgver}" | |
md5sums=('SKIP') | |
elif [ "$CARCH" = 'x86_64' ]; then | |
_arch='x86_64' | |
_pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32" | |
md5sums=('SKIP') | |
fi | |
#source=("http://us.download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run" | |
source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run" | |
'20-nvidia.conf' | |
'nvidia-linux.patch') | |
md5sums+=('SKIP') # 20-nvidia.conf | |
# Are we building the lib32 packages? | |
if [ "$CARCH" = 'x86_64' ] && [ ${_lib32} = 1 ] || [[ $(pacman -Q lib32-nvidia-utils-full-beta 2>&-) ]]; then | |
pkgname+=('lib32-nvidia-utils-full-beta' 'lib32-nvidia-libgl-full-beta' 'lib32-opencl-nvidia-full-beta') | |
_pkg="NVIDIA-Linux-x86_64-${pkgver}" | |
#source[0]="http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run" | |
source[0]="ftp://download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run" | |
md5sums[0]='SKIP' | |
fi | |
# Source for the kernel release | |
if [ ${_pacman} = 0 ]; then | |
_KERNELS=$(file -rk /boot/* | grep 'Linux kernel.*boot executable' | sed 's/.*version \([^ ]\+\).*/\1/') | |
sed 's/_pacman=1/_pacman=0/' -i "${startdir}/${pkgname}.install" | |
else | |
_packages=$(pacman -Qsq linux) | |
_KERNELS=$(pacman -Ql ${_packages} | grep /modules.alias.bin | sed 's/.*\/lib\/modules\/\(.*\)\/modules.alias.bin/\1/g') | |
sed 's/_pacman=0/_pacman=1/' -i "${startdir}/${pkgname}.install" | |
fi | |
create_links() { | |
# create soname links | |
while read -d '' _lib; do | |
_soname="$(dirname "${_lib}")/$(LC_ALL=C readelf -d "${_lib}" | sed -nr 's/.*Library soname: \[(.*)\].*/\1/p')" | |
[[ -e "${_soname}" ]] || ln -sf "$(basename "${_lib}")" "${_soname}" | |
[[ -e "${_soname/.[0-9]*/}" ]] || ln -sf "$(basename "${_soname}")" "${_soname/.[0-9]*/}" | |
done < <(find "${pkgdir}" -type f -name '*.so*' -print0) | |
} | |
build() { | |
# Remove previous builds | |
if [ -d ${_pkg} ]; then | |
rm -rf ${_pkg} | |
fi | |
# Extract | |
sh ${_pkg}.run --extract-only | |
cd ${_pkg}/kernel | |
# Build module(s) by looping through all detected kernels | |
for _kernver in $_KERNELS; do | |
cd "${srcdir}/${_pkg}" | |
cp -r kernel "kernel-${_kernver}" | |
cd "kernel-${_kernver}" | |
msg "Building module for ${_kernver}..." | |
msg2 "Starting make module..." | |
make SYSSRC=/usr/lib/modules/"${_kernver}/build" module | |
done | |
} | |
package_opencl-nvidia-full-beta() { | |
pkgdesc="OpenCL implemention for NVIDIA (beta)" | |
depends=('libcl' 'zlib') | |
optdepends=('opencl-headers: headers necessary for OpenCL development') | |
conflicts=('opencl-nvidia') | |
provides=('opencl-nvidia') | |
cd ${_pkg} | |
# OpenCL | |
install -D -m644 nvidia.icd "${pkgdir}/etc/OpenCL/vendors/nvidia.icd" | |
install -D -m755 "libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-compiler.so.${pkgver}" | |
install -D -m755 "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-opencl.so.${pkgver}" | |
create_links | |
} | |
package_nvidia-libgl-full-beta() { | |
pkgdesc="NVIDIA library symlinks (beta)" | |
depends=('nvidia-utils-full-beta') | |
conflicts=('libgl' 'nvidia-libgl') | |
provides=('libgl' 'nvidia-libgl') | |
cd ${_pkg} | |
# libglx | |
mkdir -p "${pkgdir}/usr/lib/xorg/modules/extensions" | |
ln -sf "/usr/lib/nvidia/xorg/modules/extensions/libglx.so.${pkgver}" "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so.${pkgver}" | |
ln -sf "libglx.so.${pkgver}" "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so.1" | |
ln -sf "libglx.so.${pkgver}" "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" | |
# libGL | |
ln -sf "/usr/lib/nvidia/libGL.so.${pkgver}" "${pkgdir}/usr/lib/libGL.so.${pkgver}" | |
ln -sf "libGL.so.${pkgver}" "${pkgdir}/usr/lib/libGL.so.1" | |
ln -sf "libGL.so.${pkgver}" "${pkgdir}/usr/lib/libGL.so" | |
} | |
package_nvidia-utils-full-beta() { | |
pkgdesc="NVIDIA libraries and utilities (beta)" | |
backup=('etc/X11/xorg.conf.d/20-nvidia.conf') | |
depends=('xorg-server') | |
optdepends=('gtk2: nvidia-settings' | |
'opencl-nvidia-full-beta: OpenCL support') | |
conflicts=('nvidia-utils') | |
provides=('nvidia-utils') | |
cd ${_pkg} | |
# X driver | |
install -D -m755 nvidia_drv.so "${pkgdir}/usr/lib/xorg/modules/drivers/nvidia_drv.so" | |
# GLX extension module for X | |
install -D -m755 "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/modules/extensions/libglx.so.${pkgver}" | |
ln -sf "libglx.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/modules/extensions/libglx.so" # X doesn't find glx otherwise | |
# OpenGL library | |
install -D -m755 "libGL.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/libGL.so.${pkgver}" | |
# OpenGL core library | |
install -D -m755 "libnvidia-glcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glcore.so.${pkgver}" | |
# VDPAU | |
install -D -m755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/vdpau/libvdpau_nvidia.so.${pkgver}" | |
# nvidia-tls library | |
install -D -m755 "tls/libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-tls.so.${pkgver}" | |
install -D -m755 "libnvidia-cfg.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-cfg.so.${pkgver}" | |
# NVML | |
install -D -m755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ml.so.${pkgver}" | |
# CUDA | |
install -D -m755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib/libcuda.so.${pkgver}" | |
install -D -m755 "libnvcuvid.so.${pkgver}" "${pkgdir}/usr/lib/libnvcuvid.so.${pkgver}" | |
#install -D -m755 nvidia-cuda-proxy-server "${pkgdir}/usr/bin/nvidia-cuda-proxy-server" | |
#install -D -m644 nvidia-cuda-proxy-control.1.gz "${pkgdir}/usr/share/man/man1/nvidia-cuda-proxy-control.1.gz" | |
# DEBUG | |
install -D -m755 nvidia-debugdump "${pkgdir}/usr/bin/nvidia-debugdump" | |
# nvidia-xconfig | |
install -D -m755 nvidia-xconfig "${pkgdir}/usr/bin/nvidia-xconfig" | |
install -D -m644 nvidia-xconfig.1.gz "${pkgdir}/usr/share/man/man1/nvidia-xconfig.1.gz" | |
# nvidia-settings | |
install -D -m755 nvidia-settings "${pkgdir}/usr/bin/nvidia-settings" | |
install -D -m644 nvidia-settings.1.gz "${pkgdir}/usr/share/man/man1/nvidia-settings.1.gz" | |
install -D -m644 nvidia-settings.desktop "${pkgdir}/usr/share/applications/nvidia-settings.desktop" | |
install -D -m644 nvidia-settings.png "${pkgdir}/usr/share/pixmaps/nvidia-settings.png" | |
sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i "${pkgdir}/usr/share/applications/nvidia-settings.desktop" | |
# nvidia-bug-report | |
install -D -m755 nvidia-bug-report.sh "${pkgdir}/usr/bin/nvidia-bug-report.sh" | |
# nvidia-smi | |
install -D -m755 nvidia-smi "${pkgdir}/usr/bin/nvidia-smi" | |
install -D -m644 nvidia-smi.1.gz "${pkgdir}/usr/share/man/man1/nvidia-smi.1.gz" | |
# Licenses | |
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/nvidia/LICENSE" | |
ln -sf nvidia "${pkgdir}/usr/share/licenses/nvidia-utils" | |
# Documentation | |
install -D -m644 README.txt "${pkgdir}/usr/share/doc/nvidia/README" | |
install -D -m644 NVIDIA_Changelog "${pkgdir}/usr/share/doc/nvidia/NVIDIA_Changelog" | |
ln -sf nvidia "${pkgdir}/usr/share/doc/nvidia-utils" | |
create_links | |
# Disable logo splash | |
install -D -m644 "${srcdir}/20-nvidia.conf" "${pkgdir}/etc/X11/xorg.conf.d/20-nvidia.conf" | |
} | |
package_nvidia-full-beta-all() { | |
pkgdesc="NVIDIA drivers for linux (beta)" | |
depends=('nvidia-libgl-full-beta' "nvidia-utils-full-beta=${pkgver}") | |
makedepends=('linux-headers') | |
conflicts=('nvidia-96xx' 'nvidia-173xx' 'nvidia') | |
provides=('nvidia') | |
install=${pkgname}.install | |
_EXTRAMODULES=$(find /usr/lib/modules -name version | sed 's|\/usr\/lib\/modules\/||; s|\/version||') | |
# Install module(s) by looping through all detected kernels | |
for _kernver in $_KERNELS; do | |
cd "${srcdir}/${_pkg}/kernel-${_kernver}" | |
# Loop through all detected extramodules directories | |
for _moduledirs in $_EXTRAMODULES; do | |
# Check which extramodules directory corresponds with the built module | |
if [ $(cat "/usr/lib/modules/${_moduledirs}/version") = "${_kernver}" ]; then | |
install -D -m644 nvidia.ko \ | |
"${pkgdir}/usr/lib/modules/${_moduledirs}/nvidia.ko" | |
gzip "${pkgdir}/usr/lib/modules/${_moduledirs}/nvidia.ko" | |
fi | |
done | |
done | |
# Blacklist Nouveau | |
install -d "${pkgdir}/usr/lib/modprobe.d" | |
echo "blacklist nouveau" >> "${pkgdir}/usr/lib/modprobe.d/nvidia.conf" | |
} | |
package_lib32-opencl-nvidia-full-beta() { | |
pkgdesc="OpenCL implemention for NVIDIA (32-bit, beta)" | |
depends=('lib32-libcl' 'lib32-zlib' 'lib32-gcc-libs') | |
optdepends=('opencl-headers: headers necessary for OpenCL development') | |
conflicts=('lib32-opencl-nvidia') | |
provides=('lib32-opencl-nvidia') | |
cd ${_pkg} | |
# OpenCL | |
install -D -m755 "32/libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-compiler.so.${pkgver}" | |
ln -sf "libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-compiler.so.1" | |
ln -sf "libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-compiler.so" | |
install -D -m755 "32/libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-opencl.so.${pkgver}" | |
ln -sf "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-opencl.so.1" | |
ln -sf "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-opencl.so" | |
} | |
package_lib32-nvidia-libgl-full-beta() { | |
pkgdesc="NVIDIA library symlinks (32-bit, beta)" | |
depends=('lib32-nvidia-utils-full-beta') | |
replaces=('lib32-nvidia-utils<=331.17-2') | |
conflicts=('lib32-libgl' 'lib32-nvidia-libgl') | |
provides=('lib32-libgl' 'lib32-nvidia-libgl') | |
cd ${_pkg} | |
# libGL | |
mkdir -p "${pkgdir}/usr/lib32" | |
ln -sf "/usr/lib32/nvidia/libGL.so.${pkgver}" "${pkgdir}/usr/lib32/libGL.so.${pkgver}" | |
ln -sf "libGL.so.${pkgver}" "${pkgdir}/usr/lib32/libGL.so.1" | |
ln -sf "libGL.so.${pkgver}" "${pkgdir}/usr/lib32/libGL.so" | |
} | |
package_lib32-nvidia-utils-full-beta() { | |
pkgdesc="NVIDIA libraries (32-bit, beta)" | |
depends=('lib32-zlib' 'lib32-gcc-libs') | |
optdepends=('lib32-opencl-nvidia-full-beta') | |
conflicts=('lib32-nvidia-utils') | |
provides=('lib32-nvidia-utils') | |
cd ${_pkg} | |
# OpenGL library | |
install -D -m755 32/libGL.so.${pkgver} "${pkgdir}/usr/lib32/nvidia/libGL.so.${pkgver}" | |
# OpenGL core library | |
install -D -m755 32/libnvidia-glcore.so.${pkgver} "${pkgdir}/usr/lib32/libnvidia-glcore.so.${pkgver}" | |
# VDPAU | |
install -D -m755 32/libvdpau_nvidia.so.${pkgver} "${pkgdir}/usr/lib32/vdpau/libvdpau_nvidia.so.${pkgver}" | |
# CUDA | |
install -D -m755 32/libcuda.so.${pkgver} "${pkgdir}/usr/lib32/libcuda.so.${pkgver}" | |
install -D -m755 32/libnvcuvid.so.${pkgver} "${pkgdir}/usr/lib32/libnvcuvid.so.${pkgver}" | |
# nvidia-tls library | |
install -D -m755 32/tls/libnvidia-tls.so.${pkgver} "${pkgdir}/usr/lib32/libnvidia-tls.so.${pkgver}" | |
#install -D -m755 32/libnvidia-cfg.so.${pkgver} "${pkgdir}/usr/lib32/libnvidia-cfg.so.${pkgver}" | |
# NVML | |
install -D -m755 32/libnvidia-ml.so.${pkgver} "${pkgdir}/usr/lib32/libnvidia-ml.so.${pkgver}" | |
# create soname links | |
for _lib in $(find "${pkgdir}" -name '*.so*'); do | |
_soname="$(dirname ${_lib})/$(LC_ALL=C readelf -d "$_lib" | sed -nr 's/.*Library soname: \[(.*)\].*/\1/p')" | |
if [ ! -e "${_soname}" ]; then | |
ln -sf "$(basename ${_lib})" "${_soname}" | |
ln -sf "$(basename ${_soname})" "${_soname/.[0-9]*/}" | |
fi | |
done | |
# Remove redundancies | |
rm -rf "${pkgdir}"/usr/{include,share,bin} | |
# License | |
mkdir -p "${pkgdir}/usr/share/licenses" | |
ln -sf nvidia-utils "${pkgdir}/usr/share/licenses/lib32-nvidia-utils" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment