--- files/nvidia.sh 2020-03-01 16:03:39.359697000 -0500 +++ files/nvidia.sh 2020-03-01 15:48:04.596673000 -0500 @@ -167,22 +167,34 @@ NVIDIA=${NV} NV=`echo ${NV} | cut -f 1 -d _ | cut -f 1 -d ,` +NVmajor=`echo $NV | sed -E 's/([0-9]+)\.[0-9]+/\1/'` -if [ ! -f NVIDIA-FreeBSD-x86-${NV}.tar.gz ] || !(tar -tf NVIDIA-FreeBSD-x86-${NV}.tar.gz > /dev/null 2>&1) +# nvidia-driver v390.132 was the last one shipping +# 32-bit library package, after that only x86_64 is shipped containing +# both 32-bit and 64-bit GL libraries +if [ ${NVmajor} -gt 390 ] ; then + downloadFilename=NVIDIA-FreeBSD-x86_64-${NV}.tar.gz + downloadDirectory=FreeBSD-x86_64 +else + downloadFilename=NVIDIA-FreeBSD-x86-${NV}.tar.gz + downloadDirectory=FreeBSD-x86 +fi + +if [ ! -f ${downloadFilename} ] || !(tar -tf ${downloadFilename} > /dev/null 2>&1) then [ -n "$NO_FETCH" ] \ - && terminate 8 "NVIDIA-FreeBSD-x86-${NV}.tar.gz unavailable" - echo "=> Downloading NVIDIA-FreeBSD-x86-${NV}.tar.gz from https://download.nvidia.com..." - rm -f NVIDIA-FreeBSD-x86-${NV}.tar.gz - fetch -aRr https://download.nvidia.com/XFree86/FreeBSD-x86/${NV}/NVIDIA-FreeBSD-x86-${NV}.tar.gz \ - || terminate 2 "Failed to download NVIDIA-FreeBSD-x86-${NV}.tar.gz" - echo "=> Downloaded NVIDIA-FreeBSD-x86-${NV}.tar.gz" + && terminate 8 "${downloadFilename} unavailable" + echo "=> Downloading ${downloadFilename} from https://download.nvidia.com..." + rm -f ${downloadFilename} + fetch -aRr https://download.nvidia.com/XFree86/${downloadDirectory}/${NV}/${downloadFilename} \ + || terminate 2 "Failed to download ${downloadFilename}" + echo "=> Downloaded ${downloadFilename}" echo "Please check the following information against /usr/ports/x11/nvidia-driver/distinfo" - sha256 NVIDIA-FreeBSD-x86-${NV}.tar.gz - echo "SIZE (NVIDIA-FreeBSD-x86-${NV}.tar.gz) = `stat -f "%z" NVIDIA-FreeBSD-x86-${NV}.tar.gz`" + sha256 ${downloadFilename} + echo "SIZE (${downloadFilename}) = `stat -f "%z" ${downloadFilename}`" fi -echo "=> Extracting NVIDIA-FreeBSD-x86-${NV}.tar.gz to $PREFIX/lib32..." +echo "=> Extracting ${downloadFilename} to $PREFIX/lib32..." EXTRACT_LIST="libGL.so.1" case $NV in 195*|173*|96*|71*) @@ -196,20 +208,28 @@ EXTRACT_ARGS="--no-same-owner --no-same-permissions --strip-components 2 -C $PREFIX/lib32" for i in $EXTRACT_LIST do - EXTRACT_ARGS="$EXTRACT_ARGS --include NVIDIA-FreeBSD-x86-${NV}/obj/$i" + if [ ${NVmajor} -ge 390 ] ; then + if [ $i == "libGL.so.1" ] ; then + EXTRACT_ARGS="$EXTRACT_ARGS --include NVIDIA-FreeBSD-x86_64-${NV}/obj/libglvnd/32/$i" + else + EXTRACT_ARGS="$EXTRACT_ARGS --include NVIDIA-FreeBSD-x86_64-${NV}/obj/32/$i" + fi + else + EXTRACT_ARGS="$EXTRACT_ARGS --include NVIDIA-FreeBSD-x86-${NV}/obj/$i" + fi done umask 0333 -tar $EXTRACT_ARGS -xvf NVIDIA-FreeBSD-x86-${NV}.tar.gz \ - || terminate 3 "Failed to extract NVIDIA-FreeBSD-x86-${NV}.tar.gz" +tar $EXTRACT_ARGS -xvf ${downloadFilename} \ + || terminate 3 "Failed to extract ${downloadFilename}" mkdir -m 0755 -p ${PREFIX}/lib32/.nvidia \ || terminate 9 "Failed to create .nvidia shadow directory" mv ${PREFIX}/lib32/libGL.so.1 ${PREFIX}/lib32/.nvidia/ \ || terminate 10 "Failed to move libGL.so.1 to .nvidia/ shadow directory" ln -s .nvidia/libGL.so.1 ${PREFIX}/lib32/libGL.so.1 \ - || terminate 11 "Failed to link to .nvidia/libGL.so.1 in the shadow directory" + || terminate 11 "Failed to link to .nvidia/libGL.so.1 in the shadow directory" echo "=> Cleaning up..." -[ -n "$NO_REMOVE_NVIDIA" ] || rm -vf NVIDIA-FreeBSD-x86-${NV}.tar.gz \ +[ -n "$NO_REMOVE_NVIDIA" ] || rm -vf ${downloadFilename} \ || terminate 6 "Failed to remove files" echo "===> i386-wine-${WINE} successfully patched for nvidia-driver-${NVIDIA}"