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

Contents of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.29 - (hide annotations) (download)
Mon Aug 10 15:44:37 2009 UTC (5 years, 1 month ago) by remi
Branch: MAIN
Changes since 1.28: +10 -5 lines
add workaround in virtualx to fix 'missing fixed font' (bug #278487)

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

  ViewVC Help
Powered by ViewVC 1.1.20