summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.glselect/ati-filelist11
-rw-r--r--.glselect/mesa-filelist14
-rw-r--r--.glselect/nvidia-filelist12
-rw-r--r--ChangeLog5
-rwxr-xr-xFUNCTIONS2
-rwxr-xr-xglselect.function137
6 files changed, 181 insertions, 0 deletions
diff --git a/.glselect/ati-filelist b/.glselect/ati-filelist
new file mode 100644
index 0000000000..007df47294
--- /dev/null
+++ b/.glselect/ati-filelist
@@ -0,0 +1,11 @@
+/usr/lib/ati/libGL.so
+/usr/lib/ati/libGL.so.1.2
+/usr/lib/xorg/modules/extensions/ati/libdri.so
+/usr/lib/xorg/modules/extensions/ati/libglx.so
+/usr/lib/xorg/modules/mesa/libwfb.la
+/usr/lib/xorg/modules/mesa/libwfb.so
+/usr/include/GL/mesa/gl.h
+/usr/include/GL/mesa/glext.h
+/usr/include/GL/mesa/glx.h
+/usr/include/GL/mesa/glxext.h
+
diff --git a/.glselect/mesa-filelist b/.glselect/mesa-filelist
new file mode 100644
index 0000000000..3e0a4dc8b6
--- /dev/null
+++ b/.glselect/mesa-filelist
@@ -0,0 +1,14 @@
+/usr/include/GL/mesa/gl.h
+/usr/include/GL/mesa/glext.h
+/usr/include/GL/mesa/glx.h
+/usr/include/GL/mesa/glxext.h
+/usr/lib/mesa/libGL.so
+/usr/lib/mesa/libGL.so.1
+/usr/lib/mesa/libGL.so.1.2
+/usr/lib/xorg/modules/extensions/mesa/libdri.la
+/usr/lib/xorg/modules/extensions/mesa/libdri.so
+/usr/lib/xorg/modules/extensions/mesa/libglx.la
+/usr/lib/xorg/modules/extensions/mesa/libglx.so
+/usr/lib/xorg/modules/mesa/libwfb.la
+/usr/lib/xorg/modules/mesa/libwfb.so
+
diff --git a/.glselect/nvidia-filelist b/.glselect/nvidia-filelist
new file mode 100644
index 0000000000..ac5f24a99f
--- /dev/null
+++ b/.glselect/nvidia-filelist
@@ -0,0 +1,12 @@
+/usr/include/GL/nvidia/gl.h
+/usr/include/GL/nvidia/glext.h
+/usr/include/GL/nvidia/glx.h
+/usr/include/GL/nvidia/glxext.h
+/usr/lib/nvidia/libGL.so
+/usr/lib/nvidia/libGL.so.1
+/usr/lib/xorg/modules/extensions/mesa/libdri.la
+/usr/lib/xorg/modules/extensions/mesa/libdri.so
+/usr/lib/xorg/modules/extensions/nvidia/libglx.so
+/usr/lib/xorg/modules/nvidia/libnvidia-wfb.so
+/usr/lib/xorg/modules/nvidia/libwfb.so
+
diff --git a/ChangeLog b/ChangeLog
index f9d976f548..3916df7b5b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-09 Andraž "ruskie" Levstik <ruskie@mages.ath.cx>
+ * .glselect/{nvidia,ati,mesa}-filelist: added from gl_select
+ * glselect.function: gl_select as a function
+ * FUNCTIONS: source glselect.function
+
2009-02-05 Eric Sandall <sandalle@sourcemage.org>
* font-{tex,x11}/FUNCTIONS: Override Sorcery's default_post_resurrect
to do TeX/X11 specific font generation
diff --git a/FUNCTIONS b/FUNCTIONS
index 24bc4d4591..e9a9307e2b 100755
--- a/FUNCTIONS
+++ b/FUNCTIONS
@@ -719,3 +719,5 @@ function default_build_configure() {
function default_build_make(){
make
}
+
+. $GRIMOIRE/glselect.function
diff --git a/glselect.function b/glselect.function
new file mode 100755
index 0000000000..d075850043
--- /dev/null
+++ b/glselect.function
@@ -0,0 +1,137 @@
+#---
+## glselect - select default libGL provider
+## rewritten from smgl-gl_select
+##
+## this is run in FINAL and will always set the provider
+## based on the final spell cast that calls this.
+## If one wants to have this settable runtime then
+## there's the smgl-gl_select tool to do so
+##
+#---
+
+function glselect(){
+ # get all available GL providers
+ local gl_libs="$(ls -1 --color=none ${TRACK_ROOT}/usr/lib/*/libGL.so \
+ | awk -F"/" '{print $4}' 2> /dev/null )"
+ # where to store the filelists
+ local gl_filelist_dir="$GRIMOIRE/.glselect"
+ local orig_file new_file
+ local gl_lib=$1
+ if ! grep -q "$gl_lib" <<< "$gl_libs"
+ then
+ message "Error $gl_lib is not a valid GL Library"
+ exit 1
+ fi
+ message "Selecting $gl_lib as the default system GL library"
+ if [[ -L ${INSTALL_ROOT}/usr/lib/libGL.so ]] ||
+ [[ ! -e ${INSTALL_ROOT}/usr/lib/libGL.so ]]
+ then
+ message "Cleaning all previous GL providers..."
+ for orig_file in $(grep "/ati" $gl_filelist_dir/ati-filelist)
+ do
+ new_file=${orig_file/\/ati}
+ rm -f $new_file
+ echo -n "."
+ done
+ echo -n "."
+ orig_file=""
+ for orig_file in $(grep "/mesa" $gl_filelist_dir/mesa-filelist)
+ do
+ new_file=${orig_file/\/mesa}
+ rm -f $new_file
+ echo -n "."
+ done
+ echo -n "."
+ orig_file=""
+ for orig_file in $(grep "/nvidia" $gl_filelist_dir/nvidia-filelist)
+ do
+ new_file=${orig_file/\/nvidia}
+ rm -f $new_file
+ echo -n "."
+ done
+ orig_file=""
+ echo ""
+ message "Done."
+ message "Setting up new GL provider $gl_lib..."
+ case "$1" in
+ ati)
+ for orig_file in $(grep "/mesa" $gl_filelist_dir/ati-filelist)
+ do
+ new_file=${orig_file/\/mesa}
+ ln -sf ${INSTALL_ROOT}${orig_file} \
+ ${INSTALL_ROOT}${new_file} 2>/dev/null
+ echo -n "."
+ done
+ orig_file=""
+ for orig_file in $(grep "/ati" $gl_filelist_dir/ati-filelist)
+ do
+ new_file=${orig_file/\/ati}
+ ln -sf ${INSTALL_ROOT}${orig_file} \
+ ${INSTALL_ROOT}${new_file} 2>/dev/null
+ echo -n "."
+ done
+ ;;
+ mesa)
+ for orig_file in $(cat $gl_filelist_dir/mesa-filelist)
+ do
+ new_file=${orig_file/\/mesa}
+ ln -sf ${INSTALL_ROOT}${orig_file} \
+ ${INSTALL_ROOT}${new_file} 2>/dev/null
+ echo -n "."
+ done
+ ;;
+ nvidia)
+ for orig_file in $(grep "/mesa" $gl_filelist_dir/nvidia-filelist)
+ do
+ new_file=${orig_file/\/mesa}
+ ln -sf ${INSTALL_ROOT}${orig_file} \
+ ${INSTALL_ROOT}${new_file} 2>/dev/null
+ echo -n "."
+ done
+ orig_file=""
+ for orig_file in $(grep "/nvidia" $gl_filelist_dir/nvidia-filelist)
+ do
+ new_file=${orig_file/\/nvidia}
+ ln -sf ${INSTALL_ROOT}${orig_file} \
+ ${INSTALL_ROOT}${new_file} 2>/dev/null
+ echo -n "."
+ done
+ ;;
+ *) message "Unknown secondary files so I only linked the libGL.so"
+ for orig_file in $(cat $gl_filelist_dir/mesa-filelist)
+ do
+ new_file=${orig_file/\/mesa}
+ ln -sf ${INSTALL_ROOT}${orig_file} \
+ ${INSTALL_ROOT}${new_file} 2>/dev/null
+ echo -n "."
+ done
+ ln -fs ${INSTALL_ROOT}/usr/lib/$gl_lib/libGL.so* \
+ ${INSTALL_ROOT}/usr/lib/ 2>/dev/null
+ ;;
+ esac
+ echo -e "\nDone."
+ message "You can manage the libGL providers at runtime by using"
+ message "either smgl-gl_select or manually by symlinking the files"
+ message "from their respective directories i.e.:"
+ message "/usr/lib/[nvidia|ati|mesa]/libGL.so"
+ message "/usr/xorg/modules/extensions/[nvidia,ati,mesa]/lib{glx,dri}.so"
+ message "/usr/include/GL/[nvidia|mesa]/gl{x,xext,ext}.h"
+ message ""
+ message "To:"
+ message "/usr/lib/libGL.so"
+ message "/usr/xorg/modules/extensions/lib{glx,dri}.so"
+ message "/usr/include/GL/gl{x,xext,ext}.h"
+ message ""
+ return 0
+ else
+ message "Error ${INSTALL_ROOT}/usr/lib/libGL.so is not a symlink"
+ message "unable to proceed!!!"
+ message "Please recast:"
+ message "mesalib, xorg-server and whatever GL driver you use."
+ message ""
+ message "If this continues to happen please file a bug."
+ message ""
+ return 1
+ fi
+}
+