/[gentoo-x86]/eclass/virtualx.eclass
Gentoo

Diff of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.10 Revision 1.33
1# Copyright 1999-2002 Gentoo Technologies, Inc. 1# Copyright 1999-2009 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.33 2009/12/21 17:27:28 abcd Exp $
4#
3# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
4# $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.10 2003/01/22 01:47:34 jrray Exp $ 6#
5# This eclass can be used for packages that needs a working X environment to build 7# This eclass can be used for packages that needs a working X environment to build
6 8
7ECLASS=virtualx 9# Is a dependency on xorg-server and xhost needed?
8INHERITED="$INHERITED $ECLASS" 10# Valid values are "always", "optional", and "manual"
9newdepend virtual/x11 11# "tests" is treated as a synonym for "optional"
12: ${VIRTUALX_REQUIRED:=optional}
13
14# If VIRTUALX_REQUIRED=optional, what use flag should control
15# the dependency? Default is "test"
16: ${VIRTUALX_USE:=test}
17
18# Dep string available for use outside of eclass, in case a more
19# complicated dep is needed
20VIRTUALX_DEPEND="x11-base/xorg-server
21 x11-apps/xhost"
22
23case ${VIRTUALX_REQUIRED} in
24 always)
25 DEPEND="${VIRTUALX_DEPEND}"
26 RDEPEND=""
27 ;;
28 optional|tests)
29 DEPEND="${VIRTUALX_USE}? ( ${VIRTUALX_DEPEND} )"
30 RDEPEND=""
31 IUSE="${VIRTUALX_USE}"
32 ;;
33 manual)
34 ;;
35 *)
36 eerror "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
37 eerror "Valid values are:"
38 eerror " always"
39 eerror " optional (default if unset)"
40 eerror " manual"
41 die "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
42 ;;
43esac
10 44
11DESCRIPTION="Based on the $ECLASS eclass" 45DESCRIPTION="Based on the $ECLASS eclass"
12 46
13[ -z "${SANDBOX_DISABLED}" ] && export SANDBOX_DISABLED="0" || :
14
15virtualmake() { 47virtualmake() {
16 local retval=0 48 local retval=0
17 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}" 49 local OLD_SANDBOX_ON="${SANDBOX_ON}"
50 local XVFB=$(type -p Xvfb)
51 local XHOST=$(type -p xhost)
18 52
19 #If $DISPLAY is not set, or xhost cannot connect to an X 53 # If $DISPLAY is not set, or xhost cannot connect to an X
20 #display, then do the Xvfb hack. 54 # display, then do the Xvfb hack.
21 if [ -z "$DISPLAY" ] || ! (/usr/X11R6/bin/xhost &>/dev/null) 55 if [[ -n ${XVFB} && -n ${XHOST} ]] && \
22 then 56 ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
23 export XAUTHORITY= 57 export XAUTHORITY=
24 # The following is derived from Mandrake's hack to allow 58 # The following is derived from Mandrake's hack to allow
25 # compiling without the X display 59 # compiling without the X display
26 60
27 einfo "Scanning for a open DISPLAY to start Xvfb..." 61 einfo "Scanning for an open DISPLAY to start Xvfb ..."
28 62
29 # We really do not want SANDBOX enabled here 63 # We really do not want SANDBOX enabled here
30 export SANDBOX_DISABLED="1" 64 export SANDBOX_ON="0"
31 65
32 local i=0 66 local i=0
33 XDISPLAY=$(i=0; while [ -f /tmp/.X${i}-lock ] ; do i=$((${i}+1));done; echo ${i}) 67 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
34 68
35 # If we are in a chrooted environment, and there is already a 69 # If we are in a chrooted environment, and there is already a
36 # X server started outside of the chroot, Xvfb will fail to start 70 # X server started outside of the chroot, Xvfb will fail to start
37 # on the same display (most cases this is :0 ), so make sure 71 # on the same display (most cases this is :0 ), so make sure
38 # Xvfb is started, else bump the display number 72 # Xvfb is started, else bump the display number
39 # 73 #
40 # Azarah - 5 May 2002 74 # Azarah - 5 May 2002
41 # 75 #
42 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null & 76 # Changed the mode from 800x600x32 to 800x600x24 because the mfb
77 # support has been dropped in Xvfb in the xorg-x11 pre-releases.
78 # For now only depths up to 24-bit are supported.
79 #
80 # Sven Wegener <swegener@gentoo.org> - 22 Aug 2004
81 #
82 # Use "-fp built-ins" because it's only part of the default font path
83 # for Xorg but not the other DDXs (Xvfb, Kdrive, etc). Temporarily fixes
84 # bug 278487 until xorg-server is properly patched
85 #
86 # RĂ©mi Cardona <remi@gentoo.org> (10 Aug 2009)
87 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
43 sleep 2 88 sleep 2
44 89
45 local start=${XDISPLAY} 90 local start=${XDISPLAY}
46 while [ ! -f /tmp/.X${XDISPLAY}-lock ] 91 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
47 do
48 # Stop trying after 15 tries 92 # Stop trying after 15 tries
49 if [ $((${XDISPLAY} - ${start})) -gt 15 ]; then 93 if ((XDISPLAY - start > 15)) ; then
50 94
51 eerror "" 95 eerror ""
52 eerror "Unable to start Xvfb." 96 eerror "Unable to start Xvfb."
53 eerror "" 97 eerror ""
54 eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32' returns:" 98 eerror "'${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:"
55 eerror "" 99 eerror ""
56 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 100 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24
57 eerror "" 101 eerror ""
58 eerror "If possible, correct the above error and try your emerge again." 102 eerror "If possible, correct the above error and try your emerge again."
59 eerror "" 103 eerror ""
60 die 104 die
61 fi 105 fi
62 106
63 XDISPLAY=$((${XDISPLAY}+1)) 107 ((XDISPLAY++))
64 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null & 108 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
65 sleep 2 109 sleep 2
66 done 110 done
67 111
68 # Now enable SANDBOX again if needed. 112 # Now enable SANDBOX again if needed.
69 export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}" 113 export SANDBOX_ON="${OLD_SANDBOX_ON}"
70 114
71 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..." 115 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
72 116
73 export DISPLAY=:${XDISPLAY} 117 export DISPLAY=:${XDISPLAY}
74 #Do not break on error, but setup $retval, as we need 118 #Do not break on error, but setup $retval, as we need
75 #to kill Xvfb 119 #to kill Xvfb
76 ${maketype} $* 120 ${maketype} "$@"
77 retval=$? 121 retval=$?
78 122
79 #Now kill Xvfb 123 #Now kill Xvfb
80 kill $(cat /tmp/.X${XDISPLAY}-lock) 124 kill $(cat /tmp/.X${XDISPLAY}-lock)
81 else 125 else
82 #Normal make if we can connect to an X display 126 #Normal make if we can connect to an X display
83 ${maketype} $* 127 ${maketype} "$@"
84 retval=$? 128 retval=$?
85 fi 129 fi
86 130
87 return $retval 131 return ${retval}
88} 132}
89 133
90#Same as "make", but setup the Xvfb hack if needed 134#Same as "make", but setup the Xvfb hack if needed
91Xmake() { 135Xmake() {
92 export maketype="make" 136 export maketype="make"
93 virtualmake "$*" 137 virtualmake "$@"
94} 138}
95 139
96#Same as "emake", but setup the Xvfb hack if needed 140#Same as "emake", but setup the Xvfb hack if needed
97Xemake() { 141Xemake() {
98 export maketype="emake" 142 export maketype="emake"
99 virtualmake "$*" 143 virtualmake "$@"
100} 144}
101 145
146#Same as "econf", but setup the Xvfb hack if needed
147Xeconf() {
148 export maketype="econf"
149 virtualmake "$@"
150}

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.33

  ViewVC Help
Powered by ViewVC 1.1.20