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

Contents of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.34 - (hide annotations) (download)
Thu Mar 4 21:18:27 2010 UTC (4 years, 9 months ago) by abcd
Branch: MAIN
Changes since 1.33: +3 -3 lines
Make xorg-server optional on prefix (assume its available on the host, as it is not available in the prefix)

1 abcd 1.34 # Copyright 1999-2010 Gentoo Foundation
2 vapier 1.9 # Distributed under the terms of the GNU General Public License v2
3 abcd 1.34 # $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.33 2009/12/21 17:27:28 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 abcd 1.34 VIRTUALX_DEPEND="!prefix? ( x11-base/xorg-server )
21 abcd 1.30 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     virtualmake() {
48     local retval=0
49 abcd 1.33 local OLD_SANDBOX_ON="${SANDBOX_ON}"
50 azarah 1.20 local XVFB=$(type -p Xvfb)
51     local XHOST=$(type -p xhost)
52 azarah 1.1
53 azarah 1.20 # If $DISPLAY is not set, or xhost cannot connect to an X
54     # display, then do the Xvfb hack.
55     if [[ -n ${XVFB} && -n ${XHOST} ]] && \
56     ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
57 azarah 1.3 export XAUTHORITY=
58 azarah 1.4 # The following is derived from Mandrake's hack to allow
59     # compiling without the X display
60    
61 seemant 1.25 einfo "Scanning for an open DISPLAY to start Xvfb ..."
62 azarah 1.8
63     # We really do not want SANDBOX enabled here
64 abcd 1.33 export SANDBOX_ON="0"
65 swegener 1.23
66 azarah 1.5 local i=0
67 abcd 1.30 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
68 swegener 1.23
69 azarah 1.5 # If we are in a chrooted environment, and there is already a
70     # X server started outside of the chroot, Xvfb will fail to start
71     # on the same display (most cases this is :0 ), so make sure
72     # Xvfb is started, else bump the display number
73     #
74     # Azarah - 5 May 2002
75     #
76 swegener 1.17 # Changed the mode from 800x600x32 to 800x600x24 because the mfb
77     # support has been dropped in Xvfb in the xorg-x11 pre-releases.
78     # For now only depths up to 24-bit are supported.
79     #
80     # Sven Wegener <swegener@gentoo.org> - 22 Aug 2004
81     #
82 remi 1.29 # Use "-fp built-ins" because it's only part of the default font path
83     # for Xorg but not the other DDXs (Xvfb, Kdrive, etc). Temporarily fixes
84     # bug 278487 until xorg-server is properly patched
85     #
86     # RĂ©mi Cardona <remi@gentoo.org> (10 Aug 2009)
87     ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
88 azarah 1.5 sleep 2
89 swegener 1.23
90 jrray 1.10 local start=${XDISPLAY}
91 azarah 1.20 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
92 jrray 1.10 # Stop trying after 15 tries
93 abcd 1.30 if ((XDISPLAY - start > 15)) ; then
94 jrray 1.10
95     eerror ""
96     eerror "Unable to start Xvfb."
97     eerror ""
98 abcd 1.30 eerror "'${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:"
99 jrray 1.10 eerror ""
100 remi 1.29 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24
101 jrray 1.10 eerror ""
102     eerror "If possible, correct the above error and try your emerge again."
103     eerror ""
104     die
105     fi
106    
107 abcd 1.30 ((XDISPLAY++))
108 remi 1.29 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
109 azarah 1.5 sleep 2
110     done
111    
112 azarah 1.8 # Now enable SANDBOX again if needed.
113 abcd 1.33 export SANDBOX_ON="${OLD_SANDBOX_ON}"
114 azarah 1.8
115 azarah 1.6 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
116 swegener 1.23
117 azarah 1.1 export DISPLAY=:${XDISPLAY}
118     #Do not break on error, but setup $retval, as we need
119     #to kill Xvfb
120 abcd 1.30 ${maketype} "$@"
121 azarah 1.1 retval=$?
122    
123     #Now kill Xvfb
124     kill $(cat /tmp/.X${XDISPLAY}-lock)
125     else
126     #Normal make if we can connect to an X display
127 abcd 1.30 ${maketype} "$@"
128 azarah 1.1 retval=$?
129     fi
130 azarah 1.8
131 azarah 1.20 return ${retval}
132 azarah 1.1 }
133    
134     #Same as "make", but setup the Xvfb hack if needed
135 azarah 1.2 Xmake() {
136 azarah 1.1 export maketype="make"
137 abcd 1.30 virtualmake "$@"
138 azarah 1.1 }
139    
140     #Same as "emake", but setup the Xvfb hack if needed
141 azarah 1.2 Xemake() {
142 azarah 1.1 export maketype="emake"
143 abcd 1.30 virtualmake "$@"
144 azarah 1.1 }
145    
146 jje 1.14 #Same as "econf", but setup the Xvfb hack if needed
147     Xeconf() {
148     export maketype="econf"
149 abcd 1.30 virtualmake "$@"
150 jje 1.14 }

  ViewVC Help
Powered by ViewVC 1.1.20