diff options
Diffstat (limited to 'x11-base')
-rw-r--r-- | x11-base/opengl-update/ChangeLog | 11 | ||||
-rw-r--r-- | x11-base/opengl-update/Manifest | 11 | ||||
-rw-r--r-- | x11-base/opengl-update/files/digest-opengl-update-2.2.0 | 2 | ||||
-rw-r--r-- | x11-base/opengl-update/files/opengl-update-2.2.0 | 364 | ||||
-rw-r--r-- | x11-base/opengl-update/opengl-update-2.2.0.ebuild | 93 |
5 files changed, 476 insertions, 5 deletions
diff --git a/x11-base/opengl-update/ChangeLog b/x11-base/opengl-update/ChangeLog index 8f13839703d8..767c0159d4d4 100644 --- a/x11-base/opengl-update/ChangeLog +++ b/x11-base/opengl-update/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for x11-base/opengl-update # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/ChangeLog,v 1.85 2005/04/15 22:47:22 eradicator Exp $ +# $Header: /var/cvsroot/gentoo-x86/x11-base/opengl-update/ChangeLog,v 1.86 2005/04/26 02:31:27 eradicator Exp $ + +*opengl-update-2.2.0 (26 Apr 2005) + + 26 Apr 2005; Jeremy Huddleston <eradicator@gentoo.org> + +files/opengl-update-2.2.0, +opengl-update-2.2.0.ebuild: + Bumped glext.h version to latest from upstream (27). Now use global headers + by default. You can use --impl-headers to use the ones from the specific + implementation. No longer mess with nvidia tls as that's handled by the + nvidia-glx ebuild instead. We just need to worry about libGL and libGLcore. 15 Apr 2005; Jeremy Huddleston <eradicator@gentoo.org> -files/opengl-update-1.7.2, -files/opengl-update-1.8.2, diff --git a/x11-base/opengl-update/Manifest b/x11-base/opengl-update/Manifest index 2cd6a2f98193..de4ea3c212f5 100644 --- a/x11-base/opengl-update/Manifest +++ b/x11-base/opengl-update/Manifest @@ -1,16 +1,19 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -MD5 3b7b8632e4d597c52ac1b7e4588ecedf ChangeLog 15908 +MD5 68f0d484f931a75d6b84139bc275ca91 ChangeLog 16366 MD5 f4a810bc95a74e27b27973e4e948a937 metadata.xml 358 +MD5 a399ad7683bf54daf28aa9a6cc8383c5 opengl-update-2.2.0.ebuild 2772 MD5 7acbfac090d4bdc3b7ec492bc35b917d opengl-update-2.1.1-r1.ebuild 2420 +MD5 219a292f64caeaa46b333eecde2197f2 files/digest-opengl-update-2.2.0 116 +MD5 d52698bb4f88165617816cb56b45e993 files/opengl-update-2.2.0 9426 MD5 91d9c17541be018d065a7838d7149c86 files/opengl-update-2.1.1 9110 MD5 bbec0e16e4f45a464cec5b4feeecaa9b files/digest-opengl-update-2.1.1-r1 116 MD5 ca73e0f8c9b114553216930eb0eb601a files/glxext.h-inttypes.patch 677 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) -iD8DBQFCYESGArHZZzCEUG0RAiZrAJ0SgSQaRruwNyHEWsi/djhA6Jdg7QCfXh3T -eCM63q9LvZvcF8CWr8OmtKE= -=Ujn5 +iD8DBQFCbagRArHZZzCEUG0RAln2AJ4tW0srDdjEVuVuPO9SXExhj3M9VwCeKUxB +t8n/zr5XWbSQ9dtRESLZt4A= +=RtBx -----END PGP SIGNATURE----- diff --git a/x11-base/opengl-update/files/digest-opengl-update-2.2.0 b/x11-base/opengl-update/files/digest-opengl-update-2.2.0 new file mode 100644 index 000000000000..f25de9a2425e --- /dev/null +++ b/x11-base/opengl-update/files/digest-opengl-update-2.2.0 @@ -0,0 +1,2 @@ +MD5 aba5f492425adddd083c941735b8e3c1 glext.h-27.bz2 33156 +MD5 3260a509b23a3519b8df335a4e8f5e1d glxext.h-10.bz2 5895 diff --git a/x11-base/opengl-update/files/opengl-update-2.2.0 b/x11-base/opengl-update/files/opengl-update-2.2.0 new file mode 100644 index 000000000000..11dbb2eb133e --- /dev/null +++ b/x11-base/opengl-update/files/opengl-update-2.2.0 @@ -0,0 +1,364 @@ +#!/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.2.0,v 1.1 2005/04/26 02:31:27 eradicator 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> +# Further modifications by Jeremy Huddleston <eradicator@gentoo.org> + +. /etc/init.d/functions.sh + +hasq() { + local x + + local me=${1} + shift + + for x in "${@}"; do + if [[ "${x}" == "${me}" ]]; then + return 0 + fi + done + return 1 +} + +check_user() { + if [[ $(id -u) -ne 0 ]]; then + eerror "${0}: Must be run as root." + exit 1 + fi +} + +check_version() { + if ! portageq has_version / '>=x11-base/xorg-x11-6.8.0-r4'; then + eerror "This version requires >=x11-base/xorg-x11-6.8.0-r4" + exit 1 + fi +} + +get_current_implem() { + local implem + if [[ -f ${ENV_D} ]]; then + source ${ENV_D} + if [[ -n "${OPENGL_PROFILE}" ]]; then + implem="${OPENGL_PROFILE}" + elif [[ -n "${LDPATH}" ]]; then + implem="${LDPATH%%:*}" + implem="${implem##*opengl/}" + implem="${implem%/lib*}" + fi + unset LDPATH + unset OPENGL_PROFILE + fi + + echo ${implem} +} + +get_implementations() { + local implems + for dir in ${PREFIX}/lib{,32,64}/opengl/*; do + if [[ -d "${dir}" && ${dir##*/} != "global" ]] && ! hasq ${dir##*/} ${implems}; then + implems=${implems:+${implems} }${dir##*/} + fi + done + echo ${implems} +} + +print_version() { + echo "opengl-update ${VERSION}" +} + +print_usage() { + # Get grammar right in message + local IS_ARE IMPLEM_PLURAL + if [[ $(echo ${AVAIL_IMPLEMS} | wc -w) -eq 1 ]]; then + IS_ARE="is" + IMPLEM_PLURAL="" + else + IS_ARE="are" + IMPLEM_PLURAL="s" + fi + + cat << FOO +Usage: ${0##*/} [<options>] <GL implementation> + Set the opengl implementation. + Valid options: + --use-old: only change the implementation if isn't already set. + --prefix: set the source prefix (default: /usr) + --dst-prefix: set the destination prefix (default: /usr) + --impl-headers: Use headers provided by this implementation to + override golbal ones provided by opengl-update. + +Usage: ${0##*/} --get-implementation + Print the current implementaion + +Notes: + --impl-headers was default in <opengl-update-2.2. + + This utility switches between OpenGL implementations. There ${IS_ARE} + $(echo ${AVAIL_IMPLEMS} | wc -w) available implementation${IMPLEM_PLURAL}: ${AVAIL_IMPLEMS} + +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 +} + +parse_options() { + local opt + while [[ ${#} -gt 0 ]]; do + opt=${1} + shift + case ${opt} in + --use-old) + if [[ -n "${ACTION}" ]]; then + ACTION="error" + eerror "Invalid usage." + else + if [[ -n "${CURRENT_GL_IMPLEM}" ]] && hasq ${CURRENT_GL_IMPLEM} ${AVAIL_IMPLEMS}; then + ACTION="nothing" + fi + fi + ;; + --get-implementation) + if [[ -n "${ACTION}" ]]; then + ACTION="error" + eerror "Invalid usage." + else + ACTION="get-implementation" + fi + ;; + --prefix=*) + PREFIX=${opt#*=} + AVAIL_IMPLEMS=$(get_implementations) + ;; + --dst-prefix=*) + DST_PREFIX=${opt#*=} + ;; + --impl-headers) + USE_PROFILE_HEADERS="yes" + ;; + --help|-h|-?) + ACION="usage" + ;; + *) + if hasq ${opt} ${AVAIL_IMPLEMS}; then + NEW_GL_IMPLEM="${opt}" + if [[ "${ACTION}" != "nothing" ]]; then + if [[ -n "${ACTION}" ]]; then + ACTION="error" + eerror "Invalid usage." + else + ACTION="set-implementation" + fi + fi + else + eerror "Unrecognized option: ${opt}" + ACTION="error" + fi + ;; + esac + done +} + +set-new-implementation() { + local GL_IMPLEM=${1} + local GL_LOCAL + + check_version + check_user + + if ! hasq ${GL_IMPLEM} ${AVAIL_IMPLEMS}; then + eerror "Invalid profile selected." + exit 1 + fi + + ebegin "Switching to ${GL_IMPLEM} OpenGL interface" + rm -f ${ENV_D} &> /dev/null + + LIBDIRS="lib32 lib lib64" + for LIBDIR in ${LIBDIRS}; do + # Special case handling of lib32 because it can be a symlink to + # emul libs + if [[ "${LIBDIR}" = "lib32" ]]; then + [[ -d "${PREFIX}/${LIBDIR}/opengl" ]] || continue + else + [[ -d "${PREFIX}/${LIBDIR}/opengl" && ! -h "${PREFIX}/${LIBDIR}" ]] || continue + fi + + # Fallback on xorg-x11 if we don't have this implementation for this LIBDIR. + if [[ ! -d ${PREFIX}/${LIBDIR}/opengl/"${GL_IMPLEM}" ]]; then + GL_LOCAL="xorg-x11" + else + GL_LOCAL="${GL_IMPLEM}" + fi + + mkdir -p ${DST_PREFIX}/${LIBDIR} + pushd ${DST_PREFIX}/${LIBDIR} &> /dev/null + # First remove old symlinks + for file in libGL{,core}.{a,so,la} ; do + [[ -h ${file} ]] && rm -f ${file} + done + + # Note that we don't do .so*, just .so on purpose. The + # loader knows to look in the profile dir, and the + # linked just needs the .so + for file in ${PREFIX}/${LIBDIR}/opengl/${GL_LOCAL}/lib/libGL{,core}.{so,a,la}; do + [[ -f "${file}" ]] || continue + [[ -f "${file##*/}" ]] && rm -f ${file##*/} + + # Fix libtool archives (#48297) + if [[ "${file%.la}" != "${file}" ]]; then + sed "s:${PREFIX}/[^/]*/opengl/[^/]*/lib:${DST_PREFIX}/${LIBDIR}:g" ${file} > ${file##*/} + else + ln -s ${file} + fi + done + popd &> /dev/null + + if [[ -e "${PREFIX}/${LIBDIR}/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls" ]]; then + mkdir -p ${DST_PREFIX}/${LIBDIR}/tls + pushd ${DST_PREFIX}/${LIBDIR}/tls &> /dev/null + # First remove old symlinks + for file in libGL{,core}.{a,so,la} ; do + [[ -h ${file} ]] && rm -f ${file} + done + + for file in ${PREFIX}/${LIBDIR}/opengl/${GL_LOCAL}/lib/tls/libGL{,core}.{so,a,la}; do + [[ -f "${file}" ]] || continue + [[ -f "${file##*/}" ]] && rm -f ${file##*/} + + # Fix libtool archives (#48297) + if [ "${file%.la}" != "${file}" ]; then + sed "s:${PREFIX}/[^/]*/opengl/[^/]*/lib:${DST_PREFIX}/${LIBDIR}:g" ${file} > ${file##*/} + else + ln -s ${file} + fi + done + popd &> /dev/null + fi + + if [[ -e "${PREFIX}/${LIBDIR}/opengl/${GL_LOCAL}/extensions" ]]; then + mkdir -p ${DST_PREFIX}/${LIBDIR}/modules/extensions + pushd ${DST_PREFIX}/${LIBDIR}/modules/extensions &> /dev/null + # First remove old symlinks + for file in libglx.so libglx.a; do + [[ -h ${file} ]] && rm -f ${file} + done + + for file in ${PREFIX}/${LIBDIR}/opengl/${GL_LOCAL}/extensions/*.{so,a,la}; do + [[ -f "${file}" ]] || continue + [[ -f "${file##*/}" ]] && rm -f ${file##*/} + + # Fix libtool archives (#48297) + if [[ "${file%.la}" != "${file}" ]]; then + sed "s:${PREFIX}/[^/]*/opengl/[^/]*/lib:${DST_PREFIX}/${LIBDIR}:g" ${file} > ${file##*/} + else + ln -s ${file} + fi + done + popd &> /dev/null + fi + + # Setup the includes + mkdir -p ${DST_PREFIX}/include/GL + pushd ${DST_PREFIX}/include/GL &> /dev/null + for file in gl.h glx.h glxtokens.h glext.h glxext.h glxmd.h glxproto.h; do + # 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 and the user + # can add the --impl-headers option to select it. + + if [[ ${USE_PROFILE_HEADERS} == "yes" ]] ; then + # Check the profile first. + if [[ -e ${PREFIX}/${LIBDIR}/opengl/${GL_IMPLEM}/include/${file} ]]; then + [[ -f "${file}" || ( -L "${file}" && ! -e "${file}" ) ]] && rm -f ${file} + ln -s ${PREFIX}/${LIBDIR}/opengl/${GL_IMPLEM}/include/${file} + fi + fi + + if [[ -e ${PREFIX}/${LIBDIR}/opengl/global/include/${file} ]]; then + [[ -f "${file}" || ( -L "${file}" && ! -e "${file}" ) ]] && rm -f ${file} + ln -s ${PREFIX}/${LIBDIR}/opengl/global/include/${file} + elif [[ -e ${PREFIX}/${LIBDIR}/opengl/${GL_IMPLEM}/include/${file} ]]; then + [[ -f "${file}" || ( -L "${file}" && ! -e "${file}" ) ]] && rm -f ${file} + ln -s ${PREFIX}/${LIBDIR}/opengl/${GL_IMPLEM}/include/${file} + elif [[ -e ${PREFIX}/${LIBDIR}/opengl/xorg-x11/include/${file} ]]; then + [[ -f "${file}" || ( -L "${file}" && ! -e "${file}" ) ]] && rm -f ${file} + ln -s ${PREFIX}/${LIBDIR}/opengl/xorg-x11/include/${file} + fi + done + popd &> /dev/null + + # Setup the $LDPATH + ldpath="${ldpath:+${ldpath}:}${PREFIX}/${LIBDIR}/opengl/${GL_LOCAL}/lib" + + done + + echo "LDPATH=\"${ldpath}\"" > ${ENV_D} + echo "OPENGL_PROFILE=\"${GL_IMPLEM}\"" >> ${ENV_D} + + env-update + + eend 0 +} + +## START PROGRAM ## + +ENV_D="/etc/env.d/03opengl" +NEW_GL_IMPLEM="" +ACTION="" +PREFIX="/usr" +DST_PREFIX="/usr" +AVAIL_IMPLEMS=$(get_implementations) +CURRENT_GL_IMPLEM=$(get_current_implem) +USE_PROFILE_HEADERS="no" +VERSION="2.2.0" + +parse_options ${@} + +case ${ACTION} in + get-implementation) + if [[ -n "${CURRENT_GL_IMPLEM}" ]]; then + echo ${CURRENT_GL_IMPLEM} + exit 0 + else + exit 2 + fi + ;; + set-implementation) + if [[ -n "${NEW_GL_IMPLEM}" ]]; then + set-new-implementation ${NEW_GL_IMPLEM} + exit $? + else + print_usage + exit 1 + fi + ;; + version) + print_version + exit 0 + ;; + nothing) + exit 0 + ;; + usage) + print_usage + exit 0 + ;; + error) + print_usage + exit 1 + ;; + *) + print_usage + exit 1 + ;; +esac diff --git a/x11-base/opengl-update/opengl-update-2.2.0.ebuild b/x11-base/opengl-update/opengl-update-2.2.0.ebuild new file mode 100644 index 000000000000..c12a2a95887c --- /dev/null +++ b/x11-base/opengl-update/opengl-update-2.2.0.ebuild @@ -0,0 +1,93 @@ +# Copyright 1999-2005 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.2.0.ebuild,v 1.1 2005/04/26 02:31:27 eradicator Exp $ + +inherit multilib toolchain-funcs eutils + +DESCRIPTION="Utility to change the OpenGL interface being used" +HOMEPAGE="http://www.gentoo.org/" + +# Source: +# http://oss.sgi.com/projects/ogl-sample/ABI/glext.h +# http://oss.sgi.com/projects/ogl-sample/ABI/glxext.h + +GLEXT="27" +GLXEXT="10" + +SRC_URI="http://dev.gentoo.org/~eradicator/opengl/glext.h-${GLEXT}.bz2 + http://dev.gentoo.org/~eradicator/opengl/glxext.h-${GLXEXT}.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 s390 sparc x86" +IUSE="" +RESTRICT="multilib-pkg-force" + +DEPEND="virtual/libc + app-arch/bzip2" + +RDEPEND="!x11-base/xfree86 + !<x11-base/xorg-x11-6.8.0-r4 + !<media-video/ati-drivers-8.8.25-r3" + +S="${WORKDIR}" + +src_unpack() { + unpack ${A} + + # Bugs #81199, #81472 + epatch ${FILESDIR}/glxext.h-inttypes.patch +} + +pkg_preinst() { + # It needs to be before 04multilib + [ -f "${ROOT}/etc/env.d/09opengl" ] && mv ${ROOT}/etc/env.d/09opengl ${ROOT}/etc/env.d/03opengl + + OABI="${ABI}" + for ABI in $(get_install_abis); do + if [ -e "${ROOT}/usr/$(get_libdir)/opengl/xorg-x11/lib/libMesaGL.so" ]; then + einfo "Removing libMesaGL.so from xorg-x11 profile. See bug #47598." + rm -f ${ROOT}/usr/$(get_libdir)/opengl/xorg-x11/lib/libMesaGL.so + fi + if [ -e "${ROOT}/usr/$(get_libdir)/libMesaGL.so" ]; then + einfo "Removing libMesaGL.so from /usr/$(get_libdir). See bug #47598." + rm -f ${ROOT}/usr/$(get_libdir)/libMesaGL.so + fi + + for f in ${ROOT}/usr/$(get_libdir)/libGL.so.* ${ROOT}/usr/$(get_libdir)/libGLcore.so.* ${ROOT}/usr/$(get_libdir)/libnvidia-tls* ${ROOT}/usr/$(get_libdir)/tls/libnvidia-tls* ; do + [[ -e ${f} ]] && rm -f ${f} + done + done + ABI="${OABI}" + unset OABI +} + +pkg_postinst() { + local impl="$(opengl-update --get-implementation)" + if [[ -n "${impl}" ]] ; then + opengl-update "${impl}" + fi +} + +src_install() { + newsbin ${FILESDIR}/opengl-update-${PV} opengl-update || die + + # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage + local MLTEST=$(type dyn_unpack) + if has_multilib_profile && [ "${MLTEST/set_abi}" = "${MLTEST}" ]; then + OABI="${ABI}" + for ABI in $(get_install_abis); do + # Install default glext.h + insinto /usr/$(get_libdir)/opengl/global/include + newins ${WORKDIR}/glext.h-${GLEXT} glext.h || die + newins ${WORKDIR}/glxext.h-${GLXEXT} glxext.h || die + done + ABI="${OABI}" + unset OABI + else + # Install default glext.h + insinto /usr/$(get_libdir)/opengl/global/include + newins ${WORKDIR}/glext.h-${GLEXT} glext.h || die + newins ${WORKDIR}/glxext.h-${GLXEXT} glxext.h || die + fi +} |