110 lines
3.1 KiB
Plaintext
110 lines
3.1 KiB
Plaintext
![]() |
#!/bin/bash
|
||
|
#
|
||
|
# gl-select: select active gl/glx libraries/extensions
|
||
|
#
|
||
|
# Matt Housh <jaeger@morpheus.net>
|
||
|
#
|
||
|
|
||
|
usage() {
|
||
|
echo "Usage: $0 [xorg|nvidia]"
|
||
|
exit
|
||
|
}
|
||
|
|
||
|
# if other than a single argument is passed, spit out some help
|
||
|
if [ $# -ne 1 ]
|
||
|
then
|
||
|
usage
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# check for the xorg port; if it's not installed, why is this script even run?
|
||
|
if [ -z "`pkginfo -i | awk '{ print $1 }' | grep ^xorg$`" ]
|
||
|
then
|
||
|
echo "xorg isn't installed!"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# perform the selection for the following supported gl/glx setups
|
||
|
case "$1" in
|
||
|
"xorg")
|
||
|
echo "* xorg gl/glx selected"
|
||
|
|
||
|
# check for the existence of libglx_so, libGL_so_1_2 and friends
|
||
|
# if none, nothing is necessary or the backups have been erased
|
||
|
BACKUPS="/usr/lib/xorg/modules/extensions/libglx_so \
|
||
|
/usr/lib/xorg/modules/extensions/libGLcore_so \
|
||
|
/usr/lib/libGL_so_1_2"
|
||
|
for F in $BACKUPS
|
||
|
do
|
||
|
if [ ! -e $F ]
|
||
|
then
|
||
|
echo "One or more of the non-xorg gl/glx backup files are missing. This means"
|
||
|
echo "either you're not using a non-xorg gl/glx setup, in which case nothing"
|
||
|
echo "needs to be changed, OR your xorg backups are missing, which can be"
|
||
|
echo "solved by reinstalling the xorg package from ports."
|
||
|
exit 1
|
||
|
fi
|
||
|
done
|
||
|
# move the xorg backups back into place
|
||
|
echo -n "libglx "
|
||
|
rm -f /usr/lib/xorg/modules/extensions/libglx.so
|
||
|
mv /usr/lib/xorg/modules/extensions/libglx{_so,.so}
|
||
|
echo -n "libGLcore "
|
||
|
rm -f /usr/lib/xorg/modules/extensions/libGLcore.so
|
||
|
mv /usr/lib/xorg/modules/extensions/libGLcore{_so,.so}
|
||
|
echo -n "libGL "
|
||
|
mv /usr/lib/libGL{_so_1_2,.so.1.2}
|
||
|
;;
|
||
|
"nvidia")
|
||
|
echo "* nvidia gl/glx selected"
|
||
|
|
||
|
# is the nvidia port installed?
|
||
|
if [ -z "`pkginfo -i | awk '{ print $1 }' | grep ^nvidia-x11r7$`" ]
|
||
|
then
|
||
|
echo "nvidia-x11r7 port isn't installed!"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# get the .so version number
|
||
|
NV_VER="`pkginfo -i | grep "^nvidia-x11r7 " | awk '{ print $2 }' | cut -d- -f2`"
|
||
|
|
||
|
# check for the existence of libglx_so and libGL_so_1_2
|
||
|
# if none, move the xorg stuff out of the way for nvidia's
|
||
|
if [ ! -e /usr/lib/xorg/modules/extensions/libglx_so -a ! -e \
|
||
|
/usr/lib/libGL_so_1_2 ]
|
||
|
then
|
||
|
echo -n "libglx "
|
||
|
mv /usr/lib/xorg/modules/extensions/libglx{.so,_so}
|
||
|
ln -s libglx.so.1.0.$NV_VER \
|
||
|
/usr/lib/xorg/modules/extensions/libglx.so
|
||
|
echo -n "libGLcore "
|
||
|
mv /usr/lib/xorg/modules/extensions/libGLcore{.so,_so}
|
||
|
ln -s /usr/lib/libGLcore.so.1.0.$NV_VER \
|
||
|
/usr/lib/xorg/modules/extensions/libGLcore.so
|
||
|
echo -n "libGL "
|
||
|
mv /usr/lib/libGL{.so.1.2,_so_1_2}
|
||
|
rm /usr/lib/libGL.so.1
|
||
|
# nvidia's library versioning prevents ldconfig from creating
|
||
|
# libGL.so and libGLcore.so
|
||
|
[ ! -L /usr/lib/libGL.so ] && \
|
||
|
ln -sf libGL.so.1.0.$NV_VER /usr/lib/libGL.so
|
||
|
[ ! -L /usr/lib/libGLcore.so ] && \
|
||
|
ln -sf libGLcore.so.1.0.$NV_VER /usr/lib/libGLcore.so
|
||
|
else
|
||
|
echo "You appear to already be using a non-xorg gl/glx setup. If the"
|
||
|
echo "one selected isn't the correct one, revert to xorg and then select"
|
||
|
echo "the correct new setup using 'gl-select xorg; gl-select <new gl/glx>'."
|
||
|
exit 1
|
||
|
fi
|
||
|
;;
|
||
|
*)
|
||
|
usage
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
/sbin/ldconfig > /dev/null 2>&1
|
||
|
|
||
|
echo "done."
|
||
|
|
||
|
# End of file
|