summaryrefslogtreecommitdiffstats
path: root/system/nvidia-legacy390-driver/nvidia-legacy390-driver.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'system/nvidia-legacy390-driver/nvidia-legacy390-driver.SlackBuild')
-rw-r--r--system/nvidia-legacy390-driver/nvidia-legacy390-driver.SlackBuild79
1 files changed, 38 insertions, 41 deletions
diff --git a/system/nvidia-legacy390-driver/nvidia-legacy390-driver.SlackBuild b/system/nvidia-legacy390-driver/nvidia-legacy390-driver.SlackBuild
index 1b4c1aee21..278a5ed9f7 100644
--- a/system/nvidia-legacy390-driver/nvidia-legacy390-driver.SlackBuild
+++ b/system/nvidia-legacy390-driver/nvidia-legacy390-driver.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for nvidia-legacy390-driver
# Copyright 2012-2019 Edward W. Koenig, Vancouver, WA, USA
-# Copyright 2020 Lenard Spencer, Orlando, FL, USA
+# Copyright 2020-2023 Lenard Spencer, Orlando, FL, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,8 +26,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=nvidia-legacy390-driver
-VERSION=${VERSION:-390.151}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-390.157}
+BUILD=${BUILD:-7}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -81,11 +81,12 @@ if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
exit 0
fi
-# Abort if an Nvidia driver is still installed:
-if [ -x /usr/bin/nvidia-installer ]; then
- echo -e "\n A previous Nvidia installation has been detected!"
- echo -e " Please remove the installed driver and rerun this script.\n"
- exit 1
+if [ "${PERSISTENCED:-no}" = "yes" ]; then
+ if [ `getent group nvidia /dev/null` -o `getent passwd nvidia > /dev/null` ]; then
+ echo "User and/or group nvidia do not exist!"
+ echo "Please create user and group nvidia and rerun this script."
+ exit 1
+ fi
fi
SRCNAM=NVIDIA-Linux-$TARGET-${VERSION}
@@ -97,7 +98,6 @@ mkdir -p $TMP $PKG $OUTPUT $PKG/install
mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/xorg/modules/{drivers,extensions} \
$PKG/etc/OpenCL/vendors/ $PKG/usr/{bin,doc,man/man1} \
$PKG/usr/share/{applications,nvidia,pixmaps,egl/egl_external_platform.d} \
- $PKG/usr/include/GL $PKG/etc/vulkan/icd.d $PKG/etc/X11/xorg.conf.d \
$PKG/etc/X11/glvnd/egl_vendor.d $PKG/var/log
@@ -134,6 +134,13 @@ cd $TMP/nvidia-installer-$VERSION
# Let's try to remove the conflicting files and GPU detection
patch -p0 < $CWD/skip_conflict-GPU_detect.patch
+# Install various files in $PKG instead of the root filesystem:
+ sed -i "s|/etc/vulkan|$PKG/etc/vulkan|" files.c
+ sed -i "s|\"/etc\"|\"$PKG/etc\"|" nvidia-installer.h
+ sed -i "s|/var/lib/nvidia|$PKG/var/lib/nvidia|" backup.c
+ sed -i "s|\"/usr/lib/\"|\"$PKG/usr/lib/\"|" files.c
+ sed -i "s|/usr/lib/nvidia|$PKG/usr/lib/nvidia|" misc.c
+
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -155,13 +162,11 @@ mv -f $PKG/usr/man/man1/nvidia-installer.1.gz $TMP/$SRCNAM
if [ "$ARCH" = "x86_64" -a "${COMPAT32}" = "yes" ]; then
COMP32="--install-compat32-libs --compat32-prefix=$PKG/usr"
- mkdir $PKG/usr/lib
else
if [ ! "$ARCH" = "x86_64" ]; then
COMP32=""
else
COMP32="--no-install-compat32-libs"
- MULTI=""
fi
fi
@@ -184,11 +189,18 @@ cd $TMP/$SRCNAM
--log-file-name=$PKG/var/log/nvidia-installer.log \
--egl-external-platform-config-path=$PKG/usr/share/egl/egl_external_platform.d \
--no-nvidia-modprobe \
+ --no-install-libglvnd \
$COMP32
-# Move ICDs to $PKG and cleanup (no switch option in installer?)
-mv /etc/OpenCL/vendors/nvidia.icd $PKG/etc/OpenCL/vendors/nvidia.icd
-mv /etc/vulkan/icd.d/nvidia_icd.json $PKG/etc/vulkan/icd.d/nvidia_icd.json
+# Remove a /var/lib/nvidia entry installed by nvidia-installer but
+# no longer needed (caused the "failed to remove some directories"
+# warning message):
+rm -rf $PKG/var/lib
+
+# if not multilib, remove the unneeded /usr/lib folder:
+if [ "$ARCH" = "x86_64" -a "${COMPAT32}" != "yes" ]; then
+ rm -rf $PKG/usr/lib || true
+fi
# Compile utilites from source, replacing the precompiled versions
#
@@ -270,15 +282,17 @@ fi
# These add or correct wrong paths
sed -i "s|__UTILS_PATH__|/usr/bin|" $PKG/usr/share/applications/nvidia-settings.desktop
sed -i "s|__PIXMAP_PATH__|/usr/share/pixmaps|" $PKG/usr/share/applications/nvidia-settings.desktop
-sed -i "s|__NVIDIA_SETTINGS_DESKTOP_CATEGORIES__|Application;Settings;|" $PKG/usr/share/applications/nvidia-settings.desktop
+sed -i "s|__NVIDIA_SETTINGS_DESKTOP_CATEGORIES__|Settings;|" $PKG/usr/share/applications/nvidia-settings.desktop
+# Remove depcrecated entry in nvidia-settings.desktop
+sed -i '/Encoding/d' $PKG/usr/share/applications/nvidia-settings.desktop
# rename wrong/conficting files as needed; remove conflicting symlinks created by installer
cd $PKG/usr/lib$LIBDIRSUFFIX
rm libGL.la
- rm libOpenCL.so.1.0.0
+ rm libOpenCL.so*
rm -f xorg/modules/libwfb.so
if [ -e xorg/modules/extensions/libglx.so ]; then
- rm -f xorg/modules/extionsions/libglx.so
+ rm -f xorg/modules/extensions/libglx.so
fi
cd -
@@ -292,7 +306,7 @@ if [ "$ARCH" = "x86_64" -a "${COMPAT32}" = "yes" ]; then
# so ignoring for now.
fi
-# Remove xorg conf file since we handle that in nvidia-legacy390-kernel
+# Remove xorg.conf.d file since we handle that in nvidia-legacy390-kernel
rm -rf $PKG/etc/X11/xorg.conf.d
cd $TMP/$SRCNAM
@@ -317,6 +331,7 @@ cat $CWD/doinst.sh > $PKG/install/doinst.sh
# Add new douninst.sh script:
sed "s/SUFFIX/$LIBDIRSUFFIX/g" $CWD/douninst.sh > $PKG/install/douninst.sh
+
# Add rc.nvidia-persistenced:
if [ "${PERSISTENCED:-no}" = "yes" ]; then
cd $TMP
@@ -324,6 +339,8 @@ if [ "${PERSISTENCED:-no}" = "yes" ]; then
tar xvf $CWD/nvidia-persistenced-$VERSION.tar.bz2
# Compiling nvidia-persistenced
cd $TMP/nvidia-persistenced-$VERSION
+# Patch for tirpc (backport from 470.xx):
+ patch -p1 < $CWD/nvidia-persistenced-390-tirpc.patch
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -334,33 +351,13 @@ if [ "${PERSISTENCED:-no}" = "yes" ]; then
CFLAGS="$SLKCFLAGS" make
install -m 755 _out/Linux_$TARGET/nvidia-persistenced $PKG/usr/bin/
install -m 644 _out/Linux_$TARGET/nvidia-persistenced.1.gz $PKG/usr/man/man1/
-
- if ! getent group nvidia > /dev/null 2>&1; then
- echo "Creating the group nvidia:"
- groupadd -g 365 nvidia || exit 1
- fi
- if ! getent passwd nvidia > /dev/null 2>&1; then
- echo "Creating the user nvidia:"
- useradd -u 365 -g 365 -c "Nvidia" -d /dev/null -s /bin/false nvidia || exit 1
- fi
- mkdir -p $PKG/var/run/nvidia-persistenced
- chown nvidia:nvidia $PKG/var/run/nvidia-persistenced
- mkdir -p $PKG/etc/rc.d
+# install rc.nvidia-perstistenced:
+ mkdir -p $PKG/etc/rc.d $PKG/var/run/nvidia-persistenced
install -m 755 $CWD/rc.nvidia-persistenced $PKG/etc/rc.d/rc.nvidia-persistenced
sed -i "s|__USER__|nvidia|" $PKG/etc/rc.d/rc.nvidia-persistenced
- cat <<EOF >> $PKG/install/doinst.sh
-# Create group and user nvidia if they don't already exist
-if ! getent group nvidia > /dev/null 2>&1; then
- echo "Creating the group nvidia:"
- groupadd -g 365 nvidia || exit 1
-fi
-if ! getent passwd nvidia > /dev/null 2>&1; then
- echo "Creating the user nvidia:"
- useradd -u 365 -g 365 -c "Nvidia" -d /dev/null -s /bin/false nvidia || exit 1
+ chown nvidia:nvidia $PKG/var/run/nvidia-persistenced
fi
-EOF
-fi
# Flag multlib as needed and build package.
cd $PKG