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

Diff of /eclass/virtualx.eclass

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

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

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.20