diff options
author | Andraž 'ruskie' Levstik | 2009-02-09 08:57:32 +0100 |
---|---|---|
committer | Andraž 'ruskie' Levstik | 2009-02-09 08:57:32 +0100 |
commit | 5054faf6a300d78370d198db5e08daa1c6a686cc (patch) | |
tree | 0385d76fc337885be761f0cdaeebd0d85d67ce0d | |
parent | 9c3241f62d9789bf381919187e699b883f4eab93 (diff) |
glselect: added as a function
-rw-r--r-- | .glselect/ati-filelist | 11 | ||||
-rw-r--r-- | .glselect/mesa-filelist | 14 | ||||
-rw-r--r-- | .glselect/nvidia-filelist | 12 | ||||
-rw-r--r-- | ChangeLog | 5 | ||||
-rwxr-xr-x | FUNCTIONS | 2 | ||||
-rwxr-xr-x | glselect.function | 137 |
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 + @@ -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 @@ -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 +} + |