First Push
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2019, NVIDIA CORPORATION.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# unaltered in all copies or substantial portions of the Materials.
|
||||
# Any additions, deletions, or changes to the original source files
|
||||
# must be clearly indicated in accompanying documentation.
|
||||
#
|
||||
# If only executable code is distributed, then the accompanying
|
||||
# documentation must state that "this software is based in part on the
|
||||
# work of the Khronos Group."
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# check-libglvnd-install.sh
|
||||
#
|
||||
# This script checks for an existing libglvnd installation. A driver installer
|
||||
# can use this to determine whether or not it needs to install its own copies
|
||||
# of the libraries.
|
||||
#
|
||||
# The script will exit with one of these values:
|
||||
# 0 -- The libglvnd libraries are installed and working.
|
||||
# 1 -- No libglvnd libraries are installed.
|
||||
# 2 -- There's a combination of libglvnd and non-libglvnd libraries installed.
|
||||
# 3 -- Some internal error occurred.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
# Exit codes.
|
||||
RESULT_INSTALLED=0
|
||||
RESULT_NOT_INSTALLED=1
|
||||
RESULT_PARTIAL=2
|
||||
RESULT_ERROR=3
|
||||
|
||||
TEST_EXIT_CODE_SUCCESS=0
|
||||
TEST_EXIT_CODE_NON_LIBGLVND=1
|
||||
TEST_EXIT_CODE_VERSION_MISMATCH=2
|
||||
TEST_EXIT_CODE_NO_LIBRARY=3
|
||||
TEST_EXIT_CODE_INTERNAL_ERROR=4
|
||||
|
||||
BASEDIR=`readlink -f $0`
|
||||
BASEDIR=`dirname $BASEDIR`
|
||||
BINDIR=$BASEDIR
|
||||
HELPER_PROGRAM=glvnd_check
|
||||
|
||||
__EGL_VENDOR_LIBRARY_FILENAMES=$BASEDIR/egl_dummy_vendor.json
|
||||
__GLX_VENDOR_LIBRARY_NAME=installcheck
|
||||
export __GLX_VENDOR_LIBRARY_NAME
|
||||
export __EGL_VENDOR_LIBRARY_FILENAMES
|
||||
|
||||
if [ ! -e $__EGL_VENDOR_LIBRARY_FILENAMES ] ; then
|
||||
echo Missing test file: $__EGL_VENDOR_LIBRARY_FILENAMES
|
||||
exit $RESULT_ERROR
|
||||
fi
|
||||
|
||||
MISSING_LIBRARIES=
|
||||
INVALID_LIBRARIES=
|
||||
LIBGLVND_LIBRARIES=
|
||||
NON_LIBGLVND_LIBRARIES=
|
||||
|
||||
check_libglvnd_winsys()
|
||||
{
|
||||
result=`LD_LIBRARY_PATH="${BINDIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" "$BINDIR/$HELPER_PROGRAM" $1 $2`
|
||||
code=$?
|
||||
|
||||
case $code in
|
||||
$TEST_EXIT_CODE_SUCCESS) LIBGLVND_LIBRARIES="$2 $LIBGLVND_LIBRARIES" ;;
|
||||
$TEST_EXIT_CODE_NON_LIBGLVND) NON_LIBGLVND_LIBRARIES="$2 $NON_LIBGLVND_LIBRARIES" ;;
|
||||
$TEST_EXIT_CODE_NO_LIBRARY) MISSING_LIBRARIES="$2 $MISSING_LIBRARIES" ;;
|
||||
$TEST_EXIT_CODE_VERSION_MISMATCH) INVALID_LIBRARIES="$2 $INVALID_LIBRARIES" ;;
|
||||
*)
|
||||
echo Internal error:
|
||||
echo "$result"
|
||||
exit $RESULT_ERROR
|
||||
esac
|
||||
return $code
|
||||
}
|
||||
|
||||
# Check the GLX libraries.
|
||||
check_libglvnd_winsys glx libGL.so.1
|
||||
check_libglvnd_winsys glx libGLX.so.0
|
||||
|
||||
# Check EGL and the entrypoint libraries. Note that checking the entrypoint
|
||||
# libraries requires a libglvnd-based version of libEGL.so.1.
|
||||
check_libglvnd_winsys egl libEGL.so.1
|
||||
if [ "$?" -eq $TEST_EXIT_CODE_SUCCESS ] ; then
|
||||
check_libglvnd_winsys gl libOpenGL.so.0
|
||||
check_libglvnd_winsys gl libGLESv1_CM.so.1
|
||||
check_libglvnd_winsys gl libGLESv2.so.2
|
||||
fi
|
||||
|
||||
echo Found libglvnd libraries: $LIBGLVND_LIBRARIES
|
||||
echo Found non-libglvnd libraries: $NON_LIBGLVND_LIBRARIES
|
||||
echo Missing libraries: $MISSING_LIBRARIES
|
||||
|
||||
if [ -n "$INVALID_LIBRARIES" ] ; then
|
||||
echo Found invalid or unsupported versions of libraries: $INVALID_LIBRARIES
|
||||
exit $RESULT_NOT_INSTALLED
|
||||
fi
|
||||
|
||||
if [ -n "$LIBGLVND_LIBRARIES" ] ; then
|
||||
if [ -z "$NON_LIBGLVND_LIBRARIES" ] ; then
|
||||
# Some disros may split the libglvnd libraries into separate packages,
|
||||
# in which case it's possible that only some of them are installed.
|
||||
# As long as we found at least one libglvnd library, and we didn't find
|
||||
# any non-libglvnd versions, that's enough.
|
||||
echo libglvnd appears to be installed.
|
||||
exit $RESULT_INSTALLED
|
||||
else
|
||||
# There's a combination of libglvnd and non-libglvnd libraries
|
||||
# installed.
|
||||
exit $RESULT_PARTIAL
|
||||
fi
|
||||
fi
|
||||
|
||||
# No libglvnd libraries are installed. Either the libraries are not present at
|
||||
# all, or they're all non-libglvnd versions.
|
||||
exit $RESULT_NOT_INSTALLED
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"file_format_version" : "1.0.0",
|
||||
"ICD" : {
|
||||
"library_path" : "libGLX_installcheck.so.0"
|
||||
}
|
||||
}
|
||||
BIN
NVIDIA-Linux-x86_64-535.161.07-grid/libglvnd_install_checker/glvnd_check
Executable file
BIN
NVIDIA-Linux-x86_64-535.161.07-grid/libglvnd_install_checker/glvnd_check
Executable file
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user