173 lines
4.8 KiB
Bash
Executable File
173 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# gl-select: select active gl/glx libraries/extensions
|
|
#
|
|
# Matt Housh, jaeger at morpheus dot net
|
|
# Jose V Beneyto, joberui at ei dot upv dot es
|
|
#
|
|
|
|
##### CHANGELOG ##############################################################
|
|
#
|
|
# Jul 4, 2007 - version 1.1.3
|
|
# updated nvidia section for new nvidia versioning scheme
|
|
#
|
|
# Apr 10, 2007 - version 1.1.2
|
|
# removed extra libGL.a cp in the ati section
|
|
#
|
|
# Mar 14, 2007 - version 1.1.1
|
|
# updated all sections for xorg 7.x
|
|
# removed extra libGL.a references (nvidia)
|
|
#
|
|
# Feb 20, 2007 - version 1.1
|
|
# changelog was not kept prior to this date
|
|
# added abstractions and ati support contributed by Jose V Beneyto (sepen)
|
|
#
|
|
##############################################################################
|
|
|
|
infoUsage() {
|
|
echo "Usage: $0 [xorg|nvidia|ati]"
|
|
}
|
|
|
|
infoMissing() {
|
|
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 packages from the CRUX CD or ports."
|
|
}
|
|
|
|
infoRevert() {
|
|
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>'."
|
|
}
|
|
|
|
checkInstalled() {
|
|
if [ -z "`pkginfo -i | awk '{ print $1 }' | grep -e ^$1$`" ]
|
|
then
|
|
echo "$1 isn't installed!"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# if other than a single argument is passed, spit out some help
|
|
if [ $# -ne 1 ]
|
|
then
|
|
infoUsage
|
|
exit 1
|
|
fi
|
|
|
|
# check for the xorg port; if it's not installed, why is this script even run?
|
|
# xorg is a metaport and it's possible that the proper deps might not all be
|
|
# installed; more strict error checking may be implemented at a later date
|
|
checkInstalled xorg
|
|
|
|
# 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
|
|
infoMissing
|
|
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}
|
|
ln -sf libGL.so.1 /usr/lib/libGL.so
|
|
;;
|
|
|
|
"nvidia")
|
|
echo "* nvidia gl/glx selected"
|
|
|
|
# is the nvidia port installed?
|
|
checkInstalled nvidia
|
|
|
|
# get the .so version number
|
|
NV_VER="`pkginfo -i | grep "^nvidia " | awk '{ print $2 }' | cut -d- -f1`"
|
|
|
|
# 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.$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.$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
|
|
ln -sf libGL.so.$NV_VER /usr/lib/libGL.so
|
|
ln -sf libGLcore.so.$NV_VER /usr/lib/libGLcore.so
|
|
else
|
|
infoRevert
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
"ati")
|
|
echo "* ati gl/glx selected"
|
|
|
|
# is the ati port installed?
|
|
checkInstalled ati
|
|
|
|
# check for the existence of libGL_so_1_2
|
|
# if none, copy/move the xorg stuff out of the way for ati's
|
|
if [ ! -e /usr/lib/libGL_so_1_2 ]
|
|
then
|
|
# we only need to move one library because it's the unique
|
|
# that overwrites the xorg libGL, the other must be copied to be
|
|
# possible the revertion of the driver
|
|
echo -n "libglx "
|
|
cp /usr/lib/xorg/modules/extensions/libglx{.so,_so}
|
|
echo -n "libGLcore "
|
|
cp /usr/lib/xorg/modules/extensions/libGLcore{.so,_so}
|
|
echo -n "libGL "
|
|
mv /usr/lib/libGL{.so.1.2,_so_1_2}
|
|
# according to ati port
|
|
[ ! -L /usr/lib/libGL.so ] && \
|
|
ln -sf libGL_so_1_2_ati /usr/lib/libGL.so
|
|
[ ! -L /usr/lib/libGL.so.1 ] && \
|
|
ln -sf libGL_so_1_2_ati /usr/lib/libGL.so.1
|
|
[ ! -L /usr/lib/libGL.so.1.2 ] && \
|
|
ln -sf libGL_so_1_2_ati /usr/lib/libGL.so.1.2
|
|
else
|
|
infoRevert
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
infoUsage
|
|
;;
|
|
esac
|
|
|
|
/sbin/ldconfig > /dev/null 2>&1
|
|
|
|
echo "done."
|
|
|
|
# End of file
|