Add version compatible with >=xorg-x11-6.8.0-r2. It could use a little testing. It...
authorDonnie Berkholz <dberkholz@gentoo.org>
Thu, 28 Oct 2004 18:45:56 +0000 (18:45 +0000)
committerDonnie Berkholz <dberkholz@gentoo.org>
Thu, 28 Oct 2004 18:45:56 +0000 (18:45 +0000)
x11-base/opengl-update/ChangeLog
x11-base/opengl-update/Manifest
x11-base/opengl-update/files/digest-opengl-update-2.0_pre1 [new file with mode: 0644]
x11-base/opengl-update/files/opengl-update-2.0_pre1 [new file with mode: 0644]
x11-base/opengl-update/opengl-update-2.0_pre1.ebuild [new file with mode: 0644]

index e07a9a4df5ecc23845cc931987b5ec38de00beca..d5f1903ce73f96815dcd7c48b5cd7f137265cc96 100644 (file)
@@ -1,6 +1,14 @@
 # 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.42 2004/08/30 11:07:53 cyfred Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/ChangeLog,v 1.43 2004/10/28 18:45:56 spyderous Exp $
+
+*opengl-update-2.0_pre1 (28 Oct 2004)
+
+  28 Oct 2004; Donnie Berkholz <spyderous@gentoo.org>;
+  +files/opengl-update-2.0_pre1, +opengl-update-2.0_pre1.ebuild:
+  Add version compatible with >=xorg-x11-6.8.0-r2. It could use a little
+  testing. It also produces a nicer help message, based on available
+  implementations.
 
 *opengl-update-1.8.1-r1 (30 Aug 2004)
 
index 2d8db7185fb4433e48f512d46b536dde377cdf91..ab58f18365d8edbc70e76ee45c421d5e130e9881 100644 (file)
@@ -1,26 +1,19 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-MD5 c11f160c70d5773f5b0e88aa6ca96734 ChangeLog 7330
 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 3b991a97be9fc8d8b42989ca14d467b7 opengl-update-1.8.1.ebuild 1587
 MD5 92972dbf730ec6fc9e5678e6d1da771f opengl-update-1.8.1-r1.ebuild 1594
-MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.7.1 0
-MD5 030aafb9c2fc8b4510edcf0ddf09a471 files/opengl-update-1.7.1 4922
+MD5 3b991a97be9fc8d8b42989ca14d467b7 opengl-update-1.8.1.ebuild 1587
+MD5 41f5ceec6cb2831b975101d8cbb64d80 opengl-update-2.0_pre1.ebuild 1745
+MD5 1e8977120d4e2f07c5b37564a9f1c680 ChangeLog 7654
 MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.5 0
+MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.7.1 0
 MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-opengl-update-1.7.2 0
-MD5 0ca46fbf32086f062609ee83fc042c87 files/opengl-update-1.5 3774
 MD5 6912837b450e1f1e0956ec5940781eda files/digest-opengl-update-1.8.1 64
+MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-1.8.1-r1 64
+MD5 0ca46fbf32086f062609ee83fc042c87 files/opengl-update-1.5 3774
+MD5 030aafb9c2fc8b4510edcf0ddf09a471 files/opengl-update-1.7.1 4922
 MD5 bd56a074f4d53f9ff26e828e0a34cbf3 files/opengl-update-1.7.2 4975
 MD5 e167f464da278c0b5cbc93f2c66cef4d files/opengl-update-1.8.1 8120
-MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-1.8.1-r1 64
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.9.10 (GNU/Linux)
-
-iD8DBQFBVBsDHTu7gpaalycRAhjUAJ9F55VR0Xga3ptQRtZ+BooFvKZdMQCePyi0
-AjNDLgOkEe1yZFiWDIeCzl8=
-=VWl0
------END PGP SIGNATURE-----
+MD5 0629c7cf1172224a3013ecaf6ef5d0ed files/opengl-update-2.0_pre1 8303
+MD5 745fdf145b2e08f0c996a3ca40b1ca16 files/digest-opengl-update-2.0_pre1 64
diff --git a/x11-base/opengl-update/files/digest-opengl-update-2.0_pre1 b/x11-base/opengl-update/files/digest-opengl-update-2.0_pre1
new file mode 100644 (file)
index 0000000..23c2e89
--- /dev/null
@@ -0,0 +1 @@
+MD5 e16a3144742d1a5409fe18477a88f8b6 glext.h-20040830.bz2 30982
diff --git a/x11-base/opengl-update/files/opengl-update-2.0_pre1 b/x11-base/opengl-update/files/opengl-update-2.0_pre1
new file mode 100644 (file)
index 0000000..0462e96
--- /dev/null
@@ -0,0 +1,338 @@
+#!/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_pre1,v 1.1 2004/10/28 18:45:56 spyderous 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
+
+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
+}
+
+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
+               
+               /usr/lib/misc/tls_test /usr/lib/misc/tls_test_dso.so 2>/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-2.0_pre1.ebuild b/x11-base/opengl-update/opengl-update-2.0_pre1.ebuild
new file mode 100644 (file)
index 0000000..e18f83f
--- /dev/null
@@ -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_pre1.ebuild,v 1.1 2004/10/28 18:45:56 spyderous 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
+}