summaryrefslogtreecommitdiff
path: root/x11-drivers
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2021-08-13 08:26:27 +0100
committerV3n3RiX <venerix@redcorelinux.org>2021-08-13 08:26:27 +0100
commitf85f5e28cbf2751050f5efaf9c4807680f286a42 (patch)
treec2860d317bd18b7d63ffd29c66b49f15a63ce355 /x11-drivers
parent01d8bc92c63a7e7d01dba1d053d01763131fe4df (diff)
x11-drivers/nvidia-drivers-legacy : overhaul the ebuild, revision bump
Diffstat (limited to 'x11-drivers')
-rw-r--r--x11-drivers/nvidia-drivers-legacy/files/nvidia-persistenced.conf2
-rw-r--r--x11-drivers/nvidia-drivers-legacy/nvidia-drivers-legacy-390.144-r1.ebuild (renamed from x11-drivers/nvidia-drivers-legacy/nvidia-drivers-legacy-390.144.ebuild)220
2 files changed, 82 insertions, 140 deletions
diff --git a/x11-drivers/nvidia-drivers-legacy/files/nvidia-persistenced.conf b/x11-drivers/nvidia-drivers-legacy/files/nvidia-persistenced.conf
index 637ac1af..b8be3b7c 100644
--- a/x11-drivers/nvidia-drivers-legacy/files/nvidia-persistenced.conf
+++ b/x11-drivers/nvidia-drivers-legacy/files/nvidia-persistenced.conf
@@ -1,7 +1,7 @@
# run-time configuration file for /etc/init.d/nvidia-persistenced
# NVPD_USER: The user nvidia-persistenced is intended to run for
-NVPD_USER=""
+NVPD_USER="nvpd"
# ARGS: Additional arguments to set the default persistence mode
# (see nvidia-persistenced(1))
diff --git a/x11-drivers/nvidia-drivers-legacy/nvidia-drivers-legacy-390.144.ebuild b/x11-drivers/nvidia-drivers-legacy/nvidia-drivers-legacy-390.144-r1.ebuild
index d2616d76..8961f8d5 100644
--- a/x11-drivers/nvidia-drivers-legacy/nvidia-drivers-legacy-390.144.ebuild
+++ b/x11-drivers/nvidia-drivers-legacy/nvidia-drivers-legacy-390.144-r1.ebuild
@@ -17,21 +17,22 @@ KEYWORDS="-* ~amd64"
RESTRICT="bindist mirror"
EMULTILIB_PKG="true"
-IUSE="+acpi compat +dkms +libglvnd multilib +tools wayland +X"
+IUSE="acpi +dkms multilib +tools wayland +X"
COMMON="
+ acct-group/video
+ acct-group/nvpd
+ net-libs/libtirpc
X? (
- libglvnd? (
- media-libs/libglvnd[${MULTILIB_USEDEP}]
- !app-eselect/eselect-opengl
- )
- app-misc/pax-utils
+ >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
+ media-libs/libglvnd[X,${MULTILIB_USEDEP}]
)"
DEPEND="${COMMON}"
PDEPEND="
tools? ( ~x11-misc/nvidia-settings-legacy-${PV}:${SLOT} )"
RDEPEND="
${COMMON}
+ >=virtual/opencl-3
!!x11-drivers/nvidia-drivers
acpi? ( sys-power/acpid )
dkms? ( ~sys-kernel/${PN}-dkms-${PV}:${SLOT} )
@@ -40,7 +41,6 @@ RDEPEND="
<x11-base/xorg-server-1.20.99:=
>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
>=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
- >=x11-libs/libvdpau-1.0[${MULTILIB_USEDEP}]
sys-libs/zlib[${MULTILIB_USEDEP}]
)
"
@@ -78,21 +78,10 @@ src_prepare() {
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 it is not /usr/lib
donvidia() {
- # Full path to library
nv_LIB="${1}"
-
- # SOVER to use
nv_SOVER="$(scanelf -qF'%S#F' ${nv_LIB})"
-
- # Where to install
nv_DEST="${2}"
-
- # Get just the library name
nv_LIBNAME=$(basename "${nv_LIB}")
if [[ "${nv_DEST}" ]]; then
@@ -103,11 +92,8 @@ donvidia() {
action="dolib.so"
fi
- # Install the library
${action} ${nv_LIB} || die "failed to install ${nv_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}
fi
@@ -115,105 +101,9 @@ donvidia() {
dosym ${nv_LIBNAME} ${nv_DEST}/${nv_LIBNAME/.so*/.so}
}
-src_install() {
- # Xorg DDX && GLX, GLVND, Vulkan ICD
- if use X; then
- insinto /usr/$(get_libdir)/xorg/modules/drivers
- doins ${NV_X11}/nvidia_drv.so
-
- donvidia ${NV_X11}/libglx.so.${NV_SOVER} \
- /usr/$(get_libdir)/nvidia/xorg
-
- if has_version '>=x11-base/xorg-server-1.16'; then
- insinto /usr/share/X11/xorg.conf.d
- newins "${FILESDIR}"/nvidia-drm-outputclass.conf 50-nvidia-drm-outputclass.conf
- fi
-
- insinto /usr/share/glvnd/egl_vendor.d
- doins ${NV_X11}/10_nvidia.json
-
- insinto /etc/vulkan/icd.d
- doins ${NV_X11}/nvidia_icd.json
- fi
-
- # Wayland
- if use wayland; then
- insinto /usr/share/egl/egl_external_platform.d
- doins ${NV_X11}/10_nvidia_wayland.json
- fi
-
- insinto /etc/modprobe.d
- doins "${FILESDIR}"/nouveau.conf
-
- # NVIDIA kernel <-> 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
- donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
- donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
-
- # OpenCL ICD for NVIDIA
- insinto /etc/OpenCL/vendors
- doins ${NV_OBJ}/nvidia.icd
-
- # Helper Apps
- exeinto /opt/bin/
-
- if use X; then
- doexe ${NV_OBJ}/nvidia-xconfig
- fi
-
- 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
-
- # init
- newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
- newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
- newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
-
- # manpages
- if use X ; then
- doman "${NV_MAN}"/nvidia-xconfig.1
- fi
-
- doman "${NV_MAN}"/nvidia-smi.1
- doman "${NV_MAN}"/nvidia-cuda-mps-control.1
- doman "${NV_MAN}"/nvidia-modprobe.1
- doman "${NV_MAN}"/nvidia-persistenced.1
-
- 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"
-}
-
src_install-libs() {
local inslibdir=$(get_libdir)
- if use libglvnd; then
- local GL_ROOT="/usr/$(get_libdir)"
- else
- local GL_ROOT="/usr/$(get_libdir)/opengl/nvidia/lib"
- fi
+ local GL_ROOT="/usr/$(get_libdir)"
local CL_ROOT="/usr/$(get_libdir)/OpenCL/vendors/nvidia"
local nv_libdir="${NV_OBJ}"
@@ -245,18 +135,6 @@ src_install-libs() {
"tls/libnvidia-tls.so.${NV_SOVER}"
)
- if ! use libglvnd; then
- NV_GLX_LIBRARIES+=(
- "libEGL.so.$( [[ ${ABI} == "amd64" ]] && usex compat ${NV_SOVER} 1.1.0 || echo 1.1.0) ${GL_ROOT}"
- "libGL.so.1.7.0 ${GL_ROOT}"
- "libGLESv1_CM.so.1.2.0 ${GL_ROOT}"
- "libGLESv2.so.2.1.0 ${GL_ROOT}"
- "libGLX.so.0 ${GL_ROOT}"
- "libGLdispatch.so.0 ${GL_ROOT}"
- "libOpenGL.so.0 ${GL_ROOT}"
- )
- fi
-
if use wayland && has_multilib_profile && [[ ${ABI} == "amd64" ]];
then
NV_GLX_LIBRARIES+=(
@@ -277,6 +155,79 @@ src_install-libs() {
fi
}
+src_install() {
+ donvidia ${NV_OBJ}/libnvidia-cfg.so.${NV_SOVER}
+ donvidia ${NV_OBJ}/libnvidia-fbc.so.${NV_SOVER}
+ donvidia ${NV_OBJ}/libnvcuvid.so.${NV_SOVER}
+ donvidia ${NV_OBJ}/libnvidia-encode.so.${NV_SOVER}
+
+ 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"
+
+ if use X; then
+ insinto /usr/$(get_libdir)/xorg/modules/drivers
+ doins ${NV_X11}/nvidia_drv.so
+
+ donvidia ${NV_X11}/libglx.so.${NV_SOVER} /usr/$(get_libdir)/nvidia/xorg
+
+ insinto /usr/share/X11/xorg.conf.d
+ newins "${FILESDIR}"/nvidia-drm-outputclass.conf 50-nvidia-drm-outputclass.conf
+
+ insinto /usr/share/glvnd/egl_vendor.d
+ doins ${NV_X11}/10_nvidia.json
+
+ insinto /etc/vulkan/icd.d
+ doins ${NV_X11}/nvidia_icd.json
+
+ exeinto /opt/bin
+ doexe ${NV_OBJ}/nvidia-xconfig
+
+ doman "${NV_MAN}"/nvidia-xconfig.1
+ fi
+
+ if use wayland; then
+ insinto /usr/share/egl/egl_external_platform.d
+ doins ${NV_X11}/10_nvidia_wayland.json
+ fi
+
+ insinto /etc/modprobe.d
+ doins "${FILESDIR}"/nouveau.conf
+
+ insinto /etc/OpenCL/vendors
+ doins ${NV_OBJ}/nvidia.icd
+
+ exeinto /opt/bin/
+ 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
+ doexe ${NV_OBJ}/nvidia-modprobe
+
+ fowners root:video /opt/bin/nvidia-modprobe
+ fperms 4710 /opt/bin/nvidia-modprobe
+ dosym /{opt,usr}/bin/nvidia-modprobe
+
+ newinitd "${FILESDIR}/nvidia-smi.init" nvidia-smi
+ newconfd "${FILESDIR}/nvidia-persistenced.conf" nvidia-persistenced
+ newinitd "${FILESDIR}/nvidia-persistenced.init" nvidia-persistenced
+
+ doman "${NV_MAN}"/nvidia-smi.1
+ doman "${NV_MAN}"/nvidia-cuda-mps-control.1
+ doman "${NV_MAN}"/nvidia-modprobe.1
+ doman "${NV_MAN}"/nvidia-persistenced.1
+}
+
_dracut_initramfs_regen() {
if [ -x $(which dracut) ]; then
dracut -N -f --no-hostonly-cmdline
@@ -294,15 +245,6 @@ pkg_preinst() {
}
pkg_postinst() {
- if ! use X; then
- elog "You have selected 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 [ $(stat -c %d:%i /) == $(stat -c %d:%i /proc/1/root/.) ]; then
_dracut_initramfs_regen
fi