summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bevitt <cyfred@gentoo.org>2004-11-30 02:10:00 +0000
committerAndrew Bevitt <cyfred@gentoo.org>2004-11-30 02:10:00 +0000
commit2d63f8573ce652f332d5b27caf5fcc8dc3a13c66 (patch)
tree507003987d8ea566e1b13f6f06c69f7c5991e33a /x11-base
parentStable on alpha, bug 68857. (Manifest recommit) (diff)
downloadgentoo-2-2d63f8573ce652f332d5b27caf5fcc8dc3a13c66.tar.gz
gentoo-2-2d63f8573ce652f332d5b27caf5fcc8dc3a13c66.tar.bz2
gentoo-2-2d63f8573ce652f332d5b27caf5fcc8dc3a13c66.zip
Changes to the NPTL detection mechanism.
Diffstat (limited to 'x11-base')
-rw-r--r--x11-base/opengl-update/ChangeLog9
-rw-r--r--x11-base/opengl-update/Manifest28
-rw-r--r--x11-base/opengl-update/files/digest-opengl-update-1.8.21
-rw-r--r--x11-base/opengl-update/files/digest-opengl-update-2.0_pre31
-rwxr-xr-xx11-base/opengl-update/files/opengl-update-1.8.2317
-rwxr-xr-xx11-base/opengl-update/files/opengl-update-2.0_pre3377
-rw-r--r--x11-base/opengl-update/opengl-update-1.8.2.ebuild54
-rw-r--r--x11-base/opengl-update/opengl-update-2.0_pre3.ebuild61
8 files changed, 836 insertions, 12 deletions
diff --git a/x11-base/opengl-update/ChangeLog b/x11-base/opengl-update/ChangeLog
index 9e931f31d500..14a956cbfa72 100644
--- a/x11-base/opengl-update/ChangeLog
+++ b/x11-base/opengl-update/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for x11-base/opengl-update
# Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/ChangeLog,v 1.48 2004/11/12 18:08:57 fmccor Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/ChangeLog,v 1.49 2004/11/30 02:10:00 cyfred Exp $
+
+*opengl-update-2.0_pre3 (30 Nov 2004)
+
+ 30 Nov 2004; Andrew Bevitt <cyfred@gentoo.org> +files/opengl-update-1.8.2,
+ +files/opengl-update-2.0_pre3, +opengl-update-1.8.2.ebuild,
+ +opengl-update-2.0_pre3.ebuild:
+ Changes to the NPTL detection mechanism.
12 Nov 2004; Ferris McCormick <fmccor@gentoo.org>
opengl-update-1.8.1-r1.ebuild:
diff --git a/x11-base/opengl-update/Manifest b/x11-base/opengl-update/Manifest
index 7e6ba0779da1..3ca2ce3daf47 100644
--- a/x11-base/opengl-update/Manifest
+++ b/x11-base/opengl-update/Manifest
@@ -1,20 +1,26 @@
-MD5 290bdfc120ef276ac31ff147a2f033cf ChangeLog 8436
+MD5 729cfce1fe24daece3638fe6901d57f4 ChangeLog 8692
MD5 06e66398889b0eaf43fd1a634521bdb0 metadata.xml 318
-MD5 4a7ace3be813461bd5d0f76e0828314c opengl-update-1.7.1.ebuild 543
MD5 cc81df3075c6bf5afa45740b87ae047e opengl-update-1.5.ebuild 527
+MD5 4a7ace3be813461bd5d0f76e0828314c opengl-update-1.7.1.ebuild 543
MD5 fe9d5a762b674e506e1f518d2ab5a777 opengl-update-1.7.2.ebuild 543
+MD5 c78d172dcda5ffe19335f1220c4b0dbe opengl-update-1.8.2.ebuild 1597
MD5 c78d172dcda5ffe19335f1220c4b0dbe opengl-update-1.8.1-r1.ebuild 1597
MD5 41f5ceec6cb2831b975101d8cbb64d80 opengl-update-2.0_pre1.ebuild 1745
MD5 88d1d3194250339cff3f4e4517ea5464 opengl-update-2.0_pre2.ebuild 1745
-MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.7.1 0
+MD5 88d1d3194250339cff3f4e4517ea5464 opengl-update-2.0_pre3.ebuild 1745
+MD5 0629c7cf1172224a3013ecaf6ef5d0ed files/opengl-update-2.0_pre1 8303
+MD5 e2d654ce48ba8b9908547ab004e33e0a files/opengl-update-2.0_pre2 9386
+MD5 362d1a885a3d7e46410cd6ee41823b48 files/opengl-update-2.0_pre3 9571
+MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-1.8.1-r1 64
+MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-2.0_pre1 64
+MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-2.0_pre2 64
+MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-2.0_pre3 64
MD5 030aafb9c2fc8b4510edcf0ddf09a471 files/opengl-update-1.7.1 4922
-MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.5 0
-MD5 0ca46fbf32086f062609ee83fc042c87 files/opengl-update-1.5 3774
+MD5 e167f464da278c0b5cbc93f2c66cef4d files/opengl-update-1.8.1 8120
+MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.7.1 0
MD5 bd56a074f4d53f9ff26e828e0a34cbf3 files/opengl-update-1.7.2 4975
+MD5 110d25f8977ce4ce4b95720269ce79d8 files/opengl-update-1.8.2 8303
MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.7.2 0
-MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-2.0_pre1 64
-MD5 e167f464da278c0b5cbc93f2c66cef4d files/opengl-update-1.8.1 8120
-MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-1.8.1-r1 64
-MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-2.0_pre2 64
-MD5 0629c7cf1172224a3013ecaf6ef5d0ed files/opengl-update-2.0_pre1 8303
-MD5 e2d654ce48ba8b9908547ab004e33e0a files/opengl-update-2.0_pre2 9386
+MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-1.8.2 64
+MD5 0ca46fbf32086f062609ee83fc042c87 files/opengl-update-1.5 3774
+MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.5 0
diff --git a/x11-base/opengl-update/files/digest-opengl-update-1.8.2 b/x11-base/opengl-update/files/digest-opengl-update-1.8.2
new file mode 100644
index 000000000000..23c2e8979086
--- /dev/null
+++ b/x11-base/opengl-update/files/digest-opengl-update-1.8.2
@@ -0,0 +1 @@
+MD5 e16a3144742d1a5409fe18477a88f8b6 glext.h-20040830.bz2 30982
diff --git a/x11-base/opengl-update/files/digest-opengl-update-2.0_pre3 b/x11-base/opengl-update/files/digest-opengl-update-2.0_pre3
new file mode 100644
index 000000000000..23c2e8979086
--- /dev/null
+++ b/x11-base/opengl-update/files/digest-opengl-update-2.0_pre3
@@ -0,0 +1 @@
+MD5 e16a3144742d1a5409fe18477a88f8b6 glext.h-20040830.bz2 30982
diff --git a/x11-base/opengl-update/files/opengl-update-1.8.2 b/x11-base/opengl-update/files/opengl-update-1.8.2
new file mode 100755
index 000000000000..e8cb2439d406
--- /dev/null
+++ b/x11-base/opengl-update/files/opengl-update-1.8.2
@@ -0,0 +1,317 @@
+#!/bin/bash
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/files/opengl-update-1.8.2,v 1.1 2004/11/30 02:10:00 cyfred Exp $
+# Author: Martin Schlemmer <azarah@gentoo.org>
+# Further modifications by Donnie Berkholz <spyderous@gentoo.org>
+# Further modifications based off submissions to bug #54984 <cyfred@gentoo.org>
+
+. /etc/init.d/functions.sh
+
+usage() {
+# In addition to the below function, there are two extra uses for this.
+#
+# They aren't in the printed help message because they're intended
+# for developer use.
+# 1) --use-old $NEW_IMPLEM will switch to the new implementation only if
+# no old setup existed (i.e., X has never been installed)
+# 2) --get-implementation will return the implementation
+
+cat << FOO
+usage: ${0##*/} <GL implementation>
+
+note:
+ This utility switches between OpenGL implementations. Currently there
+ are five supported implementations, "xorg-x11" "xfree" "nvidia" "ati"
+ and "mtx", the implementations for X.org, XFree86, nVidia, ATi
+ and Matrox drivers respectively.
+
+examples:
+ ${0##*/} xorg-x11
+ This will setup things to use libGL.so from X.org.
+
+ ${0##*/} nvidia
+ This will setup things to use libGL.so from the nVidia drivers.
+
+FOO
+ exit 1
+}
+
+if [ "$#" -ne 1 -a "$#" -ne 2 ] || \
+ [ "$#" -eq 2 -a "$1" != "--use-old" ]
+then
+ usage
+fi
+
+GL_IMPLEM=""
+
+# Discover GL implementation if it exists
+get_implem() {
+ if [ -f /etc/env.d/09opengl ]
+ then
+ source /etc/env.d/09opengl
+ if [ -n "${LDPATH}" ]
+ then
+ GL_IMPLEM="${LDPATH/:\*/}"
+ GL_IMPLEM="${GL_IMPLEM/\/usr\/lib\/opengl\/}"
+ GL_IMPLEM="${GL_IMPLEM/\/lib}"
+ unset LDPATH
+ fi
+ fi
+}
+
+# Return current GL implementation
+if [ "$1" = "--get-implementation" ]
+then
+ get_implem
+
+ if [ -n "${GL_IMPLEM}" ]
+ then
+ echo "${GL_IMPLEM}"
+ fi
+
+ if [ -z "${GL_IMPLEM}" ]
+ then
+ exit 2
+ fi
+
+ exit 0
+fi
+
+if [ $(id -u) -ne 0 ]
+then
+ eerror "${0}: must be root."
+ exit 1
+fi
+
+# Only use specified implementation if it is not already selected.
+if [ "$1" = "--use-old" ]
+then
+ shift
+
+ get_implem
+
+ if [ -z "${GL_IMPLEM}" ]
+ then
+ GL_IMPLEM="$1"
+ fi
+else
+ GL_IMPLEM="$1"
+fi
+
+if [ ! -d /usr/lib/opengl/${GL_IMPLEM} ]
+then
+ usage
+fi
+
+ebegin "Switching to ${GL_IMPLEM} OpenGL interface"
+
+ # Provide the right libnvidia-tls depending on ntpl or not
+ if [ "${GL_IMPLEM}" = "nvidia" ]
+ then
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/lib/tls ]
+ then
+ rm -f /usr/lib/opengl/${GL_IMPLEM}/lib/tls
+ fi
+
+# This was the nvidia approach but it seems to not work, new method
+# as suggested on various bug reports, #64927, #70545
+# /usr/lib/misc/tls_test /usr/lib/misc/tls_test_dso.so 2>/dev/null
+ getconf GNU_LIBPTHREAD_VERSION | grep -i nptl > /dev/null
+ if [ ${?} = 0 ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/tls /usr/lib/opengl/${GL_IMPLEM}/lib/tls
+ if [ -d /usr/lib32/opengl/${GL_IMPLEM} ]
+ then
+ ln -sf /usr/lib32/opengl/${GL_IMPLEM}/tls /usr/lib32/opengl/${GL_IMPLEM}/lib/tls
+ fi
+ fi
+ fi
+
+ # Setup the $LDPATH
+ echo "LDPATH=/usr/lib/opengl/${GL_IMPLEM}/lib" > /etc/env.d/09opengl
+ # Check if we need 32 bit compatibility
+ if [ -d /usr/lib32/opengl/${GL_IMPLEM} ]
+ then
+ source /etc/env.d/09opengl
+ echo "LDPATH=${LDPATH}:/usr/lib32/opengl/${GL_IMPLEM}/lib" > /etc/env.d/09opengl
+ unset LDPATH
+
+ # We also need to make TLS directories now aswell, make 32bit one here
+ lib32="$(readlink /usr/lib32)"
+ if [ -h ${lib32}/tls ]
+ then
+ rm -f ${lib32}/tls
+ fi
+ if [ ! -d ${lib32}/tls ]
+ then
+ mkdir -p ${lib32}/tls
+ fi
+
+ fi
+
+ # System wide tls stuff
+ if [ -h /usr/lib/tls ]
+ then
+ rm -f /usr/lib/tls
+ fi
+ if [ ! -d /usr/lib/tls ]
+ then
+ mkdir -p /usr/lib/tls
+ fi
+
+ /usr/sbin/env-update &>/dev/null
+
+ LIBDIRS="lib lib32"
+ for LIBDIR in ${LIBDIRS}
+ do
+ # If there is a 32 bit compatibility implementation we shall use it
+ # Otherwise we want to have some compatibility GL, use xorg-x11.
+ if [ "${LIBDIR}" = "lib32" ] && [ ! -d /usr/lib32/opengl/"${GL_IMPLEM}" ]
+ then
+ GL_LOCAL="xorg-x11"
+ else
+ GL_LOCAL="${GL_IMPLEM}"
+ fi
+
+ #setup the /usr/lib/libGL.so symlink
+ if [ -e /usr/${LIBDIR}/libGL.so ]
+ then
+ rm -f /usr/${LIBDIR}/libGL.so
+ fi
+ if [ -e /usr/${LIBDIR}/libGL.so.1 ]
+ then
+ rm -f /usr/${LIBDIR}/libGL.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libGL.so ]
+ then
+ realname="$(readlink /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libGL.so)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGL.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGL.so.1
+ fi
+
+ # Setup the /usr/lib/libGLcore.so symlink
+ if [ -e /usr/${LIBDIR}/libGLcore.so ]
+ then
+ rm -f /usr/${LIBDIR}/libGLcore.so
+ fi
+ if [ -e /usr/${LIBDIR}/libGLcore.so.1 ]
+ then
+ rm -f /usr/${LIBDIR}/libGLcore.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_IMPLEM}/lib/libGLcore.so ]
+ then
+ realname="$(readlink /usr/${LIBDIR}/opengl/${GL_IMPLEM}/lib/libGLcore.so)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGLcore.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGLcore.so.1
+ fi
+
+ # Now setup the TLS library links
+ if [ -e /usr/${LIBDIR}/libnvidia-tls.so ]
+ then
+ rm -f /usr/${LIBDIR}/libnvidia-tls.so
+ fi
+ if [ -e /usr/${LIBDIR}/libnvidia-tls.so.1 ]
+ then
+ rm -f /usr/${LIBDIR}/libnvidia-tls.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/libnvidia-tls.so.1 ]
+ then
+ realtls="$(readlink /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/libnvidia-tls.so.1)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/${realtls} \
+ /usr/${LIBDIR}/tls/libnvidia-tls.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/${realtls} \
+ /usr/${LIBDIR}/tls/libnvidia-tls.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libnvidia-tls.so.1 ]
+ then
+ realname="$(readlink /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libnvidia-tls.so.1)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libnvidia-tls.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libnvidia-tls.so.1
+ fi
+ done
+
+ # Setup the /usr/X11R6/lib/libMesaGL.so symlink
+ if [ -e /usr/X11R6/lib/libMesaGL.so ]
+ then
+ rm -f /usr/X11R6/lib/libMesaGL.so
+ fi
+ realname="$(readlink /usr/lib/opengl/${GL_IMPLEM}/lib/libGL.so)"
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/lib/${realname} \
+ /usr/X11R6/lib/libMesaGL.so
+
+ # Setup the /usr/lib/libGL.la symlink
+ if [ -e /usr/lib/libGL.la ]
+ then
+ rm -f /usr/lib/libGL.la
+ fi
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/lib/libGL.la ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/lib/libGL.la \
+ /usr/lib/libGL.la
+ fi
+
+ # Fix libtool archives (#48297)
+ CURDIR="$(pwd)"
+ cd /usr/lib
+ if [ "`grep -l /usr/lib/opengl *.la`" ]
+ then
+ sed -i 's:/usr/lib/opengl/[^/]*/lib/libGL.la:/usr/lib/libGL.la:' \
+ `grep -l /usr/lib/opengl *.la`
+ fi
+ cd ${CURDIR}
+
+ # Setup the /usr/X11R6/lib/modules/extensions/libglx.so symlink
+ if [ -e /usr/X11R6/lib/modules/extensions/libglx.so ]
+ then
+ rm -f /usr/X11R6/lib/modules/extensions/libglx.so
+ fi
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.so ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.so \
+ /usr/X11R6/lib/modules/extensions/libglx.so
+ fi
+
+ #setup the /usr/X11R6/lib/modules/extensions/libglx.a symlink
+ if [ -e /usr/X11R6/lib/modules/extensions/libglx.a ]
+ then
+ rm -f /usr/X11R6/lib/modules/extensions/libglx.a
+ fi
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.a ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.a \
+ /usr/X11R6/lib/modules/extensions/libglx.a
+ fi
+
+ #setup the includes
+ for x in gl.h glx.h glxtokens.h glext.h
+ do
+ if [ -e /usr/X11R6/include/GL/${x} ]
+ then
+ rm -f /usr/X11R6/include/GL/${x}
+ fi
+
+ # IMPORTANT
+ # It is preferable currently to use the standard glext.h file
+ # however if an OpenGL provider must use a self produced glext.h
+ # then it should be installed to ${GL_IMPLEM}/include
+
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/include/${x} ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/include/${x} \
+ /usr/X11R6/include/GL/${x}
+ else
+ ln -sf /usr/lib/opengl/global/include/${x} \
+ /usr/X11R6/include/GL/${x}
+ fi
+ done
+
+eend 0
+
+# vim:ts=4
diff --git a/x11-base/opengl-update/files/opengl-update-2.0_pre3 b/x11-base/opengl-update/files/opengl-update-2.0_pre3
new file mode 100755
index 000000000000..132a2b6d3d56
--- /dev/null
+++ b/x11-base/opengl-update/files/opengl-update-2.0_pre3
@@ -0,0 +1,377 @@
+#!/bin/bash
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/files/opengl-update-2.0_pre3,v 1.1 2004/11/30 02:10:00 cyfred Exp $
+# Author: Martin Schlemmer <azarah@gentoo.org>
+# Further modifications by Donnie Berkholz <spyderous@gentoo.org>
+# Further modifications based off submissions to bug #54984 <cyfred@gentoo.org>
+
+. /etc/init.d/functions.sh
+
+need_version() {
+ local X11 X11_VER X11_MAJOR_VER X11_MINOR_VER X11_MICRO_VER ERROR_MSG
+ ERROR_MSG="This version requires >=x11-base/xorg-x11-6.8.0-r2"
+ X11="$(portageq match / virtual/x11)"
+ X11_VER="$(echo ${X11} | sed "s:.*-\([0-9].*\)-\(r[0-9]*\):\1-\2:g")"
+ X11_MAJOR_VER="${X11_VER%%.*}"
+ X11_MINOR_VER="${X11_VER#*.}"
+ X11_MINOR_VER="${X11_MINOR_VER%%.*}"
+ X11_REVISION_VER="${X11_VER##*-r}"
+
+ # If version <6.*, die
+ if [ ${X11_MAJOR_VER} -lt 6 ]
+ then
+ einfo "Detected X ${X11_MAJOR_VER}.${X11_MINOR_VER} series, revision ${X11_REVISION_VER}"
+ eerror "${ERROR_MSG}"
+ exit 1
+ # If version =6.* and <6.8.*, die
+ elif [ ${X11_MAJOR_VER} -eq 6 -a ${X11_MINOR_VER} -lt 8 ]
+ then
+ einfo "Detected X ${X11_MAJOR_VER}.${X11_MINOR_VER} series, revision ${X11_REVISION_VER}"
+ eerror "${ERROR_MSG}"
+ exit 1
+ # If version =6.8.0 and <r2, die
+ elif [ "${X11_VER}" = "6.8.0" ]
+ then
+ if [ ! ${X11_REVISION_VER} -ge 2 ]
+ then
+ einfo "Detected X ${X11_MAJOR_VER}.${X11_MINOR_VER} series, revision ${X11_REVISION_VER}"
+ eerror "${ERROR_MSG}"
+ exit 1
+ fi
+ fi
+}
+
+count_implementations() {
+ local DIR
+ COUNT="0"
+ for DIR in $(ls /usr/lib/opengl)
+ do
+ if [ "${DIR}" != "global" ]
+ then
+ DIRS="${DIRS} ${DIR}"
+ COUNT="$((COUNT + 1))"
+ fi
+ done
+}
+
+usage() {
+# In addition to the below function, there are two extra uses for this.
+#
+# They aren't in the printed help message because they're intended
+# for developer use.
+# 1) --use-old $NEW_IMPLEM will switch to the new implementation only if
+# no old setup existed (i.e., X has never been installed)
+# 2) --get-implementation will return the implementation
+
+count_implementations
+
+# Get grammar right in message
+local IS_ARE IMPLEM_PLURAL
+if [ ${COUNT} -eq 1 ]
+then
+ IS_ARE="is"
+ IMPLEM_PLURAL=""
+else
+ IS_ARE="are"
+ IMPLEM_PLURAL="s"
+fi
+
+cat << FOO
+usage: ${0##*/} <GL implementation>
+
+note:
+ This utility switches between OpenGL implementations. There ${IS_ARE}
+ ${COUNT} available implementation${IMPLEM_PLURAL}: ${DIRS}.
+
+examples:
+ ${0##*/} xorg-x11
+ This will setup things to use libGL.so from X.org.
+
+ ${0##*/} nvidia
+ This will setup things to use libGL.so from the nVidia drivers.
+
+FOO
+ exit 1
+}
+
+need_version
+
+if [ "$#" -ne 1 -a "$#" -ne 2 ] || \
+ [ "$#" -eq 2 -a "$1" != "--use-old" ]
+then
+ usage
+fi
+
+GL_IMPLEM=""
+
+# Discover GL implementation if it exists
+get_implem() {
+ if [ -f /etc/env.d/09opengl ]
+ then
+ source /etc/env.d/09opengl
+ if [ -n "${LDPATH}" ]
+ then
+ GL_IMPLEM="${LDPATH/:\*/}"
+ GL_IMPLEM="${GL_IMPLEM/\/usr\/lib\/opengl\/}"
+ GL_IMPLEM="${GL_IMPLEM/\/lib}"
+ unset LDPATH
+ fi
+ fi
+}
+
+# Return current GL implementation
+if [ "$1" = "--get-implementation" ]
+then
+ get_implem
+
+ if [ -n "${GL_IMPLEM}" ]
+ then
+ echo "${GL_IMPLEM}"
+ fi
+
+ if [ -z "${GL_IMPLEM}" ]
+ then
+ exit 2
+ fi
+
+ exit 0
+fi
+
+if [ $(id -u) -ne 0 ]
+then
+ eerror "${0}: must be root."
+ exit 1
+fi
+
+# Only use specified implementation if it is not already selected.
+if [ "$1" = "--use-old" ]
+then
+ shift
+
+ get_implem
+
+ if [ -z "${GL_IMPLEM}" ]
+ then
+ GL_IMPLEM="$1"
+ fi
+else
+ GL_IMPLEM="$1"
+fi
+
+if [ ! -d /usr/lib/opengl/${GL_IMPLEM} ]
+then
+ usage
+fi
+
+ebegin "Switching to ${GL_IMPLEM} OpenGL interface"
+
+ # Provide the right libnvidia-tls depending on ntpl or not
+ if [ "${GL_IMPLEM}" = "nvidia" ]
+ then
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/lib/tls ]
+ then
+ rm -f /usr/lib/opengl/${GL_IMPLEM}/lib/tls
+ fi
+
+# This was the nvidia approach but it seems to not work, new method
+# as suggested on various bug reports, #64927, #70545
+# /usr/lib/misc/tls_test /usr/lib/misc/tls_test_dso.so 2>/dev/null
+ getconf GNU_LIBPTHREAD_VERSION | grep -i nptl > /dev/null
+ if [ ${?} = 0 ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/tls /usr/lib/opengl/${GL_IMPLEM}/lib/tls
+ if [ -d /usr/lib32/opengl/${GL_IMPLEM} ]
+ then
+ ln -sf /usr/lib32/opengl/${GL_IMPLEM}/tls /usr/lib32/opengl/${GL_IMPLEM}/lib/tls
+ fi
+ fi
+ fi
+
+ # Setup the $LDPATH
+ echo "LDPATH=/usr/lib/opengl/${GL_IMPLEM}/lib" > /etc/env.d/09opengl
+ # Check if we need 32 bit compatibility
+ if [ -d /usr/lib32/opengl/${GL_IMPLEM} ]
+ then
+ source /etc/env.d/09opengl
+ echo "LDPATH=${LDPATH}:/usr/lib32/opengl/${GL_IMPLEM}/lib" > /etc/env.d/09opengl
+ unset LDPATH
+
+ # We also need to make TLS directories now aswell, make 32bit one here
+ lib32="$(readlink /usr/lib32)"
+ if [ -h ${lib32}/tls ]
+ then
+ rm -f ${lib32}/tls
+ fi
+ if [ ! -d ${lib32}/tls ]
+ then
+ mkdir -p ${lib32}/tls
+ fi
+
+ fi
+
+ # System wide tls stuff
+ if [ -h /usr/lib/tls ]
+ then
+ rm -f /usr/lib/tls
+ fi
+ if [ ! -d /usr/lib/tls ]
+ then
+ mkdir -p /usr/lib/tls
+ fi
+
+ /usr/sbin/env-update &>/dev/null
+
+ LIBDIRS="lib lib32"
+ for LIBDIR in ${LIBDIRS}
+ do
+ # If there is a 32 bit compatibility implementation we shall use it
+ # Otherwise we want to have some compatibility GL, use xorg-x11.
+ if [ "${LIBDIR}" = "lib32" ] && [ ! -d /usr/lib32/opengl/"${GL_IMPLEM}" ]
+ then
+ GL_LOCAL="xorg-x11"
+ else
+ GL_LOCAL="${GL_IMPLEM}"
+ fi
+
+ #setup the /usr/lib/libGL.so symlink
+ if [ -e /usr/${LIBDIR}/libGL.so ]
+ then
+ rm -f /usr/${LIBDIR}/libGL.so
+ fi
+ if [ -e /usr/${LIBDIR}/libGL.so.1 ]
+ then
+ rm -f /usr/${LIBDIR}/libGL.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libGL.so ]
+ then
+ realname="$(readlink /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libGL.so)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGL.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGL.so.1
+ fi
+
+ # Setup the /usr/lib/libGLcore.so symlink
+ if [ -e /usr/${LIBDIR}/libGLcore.so ]
+ then
+ rm -f /usr/${LIBDIR}/libGLcore.so
+ fi
+ if [ -e /usr/${LIBDIR}/libGLcore.so.1 ]
+ then
+ rm -f /usr/${LIBDIR}/libGLcore.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_IMPLEM}/lib/libGLcore.so ]
+ then
+ realname="$(readlink /usr/${LIBDIR}/opengl/${GL_IMPLEM}/lib/libGLcore.so)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGLcore.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libGLcore.so.1
+ fi
+
+ # Now setup the TLS library links
+ if [ -e /usr/${LIBDIR}/libnvidia-tls.so ]
+ then
+ rm -f /usr/${LIBDIR}/libnvidia-tls.so
+ fi
+ if [ -e /usr/${LIBDIR}/libnvidia-tls.so.1 ]
+ then
+ rm -f /usr/${LIBDIR}/libnvidia-tls.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/libnvidia-tls.so.1 ]
+ then
+ realtls="$(readlink /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/libnvidia-tls.so.1)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/${realtls} \
+ /usr/${LIBDIR}/tls/libnvidia-tls.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/${realtls} \
+ /usr/${LIBDIR}/tls/libnvidia-tls.so.1
+ fi
+ if [ -e /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libnvidia-tls.so.1 ]
+ then
+ realname="$(readlink /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/libnvidia-tls.so.1)"
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libnvidia-tls.so
+ ln -sf /usr/${LIBDIR}/opengl/${GL_LOCAL}/lib/${realname} \
+ /usr/${LIBDIR}/libnvidia-tls.so.1
+ fi
+ done
+
+ # Setup the /usr/lib/libMesaGL.so symlink
+ if [ -e /usr/lib/libMesaGL.so ]
+ then
+ rm -f /usr/lib/libMesaGL.so
+ fi
+ realname="$(readlink /usr/lib/opengl/${GL_IMPLEM}/lib/libGL.so)"
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/lib/${realname} \
+ /usr/lib/libMesaGL.so
+
+ # Setup the /usr/lib/libGL.la symlink
+ if [ -e /usr/lib/libGL.la ]
+ then
+ rm -f /usr/lib/libGL.la
+ fi
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/lib/libGL.la ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/lib/libGL.la \
+ /usr/lib/libGL.la
+ fi
+
+ # Fix libtool archives (#48297)
+ CURDIR="$(pwd)"
+ cd /usr/lib
+ if [ "`grep -l /usr/lib/opengl *.la`" ]
+ then
+ sed -i 's:/usr/lib/opengl/[^/]*/lib/libGL.la:/usr/lib/libGL.la:' \
+ `grep -l /usr/lib/opengl *.la`
+ fi
+ cd ${CURDIR}
+
+ # Setup the /usr/lib/modules/extensions/libglx.so symlink
+ if [ -e /usr/lib/modules/extensions/libglx.so ]
+ then
+ rm -f /usr/lib/modules/extensions/libglx.so
+ fi
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.so ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.so \
+ /usr/lib/modules/extensions/libglx.so
+ fi
+
+ #setup the /usr/lib/modules/extensions/libglx.a symlink
+ if [ -e /usr/lib/modules/extensions/libglx.a ]
+ then
+ rm -f /usr/lib/modules/extensions/libglx.a
+ fi
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.a ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/extensions/libglx.a \
+ /usr/lib/modules/extensions/libglx.a
+ fi
+
+ #setup the includes
+ for x in gl.h glx.h glxtokens.h glext.h
+ do
+ if [ -e /usr/X11R6/include/GL/${x} ]
+ then
+ rm -f /usr/X11R6/include/GL/${x}
+ fi
+
+ # IMPORTANT
+ # It is preferable currently to use the standard glext.h file
+ # however if an OpenGL provider must use a self produced glext.h
+ # then it should be installed to ${GL_IMPLEM}/include
+
+ if [ -e /usr/lib/opengl/${GL_IMPLEM}/include/${x} ]
+ then
+ ln -sf /usr/lib/opengl/${GL_IMPLEM}/include/${x} \
+ /usr/X11R6/include/GL/${x}
+ else
+ ln -sf /usr/lib/opengl/global/include/${x} \
+ /usr/X11R6/include/GL/${x}
+ fi
+ done
+
+eend 0
+
+# vim:ts=4
diff --git a/x11-base/opengl-update/opengl-update-1.8.2.ebuild b/x11-base/opengl-update/opengl-update-1.8.2.ebuild
new file mode 100644
index 000000000000..4633b65d2bb0
--- /dev/null
+++ b/x11-base/opengl-update/opengl-update-1.8.2.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/opengl-update-1.8.2.ebuild,v 1.1 2004/11/30 02:10:00 cyfred Exp $
+
+DESCRIPTION="Utility to change the OpenGL interface being used"
+HOMEPAGE="http://www.gentoo.org/"
+GLEXT="20040830"
+SRC_URI="http://dev.gentoo.org/~cyfred/distfiles/glext.h-${GLEXT}.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64 arm hppa ia64 s390 alpha ~mips ~ppc ~ppc64 sparc"
+IUSE=""
+
+DEPEND="virtual/libc
+ app-arch/bzip2"
+
+pkg_setup() {
+ # xfree has glext.h somewhere out of place so lets make the user move it
+ if ( [ ! -h /usr/X11R6/include/GL/glext.h ] && [ -a /usr/X11R6/include/GL/glext.h ] )
+ then
+ # Just make it simpler on the user by giving verbose instructions
+ if [ -d /usr/lib/opengl/xfree ]
+ then
+ GL_IM="xfree"
+ else
+ GL_IM="xorg-x11"
+ fi
+
+ echo
+ ewarn "Due to inconsistencies in xorg-x11 vs xfree handling of glext.h a userspace"
+ ewarn "fix is necessary for you to use opengl-update-1.8.1; Please do the following"
+ echo
+ ewarn "mv /usr/X11R6/include/GL/glext.h /usr/lib/opengl/${GL_IM}/include"
+ echo
+ ewarn "You may then remerge opengl-update-1.8.1 successfully"
+ echo
+
+ die "Userspace problem needs fixing"
+ fi
+}
+
+src_unpack() {
+ bzcat ${DISTDIR}/glext.h-${GLEXT}.bz2 > ${WORKDIR}/glext.h || die
+}
+
+src_install() {
+ newsbin ${FILESDIR}/opengl-update-${PV} opengl-update || die
+
+ # Install default glext.h
+ dodir /usr/lib/opengl/global/include
+ insinto /usr/lib/opengl/global/include
+ doins ${WORKDIR}/glext.h || die
+}
diff --git a/x11-base/opengl-update/opengl-update-2.0_pre3.ebuild b/x11-base/opengl-update/opengl-update-2.0_pre3.ebuild
new file mode 100644
index 000000000000..b5e182fc014b
--- /dev/null
+++ b/x11-base/opengl-update/opengl-update-2.0_pre3.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/opengl-update-2.0_pre3.ebuild,v 1.1 2004/11/30 02:10:00 cyfred Exp $
+
+DESCRIPTION="Utility to change the OpenGL interface being used"
+HOMEPAGE="http://www.gentoo.org/"
+GLEXT="20040830"
+SRC_URI="http://dev.gentoo.org/~cyfred/distfiles/glext.h-${GLEXT}.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
+IUSE=""
+
+DEPEND="virtual/libc
+ app-arch/bzip2"
+
+pkg_setup() {
+ # xfree has glext.h somewhere out of place so lets make the user move it
+ if ( [ ! -h /usr/X11R6/include/GL/glext.h ] && [ -a /usr/X11R6/include/GL/glext.h ] )
+ then
+ # Just make it simpler on the user by giving verbose instructions
+ if [ -d /usr/lib/opengl/xfree ]
+ then
+ GL_IM="xfree"
+ else
+ GL_IM="xorg-x11"
+ fi
+
+ echo
+ ewarn "Due to inconsistencies in xorg-x11 vs xfree handling of glext.h a userspace"
+ ewarn "is necessary for you to use opengl-update-1.8; Please do the following"
+ echo
+ ewarn "mv /usr/X11R6/include/GL/glext.h /usr/lib/opengl/${GL_IM}/include"
+ echo
+ ewarn "You may then remerge opengl-update-1.8.1 successfully"
+ echo
+
+ die "Userspace problem needs fixing"
+ fi
+}
+
+src_unpack() {
+ bzcat ${DISTDIR}/glext.h-${GLEXT}.bz2 > ${WORKDIR}/glext.h || die
+}
+
+src_install() {
+ newsbin ${FILESDIR}/opengl-update-${PV} opengl-update || die
+
+ # Install default glext.h
+ dodir /usr/lib/opengl/global/include
+ insinto /usr/lib/opengl/global/include
+ doins ${WORKDIR}/glext.h || die
+}
+
+pkg_postinst() {
+ echo
+ ewarn "This version will only work with >=x11-base/xorg-x11-6.8.0-r2."
+ ewarn "Upgrade before running ${PN}."
+ echo
+}