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

Diff of /eclass/virtualx.eclass

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

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

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

  ViewVC Help
Powered by ViewVC 1.1.20