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

Contents of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.20 - (hide annotations) (download)
Tue Jun 7 14:26:03 2005 UTC (9 years, 3 months ago) by azarah
Branch: MAIN
Changes since 1.19: +17 -16 lines
Do not pull in X if not requested.  Some syntax fixes.

1 vapier 1.16 # Copyright 1999-2004 Gentoo Foundation
2 vapier 1.9 # Distributed under the terms of the GNU General Public License v2
3 azarah 1.20 # $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.19 2004/11/04 10:53:14 ferringb 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 azarah 1.1 ECLASS=virtualx
10 danarmak 1.7 INHERITED="$INHERITED $ECLASS"
11 azarah 1.20 DEPEND="X? ( virtual/x11 )"
12 azarah 1.1
13 vapier 1.13 DESCRIPTION="Based on the $ECLASS eclass"
14 azarah 1.1
15 ferringb 1.19 #
16     # Brian Harring <ferringb@gentoo.org> 11/04/2004
17     # do not disable the sandbox during the depend phase.
18     # ebuilds shouldn't touch the fs during depend phase, nor screw with the sandbox.
19     #
20 azarah 1.20 if [[ ${EBUILD_PHASE/depend} == "${EBUILD_PHASE}" ]] ; then
21     [[ -z ${SANDBOX_DISABLED} ]] && export SANDBOX_DISABLED="0" || :
22 ferringb 1.19 fi
23 azarah 1.8
24 azarah 1.1 virtualmake() {
25     local retval=0
26 azarah 1.8 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}"
27 azarah 1.20 local XVFB=$(type -p Xvfb)
28     local XHOST=$(type -p xhost)
29 azarah 1.1
30 azarah 1.20 # If $DISPLAY is not set, or xhost cannot connect to an X
31     # display, then do the Xvfb hack.
32     if [[ -n ${XVFB} && -n ${XHOST} ]] && \
33     ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
34 azarah 1.3 export XAUTHORITY=
35 azarah 1.4 # The following is derived from Mandrake's hack to allow
36     # compiling without the X display
37    
38 vapier 1.18 einfo "Scanning for a open DISPLAY to start Xvfb ..."
39 azarah 1.8
40     # We really do not want SANDBOX enabled here
41     export SANDBOX_DISABLED="1"
42 azarah 1.5
43     local i=0
44 azarah 1.20 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do i=$((${i}+1));done; echo ${i})
45 azarah 1.5
46     # If we are in a chrooted environment, and there is already a
47     # X server started outside of the chroot, Xvfb will fail to start
48     # on the same display (most cases this is :0 ), so make sure
49     # Xvfb is started, else bump the display number
50     #
51     # Azarah - 5 May 2002
52     #
53 swegener 1.17 # Changed the mode from 800x600x32 to 800x600x24 because the mfb
54     # support has been dropped in Xvfb in the xorg-x11 pre-releases.
55     # For now only depths up to 24-bit are supported.
56     #
57     # Sven Wegener <swegener@gentoo.org> - 22 Aug 2004
58     #
59 azarah 1.20 ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null &
60 azarah 1.5 sleep 2
61    
62 jrray 1.10 local start=${XDISPLAY}
63 azarah 1.20 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
64 jrray 1.10 # Stop trying after 15 tries
65 azarah 1.20 if [[ $((${XDISPLAY} - ${start})) -gt 15 ]] ; then
66 jrray 1.10
67     eerror ""
68     eerror "Unable to start Xvfb."
69     eerror ""
70 swegener 1.17 eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x24' returns:"
71 jrray 1.10 eerror ""
72 azarah 1.20 ${XVFB} :${XDISPLAY} -screen 0 800x600x24
73 jrray 1.10 eerror ""
74     eerror "If possible, correct the above error and try your emerge again."
75     eerror ""
76     die
77     fi
78    
79 azarah 1.5 XDISPLAY=$((${XDISPLAY}+1))
80 azarah 1.20 ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null &
81 azarah 1.5 sleep 2
82     done
83    
84 azarah 1.8 # Now enable SANDBOX again if needed.
85     export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}"
86    
87 azarah 1.6 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
88 azarah 1.1
89     export DISPLAY=:${XDISPLAY}
90     #Do not break on error, but setup $retval, as we need
91     #to kill Xvfb
92     ${maketype} $*
93     retval=$?
94    
95     #Now kill Xvfb
96     kill $(cat /tmp/.X${XDISPLAY}-lock)
97     else
98     #Normal make if we can connect to an X display
99     ${maketype} $*
100     retval=$?
101     fi
102 azarah 1.8
103 azarah 1.20 return ${retval}
104 azarah 1.1 }
105    
106     #Same as "make", but setup the Xvfb hack if needed
107 azarah 1.2 Xmake() {
108 azarah 1.1 export maketype="make"
109     virtualmake "$*"
110     }
111    
112     #Same as "emake", but setup the Xvfb hack if needed
113 azarah 1.2 Xemake() {
114 azarah 1.1 export maketype="emake"
115     virtualmake "$*"
116     }
117    
118 jje 1.14 #Same as "econf", but setup the Xvfb hack if needed
119     Xeconf() {
120     export maketype="econf"
121     virtualmake "$*"
122     }

  ViewVC Help
Powered by ViewVC 1.1.20