From ee4f3b7df7907bd794779ca48709e917cd5b508c Mon Sep 17 00:00:00 2001 From: Jeroen Roovers Date: Wed, 23 Sep 2015 07:43:24 +0200 Subject: [PATCH] x11-drivers/nvidia-drivers: Add sub-SLOTS for all branches (bug #560486). Use the newer nvidia-udev.sh (bug #454740). Package-Manager: portage-2.2.20.1 --- x11-drivers/nvidia-drivers/metadata.xml | 6 + .../nvidia-drivers-173.14.39-r1.ebuild | 546 ++++++++++++++++++ .../nvidia-drivers-304.128-r1.ebuild | 457 +++++++++++++++ .../nvidia-drivers-340.93-r1.ebuild | 479 +++++++++++++++ .../nvidia-drivers-346.96-r1.ebuild | 489 ++++++++++++++++ .../nvidia-drivers-352.41-r1.ebuild | 489 ++++++++++++++++ .../nvidia-drivers-355.11-r2.ebuild | 500 ++++++++++++++++ .../nvidia-drivers-96.43.23-r1.ebuild | 519 +++++++++++++++++ 8 files changed, 3485 insertions(+) create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-173.14.39-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-304.128-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-340.93-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-346.96-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-352.41-r1.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r2.ebuild create mode 100644 x11-drivers/nvidia-drivers/nvidia-drivers-96.43.23-r1.ebuild diff --git a/x11-drivers/nvidia-drivers/metadata.xml b/x11-drivers/nvidia-drivers/metadata.xml index d4fc77506799..f65392ec0c40 100644 --- a/x11-drivers/nvidia-drivers/metadata.xml +++ b/x11-drivers/nvidia-drivers/metadata.xml @@ -4,6 +4,12 @@ jer@gentoo.org + +Nvidia provides different branches of its drivers for different batches of its +hardware. When maintaining these ebuilds or other ebuilds depending on them, +you will need to keep in mind that the major versions represent these different +branches. + Install the X.org driver, OpenGL libraries, XvMC libraries, and VDPAU libraries Install nvidia-settings with support for GTK+ 2 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.39-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.39-r1.ebuild new file mode 100644 index 000000000000..5f5b3bd71e13 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.39-r1.ebuild @@ -0,0 +1,546 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils flag-o-matic linux-mod multilib nvidia-driver portability \ + unpacker user versionator + +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI="x86? ( http://us.download.nvidia.com/XFree86/Linux-x86/${PV}/${X86_NV_PACKAGE}-pkg0.run ) + amd64? ( http://us.download.nvidia.com/XFree86/Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}-pkg2.run ) + x86-fbsd? ( http://us.download.nvidia.com/freebsd/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )" + +LICENSE="GPL-2 NVIDIA-r1" +SLOT="0/173" +KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd" +IUSE="acpi multilib kernel_linux tools" +RESTRICT="bindist mirror strip" +EMULTILIB_PKG="true" + +COMMON=" + >=app-eselect/eselect-opengl-1.0.9 + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) +" +DEPEND=" + ${COMMON} + kernel_linux? ( virtual/linux-sources ) +" +RDEPEND=" + ${COMMON} + =x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + x11-libs/gdk-pixbuf + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/pango[X] + ) +" + +QA_TEXTRELS_x86="usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/xorg/modules/drivers/nvidia_drv.so + usr/lib/libcuda.so.${PV} + usr/lib/libnvidia-cfg.so.${PV} + usr/lib/libvdpau_nvidia.so.${PV} + usr/lib/libXvMCNVIDIA.so.${PV}" + +QA_TEXTRELS_x86_fbsd="boot/modules/nvidia.ko + usr/lib/opengl/nvidia/lib/libGL.so.1 + usr/lib/opengl/nvidia/lib/libGLcore.so.1 + usr/lib/libnvidia-cfg.so.1 + usr/lib/opengl/nvidia/extensions/libglx.so.1 + usr/lib/xorg/modules/drivers/nvidia_drv.so" + +QA_TEXTRELS_amd64="usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib32/libcuda.so.${PV} + usr/lib32/libvdpau_nvidia.so.${PV}" + +QA_EXECSTACK_x86="usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/xorg/modules/drivers/nvidia_drv.so + usr/lib/libXvMCNVIDIA.a:NVXVMC.o" + +QA_EXECSTACK_amd64="usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/libnvcompiler.so.${PV} + usr/lib64/libXvMCNVIDIA.so.${PV} + usr/lib64/libXvMCNVIDIA.a:NVXVMC.o + usr/lib64/libnvidia-cfg.so.${PV} + usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib64/xorg/modules/drivers/nvidia_drv.so + opt/bin/nvidia-settings + opt/bin/nvidia-smi + opt/bin/nvidia-xconfig" + +QA_WX_LOAD_x86="usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/libXvMCNVIDIA.a" + +QA_WX_LOAD_amd64="usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so.${PV}" + +QA_SONAME_amd64="usr/lib64/libnvcompiler.so.${PV}" + +QA_FLAGS_IGNORED_amd64="usr/lib32/libcuda.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib32/libvdpau_nvidia.so.${PV} + usr/lib64/libXvMCNVIDIA.so.${PV} + usr/lib64/libcuda.so.${PV} + usr/lib64/libnvidia-cfg.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib64/xorg/modules/drivers/nvidia_drv.so + usr/lib64/libvdpau_nvidia.so.${PV} + opt/bin/nvidia-settings + opt/bin/nvidia-smi + opt/bin/nvidia-xconfig" + +QA_FLAGS_IGNORED_x86="usr/lib/libcuda.so.${PV} + usr/lib/libnvidia-cfg.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/xorg/modules/drivers/nvidia_drv.so + usr/lib/libXvMCNVIDIA.so.${PV} + usr/lib/libvdpau_nvidia.so.${PV} + opt/bin/nvidia-settings + opt/bin/nvidia-smi + opt/bin/nvidia-xconfig" + +S="${WORKDIR}/" + +mtrr_check() { + ebegin "Checking for MTRR support" + linux_chkconfig_present MTRR + eend $? + + if [[ $? -ne 0 ]] ; then + eerror "Please enable MTRR support in your kernel config, found at:" + eerror + eerror " Processor type and features" + eerror " [*] MTRR (Memory Type Range Register) support" + eerror + eerror "and recompile your kernel ..." + die "MTRR support not detected!" + fi +} + +lockdep_check() { + if linux_chkconfig_present LOCKDEP; then + eerror "You've enabled LOCKDEP -- lock tracking -- in the kernel." + eerror "Unfortunately, this option exports the symbol 'lockdep_init_map' as GPL-only" + eerror "which will prevent ${P} from compiling." + eerror "Please make sure the following options have been unset:" + eerror " Kernel hacking --->" + eerror " [ ] Lock debugging: detect incorrect freeing of live locks" + eerror " [ ] Lock debugging: prove locking correctness" + eerror " [ ] Lock usage statistics" + eerror "in 'menuconfig'" + die "LOCKDEP enabled" + fi +} + +pkg_setup() { + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use amd64 && has_multilib_profile && [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default abi." + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux; then + linux-mod_pkg_setup + MODULE_NAMES="nvidia(video:${S}/usr/src/nv)" + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)" + # linux-mod_src_compile calls set_arch_to_kernel, which + # sets the ARCH to x86 but NVIDIA's wrapping Makefile + # expects x86_64 or i386 and then converts it to x86 + # later on in the build process + BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')" + mtrr_check + lockdep_check + fi + + # On BSD userland it wants real make command + use userland_BSD && MAKE="$(get_bmake)" + + export _POSIX2_VERSION="199209" + + if use kernel_linux && kernel_is ge 3 13 ; then + ewarn "Gentoo supports kernels which are supported by NVIDIA" + ewarn "which are limited to the following kernels:" + ewarn "= 2.6.7" + echo + ewarn "DO NOT file bug reports for kernel versions less than 2.6.7 as they will be ignored." + fi + + if ! use x86-fbsd; then + mkdir "${S}" + cd "${S}" + unpack_makeself + else + unpack ${A} + fi +} + +src_prepare() { + # Please add a brief description for every added patch + use x86-fbsd && cd doc + + # Use the correct defines to make gtkglext build work + epatch "${FILESDIR}"/NVIDIA_glx-defines.patch + # Use some more sensible gl headers and make way for new glext.h + epatch "${FILESDIR}"/NVIDIA_glx-glheader.patch + + if use kernel_linux; then + # Quiet down warnings the user does not need to see + sed -i \ + -e 's:-Wpointer-arith::g' \ + -e 's:-Wsign-compare::g' \ + "${NV_SRC}"/Makefile.kbuild + + # If greater than 2.6.5 use M= instead of SUBDIR= + convert_to_m "${NV_SRC}"/Makefile.kbuild + fi + + epatch_user +} + +src_compile() { + # This is already the default on Linux, as there's no toplevel Makefile, but + # on FreeBSD there's one and triggers the kernel module build, as we install + # it by itself, pass this. + + cd "${NV_SRC}" + if use x86-fbsd; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" + elif use kernel_linux; then + linux-mod_src_compile + fi +} + +src_install() { + if use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf + elif use kernel_FreeBSD; then + insinto /boot/modules + doins "${WORKDIR}/${NV_PACKAGE}/src/nvidia.kld" + + exeinto /boot/modules + doexe "${WORKDIR}/${NV_PACKAGE}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + dolib.so ${NV_LIB}/libnvidia-cfg.so.${NV_SOVER} || \ + die "failed to install libnvidia-cfg" + dosym libnvidia-cfg.so.${NV_SOVER} \ + /usr/$(get_libdir)/libnvidia-cfg.so.1 || \ + die "failed to create libnvidia-cfg.so.1 symlink" + dosym libnvidia-cfg.so.1 \ + /usr/$(get_libdir)/libnvidia-cfg.so || \ + die "failed to create libnvidia-cfg.so symlink" + + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11_DRV}/nvidia_drv.so + + # Xorg GLX driver + insinto /usr/$(get_libdir)/opengl/nvidia/extensions + doins ${NV_X11_EXT}/libglx.so.${NV_SOVER} || \ + die "failed to install libglx.so" + dosym /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so.${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so || \ + die "failed to create libglx.so symlink" + + # XvMC driver + dolib.a ${NV_X11}/libXvMCNVIDIA.a || \ + die "failed to install libXvMCNVIDIA.so" + dolib.so ${NV_X11}/libXvMCNVIDIA.so.${NV_SOVER} || \ + die "failed to install libXvMCNVIDIA.so" + dosym libXvMCNVIDIA.so.${NV_SOVER} \ + /usr/$(get_libdir)/libXvMCNVIDIA.so.1 || \ + die "failed to create libXvMCNVIDIA.so.1 symlink" + dosym libXvMCNVIDIA.so.1 \ + /usr/$(get_libdir)/libXvMCNVIDIA.so || \ + die "failed to create libXvMCNVIDIA.so symlink" + dosym libXvMCNVIDIA.so.${NV_SOVER} \ + /usr/$(get_libdir)/libXvMCNVIDIA_dynamic.so.1 || \ + die "failed to create libXvMCNVIDIA_dynamic.so.1 symlink" + + # CUDA headers (driver to come) + if use kernel_linux && [[ -d ${S}/usr/include/cuda ]]; then + dodir /usr/include/cuda + insinto /usr/include/cuda + doins usr/include/cuda/*.h + fi + + # OpenCL headers (driver to come) + if [[ -d ${S}/usr/include/CL ]]; then + dodir /usr/include/CL + insinto /usr/include/CL + doins usr/include/CL/*.h + fi + + # Documentation + dodoc ${NV_DOC}/XF86Config.sample + dohtml ${NV_DOC}/html/* + if use x86-fbsd; then + dodoc "${NV_DOC}/README" + doman "${NV_MAN}/nvidia-xconfig.1" + doman "${NV_MAN}/nvidia-settings.1" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}/nvidia-xconfig.1.gz" + doman "${NV_MAN}/nvidia-settings.1.gz" + fi + + # Helper Apps + exeinto /opt/bin/ + doexe ${NV_EXEC}/nvidia-xconfig + doexe ${NV_EXEC}/nvidia-bug-report.sh + if use tools; then + doexe usr/bin/nvidia-settings + fi + if use kernel_linux; then + doexe ${NV_EXEC}/nvidia-smi + fi + + # Desktop entry for nvidia-settings + if use tools && use kernel_linux; then + sed -e 's:__UTILS_PATH__:/opt/bin:' \ + -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' \ + -e '/^Categories/s|Application;||g' \ + -i "${S}"/usr/share/applications//nvidia-settings.desktop + newmenu "${S}"/usr/share/applications/nvidia-settings.desktop \ + nvidia-settings-opt.desktop + fi + + if has_multilib_profile ; then + local OABI=${ABI} + for ABI in $(get_install_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + readme.gentoo_create_doc +} + +# Install nvidia library: +# the first parameter is the place where to install it +# the second parameter is the base name of the library +# the third parameter is the provided soversion +donvidia() { + dodir $1 + exeinto $1 + + libname=$(basename $2) + + doexe $2.$3 + dosym ${libname}.$3 $1/${libname} + [[ $3 != "1" ]] && dosym ${libname}.$3 $1/${libname}.1 +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local NV_ROOT="/usr/${inslibdir}/opengl/nvidia" + local libdir= sover= + + if use kernel_linux; then + if has_multilib_profile && [[ ${ABI} == "x86" ]] ; then + libdir=usr/lib32 + else + libdir=usr/lib + fi + sover=${PV} + else + libdir=obj + # on FreeBSD it has just .1 suffix + sover=1 + fi + + # The GLX libraries + donvidia ${NV_ROOT}/lib ${libdir}/libGL.so ${sover} + donvidia ${NV_ROOT}/lib ${libdir}/libGLcore.so ${sover} + if use x86-fbsd; then + donvidia ${NV_ROOT}/lib ${libdir}/libnvidia-tls.so ${sover} + else + donvidia ${NV_ROOT}/lib ${libdir}/tls/libnvidia-tls.so ${sover} + fi + + #cuda + if [[ -f ${libdir}/libcuda.so.${sover} ]]; then + dolib.so ${libdir}/libcuda.so.${sover} + [[ "${sover}" != "1" ]] && dosym libcuda.so.${sover} /usr/${inslibdir}/libcuda.so.1 + dosym libcuda.so.1 /usr/${inslibdir}/libcuda.so + fi + + #vdpau + if [[ -f ${libdir}/libvdpau_nvidia.so.${sover} ]]; then + dolib.so ${libdir}/libvdpau_nvidia.so.${sover} + dosym libvdpau_nvidia.so.${sover} /usr/${inslibdir}/libvdpau_nvidia.so + fi + + # OpenCL + # NOTE: This isn't currently available in the publicly released drivers. + if [[ -f ${libdir}/libOpenCL.so.1.0.0 ]]; then + + dolib.so ${libdir}/libnvcompiler.so.${sover} + [[ "${sover}" != "1" ]] && dosym libnvcompiler.so.${sover} /usr/${inslibdir}/libnvcompiler.so.1 + dosym libnvcompiler.so.1 /usr/${inslibdir}/libnvcompiler.so + + dolib.so ${libdir}/libOpenCL.so.1.0.0 + dosym libOpenCL.so.1.0.0 /usr/${inslibdir}/libOpenCL.so.1 + dosym libOpenCL.so.1 /usr/${inslibdir}/libOpenCL.so + fi +} + +pkg_preinst() { + if use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(egetent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + + readme.gentoo_print_elog + + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + fi +} + +pkg_prerm() { + "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} + +pkg_postrm() { + use kernel_linux && linux-mod_pkg_postrm + "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-304.128-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-304.128-r1.ebuild new file mode 100644 index 000000000000..84076d5b09c9 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-304.128-r1.ebuild @@ -0,0 +1,457 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit eutils flag-o-matic linux-info linux-mod multilib nvidia-driver \ + portability toolchain-funcs unpacker user versionator udev + +NV_URI="http://us.download.nvidia.com/XFree86/" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) +" + +LICENSE="GPL-2 NVIDIA-r1" +SLOT="0/304" +KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd" +IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools +X" +RESTRICT="bindist mirror strip" +EMULTILIB_PKG="true" + +COMMON="app-eselect/eselect-opencl + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + X? ( + >=app-eselect/eselect-opengl-1.0.9 + )" +DEPEND="${COMMON} + kernel_linux? ( + virtual/linux-sources + virtual/pkgconfig + )" +RDEPEND="${COMMON} + acpi? ( sys-power/acpid ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + x11-libs/gdk-pixbuf + x11-libs/gtk+:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/pango[X] + x11-libs/pangox-compat + ) + X? ( + =x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + ) + ) +" +PDEPEND="X? ( >=x11-libs/libvdpau-0.3-r1 )" + +REQUIRED_USE="tools? ( X )" + +QA_PREBUILT="opt/* usr/lib*" + +S=${WORKDIR}/ + +pkg_pretend() { + + if use amd64 && has_multilib_profile && \ + [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default ABI" + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux && kernel_is ge 4 3; then + ewarn "Gentoo supports kernels which are supported by NVIDIA" + ewarn "which are limited to the following kernels:" + ewarn " "${S}"/nvidia.icd + /usr/$(get_libdir)/libnvidia-opencl.so + EOF + + # Allow user patches so they can support RC kernels and whatever else + epatch_user +} + +src_compile() { + # This is already the default on Linux, as there's no toplevel Makefile, but + # on FreeBSD there's one and triggers the kernel module build, as we install + # it by itself, pass this. + + cd "${NV_SRC}" + if use kernel_FreeBSD; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use kernel_linux; then + MAKEOPTS=-j1 linux-mod_src_compile + fi +} + +# Install nvidia library: +# the first parameter is the library to install +# the second parameter is the provided soversion +# the third parameter is the target directory if its not /usr/lib +donvidia() { + # Full path to library minus SOVER + MY_LIB="$1" + + # SOVER to use + MY_SOVER="$2" + + # Where to install + MY_DEST="$3" + + if [[ -z "${MY_DEST}" ]]; then + MY_DEST="/usr/$(get_libdir)" + action="dolib.so" + else + exeinto ${MY_DEST} + action="doexe" + fi + + # Get just the library name + libname=$(basename $1) + + # Install the library with the correct SOVER + ${action} ${MY_LIB}.${MY_SOVER} || \ + die "failed to install ${libname}" + + # If SOVER wasn't 1, then we need to create a .1 symlink + if [[ "${MY_SOVER}" != "1" ]]; then + dosym ${libname}.${MY_SOVER} \ + ${MY_DEST}/${libname}.1 || \ + die "failed to create ${libname} symlink" + fi + + # Always create the symlink from the raw lib to the .1 + dosym ${libname}.1 \ + ${MY_DEST}/${libname} || \ + die "failed to create ${libname} symlink" +} + +src_install() { + if use kernel_linux; then + linux-mod_src_install + + # Add the aliases + # This file is tweaked with the appropriate video group in + # pkg_preinst, see bug #491414 + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-169.07 nvidia.conf + + # Ensures that our device nodes are created when not using X + exeinto "$(get_udevdir)" + newexe "${FILESDIR}"/nvidia-udev.sh-r1 nvidia-udev.sh + udev_newrules "${FILESDIR}"/nvidia.udev-rule 99-nvidia.rules + elif use kernel_FreeBSD; then + if use x86-fbsd; then + insinto /boot/modules + doins "${S}/src/nvidia.kld" + fi + + exeinto /boot/modules + doexe "${S}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER} + + if use kernel_linux; then + # NVIDIA video decode <-> CUDA + donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglx.so ${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions + + # XvMC driver + dolib.a ${NV_X11}/libXvMCNVIDIA.a || \ + die "failed to install libXvMCNVIDIA.so" + donvidia ${NV_X11}/libXvMCNVIDIA.so ${NV_SOVER} + dosym libXvMCNVIDIA.so.${NV_SOVER} \ + /usr/$(get_libdir)/libXvMCNVIDIA_dynamic.so.1 || \ + die "failed to create libXvMCNVIDIA_dynamic.so symlink" + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins nvidia.icd + donvidia ${NV_OBJ}/libnvidia-opencl.so ${NV_SOVER} + fi + + # Documentation + dohtml ${NV_DOC}/html/* + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}/nvidia-xconfig.1" + use tools && doman "${NV_MAN}/nvidia-settings.1" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}/nvidia-smi.1.gz" + use X && doman "${NV_MAN}/nvidia-xconfig.1.gz" + use tools && doman "${NV_MAN}/nvidia-settings.1.gz" + doman "${NV_MAN}/nvidia-cuda-proxy-control.1.gz" + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + fi + + if use kernel_linux ; then + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-cuda-proxy-control + doexe ${NV_OBJ}/nvidia-cuda-proxy-server + doexe ${NV_OBJ}/nvidia-smi + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + fi + + if use tools; then + doexe ${NV_OBJ}/nvidia-settings + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + # Desktop entries for nvidia-settings + if use tools ; then + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || newicon ${NV_OBJ}/nvidia-settings.png ${PN}-settings.png + domenu "${FILESDIR}"/${PN}-settings.desktop + exeinto /etc/X11/xinit/xinitrc.d + doexe "${FILESDIR}"/95-nvidia-settings + fi + + #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist + + if has_multilib_profile && use multilib ; then + local OABI=${ABI} + for ABI in $(get_install_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + readme.gentoo_create_doc +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local libdir=${NV_OBJ} + + if use kernel_linux && has_multilib_profile && \ + [[ ${ABI} == "x86" ]] ; then + libdir=${NV_OBJ}/32 + fi + + if use X; then + # The GLX libraries + donvidia ${libdir}/libGL.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libnvidia-glcore.so ${NV_SOVER} + if use kernel_FreeBSD; then + donvidia ${libdir}/libnvidia-tls.so ${NV_SOVER} ${GL_ROOT} + else + donvidia ${libdir}/tls/libnvidia-tls.so ${NV_SOVER} ${GL_ROOT} + fi + + # VDPAU + donvidia ${libdir}/libvdpau_nvidia.so ${NV_SOVER} + fi + + # NVIDIA monitoring library + if use kernel_linux ; then + donvidia ${libdir}/libnvidia-ml.so ${NV_SOVER} + fi + + # CUDA & OpenCL + if use kernel_linux; then + donvidia ${libdir}/libcuda.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-compiler.so ${NV_SOVER} + donvidia ${libdir}/libOpenCL.so 1.0.0 ${CL_ROOT} + fi +} + +pkg_preinst() { + if use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(egetent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries, XvMC, and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} + +pkg_postrm() { + use kernel_linux && linux-mod_pkg_postrm + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-340.93-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-340.93-r1.ebuild new file mode 100644 index 000000000000..e2be11a34e31 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-340.93-r1.ebuild @@ -0,0 +1,479 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod multilib nvidia-driver \ + portability toolchain-funcs unpacker user udev + +NV_URI="http://us.download.nvidia.com/XFree86/" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) +" + +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/340" +KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd" +IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools +X uvm" +RESTRICT="bindist mirror strip" +EMULTILIB_PKG="true" + +COMMON=" + app-eselect/eselect-opencl + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + X? ( + >=app-eselect/eselect-opengl-1.0.9 + ) +" +DEPEND=" + ${COMMON} + app-arch/xz-utils + kernel_linux? ( virtual/linux-sources ) +" +RDEPEND=" + ${COMMON} + acpi? ( sys-power/acpid ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + x11-libs/gdk-pixbuf + >=x11-libs/gtk+-2.4:2 + x11-libs/libX11 + x11-libs/libXext + x11-libs/pango[X] + ) + X? ( + =x11-libs/libvdpau-0.3-r1 + multilib? ( + >=x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + ) + ) +" + +REQUIRED_USE="tools? ( X )" + +QA_PREBUILT="opt/* usr/lib*" + +S=${WORKDIR}/ + +pkg_pretend() { + + if use amd64 && has_multilib_profile && \ + [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default ABI" + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux && kernel_is ge 4 3; then + ewarn "Gentoo supports kernels which are supported by NVIDIA" + ewarn "which are limited to the following kernels:" + ewarn " userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so ${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglx.so ${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Documentation + dohtml ${NV_DOC}/html/* + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}/nvidia-xconfig.1" + use tools && doman "${NV_MAN}/nvidia-settings.1" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}/nvidia-smi.1.gz" + use X && doman "${NV_MAN}/nvidia-xconfig.1.gz" + use tools && doman "${NV_MAN}/nvidia-settings.1.gz" + doman "${NV_MAN}/nvidia-cuda-mps-control.1.gz" + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + fi + + if use kernel_linux ; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1.gz + doman nvidia-modprobe.1.gz + doman nvidia-persistenced.1.gz + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + doexe ${NV_OBJ}/nvidia-settings + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + insinto /etc/nvidia + newins nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + # Desktop entries for nvidia-settings + if use tools ; then + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || newicon ${NV_OBJ}/nvidia-settings.png ${PN}-settings.png + domenu "${FILESDIR}"/${PN}-settings.desktop + exeinto /etc/X11/xinit/xinitrc.d + doexe "${FILESDIR}"/95-nvidia-settings + fi + + #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist + + if has_multilib_profile && use multilib ; then + local OABI=${ABI} + for ABI in $(get_install_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + readme.gentoo_create_doc +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local libdir=${NV_OBJ} + + if use kernel_linux && has_multilib_profile && \ + [[ ${ABI} == "x86" ]] ; then + libdir=${NV_OBJ}/32 + fi + + if use X; then + # The GLX libraries + donvidia ${libdir}/libEGL.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libGL.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libnvidia-eglcore.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-glcore.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-glsi.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-ifr.so ${NV_SOVER} + if use kernel_FreeBSD; then + donvidia ${libdir}/libnvidia-tls.so ${NV_SOVER} + else + donvidia ${libdir}/tls/libnvidia-tls.so ${NV_SOVER} + fi + + # VDPAU + donvidia ${libdir}/libvdpau_nvidia.so ${NV_SOVER} + + # GLES v2 libraries + insinto ${GL_ROOT} + doexe ${libdir}/libGLESv2.so.${PV} + dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2 + dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so + fi + + # NVIDIA monitoring library + if use kernel_linux ; then + donvidia ${libdir}/libnvidia-ml.so ${NV_SOVER} + fi + + # CUDA & OpenCL + if use kernel_linux; then + donvidia ${libdir}/libcuda.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-compiler.so ${NV_SOVER} + donvidia ${libdir}/libOpenCL.so 1.0.0 ${CL_ROOT} + donvidia ${libdir}/libnvidia-opencl.so ${NV_SOVER} + fi +} + +pkg_preinst() { + if use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(egetent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} + +pkg_postrm() { + use kernel_linux && linux-mod_pkg_postrm + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-346.96-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-346.96-r1.ebuild new file mode 100644 index 000000000000..cd42a7cbf0cb --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-346.96-r1.ebuild @@ -0,0 +1,489 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod multilib nvidia-driver \ + portability toolchain-funcs unpacker user udev + +NV_URI="http://us.download.nvidia.com/XFree86/" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) +" + +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/346" +KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd" +RESTRICT="bindist mirror strip" +EMULTILIB_PKG="true" + +IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools gtk2 gtk3 +X uvm" +REQUIRED_USE=" + tools? ( X || ( gtk2 gtk3 ) ) +" + +COMMON=" + app-eselect/eselect-opencl + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + X? ( + >=app-eselect/eselect-opengl-1.0.9 + ) +" +DEPEND=" + ${COMMON} + app-arch/xz-utils + kernel_linux? ( virtual/linux-sources ) +" +RDEPEND=" + ${COMMON} + acpi? ( sys-power/acpid ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + x11-libs/gdk-pixbuf + gtk2? ( >=x11-libs/gtk+-2.4:2 ) + gtk3? ( x11-libs/gtk+:3 ) + x11-libs/libX11 + x11-libs/libXext + x11-libs/pango[X] + ) + X? ( + =x11-libs/libvdpau-0.3-r1 + multilib? ( + >=x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + ) + ) +" + +QA_PREBUILT="opt/* usr/lib*" + +S=${WORKDIR}/ + +pkg_pretend() { + if use amd64 && has_multilib_profile && \ + [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default ABI" + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux && kernel_is ge 4 3; then + ewarn "Gentoo supports kernels which are supported by NVIDIA" + ewarn "which are limited to the following kernels:" + ewarn " userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so ${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglx.so ${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Documentation + dohtml ${NV_DOC}/html/* + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}/nvidia-xconfig.1" + use tools && doman "${NV_MAN}/nvidia-settings.1" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}/nvidia-smi.1.gz" + use X && doman "${NV_MAN}/nvidia-xconfig.1.gz" + use tools && doman "${NV_MAN}/nvidia-settings.1.gz" + doman "${NV_MAN}/nvidia-cuda-mps-control.1.gz" + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + fi + + if use kernel_linux ; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1.gz + doman nvidia-modprobe.1.gz + doman nvidia-persistenced.1.gz + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + doexe ${NV_OBJ}/nvidia-settings + use gtk2 && donvidia libnvidia-gtk2.so ${PV} + use gtk3 && donvidia libnvidia-gtk3.so ${PV} + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + insinto /etc/nvidia + newins nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + # Desktop entries for nvidia-settings + if use tools ; then + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || newicon ${NV_OBJ}/nvidia-settings.png ${PN}-settings.png + domenu "${FILESDIR}"/${PN}-settings.desktop + exeinto /etc/X11/xinit/xinitrc.d + doexe "${FILESDIR}"/95-nvidia-settings + fi + + #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist + + if has_multilib_profile && use multilib ; then + local OABI=${ABI} + for ABI in $(get_install_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + readme.gentoo_create_doc +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local libdir=${NV_OBJ} + + if use kernel_linux && has_multilib_profile && \ + [[ ${ABI} == "x86" ]] ; then + libdir=${NV_OBJ}/32 + fi + + if use X; then + # The GLX libraries + donvidia ${libdir}/libEGL.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libGL.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libnvidia-eglcore.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-glcore.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-glsi.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-ifr.so ${NV_SOVER} + if use kernel_FreeBSD; then + donvidia ${libdir}/libnvidia-tls.so ${NV_SOVER} + else + donvidia ${libdir}/tls/libnvidia-tls.so ${NV_SOVER} + fi + + # VDPAU + donvidia ${libdir}/libvdpau_nvidia.so ${NV_SOVER} + + # GLES v2 libraries + insinto ${GL_ROOT} + doexe ${libdir}/libGLESv2.so.${PV} + dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2 + dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so + fi + + # NVIDIA monitoring library + if use kernel_linux ; then + donvidia ${libdir}/libnvidia-ml.so ${NV_SOVER} + fi + + # CUDA & OpenCL + if use kernel_linux; then + donvidia ${libdir}/libcuda.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-compiler.so ${NV_SOVER} + donvidia ${libdir}/libOpenCL.so 1.0.0 ${CL_ROOT} + donvidia ${libdir}/libnvidia-opencl.so ${NV_SOVER} + fi +} + +pkg_preinst() { + if use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(egetent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} + +pkg_postrm() { + use kernel_linux && linux-mod_pkg_postrm + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-352.41-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-352.41-r1.ebuild new file mode 100644 index 000000000000..c2a037572016 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-352.41-r1.ebuild @@ -0,0 +1,489 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod multilib nvidia-driver \ + portability toolchain-funcs unpacker user udev + +NV_URI="http://us.download.nvidia.com/XFree86/" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) +" + +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/352" +KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd" +RESTRICT="bindist mirror strip" +EMULTILIB_PKG="true" + +IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools gtk2 gtk3 +X uvm" +REQUIRED_USE=" + tools? ( X || ( gtk2 gtk3 ) ) +" + +COMMON=" + app-eselect/eselect-opencl + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + X? ( + >=app-eselect/eselect-opengl-1.0.9 + ) +" +DEPEND=" + ${COMMON} + app-arch/xz-utils + kernel_linux? ( virtual/linux-sources ) +" +RDEPEND=" + ${COMMON} + acpi? ( sys-power/acpid ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + x11-libs/gdk-pixbuf + gtk2? ( >=x11-libs/gtk+-2.4:2 ) + gtk3? ( x11-libs/gtk+:3 ) + x11-libs/libX11 + x11-libs/libXext + x11-libs/pango[X] + ) + X? ( + =x11-libs/libvdpau-0.3-r1 + multilib? ( + >=x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + ) + ) +" + +QA_PREBUILT="opt/* usr/lib*" + +S=${WORKDIR}/ + +pkg_pretend() { + if use amd64 && has_multilib_profile && \ + [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default ABI" + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux && kernel_is ge 4 3; then + ewarn "Gentoo supports kernels which are supported by NVIDIA" + ewarn "which are limited to the following kernels:" + ewarn " userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so ${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglx.so ${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Documentation + dohtml ${NV_DOC}/html/* + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}/nvidia-xconfig.1" + use tools && doman "${NV_MAN}/nvidia-settings.1" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}/nvidia-smi.1.gz" + use X && doman "${NV_MAN}/nvidia-xconfig.1.gz" + use tools && doman "${NV_MAN}/nvidia-settings.1.gz" + doman "${NV_MAN}/nvidia-cuda-mps-control.1.gz" + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + fi + + if use kernel_linux ; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1.gz + doman nvidia-modprobe.1.gz + doman nvidia-persistenced.1.gz + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + doexe ${NV_OBJ}/nvidia-settings + use gtk2 && donvidia libnvidia-gtk2.so ${PV} + use gtk3 && donvidia libnvidia-gtk3.so ${PV} + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + insinto /etc/nvidia + newins nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + # Desktop entries for nvidia-settings + if use tools ; then + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || newicon ${NV_OBJ}/nvidia-settings.png ${PN}-settings.png + domenu "${FILESDIR}"/${PN}-settings.desktop + exeinto /etc/X11/xinit/xinitrc.d + doexe "${FILESDIR}"/95-nvidia-settings + fi + + #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist + + if has_multilib_profile && use multilib ; then + local OABI=${ABI} + for ABI in $(get_install_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + readme.gentoo_create_doc +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local libdir=${NV_OBJ} + + if use kernel_linux && has_multilib_profile && \ + [[ ${ABI} == "x86" ]] ; then + libdir=${NV_OBJ}/32 + fi + + if use X; then + # The GLX libraries + donvidia ${libdir}/libEGL.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libGL.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT} + donvidia ${libdir}/libnvidia-eglcore.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-glcore.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-glsi.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-ifr.so ${NV_SOVER} + if use kernel_FreeBSD; then + donvidia ${libdir}/libnvidia-tls.so ${NV_SOVER} + else + donvidia ${libdir}/tls/libnvidia-tls.so ${NV_SOVER} + fi + + # VDPAU + donvidia ${libdir}/libvdpau_nvidia.so ${NV_SOVER} + + # GLES v2 libraries + insinto ${GL_ROOT} + doexe ${libdir}/libGLESv2.so.${PV} + dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2 + dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so + fi + + # NVIDIA monitoring library + if use kernel_linux ; then + donvidia ${libdir}/libnvidia-ml.so ${NV_SOVER} + fi + + # CUDA & OpenCL + if use kernel_linux; then + donvidia ${libdir}/libcuda.so ${NV_SOVER} + donvidia ${libdir}/libnvidia-compiler.so ${NV_SOVER} + donvidia ${libdir}/libOpenCL.so 1.0.0 ${CL_ROOT} + donvidia ${libdir}/libnvidia-opencl.so ${NV_SOVER} + fi +} + +pkg_preinst() { + if use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(egetent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} + +pkg_postrm() { + use kernel_linux && linux-mod_pkg_postrm + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r2.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r2.ebuild new file mode 100644 index 000000000000..8ff831a4ea1c --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r2.ebuild @@ -0,0 +1,500 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod multilib nvidia-driver \ + portability toolchain-funcs unpacker user udev + +NV_URI="http://us.download.nvidia.com/XFree86/" +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" +AMD64_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86_64-${PV}" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI=" + amd64-fbsd? ( ${NV_URI}FreeBSD-x86_64/${PV}/${AMD64_FBSD_NV_PACKAGE}.tar.gz ) + amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run ) + x86-fbsd? ( ${NV_URI}FreeBSD-x86/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz ) + x86? ( ${NV_URI}Linux-x86/${PV}/${X86_NV_PACKAGE}.run ) +" + +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0/355" +KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd" +RESTRICT="bindist mirror strip" +EMULTILIB_PKG="true" + +IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools gtk2 gtk3 +X uvm" +REQUIRED_USE=" + tools? ( X || ( gtk2 gtk3 ) ) +" + +COMMON=" + app-eselect/eselect-opencl + gtk3? ( x11-libs/cairo ) + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + X? ( + >=app-eselect/eselect-opengl-1.0.9 + ) +" +DEPEND=" + ${COMMON} + app-arch/xz-utils + kernel_linux? ( virtual/linux-sources ) +" +RDEPEND=" + ${COMMON} + acpi? ( sys-power/acpid ) + tools? ( + dev-libs/atk + dev-libs/glib:2 + x11-libs/gdk-pixbuf + gtk2? ( >=x11-libs/gtk+-2.4:2 ) + gtk3? ( x11-libs/gtk+:3 ) + x11-libs/libX11 + x11-libs/libXext + x11-libs/pango[X] + ) + X? ( + =x11-libs/libvdpau-0.3-r1 + multilib? ( + >=x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + ) + ) +" + +QA_PREBUILT="opt/* usr/lib*" + +S=${WORKDIR}/ + +pkg_pretend() { + if use amd64 && has_multilib_profile && \ + [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default ABI" + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux && kernel_is ge 4 3; then + ewarn "Gentoo supports kernels which are supported by NVIDIA" + ewarn "which are limited to the following kernels:" + ewarn " userspace driver config lib + donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER} + + # NVIDIA framebuffer capture library + donvidia ${NV_OBJ}/libnvidia-fbc.so ${NV_SOVER} + + # NVIDIA video encode/decode <-> CUDA + if use kernel_linux; then + donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER} + donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER} + fi + + if use X; then + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11}/nvidia_drv.so + + # Xorg GLX driver + donvidia ${NV_X11}/libglx.so ${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions + + # Xorg nvidia.conf + if has_version '>=x11-base/xorg-server-1.16'; then + insinto /usr/share/X11/xorg.conf.d + newins {,50-}nvidia-drm-outputclass.conf + fi + fi + + # OpenCL ICD for NVIDIA + if use kernel_linux; then + insinto /etc/OpenCL/vendors + doins ${NV_OBJ}/nvidia.icd + fi + + # Documentation + dohtml ${NV_DOC}/html/* + if use kernel_FreeBSD; then + dodoc "${NV_DOC}/README" + use X && doman "${NV_MAN}/nvidia-xconfig.1" + use tools && doman "${NV_MAN}/nvidia-settings.1" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" + doman "${NV_MAN}/nvidia-smi.1.gz" + use X && doman "${NV_MAN}/nvidia-xconfig.1.gz" + use tools && doman "${NV_MAN}/nvidia-settings.1.gz" + doman "${NV_MAN}/nvidia-cuda-mps-control.1.gz" + fi + + # Helper Apps + exeinto /opt/bin/ + + if use X; then + doexe ${NV_OBJ}/nvidia-xconfig + fi + + if use kernel_linux; then + doexe ${NV_OBJ}/nvidia-cuda-mps-control + doexe ${NV_OBJ}/nvidia-cuda-mps-server + doexe ${NV_OBJ}/nvidia-debugdump + doexe ${NV_OBJ}/nvidia-persistenced + doexe ${NV_OBJ}/nvidia-smi + + # install nvidia-modprobe setuid and symlink in /usr/bin (bug #505092) + doexe ${NV_OBJ}/nvidia-modprobe + fowners root:video /opt/bin/nvidia-modprobe + fperms 4710 /opt/bin/nvidia-modprobe + dosym /{opt,usr}/bin/nvidia-modprobe + + doman nvidia-cuda-mps-control.1.gz + doman nvidia-modprobe.1.gz + doman nvidia-persistenced.1.gz + newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi + newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced + newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced + fi + + if use tools; then + doexe ${NV_OBJ}/nvidia-settings + use gtk2 && donvidia libnvidia-gtk2.so ${PV} + use gtk3 && donvidia libnvidia-gtk3.so ${PV} + insinto /usr/share/nvidia/ + doins nvidia-application-profiles-${PV}-key-documentation + insinto /etc/nvidia + newins nvidia-application-profiles-${PV}-rc nvidia-application-profiles-rc + fi + + dobin ${NV_OBJ}/nvidia-bug-report.sh + + # Desktop entries for nvidia-settings + if use tools; then + # There is no icon in the FreeBSD tarball. + use kernel_FreeBSD || newicon ${NV_OBJ}/nvidia-settings.png ${PN}-settings.png + domenu "${FILESDIR}"/${PN}-settings.desktop + exeinto /etc/X11/xinit/xinitrc.d + doexe "${FILESDIR}"/95-nvidia-settings + fi + + #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist + + if has_multilib_profile && use multilib; then + local OABI=${ABI} + for ABI in $(get_install_abis); do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + readme.gentoo_create_doc +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib" + local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia" + local libdir=${NV_OBJ} + + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then + libdir=${NV_OBJ}/32 + fi + + if use X; then + NV_GLX_LIBRARIES=( + "libEGL.so 1 ${GL_ROOT}" + "libEGL_nvidia.so 0 ${GL_ROOT}" + "libGL.so ${NV_SOVER} ${GL_ROOT}" + "libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT}" + "libGLdispatch.so 0 ${GL_ROOT}" + "libOpenCL.so 1.0.0 ${CL_ROOT}" + "libOpenGL.so 0 ${GL_ROOT}" + "libcuda.so ${NV_SOVER}" + "libnvcuvid.so ${NV_SOVER}" + "libnvidia-compiler.so ${NV_SOVER}" + "libnvidia-eglcore.so ${NV_SOVER}" + "libnvidia-encode.so ${NV_SOVER}" + "libnvidia-fbc.so ${NV_SOVER}" + "libnvidia-glcore.so ${NV_SOVER}" + "libnvidia-glsi.so ${NV_SOVER}" + "libnvidia-ifr.so ${NV_SOVER}" + "libnvidia-opencl.so ${NV_SOVER}" + "libvdpau.so ${NV_SOVER} ${GL_ROOT}" + "libvdpau_nvidia.so ${NV_SOVER}" + "libvdpau_trace.so ${NV_SOVER} ${GL_ROOT}" + ) + if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]]; + then + NV_GLX_LIBRARIES+=( "libnvidia-wfb.so ${NV_SOVER}" ) + fi + + if use kernel_FreeBSD; then + NV_GLX_LIBRARIES+=( "libnvidia-tls.so ${NV_SOVER}" ) + fi + + if use kernel_linux; then + NV_GLX_LIBRARIES+=( + "libnvidia-ml.so ${NV_SOVER}" + "tls/libnvidia-tls.so ${NV_SOVER}" + ) + fi + + for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do + donvidia ${libdir}/${NV_LIB} + done + + # GLES v2 library is special + insinto ${GL_ROOT} + doexe ${libdir}/libGLESv2.so.${PV} + dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2 + dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so + fi +} + +pkg_preinst() { + if use kernel_linux; then + linux-mod_pkg_preinst + + local videogroup="$(egetent group video | cut -d ':' -f 3)" + if [ -z "${videogroup}" ]; then + eerror "Failed to determine the video group gid" + die "Failed to determine the video group gid" + else + sed -i \ + -e "s:PACKAGE:${PF}:g" \ + -e "s:VIDEOGID:${videogroup}:" \ + "${D}"/etc/modprobe.d/nvidia.conf || die + fi + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + use kernel_linux && linux-mod_pkg_postinst + + # Switch to the nvidia implementation + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia + "${ROOT}"/usr/bin/eselect opencl set --use-old nvidia + + readme.gentoo_print_elog + + if ! use X; then + elog "You have elected to not install the X.org driver. Along with" + elog "this the OpenGL libraries and VDPAU libraries were not" + elog "installed. Additionally, once the driver is loaded your card" + elog "and fan will run at max speed which may not be desirable." + elog "Use the 'nvidia-smi' init script to have your card and fan" + elog "speed scale appropriately." + elog + fi + if ! use tools; then + elog "USE=tools controls whether the nvidia-settings application" + elog "is installed. If you would like to use it, enable that" + elog "flag and re-emerge this ebuild. Optionally you can install" + elog "media-video/nvidia-settings" + elog + fi +} + +pkg_prerm() { + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} + +pkg_postrm() { + use kernel_linux && linux-mod_pkg_postrm + use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11 +} diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-96.43.23-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-96.43.23-r1.ebuild new file mode 100644 index 000000000000..72c8ce2efb35 --- /dev/null +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-96.43.23-r1.ebuild @@ -0,0 +1,519 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit eutils flag-o-matic linux-mod multilib nvidia-driver portability unpacker user versionator + +X86_NV_PACKAGE="NVIDIA-Linux-x86-${PV}" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" +X86_FBSD_NV_PACKAGE="NVIDIA-FreeBSD-x86-${PV}" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI="x86? ( http://us.download.nvidia.com/XFree86/Linux-x86/${PV}/${X86_NV_PACKAGE}-pkg0.run ) + amd64? ( http://us.download.nvidia.com/XFree86/Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}-pkg2.run ) + x86-fbsd? ( http://us.download.nvidia.com/freebsd/${PV}/${X86_FBSD_NV_PACKAGE}.tar.gz )" + +LICENSE="GPL-2 NVIDIA-r1" +SLOT="0/96" +KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd" +IUSE="acpi custom-cflags gtk multilib kernel_linux" +RESTRICT="bindist mirror strip" +EMULTILIB_PKG="true" + +COMMON=" + kernel_linux? ( >=sys-libs/glibc-2.6.1 ) + >=app-eselect/eselect-opengl-1.0.9 +" +DEPEND="${COMMON} + kernel_linux? ( virtual/linux-sources ) +" +RDEPEND="${COMMON} + =x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + ) +" + +QA_TEXTRELS_x86=" + usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/xorg/modules/drivers/nvidia_drv.so + usr/lib/libcuda.so.${PV} + usr/lib/libnvidia-cfg.so.${PV} + usr/lib/libvdpau_nvidia.so.${PV} + usr/lib/libXvMCNVIDIA.so.${PV} +" + +QA_TEXTRELS_x86_fbsd=" + boot/modules/nvidia.ko + usr/lib/opengl/nvidia/lib/libGL.so.1 + usr/lib/opengl/nvidia/lib/libGLcore.so.1 + usr/lib/libnvidia-cfg.so.1 + usr/lib/opengl/nvidia/extensions/libglx.so.1 + usr/lib/xorg/modules/drivers/nvidia_drv.so +" + +QA_TEXTRELS_amd64=" + usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib32/libcuda.so.${PV} + usr/lib32/libvdpau_nvidia.so.${PV} +" + +QA_EXECSTACK_x86=" + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/xorg/modules/drivers/nvidia_drv.so + usr/lib/libXvMCNVIDIA.a:NVXVMC.o +" + +QA_EXECSTACK_amd64=" + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/libnvcompiler.so.${PV} + usr/lib64/libXvMCNVIDIA.so.${PV} + usr/lib64/libXvMCNVIDIA.a:NVXVMC.o + usr/lib64/libnvidia-cfg.so.${PV} + usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib64/xorg/modules/drivers/nvidia_drv.so + usr/bin/nvidia-settings + usr/bin/nvidia-smi + usr/bin/nvidia-xconfig +" + +QA_WX_LOAD_x86=" + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/libXvMCNVIDIA.a +" + +QA_WX_LOAD_amd64=" + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so.${PV} +" + +QA_SONAME_amd64=" + usr/lib64/libnvcompiler.so.${PV} +" + +QA_FLAGS_IGNORED_amd64=" + usr/lib32/libcuda.so.${PV} + usr/lib32/opengl/nvidia/lib/libGL.so.${PV} + usr/lib32/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib32/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib32/libvdpau_nvidia.so.${PV} + usr/lib64/libXvMCNVIDIA.so.${PV} + usr/lib64/libcuda.so.${PV} + usr/lib64/libnvidia-cfg.so.${PV} + usr/lib64/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib64/opengl/nvidia/lib/libGL.so.${PV} + usr/lib64/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib64/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib64/xorg/modules/drivers/nvidia_drv.so + usr/lib64/libvdpau_nvidia.so.${PV} + usr/bin/nvidia-settings + usr/bin/nvidia-smi + usr/bin/nvidia-xconfig +" + +QA_FLAGS_IGNORED_x86=" + usr/lib/libcuda.so.${PV} + usr/lib/libnvidia-cfg.so.${PV} + usr/lib/opengl/nvidia/lib/libGLcore.so.${PV} + usr/lib/opengl/nvidia/lib/libGL.so.${PV} + usr/lib/opengl/nvidia/lib/libnvidia-tls.so.${PV} + usr/lib/opengl/nvidia/extensions/libglx.so.${PV} + usr/lib/xorg/modules/drivers/nvidia_drv.so + usr/lib/libXvMCNVIDIA.so.${PV} + usr/lib/libvdpau_nvidia.so.${PV} + usr/bin/nvidia-settings + usr/bin/nvidia-smi + usr/bin/nvidia-xconfig +" + +S="${WORKDIR}/" + +mtrr_check() { + ebegin "Checking for MTRR support" + linux_chkconfig_present MTRR + eend $? + + if [[ $? -ne 0 ]] ; then + eerror "Please enable MTRR support in your kernel config, found at:" + eerror + eerror " Processor type and features" + eerror " [*] MTRR (Memory Type Range Register) support" + eerror + eerror "and recompile your kernel ..." + die "MTRR support not detected!" + fi +} + +lockdep_check() { + if linux_chkconfig_present LOCKDEP; then + eerror "You've enabled LOCKDEP -- lock tracking -- in the kernel." + eerror "Unfortunately, this option exports the symbol 'lockdep_init_map' as GPL-only" + eerror "which will prevent ${P} from compiling." + eerror "Please make sure the following options have been unset:" + eerror " Kernel hacking --->" + eerror " [ ] Lock debugging: detect incorrect freeing of live locks" + eerror " [ ] Lock debugging: prove locking correctness" + eerror " [ ] Lock usage statistics" + eerror "in 'menuconfig'" + die "LOCKDEP enabled" + fi +} + +pkg_setup() { + # try to turn off distcc and ccache for people that have a problem with it + export DISTCC_DISABLE=1 + export CCACHE_DISABLE=1 + + if use amd64 && has_multilib_profile && [ "${DEFAULT_ABI}" != "amd64" ]; then + eerror "This ebuild doesn't currently support changing your default abi." + die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}" + fi + + if use kernel_linux; then + linux-mod_pkg_setup + MODULE_NAMES="nvidia(video:${S}/usr/src/nv)" + BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \ + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)" + mtrr_check + lockdep_check + fi + + # On BSD userland it wants real make command + use userland_BSD && MAKE="$(get_bmake)" + + export _POSIX2_VERSION="199209" + + if use kernel_linux && kernel_is ge 3 7 ; then + ewarn "Gentoo supports kernels which are supported by NVIDIA" + ewarn "which are limited to the following kernels:" + ewarn "= 2.6.7" + echo + ewarn "DO NOT file bug reports for kernel versions less than 2.6.7 as they will be ignored." + fi + + if ! use x86-fbsd; then + mkdir "${S}" + cd "${S}" + unpack_makeself + else + unpack ${A} + fi +} + +src_prepare() { + # Please add a brief description for every added patch + use x86-fbsd && cd doc + + # Use the correct defines to make gtkglext build work + epatch "${FILESDIR}"/NVIDIA_glx-defines.patch + # Use some more sensible gl headers and make way for new glext.h + epatch "${FILESDIR}"/NVIDIA_glx-glheader.patch + + if use kernel_linux; then + # Quiet down warnings the user does not need to see + sed -i \ + -e 's:-Wpointer-arith::g' \ + -e 's:-Wsign-compare::g' \ + "${NV_SRC}"/Makefile.kbuild + + # If you set this then it's your own fault when stuff breaks :) + use custom-cflags && sed -i "s:-O:${CFLAGS}:" "${NV_SRC}"/Makefile.* + + # If greater than 2.6.5 use M= instead of SUBDIR= + convert_to_m "${NV_SRC}"/Makefile.kbuild + fi +} + +src_compile() { + # This is already the default on Linux, as there's no toplevel Makefile, but + # on FreeBSD there's one and triggers the kernel module build, as we install + # it by itself, pass this. + + cd "${NV_SRC}" + if use x86-fbsd; then + MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \ + LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die + elif use kernel_linux; then + BUILD_PARAMS+=" PATCHLEVEL=not4" + linux-mod_src_compile + fi +} + +src_install() { + if use kernel_linux; then + linux-mod_src_install + + VIDEOGROUP="$(egetent group video | cut -d ':' -f 3)" + if [ -z "$VIDEOGROUP" ]; then + eerror "Failed to determine the video group gid." + die "Failed to determine the video group gid." + fi + + # Add the aliases + sed -e 's:PACKAGE:'${PF}':g' \ + -e 's:VIDEOGID:'${VIDEOGROUP}':' "${FILESDIR}"/nvidia-169.07 > \ + "${WORKDIR}"/nvidia || die + insinto /etc/modprobe.d + newins "${WORKDIR}"/nvidia nvidia.conf + elif use x86-fbsd; then + insinto /boot/modules + doins "${WORKDIR}/${NV_PACKAGE}/src/nvidia.kld" + + exeinto /boot/modules + doexe "${WORKDIR}/${NV_PACKAGE}/src/nvidia.ko" + fi + + # NVIDIA kernel <-> userspace driver config lib + dolib.so ${NV_LIB}/libnvidia-cfg.so.${NV_SOVER} + + # Xorg DDX driver + insinto /usr/$(get_libdir)/xorg/modules/drivers + doins ${NV_X11_DRV}/nvidia_drv.so + + # Xorg GLX driver + insinto /usr/$(get_libdir)/opengl/nvidia/extensions + doins ${NV_X11_EXT}/libglx.so.${NV_SOVER} + dosym /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so.${NV_SOVER} \ + /usr/$(get_libdir)/opengl/nvidia/extensions/libglx.so + + # XvMC driver + dolib.a ${NV_X11}/libXvMCNVIDIA.a + dolib.so ${NV_X11}/libXvMCNVIDIA.so.${NV_SOVER} + dosym libXvMCNVIDIA.so.${NV_SOVER} /usr/$(get_libdir)/libXvMCNVIDIA.so + + # CUDA headers (driver to come) + if [[ -d ${S}/usr/include/cuda ]]; then + dodir /usr/include/cuda + insinto /usr/include/cuda + doins usr/include/cuda/*.h + fi + + # OpenCL headers (driver to come) + if [[ -d ${S}/usr/include/CL ]]; then + dodir /usr/include/CL + insinto /usr/include/CL + doins usr/include/CL/*.h + fi + + # Documentation + dodoc ${NV_DOC}/XF86Config.sample + dohtml ${NV_DOC}/html/* + if use x86-fbsd; then + dodoc "${NV_DOC}/README" + doman "${NV_MAN}/nvidia-xconfig.1" + else + # Docs + newdoc "${NV_DOC}/README.txt" README + dodoc "${NV_DOC}/NVIDIA_Changelog" +# doman "${NV_MAN}/nvidia-smi.1.gz" + doman "${NV_MAN}/nvidia-xconfig.1.gz" + fi + + # Helper Apps + dobin ${NV_EXEC}/nvidia-xconfig + dobin ${NV_EXEC}/nvidia-bug-report.sh + if use gtk; then + dobin usr/bin/nvidia-settings + fi +# if use kernel_linux; then +# dobin ${NV_EXEC}/nvidia-smi || die +# fi + + if has_multilib_profile ; then + local OABI=${ABI} + for ABI in $(get_install_abis) ; do + src_install-libs + done + ABI=${OABI} + unset OABI + else + src_install-libs + fi + + is_final_abi || die "failed to iterate through all ABIs" + + readme.gentoo_create_doc +} + +# Install nvidia library: +# the first parameter is the place where to install it +# the second parameter is the base name of the library +# the third parameter is the provided soversion +donvidia() { + dodir $1 + exeinto $1 + + libname=$(basename $2) + + doexe $2.$3 + dosym ${libname}.$3 $1/${libname} + [[ $3 != "1" ]] && dosym ${libname}.$3 $1/${libname}.1 +} + +src_install-libs() { + local inslibdir=$(get_libdir) + local NV_ROOT="/usr/${inslibdir}/opengl/nvidia" + local libdir= sover= + + if use kernel_linux; then + if has_multilib_profile && [[ ${ABI} == "x86" ]] ; then + libdir=usr/lib32 + else + libdir=usr/lib + fi + sover=${PV} + else + libdir=obj + # on FreeBSD it has just .1 suffix + sover=1 + fi + + # The GLX libraries + donvidia ${NV_ROOT}/lib ${libdir}/libGL.so ${sover} + donvidia ${NV_ROOT}/lib ${libdir}/libGLcore.so ${sover} + if use x86-fbsd; then + donvidia ${NV_ROOT}/lib ${libdir}/libnvidia-tls.so ${sover} + else + donvidia ${NV_ROOT}/lib ${libdir}/tls/libnvidia-tls.so ${sover} + fi + + #cuda + if [[ -f ${libdir}/libcuda.so.${sover} ]]; then + dolib.so ${libdir}/libcuda.so.${sover} + [[ "${sover}" != "1" ]] && dosym libcuda.so.${sover} /usr/${inslibdir}/libcuda.so.1 + dosym libcuda.so.1 /usr/${inslibdir}/libcuda.so + fi + + #vdpau + if [[ -f ${libdir}/libvdpau_nvidia.so.${sover} ]]; then + dolib.so ${libdir}/libvdpau_nvidia.so.${sover} + dosym libvdpau_nvidia.so.${sover} /usr/${inslibdir}/libvdpau_nvidia.so + fi + + # OpenCL + # NOTE: This isn't currently available in the publicly released drivers. + if [[ -f ${libdir}/libOpenCL.so.1.0.0 ]]; then + + dolib.so ${libdir}/libnvcompiler.so.${sover} + [[ "${sover}" != "1" ]] && dosym libnvcompiler.so.${sover} /usr/${inslibdir}/libnvcompiler.so.1 + dosym libnvcompiler.so.1 /usr/${inslibdir}/libnvcompiler.so + + dolib.so ${libdir}/libOpenCL.so.1.0.0 + dosym libOpenCL.so.1.0.0 /usr/${inslibdir}/libOpenCL.so.1 + dosym libOpenCL.so.1 /usr/${inslibdir}/libOpenCL.so + fi +} + +pkg_preinst() { + if use kernel_linux; then + linux-mod_pkg_postinst + fi + + # Clean the dynamic libGL stuff's home to ensure + # we dont have stale libs floating around + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then + rm -rf "${ROOT}"/usr/lib/opengl/nvidia/* + fi + # Make sure we nuke the old nvidia-glx's env.d file + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then + rm -f "${ROOT}"/etc/env.d/09nvidia + fi +} + +pkg_postinst() { + if use kernel_linux; then + linux-mod_pkg_postinst + fi + + # Switch to the nvidia implementation + eselect opengl set --use-old nvidia + + readme.gentoo_print_elog +} + +pkg_postrm() { + if use kernel_linux; then + linux-mod_pkg_postrm + fi + eselect opengl set --use-old xorg-x11 +} -- 2.26.2