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

Diff of /eclass/virtualx.eclass

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

Revision 1.1.1.1 Revision 1.15
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2003 Gentoo Technologies, Inc.
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.1.1.1 2005/11/30 09:59:31 chriswhite Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.15 2004/04/11 05:46:09 mr_bones_ Exp $
4# 4#
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
6# 6#
7# 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
8 8
9DEPEND="X? ( || ( x11-base/xorg-server virtual/x11 ) )" 9ECLASS=virtualx
10IUSE="X" 10INHERITED="$INHERITED $ECLASS"
11DEPEND="virtual/x11"
11 12
12DESCRIPTION="Based on the $ECLASS eclass" 13DESCRIPTION="Based on the $ECLASS eclass"
13 14
14#
15# Brian Harring <ferringb@gentoo.org> 11/04/2004
16# do not disable the sandbox during the depend phase.
17# ebuilds shouldn't touch the fs during depend phase, nor screw with the sandbox.
18#
19if [[ ${EBUILD_PHASE/depend} == "${EBUILD_PHASE}" ]] ; then
20 [[ -z ${SANDBOX_DISABLED} ]] && export SANDBOX_DISABLED="0" || : 15[ -z "${SANDBOX_DISABLED}" ] && export SANDBOX_DISABLED="0" || :
21fi
22 16
23virtualmake() { 17virtualmake() {
24 local retval=0 18 local retval=0
25 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}" 19 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}"
26 local XVFB=$(type -p Xvfb)
27 local XHOST=$(type -p xhost)
28 20
29 # If $DISPLAY is not set, or xhost cannot connect to an X 21 #If $DISPLAY is not set, or xhost cannot connect to an X
30 # display, then do the Xvfb hack. 22 #display, then do the Xvfb hack.
31 if [[ -n ${XVFB} && -n ${XHOST} ]] && \ 23 if [ -z "$DISPLAY" ] || ! (/usr/X11R6/bin/xhost &>/dev/null)
32 ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then 24 then
33 export XAUTHORITY= 25 export XAUTHORITY=
34 # The following is derived from Mandrake's hack to allow 26 # The following is derived from Mandrake's hack to allow
35 # compiling without the X display 27 # compiling without the X display
36 28
37 einfo "Scanning for a open DISPLAY to start Xvfb ..." 29 einfo "Scanning for a open DISPLAY to start Xvfb..."
38 30
39 # We really do not want SANDBOX enabled here 31 # We really do not want SANDBOX enabled here
40 export SANDBOX_DISABLED="1" 32 export SANDBOX_DISABLED="1"
41 33
42 local i=0 34 local i=0
43 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do i=$((${i}+1));done; echo ${i}) 35 XDISPLAY=$(i=0; while [ -f /tmp/.X${i}-lock ] ; do i=$((${i}+1));done; echo ${i})
44 36
45 # If we are in a chrooted environment, and there is already a 37 # If we are in a chrooted environment, and there is already a
46 # X server started outside of the chroot, Xvfb will fail to start 38 # X server started outside of the chroot, Xvfb will fail to start
47 # on the same display (most cases this is :0 ), so make sure 39 # on the same display (most cases this is :0 ), so make sure
48 # Xvfb is started, else bump the display number 40 # Xvfb is started, else bump the display number
49 # 41 #
50 # Azarah - 5 May 2002 42 # Azarah - 5 May 2002
51 # 43 #
52 # Changed the mode from 800x600x32 to 800x600x24 because the mfb
53 # support has been dropped in Xvfb in the xorg-x11 pre-releases.
54 # For now only depths up to 24-bit are supported.
55 #
56 # Sven Wegener <swegener@gentoo.org> - 22 Aug 2004
57 #
58 ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null & 44 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null &
59 sleep 2 45 sleep 2
60 46
61 local start=${XDISPLAY} 47 local start=${XDISPLAY}
62 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do 48 while [ ! -f /tmp/.X${XDISPLAY}-lock ]
49 do
63 # Stop trying after 15 tries 50 # Stop trying after 15 tries
64 if [[ $((${XDISPLAY} - ${start})) -gt 15 ]] ; then 51 if [ $((${XDISPLAY} - ${start})) -gt 15 ]; then
65 52
66 eerror "" 53 eerror ""
67 eerror "Unable to start Xvfb." 54 eerror "Unable to start Xvfb."
68 eerror "" 55 eerror ""
69 eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x24' returns:" 56 eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32' returns:"
70 eerror "" 57 eerror ""
71 ${XVFB} :${XDISPLAY} -screen 0 800x600x24 58 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32
72 eerror "" 59 eerror ""
73 eerror "If possible, correct the above error and try your emerge again." 60 eerror "If possible, correct the above error and try your emerge again."
74 eerror "" 61 eerror ""
75 die 62 die
76 fi 63 fi
77 64
78 XDISPLAY=$((${XDISPLAY}+1)) 65 XDISPLAY=$((${XDISPLAY}+1))
79 ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null & 66 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null &
80 sleep 2 67 sleep 2
81 done 68 done
82 69
83 # Now enable SANDBOX again if needed. 70 # Now enable SANDBOX again if needed.
84 export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}" 71 export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}"
85 72
86 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..." 73 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
87 74
88 export DISPLAY=:${XDISPLAY} 75 export DISPLAY=:${XDISPLAY}
89 #Do not break on error, but setup $retval, as we need 76 #Do not break on error, but setup $retval, as we need
90 #to kill Xvfb 77 #to kill Xvfb
91 ${maketype} $* 78 ${maketype} $*
92 retval=$? 79 retval=$?
97 #Normal make if we can connect to an X display 84 #Normal make if we can connect to an X display
98 ${maketype} $* 85 ${maketype} $*
99 retval=$? 86 retval=$?
100 fi 87 fi
101 88
102 return ${retval} 89 return $retval
103} 90}
104 91
105#Same as "make", but setup the Xvfb hack if needed 92#Same as "make", but setup the Xvfb hack if needed
106Xmake() { 93Xmake() {
107 export maketype="make" 94 export maketype="make"

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.20