/[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.32
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.32 2009/10/21 23:59:51 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", "optional", and "manual"
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
11 44
12DESCRIPTION="Based on the $ECLASS eclass" 45DESCRIPTION="Based on the $ECLASS eclass"
13 46
14# 47#
15# Brian Harring <ferringb@gentoo.org> 11/04/2004 48# Brian Harring <ferringb@gentoo.org> 11/04/2004
38 71
39 # We really do not want SANDBOX enabled here 72 # We really do not want SANDBOX enabled here
40 export SANDBOX_DISABLED="1" 73 export SANDBOX_DISABLED="1"
41 74
42 local i=0 75 local i=0
43 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do i=$((${i}+1));done; echo ${i}) 76 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
44 77
45 # If we are in a chrooted environment, and there is already a 78 # 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 79 # 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 80 # on the same display (most cases this is :0 ), so make sure
48 # Xvfb is started, else bump the display number 81 # Xvfb is started, else bump the display number
64 sleep 2 97 sleep 2
65 98
66 local start=${XDISPLAY} 99 local start=${XDISPLAY}
67 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do 100 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
68 # Stop trying after 15 tries 101 # Stop trying after 15 tries
69 if [[ $((${XDISPLAY} - ${start})) -gt 15 ]] ; then 102 if ((XDISPLAY - start > 15)) ; then
70 103
71 eerror "" 104 eerror ""
72 eerror "Unable to start Xvfb." 105 eerror "Unable to start Xvfb."
73 eerror "" 106 eerror ""
74 eerror "'/usr/bin/Xvfb :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:" 107 eerror "'${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:"
75 eerror "" 108 eerror ""
76 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 109 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24
77 eerror "" 110 eerror ""
78 eerror "If possible, correct the above error and try your emerge again." 111 eerror "If possible, correct the above error and try your emerge again."
79 eerror "" 112 eerror ""
80 die 113 die
81 fi 114 fi
82 115
83 XDISPLAY=$((${XDISPLAY}+1)) 116 ((XDISPLAY++))
84 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null & 117 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
85 sleep 2 118 sleep 2
86 done 119 done
87 120
88 # Now enable SANDBOX again if needed. 121 # Now enable SANDBOX again if needed.
91 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..." 124 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
92 125
93 export DISPLAY=:${XDISPLAY} 126 export DISPLAY=:${XDISPLAY}
94 #Do not break on error, but setup $retval, as we need 127 #Do not break on error, but setup $retval, as we need
95 #to kill Xvfb 128 #to kill Xvfb
96 ${maketype} $* 129 ${maketype} "$@"
97 retval=$? 130 retval=$?
98 131
99 #Now kill Xvfb 132 #Now kill Xvfb
100 kill $(cat /tmp/.X${XDISPLAY}-lock) 133 kill $(cat /tmp/.X${XDISPLAY}-lock)
101 else 134 else
102 #Normal make if we can connect to an X display 135 #Normal make if we can connect to an X display
103 ${maketype} $* 136 ${maketype} "$@"
104 retval=$? 137 retval=$?
105 fi 138 fi
106 139
107 return ${retval} 140 return ${retval}
108} 141}
109 142
110#Same as "make", but setup the Xvfb hack if needed 143#Same as "make", but setup the Xvfb hack if needed
111Xmake() { 144Xmake() {
112 export maketype="make" 145 export maketype="make"
113 virtualmake "$*" 146 virtualmake "$@"
114} 147}
115 148
116#Same as "emake", but setup the Xvfb hack if needed 149#Same as "emake", but setup the Xvfb hack if needed
117Xemake() { 150Xemake() {
118 export maketype="emake" 151 export maketype="emake"
119 virtualmake "$*" 152 virtualmake "$@"
120} 153}
121 154
122#Same as "econf", but setup the Xvfb hack if needed 155#Same as "econf", but setup the Xvfb hack if needed
123Xeconf() { 156Xeconf() {
124 export maketype="econf" 157 export maketype="econf"
125 virtualmake "$*" 158 virtualmake "$@"
126} 159}

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

  ViewVC Help
Powered by ViewVC 1.1.20