commit:     ee4544dea3ed4a5a5c06051cc67ab49cf6683d93
Author:     Jeroen Roovers <jer <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 29 06:18:14 2016 +0000
Commit:     Jeroen Roovers <jer <AT> gentoo <DOT> org>
CommitDate: Fri Jan 29 06:18:14 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ee4544de

x11-drivers/nvidia-drivers: Raise x11-base/xorg-server compatibility (bug 
#572730 by Martijn Schmidt).

Package-Manager: portage-2.2.27

 ...8-r1.ebuild => nvidia-drivers-340.96-r1.ebuild} | 215 ++++++++++-----------
 ...8-r1.ebuild => nvidia-drivers-355.11-r3.ebuild} | 161 +++++++--------
 .../nvidia-drivers/nvidia-drivers-361.18-r1.ebuild |   2 +-
 3 files changed, 186 insertions(+), 192 deletions(-)

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-340.96-r1.ebuild
similarity index 71%
copy from x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
copy to x11-drivers/nvidia-drivers/nvidia-drivers-340.96-r1.ebuild
index dbe08be..294bc96 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-340.96-r1.ebuild
@@ -25,21 +25,15 @@ SRC_URI="
 LICENSE="GPL-2 NVIDIA-r2"
 SLOT="0/${PV%.*}"
 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"
 
-IUSE="acpi +driver multilib kernel_FreeBSD kernel_linux +kms 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
-               app-misc/pax-utils
        )
 "
 DEPEND="
@@ -54,14 +48,13 @@ RDEPEND="
                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/gtk+-2.4:2
                x11-libs/libX11
                x11-libs/libXext
                x11-libs/pango[X]
        )
        X? (
-               <x11-base/xorg-server-1.17.99:=
+               <x11-base/xorg-server-1.18.99:=
                >=x11-libs/libvdpau-0.3-r1
                multilib? (
                        >=x11-libs/libX11-1.6.2[abi_x86_32]
@@ -70,22 +63,25 @@ RDEPEND="
        )
 "
 
+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 5; then
+       if use kernel_linux && kernel_is ge 4 4; then
                ewarn "Gentoo supports kernels which are supported by NVIDIA"
                ewarn "which are limited to the following kernels:"
-               ewarn "<sys-kernel/gentoo-sources-4.5"
-               ewarn "<sys-kernel/vanilla-sources-4.5"
+               ewarn "<sys-kernel/gentoo-sources-4.4"
+               ewarn "<sys-kernel/vanilla-sources-4.4"
                ewarn ""
                ewarn "You are free to utilize epatch_user to provide whatever"
                ewarn "support you feel is appropriate, but will not receive"
@@ -114,10 +110,9 @@ pkg_setup() {
        export DISTCC_DISABLE=1
        export CCACHE_DISABLE=1
 
-       if use driver && use kernel_linux; then
+       if use kernel_linux; then
                MODULE_NAMES="nvidia(video:${S}/kernel)"
-               use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
-               use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel)"
+               use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel/uvm)"
 
                # This needs to run after MODULE_NAMES (so that the eclass 
checks
                # whether the kernel supports loadable modules) but before 
BUILD_PARAMS
@@ -125,7 +120,7 @@ pkg_setup() {
                linux-mod_pkg_setup
 
                BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
-               SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
+               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
@@ -134,10 +129,6 @@ pkg_setup() {
                BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
        fi
 
-       if use kernel_linux && kernel_is lt 2 6 9; then
-               eerror "You must build this against 2.6.9 or higher kernels."
-       fi
-
        # set variables to where files are in the package structure
        if use kernel_FreeBSD; then
                use x86-fbsd   && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}"
@@ -161,11 +152,23 @@ pkg_setup() {
 }
 
 src_prepare() {
+       # Please add a brief description for every added patch
+
+       if use kernel_linux; then
+               if kernel_is lt 2 6 9 ; then
+                       eerror "You must build this against 2.6.9 or higher 
kernels."
+               fi
+
+               # If greater than 2.6.5 use M= instead of SUBDIR=
+#              convert_to_m "${NV_SRC}"/Makefile.kbuild
+       fi
+
        if use pax_kernel; then
                ewarn "Using PAX patches is not supported. You will be asked to"
                ewarn "use a standard kernel should you have issues. Should you"
                ewarn "need support with these patches, contact the PaX team."
-               epatch "${FILESDIR}"/${PN}-355.06-pax.patch
+               epatch "${FILESDIR}"/${PN}-331.13-pax-usercopy.patch
+               epatch "${FILESDIR}"/${PN}-337.12-pax-constify.patch
        fi
 
        # Allow user patches so they can support RC kernels and whatever else
@@ -181,8 +184,8 @@ src_compile() {
        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 driver && use kernel_linux; then
-               MAKEOPTS=-j1
+       elif use kernel_linux; then
+               use uvm && MAKEOPTS=-j1
                linux-mod_src_compile
        fi
 }
@@ -190,44 +193,47 @@ src_compile() {
 # 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 it is not /usr/lib
+# the third parameter is the target directory if its not /usr/lib
 donvidia() {
-       # Full path to library
-       nv_LIB="${1}"
+       # Full path to library minus SOVER
+       MY_LIB="$1"
 
        # SOVER to use
-       nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
+       MY_SOVER="$2"
 
        # Where to install
-       nv_DEST="${2}"
-
-       # Get just the library name
-       nv_LIBNAME=$(basename "${nv_LIB}")
+       MY_DEST="$3"
 
-       if [[ "${nv_DEST}" ]]; then
-               exeinto ${nv_DEST}
-               action="doexe"
-       else
-               nv_DEST="/usr/$(get_libdir)"
+       if [[ -z "${MY_DEST}" ]]; then
+               MY_DEST="/usr/$(get_libdir)"
                action="dolib.so"
+       else
+               exeinto ${MY_DEST}
+               action="doexe"
        fi
 
-       # Install the library
-       ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
+       # 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 the library has a SONAME and SONAME does not match the library 
name,
-       # then we need to create a symlink
-       if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
-               dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
-                       || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
+       # 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
 
-       dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
-               || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
+       # 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 driver && use kernel_linux; then
+       if use kernel_linux; then
                linux-mod_src_install
 
                # Add the aliases
@@ -235,7 +241,7 @@ src_install() {
                # pkg_preinst, see bug #491414
                insinto /etc/modprobe.d
                newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
-               doins "${FILESDIR}"/nvidia-rmmod.conf
+               use uvm && doins "${FILESDIR}"/nvidia-uvm.conf
 
                # Ensures that our device nodes are created when not using X
                exeinto "$(get_udevdir)"
@@ -252,15 +258,15 @@ src_install() {
        fi
 
        # NVIDIA kernel <-> userspace driver config lib
-       donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
+       donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER}
 
        # NVIDIA framebuffer capture library
-       donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
+       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}
+               donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER}
+               donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER}
        fi
 
        if use X; then
@@ -269,14 +275,8 @@ src_install() {
                doins ${NV_X11}/nvidia_drv.so
 
                # Xorg GLX driver
-               donvidia ${NV_X11}/libglx.so.${NV_SOVER} \
+               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
@@ -308,7 +308,7 @@ src_install() {
                doexe ${NV_OBJ}/nvidia-xconfig
        fi
 
-       if use kernel_linux; then
+       if use kernel_linux ; then
                doexe ${NV_OBJ}/nvidia-cuda-mps-control
                doexe ${NV_OBJ}/nvidia-cuda-mps-server
                doexe ${NV_OBJ}/nvidia-debugdump
@@ -331,8 +331,6 @@ src_install() {
 
        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
@@ -342,7 +340,7 @@ src_install() {
        dobin ${NV_OBJ}/nvidia-bug-report.sh
 
        # Desktop entries for nvidia-settings
-       if use tools; then
+       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
@@ -352,9 +350,9 @@ src_install() {
 
        #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist
 
-       if has_multilib_profile && use multilib; then
+       if has_multilib_profile && use multilib ; then
                local OABI=${ABI}
-               for ABI in $(get_install_abis); do
+               for ABI in $(get_install_abis) ; do
                        src_install-libs
                done
                ABI=${OABI}
@@ -374,63 +372,52 @@ src_install-libs() {
        local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
        local libdir=${NV_OBJ}
 
-       if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; 
then
+       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.${NV_SOVER} ${GL_ROOT}"
-                       "libGL.so.1 ${GL_ROOT}"
-                       "libGLESv1_CM.so.1 ${GL_ROOT}"
-                       "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
-                       "libGLESv2.so.2 ${GL_ROOT}"
-                       "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
-                       "libGLX.so.0 ${GL_ROOT}"
-                       "libGLX_nvidia.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-fatbinaryloader.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}"
-                       "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
-                       "libvdpau_nvidia.so.${NV_SOVER}"
-               )
-
-               if use kernel_linux && has_multilib_profile && [[ ${ABI} == 
"amd64" ]];
-               then
-                       NV_GLX_LIBRARIES+=( "libnvidia-wfb.so.${NV_SOVER}" )
-               fi
-
+               # 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
-                       NV_GLX_LIBRARIES+=( "libnvidia-tls.so.${NV_SOVER}" )
+                       donvidia ${libdir}/libnvidia-tls.so ${NV_SOVER}
+               else
+                       donvidia ${libdir}/tls/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
+               # VDPAU
+               donvidia ${libdir}/libvdpau_nvidia.so ${NV_SOVER}
 
-               for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
-                       donvidia ${libdir}/${NV_LIB}
-               done
+               # 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 driver && use kernel_linux; then
+       if use kernel_linux; then
                linux-mod_pkg_preinst
 
                local videogroup="$(egetent group video | cut -d ':' -f 3)"
@@ -447,17 +434,17 @@ pkg_preinst() {
 
        # Clean the dynamic libGL stuff's home to ensure
        # we dont have stale libs floating around
-       if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
+       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
+       if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then
                rm -f "${ROOT}"/etc/env.d/09nvidia
        fi
 }
 
 pkg_postinst() {
-       use driver && use kernel_linux && linux-mod_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
@@ -488,6 +475,6 @@ pkg_prerm() {
 }
 
 pkg_postrm() {
-       use driver && use kernel_linux && linux-mod_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-361.18-r1.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r3.ebuild
similarity index 79%
copy from x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
copy to x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r3.ebuild
index dbe08be..9f40b29 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r3.ebuild
@@ -28,7 +28,7 @@ KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd"
 RESTRICT="bindist mirror strip"
 EMULTILIB_PKG="true"
 
-IUSE="acpi +driver multilib kernel_FreeBSD kernel_linux +kms pax_kernel +tools 
gtk2 gtk3 +X uvm"
+IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools gtk2 gtk3 +X 
uvm"
 REQUIRED_USE="
        tools? ( X || ( gtk2 gtk3 ) )
 "
@@ -39,7 +39,6 @@ COMMON="
        kernel_linux? ( >=sys-libs/glibc-2.6.1 )
        X? (
                >=app-eselect/eselect-opengl-1.0.9
-               app-misc/pax-utils
        )
 "
 DEPEND="
@@ -61,7 +60,7 @@ RDEPEND="
                x11-libs/pango[X]
        )
        X? (
-               <x11-base/xorg-server-1.17.99:=
+               <x11-base/xorg-server-1.18.99:=
                >=x11-libs/libvdpau-0.3-r1
                multilib? (
                        >=x11-libs/libX11-1.6.2[abi_x86_32]
@@ -81,18 +80,17 @@ pkg_pretend() {
                die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
        fi
 
-       if use kernel_linux && kernel_is ge 4 5; then
+       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 "<sys-kernel/gentoo-sources-4.5"
-               ewarn "<sys-kernel/vanilla-sources-4.5"
+               ewarn "<sys-kernel/gentoo-sources-4.3"
+               ewarn "<sys-kernel/vanilla-sources-4.3"
                ewarn ""
                ewarn "You are free to utilize epatch_user to provide whatever"
                ewarn "support you feel is appropriate, but will not receive"
                ewarn "support as a result of those changes."
                ewarn ""
                ewarn "Do not file a bug report about this."
-               ewarn ""
        fi
 
        # Since Nvidia ships many different series of drivers, we need to give 
the user
@@ -114,10 +112,9 @@ pkg_setup() {
        export DISTCC_DISABLE=1
        export CCACHE_DISABLE=1
 
-       if use driver && use kernel_linux; then
+       if use kernel_linux; then
                MODULE_NAMES="nvidia(video:${S}/kernel)"
                use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
-               use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel)"
 
                # This needs to run after MODULE_NAMES (so that the eclass 
checks
                # whether the kernel supports loadable modules) but before 
BUILD_PARAMS
@@ -134,10 +131,6 @@ pkg_setup() {
                BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
        fi
 
-       if use kernel_linux && kernel_is lt 2 6 9; then
-               eerror "You must build this against 2.6.9 or higher kernels."
-       fi
-
        # set variables to where files are in the package structure
        if use kernel_FreeBSD; then
                use x86-fbsd   && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}"
@@ -161,6 +154,17 @@ pkg_setup() {
 }
 
 src_prepare() {
+       # Please add a brief description for every added patch
+
+       if use kernel_linux; then
+               if kernel_is lt 2 6 9; then
+                       eerror "You must build this against 2.6.9 or higher 
kernels."
+               fi
+
+               # If greater than 2.6.5 use M= instead of SUBDIR=
+#              convert_to_m "${NV_SRC}"/Makefile.kbuild
+       fi
+
        if use pax_kernel; then
                ewarn "Using PAX patches is not supported. You will be asked to"
                ewarn "use a standard kernel should you have issues. Should you"
@@ -181,7 +185,7 @@ src_compile() {
        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 driver && use kernel_linux; then
+       elif use kernel_linux; then
                MAKEOPTS=-j1
                linux-mod_src_compile
        fi
@@ -192,42 +196,45 @@ src_compile() {
 # the second parameter is the provided soversion
 # the third parameter is the target directory if it is not /usr/lib
 donvidia() {
-       # Full path to library
-       nv_LIB="${1}"
+       # Full path to library minus SOVER
+       MY_LIB="$1"
 
        # SOVER to use
-       nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
+       MY_SOVER="$2"
 
        # Where to install
-       nv_DEST="${2}"
+       MY_DEST="$3"
 
-       # Get just the library name
-       nv_LIBNAME=$(basename "${nv_LIB}")
-
-       if [[ "${nv_DEST}" ]]; then
-               exeinto ${nv_DEST}
-               action="doexe"
-       else
-               nv_DEST="/usr/$(get_libdir)"
+       if [[ -z "${MY_DEST}" ]]; then
+               MY_DEST="/usr/$(get_libdir)"
                action="dolib.so"
+       else
+               exeinto ${MY_DEST}
+               action="doexe"
        fi
 
-       # Install the library
-       ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
+       # Get just the library name
+       libname=$(basename $1)
 
-       # If the library has a SONAME and SONAME does not match the library 
name,
-       # then we need to create a symlink
-       if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
-               dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
-                       || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
+       # 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
 
-       dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
-               || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
+       # 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 driver && use kernel_linux; then
+       if use kernel_linux; then
                linux-mod_src_install
 
                # Add the aliases
@@ -235,7 +242,7 @@ src_install() {
                # pkg_preinst, see bug #491414
                insinto /etc/modprobe.d
                newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
-               doins "${FILESDIR}"/nvidia-rmmod.conf
+               use uvm && doins "${FILESDIR}"/nvidia-uvm.conf
 
                # Ensures that our device nodes are created when not using X
                exeinto "$(get_udevdir)"
@@ -252,15 +259,15 @@ src_install() {
        fi
 
        # NVIDIA kernel <-> userspace driver config lib
-       donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
+       donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER}
 
        # NVIDIA framebuffer capture library
-       donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
+       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}
+               donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER}
+               donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER}
        fi
 
        if use X; then
@@ -269,7 +276,7 @@ src_install() {
                doins ${NV_X11}/nvidia_drv.so
 
                # Xorg GLX driver
-               donvidia ${NV_X11}/libglx.so.${NV_SOVER} \
+               donvidia ${NV_X11}/libglx.so ${NV_SOVER} \
                        /usr/$(get_libdir)/opengl/nvidia/extensions
 
                # Xorg nvidia.conf
@@ -331,8 +338,8 @@ src_install() {
 
        if use tools; then
                doexe ${NV_OBJ}/nvidia-settings
-               use gtk2 && donvidia libnvidia-gtk2.so.${PV}
-               use gtk3 && donvidia libnvidia-gtk3.so.${PV}
+               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
@@ -380,57 +387,57 @@ src_install-libs() {
 
        if use X; then
                NV_GLX_LIBRARIES=(
-                       "libEGL.so.1 ${GL_ROOT}"
-                       "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
-                       "libGL.so.1 ${GL_ROOT}"
-                       "libGLESv1_CM.so.1 ${GL_ROOT}"
-                       "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
-                       "libGLESv2.so.2 ${GL_ROOT}"
-                       "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
-                       "libGLX.so.0 ${GL_ROOT}"
-                       "libGLX_nvidia.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-fatbinaryloader.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}"
-                       "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
-                       "libvdpau_nvidia.so.${NV_SOVER}"
+                       "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}" )
+                       NV_GLX_LIBRARIES+=( "libnvidia-wfb.so ${NV_SOVER}" )
                fi
 
                if use kernel_FreeBSD; then
-                       NV_GLX_LIBRARIES+=( "libnvidia-tls.so.${NV_SOVER}" )
+                       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}"
+                               "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 driver && use kernel_linux; then
+       if use kernel_linux; then
                linux-mod_pkg_preinst
 
                local videogroup="$(egetent group video | cut -d ':' -f 3)"
@@ -457,7 +464,7 @@ pkg_preinst() {
 }
 
 pkg_postinst() {
-       use driver && use kernel_linux && linux-mod_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
@@ -488,6 +495,6 @@ pkg_prerm() {
 }
 
 pkg_postrm() {
-       use driver && use kernel_linux && linux-mod_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-361.18-r1.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
index dbe08be..3ba033f 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
@@ -61,7 +61,7 @@ RDEPEND="
                x11-libs/pango[X]
        )
        X? (
-               <x11-base/xorg-server-1.17.99:=
+               <x11-base/xorg-server-1.18.99:=
                >=x11-libs/libvdpau-0.3-r1
                multilib? (
                        >=x11-libs/libX11-1.6.2[abi_x86_32]

Reply via email to