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

Contents of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.18 - (hide annotations) (download)
Tue Oct 19 19:51:12 2004 UTC (10 years, 2 months ago) by vapier
Branch: MAIN
Changes since 1.17: +2 -2 lines
'...' -> ' ...'

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

  ViewVC Help
Powered by ViewVC 1.1.20