/[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.22
1# Copyright 1999-2002 Gentoo Technologies, Inc. 1# Copyright 1999-2004 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.22 2005/07/06 20:20:04 agriffis 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 9DEPEND="X? ( virtual/x11 )"
8INHERITED="$INHERITED $ECLASS" 10IUSE="X"
9newdepend virtual/x11
10 11
11DESCRIPTION="Based on the $ECLASS eclass" 12DESCRIPTION="Based on the $ECLASS eclass"
12 13
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
13[ -z "${SANDBOX_DISABLED}" ] && export SANDBOX_DISABLED="0" || : 20 [[ -z ${SANDBOX_DISABLED} ]] && export SANDBOX_DISABLED="0" || :
21fi
14 22
15virtualmake() { 23virtualmake() {
16 local retval=0 24 local retval=0
17 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}" 25 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}"
26 local XVFB=$(type -p Xvfb)
27 local XHOST=$(type -p xhost)
18 28
19 #If $DISPLAY is not set, or xhost cannot connect to an X 29 # If $DISPLAY is not set, or xhost cannot connect to an X
20 #display, then do the Xvfb hack. 30 # display, then do the Xvfb hack.
21 if [ -z "$DISPLAY" ] || ! (/usr/X11R6/bin/xhost &>/dev/null) 31 if [[ -n ${XVFB} && -n ${XHOST} ]] && \
22 then 32 ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
23 export XAUTHORITY= 33 export XAUTHORITY=
24 # The following is derived from Mandrake's hack to allow 34 # The following is derived from Mandrake's hack to allow
25 # compiling without the X display 35 # compiling without the X display
26 36
27 einfo "Scanning for a open DISPLAY to start Xvfb..." 37 einfo "Scanning for a open DISPLAY to start Xvfb ..."
28 38
29 # We really do not want SANDBOX enabled here 39 # We really do not want SANDBOX enabled here
30 export SANDBOX_DISABLED="1" 40 export SANDBOX_DISABLED="1"
31 41
32 local i=0 42 local i=0
33 XDISPLAY=$(i=0; while [ -f /tmp/.X${i}-lock ] ; do i=$((${i}+1));done; echo ${i}) 43 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do i=$((${i}+1));done; echo ${i})
34 44
35 # If we are in a chrooted environment, and there is already a 45 # 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 46 # 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 47 # on the same display (most cases this is :0 ), so make sure
38 # Xvfb is started, else bump the display number 48 # Xvfb is started, else bump the display number
39 # 49 #
40 # Azarah - 5 May 2002 50 # Azarah - 5 May 2002
41 # 51 #
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 #
42 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null & 58 ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null &
43 sleep 2 59 sleep 2
44 60
45 local start=${XDISPLAY} 61 local start=${XDISPLAY}
46 while [ ! -f /tmp/.X${XDISPLAY}-lock ] 62 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
47 do
48 # Stop trying after 15 tries 63 # Stop trying after 15 tries
49 if [ $((${XDISPLAY} - ${start})) -gt 15 ]; then 64 if [[ $((${XDISPLAY} - ${start})) -gt 15 ]] ; then
50 65
51 eerror "" 66 eerror ""
52 eerror "Unable to start Xvfb." 67 eerror "Unable to start Xvfb."
53 eerror "" 68 eerror ""
54 eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32' returns:" 69 eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x24' returns:"
55 eerror "" 70 eerror ""
56 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 71 ${XVFB} :${XDISPLAY} -screen 0 800x600x24
57 eerror "" 72 eerror ""
58 eerror "If possible, correct the above error and try your emerge again." 73 eerror "If possible, correct the above error and try your emerge again."
59 eerror "" 74 eerror ""
60 die 75 die
61 fi 76 fi
62 77
63 XDISPLAY=$((${XDISPLAY}+1)) 78 XDISPLAY=$((${XDISPLAY}+1))
64 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null & 79 ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null &
65 sleep 2 80 sleep 2
66 done 81 done
67 82
68 # Now enable SANDBOX again if needed. 83 # Now enable SANDBOX again if needed.
69 export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}" 84 export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}"
82 #Normal make if we can connect to an X display 97 #Normal make if we can connect to an X display
83 ${maketype} $* 98 ${maketype} $*
84 retval=$? 99 retval=$?
85 fi 100 fi
86 101
87 return $retval 102 return ${retval}
88} 103}
89 104
90#Same as "make", but setup the Xvfb hack if needed 105#Same as "make", but setup the Xvfb hack if needed
91Xmake() { 106Xmake() {
92 export maketype="make" 107 export maketype="make"
97Xemake() { 112Xemake() {
98 export maketype="emake" 113 export maketype="emake"
99 virtualmake "$*" 114 virtualmake "$*"
100} 115}
101 116
117#Same as "econf", but setup the Xvfb hack if needed
118Xeconf() {
119 export maketype="econf"
120 virtualmake "$*"
121}

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

  ViewVC Help
Powered by ViewVC 1.1.20