diff options
author | Andrew Bevitt <cyfred@gentoo.org> | 2004-11-30 02:10:00 +0000 |
---|---|---|
committer | Andrew Bevitt <cyfred@gentoo.org> | 2004-11-30 02:10:00 +0000 |
commit | 2d63f8573ce652f332d5b27caf5fcc8dc3a13c66 (patch) | |
tree | 507003987d8ea566e1b13f6f06c69f7c5991e33a /x11-base | |
parent | Stable on alpha, bug 68857. (Manifest recommit) (diff) | |
download | gentoo-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/ChangeLog | 9 | ||||
-rw-r--r-- | x11-base/opengl-update/Manifest | 28 | ||||
-rw-r--r-- | x11-base/opengl-update/files/digest-opengl-update-1.8.2 | 1 | ||||
-rw-r--r-- | x11-base/opengl-update/files/digest-opengl-update-2.0_pre3 | 1 | ||||
-rwxr-xr-x | x11-base/opengl-update/files/opengl-update-1.8.2 | 317 | ||||
-rwxr-xr-x | x11-base/opengl-update/files/opengl-update-2.0_pre3 | 377 | ||||
-rw-r--r-- | x11-base/opengl-update/opengl-update-1.8.2.ebuild | 54 | ||||
-rw-r--r-- | x11-base/opengl-update/opengl-update-2.0_pre3.ebuild | 61 |
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 +} |