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]