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

Contents of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (download) (vendor branch)
Wed Nov 30 09:59:31 2005 UTC (9 years ago) by chriswhite
Changes since 1.1: +87 -17 lines
*** empty log message ***

1 chriswhite 1.1.1.1 # Copyright 1999-2004 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3     # $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.24 2005/09/23 20:14:32 dang Exp $
4     #
5 azarah 1.1 # Author: Martin Schlemmer <azarah@gentoo.org>
6 chriswhite 1.1.1.1 #
7 azarah 1.1 # This eclass can be used for packages that needs a working X environment to build
8 chriswhite 1.1.1.1
9     DEPEND="X? ( || ( x11-base/xorg-server virtual/x11 ) )"
10     IUSE="X"
11 azarah 1.1
12     DESCRIPTION="Based on the $ECLASS eclass"
13    
14 chriswhite 1.1.1.1 #
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     if [[ ${EBUILD_PHASE/depend} == "${EBUILD_PHASE}" ]] ; then
20     [[ -z ${SANDBOX_DISABLED} ]] && export SANDBOX_DISABLED="0" || :
21     fi
22    
23 azarah 1.1 virtualmake() {
24     local retval=0
25 chriswhite 1.1.1.1 local OLD_SANDBOX_DISABLED="${SANDBOX_DISABLED}"
26     local XVFB=$(type -p Xvfb)
27     local XHOST=$(type -p xhost)
28    
29     # 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     export XAUTHORITY=
34     # The following is derived from Mandrake's hack to allow
35     # compiling without the X display
36    
37     einfo "Scanning for a open DISPLAY to start Xvfb ..."
38    
39     # We really do not want SANDBOX enabled here
40     export SANDBOX_DISABLED="1"
41 azarah 1.1
42     local i=0
43 chriswhite 1.1.1.1 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do i=$((${i}+1));done; echo ${i})
44    
45     # 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     # 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     ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null &
59     sleep 2
60    
61     local start=${XDISPLAY}
62     while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
63     # Stop trying after 15 tries
64     if [[ $((${XDISPLAY} - ${start})) -gt 15 ]] ; then
65    
66     eerror ""
67     eerror "Unable to start Xvfb."
68     eerror ""
69     eerror "'/usr/X11R6/bin/Xvfb :${XDISPLAY} -screen 0 800x600x24' returns:"
70     eerror ""
71     ${XVFB} :${XDISPLAY} -screen 0 800x600x24
72     eerror ""
73     eerror "If possible, correct the above error and try your emerge again."
74     eerror ""
75     die
76     fi
77    
78     XDISPLAY=$((${XDISPLAY}+1))
79     ${XVFB} :${XDISPLAY} -screen 0 800x600x24 &>/dev/null &
80     sleep 2
81     done
82    
83     # Now enable SANDBOX again if needed.
84     export SANDBOX_DISABLED="${OLD_SANDBOX_DISABLED}"
85    
86     einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
87    
88 azarah 1.1 export DISPLAY=:${XDISPLAY}
89     #Do not break on error, but setup $retval, as we need
90     #to kill Xvfb
91     ${maketype} $*
92     retval=$?
93    
94     #Now kill Xvfb
95     kill $(cat /tmp/.X${XDISPLAY}-lock)
96     else
97     #Normal make if we can connect to an X display
98     ${maketype} $*
99     retval=$?
100     fi
101 chriswhite 1.1.1.1
102     return ${retval}
103 azarah 1.1 }
104    
105     #Same as "make", but setup the Xvfb hack if needed
106 chriswhite 1.1.1.1 Xmake() {
107 azarah 1.1 export maketype="make"
108     virtualmake "$*"
109     }
110    
111     #Same as "emake", but setup the Xvfb hack if needed
112 chriswhite 1.1.1.1 Xemake() {
113 azarah 1.1 export maketype="emake"
114     virtualmake "$*"
115     }
116    
117 chriswhite 1.1.1.1 #Same as "econf", but setup the Xvfb hack if needed
118     Xeconf() {
119     export maketype="econf"
120     virtualmake "$*"
121     }

  ViewVC Help
Powered by ViewVC 1.1.20