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

Diff of /eclass/virtualx.eclass

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

Revision 1.29 Revision 1.30
1# Copyright 1999-2004 Gentoo Foundation 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.29 2009/08/10 15:44:37 remi Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.30 2009/10/19 21:12:07 abcd 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 x11-apps/xhost )" 9# Is a dependency on xorg-server and xhost needed?
10IUSE="X" 10# Valid values are "always", "tests", and "manual"
11VIRTUALX_REQUIRED="${VIRTUALX_REQUIRED:-tests}"
12
13# Dep string available for use outside of eclass, in case a more
14# complicated dep is needed
15VIRTUALX_DEPEND="x11-base/xorg-server
16 x11-apps/xhost"
17
18case ${VIRTUALX_REQUIRED} in
19 always)
20 DEPEND="${VIRTUALX_DEPEND}"
21 RDEPEND=""
22 ;;
23 tests)
24 DEPEND="test? ( ${VIRTUAX_DEPEND} )"
25 RDEPEND=""
26 IUSE="test"
27 ;;
28 manual)
29 ;;
30 *)
31 eerror "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
32 eerror "Valid values are:"
33 eerror " always"
34 eerror " tests"
35 eerror " manual"
36 die "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
37 ;;
38esac
11 39
12DESCRIPTION="Based on the $ECLASS eclass" 40DESCRIPTION="Based on the $ECLASS eclass"
13 41
14# 42#
15# Brian Harring <ferringb@gentoo.org> 11/04/2004 43# Brian Harring <ferringb@gentoo.org> 11/04/2004
38 66
39 # We really do not want SANDBOX enabled here 67 # We really do not want SANDBOX enabled here
40 export SANDBOX_DISABLED="1" 68 export SANDBOX_DISABLED="1"
41 69
42 local i=0 70 local i=0
43 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do i=$((${i}+1));done; echo ${i}) 71 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
44 72
45 # If we are in a chrooted environment, and there is already a 73 # 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 74 # 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 75 # on the same display (most cases this is :0 ), so make sure
48 # Xvfb is started, else bump the display number 76 # Xvfb is started, else bump the display number
64 sleep 2 92 sleep 2
65 93
66 local start=${XDISPLAY} 94 local start=${XDISPLAY}
67 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do 95 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
68 # Stop trying after 15 tries 96 # Stop trying after 15 tries
69 if [[ $((${XDISPLAY} - ${start})) -gt 15 ]] ; then 97 if ((XDISPLAY - start > 15)) ; then
70 98
71 eerror "" 99 eerror ""
72 eerror "Unable to start Xvfb." 100 eerror "Unable to start Xvfb."
73 eerror "" 101 eerror ""
74 eerror "'/usr/bin/Xvfb :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:" 102 eerror "'${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:"
75 eerror "" 103 eerror ""
76 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 104 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24
77 eerror "" 105 eerror ""
78 eerror "If possible, correct the above error and try your emerge again." 106 eerror "If possible, correct the above error and try your emerge again."
79 eerror "" 107 eerror ""
80 die 108 die
81 fi 109 fi
82 110
83 XDISPLAY=$((${XDISPLAY}+1)) 111 ((XDISPLAY++))
84 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null & 112 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
85 sleep 2 113 sleep 2
86 done 114 done
87 115
88 # Now enable SANDBOX again if needed. 116 # Now enable SANDBOX again if needed.
91 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..." 119 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
92 120
93 export DISPLAY=:${XDISPLAY} 121 export DISPLAY=:${XDISPLAY}
94 #Do not break on error, but setup $retval, as we need 122 #Do not break on error, but setup $retval, as we need
95 #to kill Xvfb 123 #to kill Xvfb
96 ${maketype} $* 124 ${maketype} "$@"
97 retval=$? 125 retval=$?
98 126
99 #Now kill Xvfb 127 #Now kill Xvfb
100 kill $(cat /tmp/.X${XDISPLAY}-lock) 128 kill $(cat /tmp/.X${XDISPLAY}-lock)
101 else 129 else
102 #Normal make if we can connect to an X display 130 #Normal make if we can connect to an X display
103 ${maketype} $* 131 ${maketype} "$@"
104 retval=$? 132 retval=$?
105 fi 133 fi
106 134
107 return ${retval} 135 return ${retval}
108} 136}
109 137
110#Same as "make", but setup the Xvfb hack if needed 138#Same as "make", but setup the Xvfb hack if needed
111Xmake() { 139Xmake() {
112 export maketype="make" 140 export maketype="make"
113 virtualmake "$*" 141 virtualmake "$@"
114} 142}
115 143
116#Same as "emake", but setup the Xvfb hack if needed 144#Same as "emake", but setup the Xvfb hack if needed
117Xemake() { 145Xemake() {
118 export maketype="emake" 146 export maketype="emake"
119 virtualmake "$*" 147 virtualmake "$@"
120} 148}
121 149
122#Same as "econf", but setup the Xvfb hack if needed 150#Same as "econf", but setup the Xvfb hack if needed
123Xeconf() { 151Xeconf() {
124 export maketype="econf" 152 export maketype="econf"
125 virtualmake "$*" 153 virtualmake "$@"
126} 154}

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.20