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

Contents of /eclass/virtualx.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.35 - (hide annotations) (download)
Sat May 15 05:40:46 2010 UTC (4 years, 3 months ago) by dirtyepic
Branch: MAIN
Changes since 1.34: +31 -18 lines
Document for eclass-manpages.

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 dirtyepic 1.35 # $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.34 2010/03/04 21:18:27 abcd Exp $
4    
5     # Original author: Martin Schlemmer <azarah@gentoo.org>
6    
7     # @ECLASS: virtualx.eclass
8     # @MAINTAINER:
9     # x11@gentoo.org
10     # @BLURB: This eclass can be used for packages that needs a working X environment to build.
11    
12     # @ECLASS-VARIABLE: VIRTUALX_REQUIRED
13     # @DESCRIPTION:
14     # Is a dependency on xorg-server and xhost needed?
15     # Valid values are "always", "optional", and "manual".
16     # "tests" is a synonym for "optional".
17 abcd 1.32 : ${VIRTUALX_REQUIRED:=optional}
18    
19 dirtyepic 1.35 # @ECLASS-VARIABLE: VIRTUALX_USE
20     # @DESCRIPTION:
21     # If VIRTUALX_REQUIRED=optional, what USE flag should control
22     # the dependency?
23 abcd 1.32 : ${VIRTUALX_USE:=test}
24 abcd 1.30
25 dirtyepic 1.35 # @ECLASS-VARIABLE: VIRTUALX_DEPEND
26     # @DESCRIPTION:
27     # Dep string available for use outside of eclass, in case a more
28     # complicated dep is needed.
29 abcd 1.34 VIRTUALX_DEPEND="!prefix? ( x11-base/xorg-server )
30 abcd 1.30 x11-apps/xhost"
31    
32     case ${VIRTUALX_REQUIRED} in
33     always)
34     DEPEND="${VIRTUALX_DEPEND}"
35     RDEPEND=""
36     ;;
37 abcd 1.32 optional|tests)
38     DEPEND="${VIRTUALX_USE}? ( ${VIRTUALX_DEPEND} )"
39 abcd 1.30 RDEPEND=""
40 abcd 1.32 IUSE="${VIRTUALX_USE}"
41 abcd 1.30 ;;
42     manual)
43     ;;
44     *)
45     eerror "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
46     eerror "Valid values are:"
47     eerror " always"
48 abcd 1.32 eerror " optional (default if unset)"
49 abcd 1.30 eerror " manual"
50     die "Invalid value (${VIRTUALX_REQUIRED}) for VIRTUALX_REQUIRED"
51     ;;
52     esac
53 azarah 1.1
54     virtualmake() {
55     local retval=0
56 abcd 1.33 local OLD_SANDBOX_ON="${SANDBOX_ON}"
57 azarah 1.20 local XVFB=$(type -p Xvfb)
58     local XHOST=$(type -p xhost)
59 azarah 1.1
60 azarah 1.20 # If $DISPLAY is not set, or xhost cannot connect to an X
61     # display, then do the Xvfb hack.
62     if [[ -n ${XVFB} && -n ${XHOST} ]] && \
63     ( [[ -z ${DISPLAY} ]] || ! (${XHOST} &>/dev/null) ) ; then
64 azarah 1.3 export XAUTHORITY=
65 azarah 1.4 # The following is derived from Mandrake's hack to allow
66     # compiling without the X display
67    
68 seemant 1.25 einfo "Scanning for an open DISPLAY to start Xvfb ..."
69 azarah 1.8
70     # We really do not want SANDBOX enabled here
71 abcd 1.33 export SANDBOX_ON="0"
72 swegener 1.23
73 azarah 1.5 local i=0
74 abcd 1.30 XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
75 swegener 1.23
76 azarah 1.5 # If we are in a chrooted environment, and there is already a
77     # X server started outside of the chroot, Xvfb will fail to start
78     # on the same display (most cases this is :0 ), so make sure
79     # Xvfb is started, else bump the display number
80     #
81     # Azarah - 5 May 2002
82     #
83 swegener 1.17 # Changed the mode from 800x600x32 to 800x600x24 because the mfb
84     # support has been dropped in Xvfb in the xorg-x11 pre-releases.
85     # For now only depths up to 24-bit are supported.
86     #
87     # Sven Wegener <swegener@gentoo.org> - 22 Aug 2004
88     #
89 remi 1.29 # Use "-fp built-ins" because it's only part of the default font path
90     # for Xorg but not the other DDXs (Xvfb, Kdrive, etc). Temporarily fixes
91     # bug 278487 until xorg-server is properly patched
92     #
93     # RĂ©mi Cardona <remi@gentoo.org> (10 Aug 2009)
94     ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
95 azarah 1.5 sleep 2
96 swegener 1.23
97 jrray 1.10 local start=${XDISPLAY}
98 azarah 1.20 while [[ ! -f /tmp/.X${XDISPLAY}-lock ]] ; do
99 jrray 1.10 # Stop trying after 15 tries
100 abcd 1.30 if ((XDISPLAY - start > 15)) ; then
101 jrray 1.10
102     eerror ""
103     eerror "Unable to start Xvfb."
104     eerror ""
105 abcd 1.30 eerror "'${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24' returns:"
106 jrray 1.10 eerror ""
107 remi 1.29 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24
108 jrray 1.10 eerror ""
109     eerror "If possible, correct the above error and try your emerge again."
110     eerror ""
111     die
112     fi
113    
114 abcd 1.30 ((XDISPLAY++))
115 remi 1.29 ${XVFB} :${XDISPLAY} -fp built-ins -screen 0 800x600x24 &>/dev/null &
116 azarah 1.5 sleep 2
117     done
118    
119 azarah 1.8 # Now enable SANDBOX again if needed.
120 abcd 1.33 export SANDBOX_ON="${OLD_SANDBOX_ON}"
121 azarah 1.8
122 azarah 1.6 einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ..."
123 swegener 1.23
124 azarah 1.1 export DISPLAY=:${XDISPLAY}
125     #Do not break on error, but setup $retval, as we need
126     #to kill Xvfb
127 abcd 1.30 ${maketype} "$@"
128 azarah 1.1 retval=$?
129    
130     #Now kill Xvfb
131     kill $(cat /tmp/.X${XDISPLAY}-lock)
132     else
133     #Normal make if we can connect to an X display
134 abcd 1.30 ${maketype} "$@"
135 azarah 1.1 retval=$?
136     fi
137 azarah 1.8
138 azarah 1.20 return ${retval}
139 azarah 1.1 }
140    
141 dirtyepic 1.35 # @FUNCTION: Xmake
142     # @DESCRIPTION:
143     # Same as "make", but set up the Xvfb hack if needed.
144 azarah 1.2 Xmake() {
145 azarah 1.1 export maketype="make"
146 abcd 1.30 virtualmake "$@"
147 azarah 1.1 }
148    
149 dirtyepic 1.35 # @FUNCTION: Xemake
150     # @DESCRIPTION:
151     # Same as "emake", but set up the Xvfb hack if needed.
152 azarah 1.2 Xemake() {
153 azarah 1.1 export maketype="emake"
154 abcd 1.30 virtualmake "$@"
155 azarah 1.1 }
156    
157 dirtyepic 1.35 # @FUNCTION: Xeconf
158     # @DESCRIPTION:
159     # Same as "econf", but set up the Xvfb hack if needed.
160 jje 1.14 Xeconf() {
161     export maketype="econf"
162 abcd 1.30 virtualmake "$@"
163 jje 1.14 }

  ViewVC Help
Powered by ViewVC 1.1.20