Gentoo Archives: gentoo-commits

From: Jeroen Roovers <jer@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: x11-drivers/nvidia-drivers/
Date: Fri, 29 Jan 2016 06:23:04
Message-Id: 1454048294.ee4544dea3ed4a5a5c06051cc67ab49cf6683d93.jer@gentoo
1 commit: ee4544dea3ed4a5a5c06051cc67ab49cf6683d93
2 Author: Jeroen Roovers <jer <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jan 29 06:18:14 2016 +0000
4 Commit: Jeroen Roovers <jer <AT> gentoo <DOT> org>
5 CommitDate: Fri Jan 29 06:18:14 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ee4544de
7
8 x11-drivers/nvidia-drivers: Raise x11-base/xorg-server compatibility (bug #572730 by Martijn Schmidt).
9
10 Package-Manager: portage-2.2.27
11
12 ...8-r1.ebuild => nvidia-drivers-340.96-r1.ebuild} | 215 ++++++++++-----------
13 ...8-r1.ebuild => nvidia-drivers-355.11-r3.ebuild} | 161 +++++++--------
14 .../nvidia-drivers/nvidia-drivers-361.18-r1.ebuild | 2 +-
15 3 files changed, 186 insertions(+), 192 deletions(-)
16
17 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-340.96-r1.ebuild
18 similarity index 71%
19 copy from x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
20 copy to x11-drivers/nvidia-drivers/nvidia-drivers-340.96-r1.ebuild
21 index dbe08be..294bc96 100644
22 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
23 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-340.96-r1.ebuild
24 @@ -25,21 +25,15 @@ SRC_URI="
25 LICENSE="GPL-2 NVIDIA-r2"
26 SLOT="0/${PV%.*}"
27 KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd"
28 +IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools +X uvm"
29 RESTRICT="bindist mirror strip"
30 EMULTILIB_PKG="true"
31
32 -IUSE="acpi +driver multilib kernel_FreeBSD kernel_linux +kms pax_kernel +tools gtk2 gtk3 +X uvm"
33 -REQUIRED_USE="
34 - tools? ( X || ( gtk2 gtk3 ) )
35 -"
36 -
37 COMMON="
38 app-eselect/eselect-opencl
39 - gtk3? ( x11-libs/cairo )
40 kernel_linux? ( >=sys-libs/glibc-2.6.1 )
41 X? (
42 >=app-eselect/eselect-opengl-1.0.9
43 - app-misc/pax-utils
44 )
45 "
46 DEPEND="
47 @@ -54,14 +48,13 @@ RDEPEND="
48 dev-libs/atk
49 dev-libs/glib:2
50 x11-libs/gdk-pixbuf
51 - gtk2? ( >=x11-libs/gtk+-2.4:2 )
52 - gtk3? ( x11-libs/gtk+:3 )
53 + >=x11-libs/gtk+-2.4:2
54 x11-libs/libX11
55 x11-libs/libXext
56 x11-libs/pango[X]
57 )
58 X? (
59 - <x11-base/xorg-server-1.17.99:=
60 + <x11-base/xorg-server-1.18.99:=
61 >=x11-libs/libvdpau-0.3-r1
62 multilib? (
63 >=x11-libs/libX11-1.6.2[abi_x86_32]
64 @@ -70,22 +63,25 @@ RDEPEND="
65 )
66 "
67
68 +REQUIRED_USE="tools? ( X )"
69 +
70 QA_PREBUILT="opt/* usr/lib*"
71
72 S=${WORKDIR}/
73
74 pkg_pretend() {
75 +
76 if use amd64 && has_multilib_profile && \
77 [ "${DEFAULT_ABI}" != "amd64" ]; then
78 eerror "This ebuild doesn't currently support changing your default ABI"
79 die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
80 fi
81
82 - if use kernel_linux && kernel_is ge 4 5; then
83 + if use kernel_linux && kernel_is ge 4 4; then
84 ewarn "Gentoo supports kernels which are supported by NVIDIA"
85 ewarn "which are limited to the following kernels:"
86 - ewarn "<sys-kernel/gentoo-sources-4.5"
87 - ewarn "<sys-kernel/vanilla-sources-4.5"
88 + ewarn "<sys-kernel/gentoo-sources-4.4"
89 + ewarn "<sys-kernel/vanilla-sources-4.4"
90 ewarn ""
91 ewarn "You are free to utilize epatch_user to provide whatever"
92 ewarn "support you feel is appropriate, but will not receive"
93 @@ -114,10 +110,9 @@ pkg_setup() {
94 export DISTCC_DISABLE=1
95 export CCACHE_DISABLE=1
96
97 - if use driver && use kernel_linux; then
98 + if use kernel_linux; then
99 MODULE_NAMES="nvidia(video:${S}/kernel)"
100 - use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
101 - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel)"
102 + use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel/uvm)"
103
104 # This needs to run after MODULE_NAMES (so that the eclass checks
105 # whether the kernel supports loadable modules) but before BUILD_PARAMS
106 @@ -125,7 +120,7 @@ pkg_setup() {
107 linux-mod_pkg_setup
108
109 BUILD_PARAMS="IGNORE_CC_MISMATCH=yes V=1 SYSSRC=${KV_DIR} \
110 - SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC) NV_VERBOSE=1"
111 + SYSOUT=${KV_OUT_DIR} CC=$(tc-getBUILD_CC)"
112
113 # linux-mod_src_compile calls set_arch_to_kernel, which
114 # sets the ARCH to x86 but NVIDIA's wrapping Makefile
115 @@ -134,10 +129,6 @@ pkg_setup() {
116 BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
117 fi
118
119 - if use kernel_linux && kernel_is lt 2 6 9; then
120 - eerror "You must build this against 2.6.9 or higher kernels."
121 - fi
122 -
123 # set variables to where files are in the package structure
124 if use kernel_FreeBSD; then
125 use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}"
126 @@ -161,11 +152,23 @@ pkg_setup() {
127 }
128
129 src_prepare() {
130 + # Please add a brief description for every added patch
131 +
132 + if use kernel_linux; then
133 + if kernel_is lt 2 6 9 ; then
134 + eerror "You must build this against 2.6.9 or higher kernels."
135 + fi
136 +
137 + # If greater than 2.6.5 use M= instead of SUBDIR=
138 +# convert_to_m "${NV_SRC}"/Makefile.kbuild
139 + fi
140 +
141 if use pax_kernel; then
142 ewarn "Using PAX patches is not supported. You will be asked to"
143 ewarn "use a standard kernel should you have issues. Should you"
144 ewarn "need support with these patches, contact the PaX team."
145 - epatch "${FILESDIR}"/${PN}-355.06-pax.patch
146 + epatch "${FILESDIR}"/${PN}-331.13-pax-usercopy.patch
147 + epatch "${FILESDIR}"/${PN}-337.12-pax-constify.patch
148 fi
149
150 # Allow user patches so they can support RC kernels and whatever else
151 @@ -181,8 +184,8 @@ src_compile() {
152 if use kernel_FreeBSD; then
153 MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
154 LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
155 - elif use driver && use kernel_linux; then
156 - MAKEOPTS=-j1
157 + elif use kernel_linux; then
158 + use uvm && MAKEOPTS=-j1
159 linux-mod_src_compile
160 fi
161 }
162 @@ -190,44 +193,47 @@ src_compile() {
163 # Install nvidia library:
164 # the first parameter is the library to install
165 # the second parameter is the provided soversion
166 -# the third parameter is the target directory if it is not /usr/lib
167 +# the third parameter is the target directory if its not /usr/lib
168 donvidia() {
169 - # Full path to library
170 - nv_LIB="${1}"
171 + # Full path to library minus SOVER
172 + MY_LIB="$1"
173
174 # SOVER to use
175 - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
176 + MY_SOVER="$2"
177
178 # Where to install
179 - nv_DEST="${2}"
180 -
181 - # Get just the library name
182 - nv_LIBNAME=$(basename "${nv_LIB}")
183 + MY_DEST="$3"
184
185 - if [[ "${nv_DEST}" ]]; then
186 - exeinto ${nv_DEST}
187 - action="doexe"
188 - else
189 - nv_DEST="/usr/$(get_libdir)"
190 + if [[ -z "${MY_DEST}" ]]; then
191 + MY_DEST="/usr/$(get_libdir)"
192 action="dolib.so"
193 + else
194 + exeinto ${MY_DEST}
195 + action="doexe"
196 fi
197
198 - # Install the library
199 - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
200 + # Get just the library name
201 + libname=$(basename $1)
202 +
203 + # Install the library with the correct SOVER
204 + ${action} ${MY_LIB}.${MY_SOVER} || \
205 + die "failed to install ${libname}"
206
207 - # If the library has a SONAME and SONAME does not match the library name,
208 - # then we need to create a symlink
209 - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
210 - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
211 - || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
212 + # If SOVER wasn't 1, then we need to create a .1 symlink
213 + if [[ "${MY_SOVER}" != "1" ]]; then
214 + dosym ${libname}.${MY_SOVER} \
215 + ${MY_DEST}/${libname}.1 || \
216 + die "failed to create ${libname} symlink"
217 fi
218
219 - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
220 - || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
221 + # Always create the symlink from the raw lib to the .1
222 + dosym ${libname}.1 \
223 + ${MY_DEST}/${libname} || \
224 + die "failed to create ${libname} symlink"
225 }
226
227 src_install() {
228 - if use driver && use kernel_linux; then
229 + if use kernel_linux; then
230 linux-mod_src_install
231
232 # Add the aliases
233 @@ -235,7 +241,7 @@ src_install() {
234 # pkg_preinst, see bug #491414
235 insinto /etc/modprobe.d
236 newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
237 - doins "${FILESDIR}"/nvidia-rmmod.conf
238 + use uvm && doins "${FILESDIR}"/nvidia-uvm.conf
239
240 # Ensures that our device nodes are created when not using X
241 exeinto "$(get_udevdir)"
242 @@ -252,15 +258,15 @@ src_install() {
243 fi
244
245 # NVIDIA kernel <-> userspace driver config lib
246 - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
247 + donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER}
248
249 # NVIDIA framebuffer capture library
250 - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
251 + donvidia ${NV_OBJ}/libnvidia-fbc.so ${NV_SOVER}
252
253 # NVIDIA video encode/decode <-> CUDA
254 if use kernel_linux; then
255 - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
256 - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
257 + donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER}
258 + donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER}
259 fi
260
261 if use X; then
262 @@ -269,14 +275,8 @@ src_install() {
263 doins ${NV_X11}/nvidia_drv.so
264
265 # Xorg GLX driver
266 - donvidia ${NV_X11}/libglx.so.${NV_SOVER} \
267 + donvidia ${NV_X11}/libglx.so ${NV_SOVER} \
268 /usr/$(get_libdir)/opengl/nvidia/extensions
269 -
270 - # Xorg nvidia.conf
271 - if has_version '>=x11-base/xorg-server-1.16'; then
272 - insinto /usr/share/X11/xorg.conf.d
273 - newins {,50-}nvidia-drm-outputclass.conf
274 - fi
275 fi
276
277 # OpenCL ICD for NVIDIA
278 @@ -308,7 +308,7 @@ src_install() {
279 doexe ${NV_OBJ}/nvidia-xconfig
280 fi
281
282 - if use kernel_linux; then
283 + if use kernel_linux ; then
284 doexe ${NV_OBJ}/nvidia-cuda-mps-control
285 doexe ${NV_OBJ}/nvidia-cuda-mps-server
286 doexe ${NV_OBJ}/nvidia-debugdump
287 @@ -331,8 +331,6 @@ src_install() {
288
289 if use tools; then
290 doexe ${NV_OBJ}/nvidia-settings
291 - use gtk2 && donvidia libnvidia-gtk2.so.${PV}
292 - use gtk3 && donvidia libnvidia-gtk3.so.${PV}
293 insinto /usr/share/nvidia/
294 doins nvidia-application-profiles-${PV}-key-documentation
295 insinto /etc/nvidia
296 @@ -342,7 +340,7 @@ src_install() {
297 dobin ${NV_OBJ}/nvidia-bug-report.sh
298
299 # Desktop entries for nvidia-settings
300 - if use tools; then
301 + if use tools ; then
302 # There is no icon in the FreeBSD tarball.
303 use kernel_FreeBSD || newicon ${NV_OBJ}/nvidia-settings.png ${PN}-settings.png
304 domenu "${FILESDIR}"/${PN}-settings.desktop
305 @@ -352,9 +350,9 @@ src_install() {
306
307 #doenvd "${FILESDIR}"/50nvidia-prelink-blacklist
308
309 - if has_multilib_profile && use multilib; then
310 + if has_multilib_profile && use multilib ; then
311 local OABI=${ABI}
312 - for ABI in $(get_install_abis); do
313 + for ABI in $(get_install_abis) ; do
314 src_install-libs
315 done
316 ABI=${OABI}
317 @@ -374,63 +372,52 @@ src_install-libs() {
318 local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
319 local libdir=${NV_OBJ}
320
321 - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "x86" ]]; then
322 + if use kernel_linux && has_multilib_profile && \
323 + [[ ${ABI} == "x86" ]] ; then
324 libdir=${NV_OBJ}/32
325 fi
326
327 if use X; then
328 - NV_GLX_LIBRARIES=(
329 - "libEGL.so.1 ${GL_ROOT}"
330 - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
331 - "libGL.so.1 ${GL_ROOT}"
332 - "libGLESv1_CM.so.1 ${GL_ROOT}"
333 - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
334 - "libGLESv2.so.2 ${GL_ROOT}"
335 - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
336 - "libGLX.so.0 ${GL_ROOT}"
337 - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
338 - "libGLdispatch.so.0 ${GL_ROOT}"
339 - "libOpenCL.so.1.0.0 ${CL_ROOT}"
340 - "libOpenGL.so.0 ${GL_ROOT}"
341 - "libcuda.so.${NV_SOVER}"
342 - "libnvcuvid.so.${NV_SOVER}"
343 - "libnvidia-compiler.so.${NV_SOVER}"
344 - "libnvidia-eglcore.so.${NV_SOVER}"
345 - "libnvidia-encode.so.${NV_SOVER}"
346 - "libnvidia-fatbinaryloader.so.${NV_SOVER}"
347 - "libnvidia-fbc.so.${NV_SOVER}"
348 - "libnvidia-glcore.so.${NV_SOVER}"
349 - "libnvidia-glsi.so.${NV_SOVER}"
350 - "libnvidia-ifr.so.${NV_SOVER}"
351 - "libnvidia-opencl.so.${NV_SOVER}"
352 - "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
353 - "libvdpau_nvidia.so.${NV_SOVER}"
354 - )
355 -
356 - if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
357 - then
358 - NV_GLX_LIBRARIES+=( "libnvidia-wfb.so.${NV_SOVER}" )
359 - fi
360 -
361 + # The GLX libraries
362 + donvidia ${libdir}/libEGL.so ${NV_SOVER} ${GL_ROOT}
363 + donvidia ${libdir}/libGL.so ${NV_SOVER} ${GL_ROOT}
364 + donvidia ${libdir}/libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT}
365 + donvidia ${libdir}/libnvidia-eglcore.so ${NV_SOVER}
366 + donvidia ${libdir}/libnvidia-glcore.so ${NV_SOVER}
367 + donvidia ${libdir}/libnvidia-glsi.so ${NV_SOVER}
368 + donvidia ${libdir}/libnvidia-ifr.so ${NV_SOVER}
369 if use kernel_FreeBSD; then
370 - NV_GLX_LIBRARIES+=( "libnvidia-tls.so.${NV_SOVER}" )
371 + donvidia ${libdir}/libnvidia-tls.so ${NV_SOVER}
372 + else
373 + donvidia ${libdir}/tls/libnvidia-tls.so ${NV_SOVER}
374 fi
375
376 - if use kernel_linux; then
377 - NV_GLX_LIBRARIES+=(
378 - "libnvidia-ml.so.${NV_SOVER}"
379 - "tls/libnvidia-tls.so.${NV_SOVER}"
380 - )
381 - fi
382 + # VDPAU
383 + donvidia ${libdir}/libvdpau_nvidia.so ${NV_SOVER}
384
385 - for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
386 - donvidia ${libdir}/${NV_LIB}
387 - done
388 + # GLES v2 libraries
389 + insinto ${GL_ROOT}
390 + doexe ${libdir}/libGLESv2.so.${PV}
391 + dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2
392 + dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so
393 + fi
394 +
395 + # NVIDIA monitoring library
396 + if use kernel_linux ; then
397 + donvidia ${libdir}/libnvidia-ml.so ${NV_SOVER}
398 + fi
399 +
400 + # CUDA & OpenCL
401 + if use kernel_linux; then
402 + donvidia ${libdir}/libcuda.so ${NV_SOVER}
403 + donvidia ${libdir}/libnvidia-compiler.so ${NV_SOVER}
404 + donvidia ${libdir}/libOpenCL.so 1.0.0 ${CL_ROOT}
405 + donvidia ${libdir}/libnvidia-opencl.so ${NV_SOVER}
406 fi
407 }
408
409 pkg_preinst() {
410 - if use driver && use kernel_linux; then
411 + if use kernel_linux; then
412 linux-mod_pkg_preinst
413
414 local videogroup="$(egetent group video | cut -d ':' -f 3)"
415 @@ -447,17 +434,17 @@ pkg_preinst() {
416
417 # Clean the dynamic libGL stuff's home to ensure
418 # we dont have stale libs floating around
419 - if [ -d "${ROOT}"/usr/lib/opengl/nvidia ]; then
420 + if [ -d "${ROOT}"/usr/lib/opengl/nvidia ] ; then
421 rm -rf "${ROOT}"/usr/lib/opengl/nvidia/*
422 fi
423 # Make sure we nuke the old nvidia-glx's env.d file
424 - if [ -e "${ROOT}"/etc/env.d/09nvidia ]; then
425 + if [ -e "${ROOT}"/etc/env.d/09nvidia ] ; then
426 rm -f "${ROOT}"/etc/env.d/09nvidia
427 fi
428 }
429
430 pkg_postinst() {
431 - use driver && use kernel_linux && linux-mod_pkg_postinst
432 + use kernel_linux && linux-mod_pkg_postinst
433
434 # Switch to the nvidia implementation
435 use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia
436 @@ -488,6 +475,6 @@ pkg_prerm() {
437 }
438
439 pkg_postrm() {
440 - use driver && use kernel_linux && linux-mod_pkg_postrm
441 + use kernel_linux && linux-mod_pkg_postrm
442 use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
443 }
444
445 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r3.ebuild
446 similarity index 79%
447 copy from x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
448 copy to x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r3.ebuild
449 index dbe08be..9f40b29 100644
450 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
451 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-355.11-r3.ebuild
452 @@ -28,7 +28,7 @@ KEYWORDS="-* ~amd64 ~x86 ~amd64-fbsd ~x86-fbsd"
453 RESTRICT="bindist mirror strip"
454 EMULTILIB_PKG="true"
455
456 -IUSE="acpi +driver multilib kernel_FreeBSD kernel_linux +kms pax_kernel +tools gtk2 gtk3 +X uvm"
457 +IUSE="acpi multilib kernel_FreeBSD kernel_linux pax_kernel +tools gtk2 gtk3 +X uvm"
458 REQUIRED_USE="
459 tools? ( X || ( gtk2 gtk3 ) )
460 "
461 @@ -39,7 +39,6 @@ COMMON="
462 kernel_linux? ( >=sys-libs/glibc-2.6.1 )
463 X? (
464 >=app-eselect/eselect-opengl-1.0.9
465 - app-misc/pax-utils
466 )
467 "
468 DEPEND="
469 @@ -61,7 +60,7 @@ RDEPEND="
470 x11-libs/pango[X]
471 )
472 X? (
473 - <x11-base/xorg-server-1.17.99:=
474 + <x11-base/xorg-server-1.18.99:=
475 >=x11-libs/libvdpau-0.3-r1
476 multilib? (
477 >=x11-libs/libX11-1.6.2[abi_x86_32]
478 @@ -81,18 +80,17 @@ pkg_pretend() {
479 die "Unexpected \${DEFAULT_ABI} = ${DEFAULT_ABI}"
480 fi
481
482 - if use kernel_linux && kernel_is ge 4 5; then
483 + if use kernel_linux && kernel_is ge 4 3; then
484 ewarn "Gentoo supports kernels which are supported by NVIDIA"
485 ewarn "which are limited to the following kernels:"
486 - ewarn "<sys-kernel/gentoo-sources-4.5"
487 - ewarn "<sys-kernel/vanilla-sources-4.5"
488 + ewarn "<sys-kernel/gentoo-sources-4.3"
489 + ewarn "<sys-kernel/vanilla-sources-4.3"
490 ewarn ""
491 ewarn "You are free to utilize epatch_user to provide whatever"
492 ewarn "support you feel is appropriate, but will not receive"
493 ewarn "support as a result of those changes."
494 ewarn ""
495 ewarn "Do not file a bug report about this."
496 - ewarn ""
497 fi
498
499 # Since Nvidia ships many different series of drivers, we need to give the user
500 @@ -114,10 +112,9 @@ pkg_setup() {
501 export DISTCC_DISABLE=1
502 export CCACHE_DISABLE=1
503
504 - if use driver && use kernel_linux; then
505 + if use kernel_linux; then
506 MODULE_NAMES="nvidia(video:${S}/kernel)"
507 use uvm && MODULE_NAMES+=" nvidia-uvm(video:${S}/kernel)"
508 - use kms && MODULE_NAMES+=" nvidia-modeset(video:${S}/kernel)"
509
510 # This needs to run after MODULE_NAMES (so that the eclass checks
511 # whether the kernel supports loadable modules) but before BUILD_PARAMS
512 @@ -134,10 +131,6 @@ pkg_setup() {
513 BUILD_FIXES="ARCH=$(uname -m | sed -e 's/i.86/i386/')"
514 fi
515
516 - if use kernel_linux && kernel_is lt 2 6 9; then
517 - eerror "You must build this against 2.6.9 or higher kernels."
518 - fi
519 -
520 # set variables to where files are in the package structure
521 if use kernel_FreeBSD; then
522 use x86-fbsd && S="${WORKDIR}/${X86_FBSD_NV_PACKAGE}"
523 @@ -161,6 +154,17 @@ pkg_setup() {
524 }
525
526 src_prepare() {
527 + # Please add a brief description for every added patch
528 +
529 + if use kernel_linux; then
530 + if kernel_is lt 2 6 9; then
531 + eerror "You must build this against 2.6.9 or higher kernels."
532 + fi
533 +
534 + # If greater than 2.6.5 use M= instead of SUBDIR=
535 +# convert_to_m "${NV_SRC}"/Makefile.kbuild
536 + fi
537 +
538 if use pax_kernel; then
539 ewarn "Using PAX patches is not supported. You will be asked to"
540 ewarn "use a standard kernel should you have issues. Should you"
541 @@ -181,7 +185,7 @@ src_compile() {
542 if use kernel_FreeBSD; then
543 MAKE="$(get_bmake)" CFLAGS="-Wno-sign-compare" emake CC="$(tc-getCC)" \
544 LD="$(tc-getLD)" LDFLAGS="$(raw-ldflags)" || die
545 - elif use driver && use kernel_linux; then
546 + elif use kernel_linux; then
547 MAKEOPTS=-j1
548 linux-mod_src_compile
549 fi
550 @@ -192,42 +196,45 @@ src_compile() {
551 # the second parameter is the provided soversion
552 # the third parameter is the target directory if it is not /usr/lib
553 donvidia() {
554 - # Full path to library
555 - nv_LIB="${1}"
556 + # Full path to library minus SOVER
557 + MY_LIB="$1"
558
559 # SOVER to use
560 - nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
561 + MY_SOVER="$2"
562
563 # Where to install
564 - nv_DEST="${2}"
565 + MY_DEST="$3"
566
567 - # Get just the library name
568 - nv_LIBNAME=$(basename "${nv_LIB}")
569 -
570 - if [[ "${nv_DEST}" ]]; then
571 - exeinto ${nv_DEST}
572 - action="doexe"
573 - else
574 - nv_DEST="/usr/$(get_libdir)"
575 + if [[ -z "${MY_DEST}" ]]; then
576 + MY_DEST="/usr/$(get_libdir)"
577 action="dolib.so"
578 + else
579 + exeinto ${MY_DEST}
580 + action="doexe"
581 fi
582
583 - # Install the library
584 - ${action} ${nv_LIB} || die "failed to install ${nv_LIBNAME}"
585 + # Get just the library name
586 + libname=$(basename $1)
587
588 - # If the library has a SONAME and SONAME does not match the library name,
589 - # then we need to create a symlink
590 - if [[ ${nv_SOVER} ]] && ! [[ "${nv_SOVER}" = "${nv_LIBNAME}" ]]; then
591 - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_SOVER} \
592 - || die "failed to create ${nv_DEST}/${nv_SOVER} symlink"
593 + # Install the library with the correct SOVER
594 + ${action} ${MY_LIB}.${MY_SOVER} || \
595 + die "failed to install ${libname}"
596 +
597 + # If SOVER wasn't 1, then we need to create a .1 symlink
598 + if [[ "${MY_SOVER}" != "1" ]]; then
599 + dosym ${libname}.${MY_SOVER} \
600 + ${MY_DEST}/${libname}.1 || \
601 + die "failed to create ${libname} symlink"
602 fi
603
604 - dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so} \
605 - || die "failed to create ${nv_LIBNAME/.so*/.so} symlink"
606 + # Always create the symlink from the raw lib to the .1
607 + dosym ${libname}.1 \
608 + ${MY_DEST}/${libname} || \
609 + die "failed to create ${libname} symlink"
610 }
611
612 src_install() {
613 - if use driver && use kernel_linux; then
614 + if use kernel_linux; then
615 linux-mod_src_install
616
617 # Add the aliases
618 @@ -235,7 +242,7 @@ src_install() {
619 # pkg_preinst, see bug #491414
620 insinto /etc/modprobe.d
621 newins "${FILESDIR}"/nvidia-169.07 nvidia.conf
622 - doins "${FILESDIR}"/nvidia-rmmod.conf
623 + use uvm && doins "${FILESDIR}"/nvidia-uvm.conf
624
625 # Ensures that our device nodes are created when not using X
626 exeinto "$(get_udevdir)"
627 @@ -252,15 +259,15 @@ src_install() {
628 fi
629
630 # NVIDIA kernel <-> userspace driver config lib
631 - donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
632 + donvidia ${NV_OBJ}/libnvidia-cfg.so ${NV_SOVER}
633
634 # NVIDIA framebuffer capture library
635 - donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
636 + donvidia ${NV_OBJ}/libnvidia-fbc.so ${NV_SOVER}
637
638 # NVIDIA video encode/decode <-> CUDA
639 if use kernel_linux; then
640 - donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
641 - donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
642 + donvidia ${NV_OBJ}/libnvcuvid.so ${NV_SOVER}
643 + donvidia ${NV_OBJ}/libnvidia-encode.so ${NV_SOVER}
644 fi
645
646 if use X; then
647 @@ -269,7 +276,7 @@ src_install() {
648 doins ${NV_X11}/nvidia_drv.so
649
650 # Xorg GLX driver
651 - donvidia ${NV_X11}/libglx.so.${NV_SOVER} \
652 + donvidia ${NV_X11}/libglx.so ${NV_SOVER} \
653 /usr/$(get_libdir)/opengl/nvidia/extensions
654
655 # Xorg nvidia.conf
656 @@ -331,8 +338,8 @@ src_install() {
657
658 if use tools; then
659 doexe ${NV_OBJ}/nvidia-settings
660 - use gtk2 && donvidia libnvidia-gtk2.so.${PV}
661 - use gtk3 && donvidia libnvidia-gtk3.so.${PV}
662 + use gtk2 && donvidia libnvidia-gtk2.so ${PV}
663 + use gtk3 && donvidia libnvidia-gtk3.so ${PV}
664 insinto /usr/share/nvidia/
665 doins nvidia-application-profiles-${PV}-key-documentation
666 insinto /etc/nvidia
667 @@ -380,57 +387,57 @@ src_install-libs() {
668
669 if use X; then
670 NV_GLX_LIBRARIES=(
671 - "libEGL.so.1 ${GL_ROOT}"
672 - "libEGL_nvidia.so.${NV_SOVER} ${GL_ROOT}"
673 - "libGL.so.1 ${GL_ROOT}"
674 - "libGLESv1_CM.so.1 ${GL_ROOT}"
675 - "libGLESv1_CM_nvidia.so.${NV_SOVER} ${GL_ROOT}"
676 - "libGLESv2.so.2 ${GL_ROOT}"
677 - "libGLESv2_nvidia.so.${NV_SOVER} ${GL_ROOT}"
678 - "libGLX.so.0 ${GL_ROOT}"
679 - "libGLX_nvidia.so.${NV_SOVER} ${GL_ROOT}"
680 - "libGLdispatch.so.0 ${GL_ROOT}"
681 - "libOpenCL.so.1.0.0 ${CL_ROOT}"
682 - "libOpenGL.so.0 ${GL_ROOT}"
683 - "libcuda.so.${NV_SOVER}"
684 - "libnvcuvid.so.${NV_SOVER}"
685 - "libnvidia-compiler.so.${NV_SOVER}"
686 - "libnvidia-eglcore.so.${NV_SOVER}"
687 - "libnvidia-encode.so.${NV_SOVER}"
688 - "libnvidia-fatbinaryloader.so.${NV_SOVER}"
689 - "libnvidia-fbc.so.${NV_SOVER}"
690 - "libnvidia-glcore.so.${NV_SOVER}"
691 - "libnvidia-glsi.so.${NV_SOVER}"
692 - "libnvidia-ifr.so.${NV_SOVER}"
693 - "libnvidia-opencl.so.${NV_SOVER}"
694 - "libnvidia-ptxjitcompiler.so.${NV_SOVER}"
695 - "libvdpau_nvidia.so.${NV_SOVER}"
696 + "libEGL.so 1 ${GL_ROOT}"
697 + "libEGL_nvidia.so 0 ${GL_ROOT}"
698 + "libGL.so ${NV_SOVER} ${GL_ROOT}"
699 + "libGLESv1_CM.so ${NV_SOVER} ${GL_ROOT}"
700 + "libGLdispatch.so 0 ${GL_ROOT}"
701 + "libOpenCL.so 1.0.0 ${CL_ROOT}"
702 + "libOpenGL.so 0 ${GL_ROOT}"
703 + "libcuda.so ${NV_SOVER}"
704 + "libnvcuvid.so ${NV_SOVER}"
705 + "libnvidia-compiler.so ${NV_SOVER}"
706 + "libnvidia-eglcore.so ${NV_SOVER}"
707 + "libnvidia-encode.so ${NV_SOVER}"
708 + "libnvidia-fbc.so ${NV_SOVER}"
709 + "libnvidia-glcore.so ${NV_SOVER}"
710 + "libnvidia-glsi.so ${NV_SOVER}"
711 + "libnvidia-ifr.so ${NV_SOVER}"
712 + "libnvidia-opencl.so ${NV_SOVER}"
713 + "libvdpau.so ${NV_SOVER} ${GL_ROOT}"
714 + "libvdpau_nvidia.so ${NV_SOVER}"
715 + "libvdpau_trace.so ${NV_SOVER} ${GL_ROOT}"
716 )
717 -
718 if use kernel_linux && has_multilib_profile && [[ ${ABI} == "amd64" ]];
719 then
720 - NV_GLX_LIBRARIES+=( "libnvidia-wfb.so.${NV_SOVER}" )
721 + NV_GLX_LIBRARIES+=( "libnvidia-wfb.so ${NV_SOVER}" )
722 fi
723
724 if use kernel_FreeBSD; then
725 - NV_GLX_LIBRARIES+=( "libnvidia-tls.so.${NV_SOVER}" )
726 + NV_GLX_LIBRARIES+=( "libnvidia-tls.so ${NV_SOVER}" )
727 fi
728
729 if use kernel_linux; then
730 NV_GLX_LIBRARIES+=(
731 - "libnvidia-ml.so.${NV_SOVER}"
732 - "tls/libnvidia-tls.so.${NV_SOVER}"
733 + "libnvidia-ml.so ${NV_SOVER}"
734 + "tls/libnvidia-tls.so ${NV_SOVER}"
735 )
736 fi
737
738 for NV_LIB in "${NV_GLX_LIBRARIES[@]}"; do
739 donvidia ${libdir}/${NV_LIB}
740 done
741 +
742 + # GLES v2 library is special
743 + insinto ${GL_ROOT}
744 + doexe ${libdir}/libGLESv2.so.${PV}
745 + dosym libGLESv2.so.${PV} ${GL_ROOT}/libGLESv2.so.2
746 + dosym libGLESv2.so.2 ${GL_ROOT}/libGLESv2.so
747 fi
748 }
749
750 pkg_preinst() {
751 - if use driver && use kernel_linux; then
752 + if use kernel_linux; then
753 linux-mod_pkg_preinst
754
755 local videogroup="$(egetent group video | cut -d ':' -f 3)"
756 @@ -457,7 +464,7 @@ pkg_preinst() {
757 }
758
759 pkg_postinst() {
760 - use driver && use kernel_linux && linux-mod_pkg_postinst
761 + use kernel_linux && linux-mod_pkg_postinst
762
763 # Switch to the nvidia implementation
764 use X && "${ROOT}"/usr/bin/eselect opengl set --use-old nvidia
765 @@ -488,6 +495,6 @@ pkg_prerm() {
766 }
767
768 pkg_postrm() {
769 - use driver && use kernel_linux && linux-mod_pkg_postrm
770 + use kernel_linux && linux-mod_pkg_postrm
771 use X && "${ROOT}"/usr/bin/eselect opengl set --use-old xorg-x11
772 }
773
774 diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
775 index dbe08be..3ba033f 100644
776 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
777 +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-361.18-r1.ebuild
778 @@ -61,7 +61,7 @@ RDEPEND="
779 x11-libs/pango[X]
780 )
781 X? (
782 - <x11-base/xorg-server-1.17.99:=
783 + <x11-base/xorg-server-1.18.99:=
784 >=x11-libs/libvdpau-0.3-r1
785 multilib? (
786 >=x11-libs/libX11-1.6.2[abi_x86_32]