contrib/gl-select-x11r7/gl-select
2006-10-24 15:36:15 -05:00

110 lines
3.1 KiB
Bash
Executable File

#!/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