/[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.30
1# Copyright 1999-2002 Gentoo Technologies, Inc. 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.30 2009/10/19 21:12:07 abcd 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 9# Is a dependency on xorg-server and xhost needed?
8INHERITED="$INHERITED $ECLASS" 10# Valid values are "always", "tests", and "manual"
9newdepend virtual/x11 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
10 39
11DESCRIPTION="Based on the $ECLASS eclass" 40DESCRIPTION="Based on the $ECLASS eclass"
12 41
42#
43# Brian Harring <ferringb@gentoo.org> 11/04/2004
44# do not disable the sandbox during the depend phase.
45# ebuilds shouldn't touch the fs during depend phase, nor screw with the sandbox.
46#
47if [[ ${EBUILD_PHASE/depend} == "${EBUILD_PHASE}" ]] ; then
13[ -z "${SANDBOX_DISABLED}" ] && export SANDBOX_DISABLED="0" || : 48 [[ -z ${SANDBOX_DISABLED} ]] && export SANDBOX_DISABLED="0" || :
49fi
14 50
15virtualmake() { 51virtualmake() {
16 local retval=0 52 local retval=0
17 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}" 53 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}"
54 local XVFB=$(type -p Xvfb)
55 local XHOST=$(type -p xhost)
18 56
19 #If $DISPLAY is not set, or xhost cannot connect to an X 57 # If $DISPLAY is not set, or xhost cannot connect to an X
20 #display, then do the Xvfb hack. 58 # display, then do the Xvfb hack.
21 if [ -z "$DISPLAY" ] || ! (/usr/X11R6/bin/xhost &>/dev/null) 59 if [[ -n ${XVFB} && -n ${XHOST} ]] && \
22 then 60 ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
23 export XAUTHORITY= 61 export XAUTHORITY=
24 # The following is derived from Mandrake's hack to allow 62 # The following is derived from Mandrake's hack to allow
25 # compiling without the X display 63 # compiling without the X display
26 64
27 einfo "Scanning for a open DISPLAY to start Xvfb..." 65 einfo "Scanning for an open DISPLAY to start Xvfb ..."
28 66
29 # We really do not want SANDBOX enabled here 67 # We really do not want SANDBOX enabled here
30 export SANDBOX_DISABLED="1" 68 export SANDBOX_DISABLED="1"
31 69
32 local i=0 70 local i=0
33 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})
34 72
35 # 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
36 # 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
37 # 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
38 # Xvfb is started, else bump the display number 76 # Xvfb is started, else bump the display number
39 # 77 #
40 # Azarah - 5 May 2002 78 # Azarah - 5 May 2002
41 # 79 #
42 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null & 80 # Changed the mode from 800x600x32 to 800x600x24 because the mfb
81 # support has been dropped in Xvfb in the xorg-x11 pre-releases.
82 # For now only depths up to 24-bit are supported.
83 #
84 # Sven Wegener <swegener@gentoo.org> - 22 Aug 2004
85 #
86 # Use "-fp built-ins" because it's only part of the default font path
87 # for Xorg but not the other DDXs (Xvfb, Kdrive, etc). Temporarily fixes
88 # bug 278487 until xorg-server is properly patched
89 #
90 # RĂ©mi Cardona <remi@gentoo.org> (10 Aug 2009)
91 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
43 sleep 2 92 sleep 2
44 93
45 local start=${XDISPLAY} 94 local start=${XDISPLAY}
46 while [ ! -f /tmp/.X${XDISPLAY}-lock ] 95 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
47 do
48 # Stop trying after 15 tries 96 # Stop trying after 15 tries
49 if [ $((${XDISPLAY} - ${start})) -gt 15 ]; then 97 if ((XDISPLAY - start > 15)) ; then
50 98
51 eerror "" 99 eerror ""
52 eerror "Unable to start Xvfb." 100 eerror "Unable to start Xvfb."
53 eerror "" 101 eerror ""
54 eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32' returns:" 102 eerror "'${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:"
55 eerror "" 103 eerror ""
56 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 104 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24
57 eerror "" 105 eerror ""
58 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."
59 eerror "" 107 eerror ""
60 die 108 die
61 fi 109 fi
62 110
63 XDISPLAY=$((${XDISPLAY}+1)) 111 ((XDISPLAY++))
64 /usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x32 &>/dev/null & 112 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
65 sleep 2 113 sleep 2
66 done 114 done
67 115
68 # Now enable SANDBOX again if needed. 116 # Now enable SANDBOX again if needed.
69 export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}" 117 export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}"
70 118
71 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..." 119 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
72 120
73 export DISPLAY=:${XDISPLAY} 121 export DISPLAY=:${XDISPLAY}
74 #Do not break on error, but setup $retval, as we need 122 #Do not break on error, but setup $retval, as we need
75 #to kill Xvfb 123 #to kill Xvfb
76 ${maketype} $* 124 ${maketype} "$@"
77 retval=$? 125 retval=$?
78 126
79 #Now kill Xvfb 127 #Now kill Xvfb
80 kill $(cat /tmp/.X${XDISPLAY}-lock) 128 kill $(cat /tmp/.X${XDISPLAY}-lock)
81 else 129 else
82 #Normal make if we can connect to an X display 130 #Normal make if we can connect to an X display
83 ${maketype} $* 131 ${maketype} "$@"
84 retval=$? 132 retval=$?
85 fi 133 fi
86 134
87 return $retval 135 return ${retval}
88} 136}
89 137
90#Same as "make", but setup the Xvfb hack if needed 138#Same as "make", but setup the Xvfb hack if needed
91Xmake() { 139Xmake() {
92 export maketype="make" 140 export maketype="make"
93 virtualmake "$*" 141 virtualmake "$@"
94} 142}
95 143
96#Same as "emake", but setup the Xvfb hack if needed 144#Same as "emake", but setup the Xvfb hack if needed
97Xemake() { 145Xemake() {
98 export maketype="emake" 146 export maketype="emake"
99 virtualmake "$*" 147 virtualmake "$@"
100} 148}
101 149
150#Same as "econf", but setup the Xvfb hack if needed
151Xeconf() {
152 export maketype="econf"
153 virtualmake "$@"
154}

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

  ViewVC Help
Powered by ViewVC 1.1.20