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

Contents of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.32 - (hide annotations) (download)
Wed Oct 21 23:59:51 2009 UTC (4 years, 6 months ago) by abcd
Branch: MAIN
Changes since 1.31: +12 -7 lines
Allow changing the USE flag for the dependency

1 abcd 1.30 # Copyright 1999-2009 Gentoo Foundation
2 vapier 1.9 # Distributed under the terms of the GNU General Public License v2
3 abcd 1.32 # $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.31 2009/10/19 23:52:39 abcd Exp $
4 vapier 1.11 #
5 azarah 1.1 # Author: Martin Schlemmer <azarah@gentoo.org>
6 vapier 1.11 #
7 azarah 1.1 # This eclass can be used for packages that needs a working X environment to build
8 vapier 1.9
9 abcd 1.30 # Is a dependency on xorg-server and xhost needed?
10 abcd 1.32 # 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 abcd 1.30
18     # Dep string available for use outside of eclass, in case a more
19     # complicated dep is needed
20     VIRTUALX_DEPEND="x11-base/xorg-server
21     x11-apps/xhost"
22    
23     case ${VIRTUALX_REQUIRED} in
24     always)
25     DEPEND="${VIRTUALX_DEPEND}"
26     RDEPEND=""
27     ;;
28 abcd 1.32 optional|tests)
29     DEPEND="${VIRTUALX_USE}? ( ${VIRTUALX_DEPEND} )"
30 abcd 1.30 RDEPEND=""
31 abcd 1.32 IUSE="${VIRTUALX_USE}"
32 abcd 1.30 ;;
33     manual)
34     ;;
35     *)
36     eerror "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
37     eerror "Valid values are:"
38     eerror " always"
39 abcd 1.32 eerror " optional (default if unset)"
40 abcd 1.30 eerror " manual"
41     die "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
42     ;;
43     esac
44 azarah 1.1
45 vapier 1.13 DESCRIPTION="Based on the $ECLASS eclass"
46 azarah 1.1
47 ferringb 1.19 #
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     #
52 azarah 1.20 if [[ ${EBUILD_PHASE/depend} == "${EBUILD_PHASE}" ]] ; then
53     [[ -z ${SANDBOX_DISABLED} ]] && export SANDBOX_DISABLED="0" || :
54 ferringb 1.19 fi
55 azarah 1.8
56 azarah 1.1 virtualmake() {
57     local retval=0
58 azarah 1.8 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}"
59 azarah 1.20 local XVFB=$(type -p Xvfb)
60     local XHOST=$(type -p xhost)
61 azarah 1.1
62 azarah 1.20 # If $DISPLAY is not set, or xhost cannot connect to an X
63     # display, then do the Xvfb hack.
64     if [[ -n ${XVFB} && -n ${XHOST} ]] && \
65     ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
66 azarah 1.3 export XAUTHORITY=
67 azarah 1.4 # The following is derived from Mandrake's hack to allow
68     # compiling without the X display
69    
70 seemant 1.25 einfo "Scanning for an open DISPLAY to start Xvfb ..."
71 azarah 1.8
72     # We really do not want SANDBOX enabled here
73     export SANDBOX_DISABLED="1"
74 swegener 1.23
75 azarah 1.5 local i=0
76 abcd 1.30 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
77 swegener 1.23
78 azarah 1.5 # If we are in a chrooted environment, and there is already a
79     # X server started outside of the chroot, Xvfb will fail to start
80     # on the same display (most cases this is :0 ), so make sure
81     # Xvfb is started, else bump the display number
82     #
83     # Azarah - 5 May 2002
84     #
85 swegener 1.17 # 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 remi 1.29 # 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 &
97 azarah 1.5 sleep 2
98 swegener 1.23
99 jrray 1.10 local start=${XDISPLAY}
100 azarah 1.20 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
101 jrray 1.10 # Stop trying after 15 tries
102 abcd 1.30 if ((XDISPLAY - start > 15)) ; then
103 jrray 1.10
104     eerror ""
105     eerror "Unable to start Xvfb."
106     eerror ""
107 abcd 1.30 eerror "'${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:"
108 jrray 1.10 eerror ""
109 remi 1.29 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24
110 jrray 1.10 eerror ""
111     eerror "If possible, correct the above error and try your emerge again."
112     eerror ""
113     die
114     fi
115    
116 abcd 1.30 ((XDISPLAY++))
117 remi 1.29 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
118 azarah 1.5 sleep 2
119     done
120    
121 azarah 1.8 # Now enable SANDBOX again if needed.
122     export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}"
123    
124 azarah 1.6 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
125 swegener 1.23
126 azarah 1.1 export DISPLAY=:${XDISPLAY}
127     #Do not break on error, but setup $retval, as we need
128     #to kill Xvfb
129 abcd 1.30 ${maketype} "$@"
130 azarah 1.1 retval=$?
131    
132     #Now kill Xvfb
133     kill $(cat /tmp/.X${XDISPLAY}-lock)
134     else
135     #Normal make if we can connect to an X display
136 abcd 1.30 ${maketype} "$@"
137 azarah 1.1 retval=$?
138     fi
139 azarah 1.8
140 azarah 1.20 return ${retval}
141 azarah 1.1 }
142    
143     #Same as "make", but setup the Xvfb hack if needed
144 azarah 1.2 Xmake() {
145 azarah 1.1 export maketype="make"
146 abcd 1.30 virtualmake "$@"
147 azarah 1.1 }
148    
149     #Same as "emake", but setup the Xvfb hack if needed
150 azarah 1.2 Xemake() {
151 azarah 1.1 export maketype="emake"
152 abcd 1.30 virtualmake "$@"
153 azarah 1.1 }
154    
155 jje 1.14 #Same as "econf", but setup the Xvfb hack if needed
156     Xeconf() {
157     export maketype="econf"
158 abcd 1.30 virtualmake "$@"
159 jje 1.14 }

  ViewVC Help
Powered by ViewVC 1.1.20