]> git.draconx.ca Git - gentoo-draconx.git/blob - x11-base/xorg-server/xorg-server-9999.ebuild
xorg-server: Sync with X11 overlay and remove GLX patch.
[gentoo-draconx.git] / x11-base / xorg-server / xorg-server-9999.ebuild
1 # Copyright 1999-2009 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: $
4
5 EAPI=3
6 inherit xorg-2 multilib versionator
7
8 EGIT_REPO_URI="git://anongit.freedesktop.org/git/xorg/xserver"
9
10 OPENGL_DIR="xorg-x11"
11
12 DESCRIPTION="X.Org X servers"
13 KEYWORDS=""
14
15 IUSE_SERVERS="dmx kdrive xorg"
16 IUSE="${IUSE_SERVERS} doc tslib ipv6 minimal nptl +udev"
17 RDEPEND=">=app-admin/eselect-opengl-1.0.8
18         dev-libs/openssl
19         media-libs/freetype
20         >=x11-apps/iceauth-1.0.2
21         >=x11-apps/rgb-1.0.3
22         >=x11-apps/xauth-1.0.3
23         x11-apps/xkbcomp
24         >=x11-libs/libpciaccess-0.10.3
25         >=x11-libs/libXau-1.0.4
26         >=x11-libs/libXdmcp-1.0.2
27         >=x11-libs/libXfont-1.3.3
28         >=x11-libs/libxkbfile-1.0.4
29         >=x11-libs/pixman-0.15.20
30         >=x11-libs/xtrans-1.2.2
31         >=x11-misc/xbitmaps-1.0.1
32         >=x11-misc/xkeyboard-config-1.4
33         dmx? (
34                 x11-libs/libXt
35                 >=x11-libs/libdmx-1.0.99.1
36                 >=x11-libs/libX11-1.1.5
37                 >=x11-libs/libXaw-1.0.4
38                 >=x11-libs/libXext-1.0.5
39                 >=x11-libs/libXfixes-4.0.3
40                 >=x11-libs/libXi-1.2.99.1
41                 >=x11-libs/libXmu-1.0.3
42                 >=x11-libs/libXres-1.0.3
43                 >=x11-libs/libXtst-1.0.3
44         )
45         kdrive? (
46                 >=x11-libs/libXext-1.0.5
47         )
48         !minimal? (
49                 >=x11-libs/libX11-1.1.5
50                 >=x11-libs/libXext-1.0.5
51                 >=media-libs/mesa-7.8_rc[nptl=]
52         )
53         tslib? ( >=x11-libs/tslib-1.0 x11-proto/xcalibrateproto )
54         udev? ( sys-fs/udev )"
55
56 DEPEND="${RDEPEND}
57         sys-devel/flex
58         >=x11-proto/bigreqsproto-1.1.0
59         >=x11-proto/compositeproto-0.4
60         >=x11-proto/damageproto-1.1
61         >=x11-proto/fixesproto-4.1
62         >=x11-proto/fontsproto-2.0.2
63         >=x11-proto/glproto-1.4.11
64         >=x11-proto/inputproto-1.9.99.902
65         >=x11-proto/kbproto-1.0.3
66         >=x11-proto/randrproto-1.2.99.3
67         >=x11-proto/recordproto-1.13.99.1
68         >=x11-proto/renderproto-0.11
69         >=x11-proto/resourceproto-1.0.2
70         >=x11-proto/scrnsaverproto-1.1
71         >=x11-proto/trapproto-3.4.3
72         >=x11-proto/videoproto-2.2.2
73         >=x11-proto/xcmiscproto-1.2.0
74         >=x11-proto/xextproto-7.0.99.3
75         >=x11-proto/xf86dgaproto-2.0.99.1
76         >=x11-proto/xf86rushproto-1.1.2
77         >=x11-proto/xf86vidmodeproto-2.2.99.1
78         >=x11-proto/xineramaproto-1.1.3
79         >=x11-proto/xproto-7.0.17
80         dmx? ( >=x11-proto/dmxproto-2.2.99.1 )
81         doc? (
82                 >=app-doc/doxygen-1.6.1
83                 app-text/xmlto
84         )
85         !minimal? (
86                 >=x11-proto/xf86driproto-2.1.0
87                 >=x11-proto/dri2proto-2.1
88                 >=x11-libs/libdrm-2.3.0
89         )"
90
91 PDEPEND="
92         >=x11-apps/xinit-1.2.1-r1
93         xorg? ( x11-base/xorg-drivers )"
94
95 EPATCH_FORCE="yes"
96 EPATCH_SUFFIX="patch"
97
98 # These have been sent upstream
99 #UPSTREAMED_PATCHES=(
100 #       "${WORKDIR}/patches/"
101 #       )
102
103 PATCHES=(
104         "${UPSTREAMED_PATCHES[@]}"
105         "${FILESDIR}"/${PN}-disable-acpi.patch
106         )
107
108 pkg_setup() {
109         xorg-2_pkg_setup
110
111         use minimal || ensure_a_server_is_building
112
113         # localstatedir is used for the log location; we need to override the default
114         #       from ebuild.sh
115         # sysconfdir is used for the xorg.conf location; same applies
116         #       --enable-install-setuid needed because sparcs default off
117         # NOTE: fop is used for doc generating ; and i have no idea if gentoo
118         #        package it somewhere
119         CONFIGURE_OPTIONS="
120                 $(use_enable ipv6)
121                 $(use_enable dmx)
122                 $(use_enable kdrive)
123                 $(use_enable tslib)
124                 $(use_enable tslib xcalibrate)
125                 $(use_enable !minimal xvfb)
126                 $(use_enable !minimal xnest)
127                 $(use_enable !minimal record)
128                 $(use_enable !minimal xfree86-utils)
129                 $(use_enable !minimal install-libxf86config)
130                 $(use_enable !minimal dri)
131                 $(use_enable !minimal dri2)
132                 $(use_enable !minimal glx)
133                 $(use_enable xorg)
134                 $(use_enable nptl glx-tls)
135                 $(use_enable udev config-udev)
136                 $(use_with doc doxygen)
137                 $(use_with doc xmlto)
138                 --sysconfdir=/etc/X11
139                 --localstatedir=/var
140                 --enable-install-setuid
141                 --with-fontrootdir=/usr/share/fonts
142                 --with-xkb-output=/var/lib/xkb
143                 --disable-config-hal
144                 --without-dtrace
145                 --without-fop
146                 --with-os-vendor=Gentoo
147                 ${conf_opts}"
148
149         # (#121394) Causes window corruption
150         filter-flags -fweb
151
152         # Incompatible with GCC 3.x SSP on x86, bug #244352
153         if use x86 ; then
154                 if [[ $(gcc-major-version) -lt 4 ]]; then
155                         filter-flags -fstack-protector
156                 fi
157         fi
158
159         # Incompatible with GCC 3.x CPP, bug #314615
160         if [[ $(gcc-major-version) -lt 4 ]]; then
161                 ewarn "GCC 3.x C preprocessor may cause build failures. Use GCC 4.x"
162                 ewarn "or set CPP=cpp-4.3.4 (replace with the actual installed version)"
163         fi
164
165         # detect if we should inform user about ebuild breakage
166         if ! has_version "x11-base/xorg-server" ||
167                         has_version "<x11-base/xorg-server-$(get_version_component_range 1-2)"; then
168                 INFO="yes"
169         fi
170 }
171
172 src_configure() {
173         # this is required only for configure and build time
174         # we need to ensure having enough glxtokens
175         # the subshell is needed so the addwrite is not shared in rest of that phase
176         OLD_IMPLEM="$(eselect opengl show)"
177         [[ ${OLD_IMPLEM} != ${OPENGL_DIR} ]] && ( addwrite "${ROOT}"; eselect opengl set ${OPENGL_DIR}; )
178         xorg-2_src_configure
179 }
180
181 src_compile() {
182         emake # no die here intentional
183         if [[ $? != 0 ]]; then
184                 [[ ${OLD_IMPLEM} != ${OPENGL_DIR} ]] && ( addwrite "${ROOT}"; eselect opengl set ${OLD_IMPLEM}; )
185                 die "Compilation failed"
186         fi
187         [[ ${OLD_IMPLEM} != ${OPENGL_DIR} ]] && ( addwrite "${ROOT}"; eselect opengl set ${OLD_IMPLEM}; )
188 }
189
190 src_install() {
191         xorg-2_src_install
192
193         dynamic_libgl_install
194
195         server_based_install
196
197         if ! use minimal &&     use xorg; then
198                 # Install xorg.conf.example into docs
199                 dodoc hw/xfree86/xorg.conf.example \
200                         || die "couldn't install xorg.conf.example"
201         fi
202
203         # install the xdm.init
204         cp "${FILESDIR}"/xdm.initd "${T}"
205         sed -i \
206                 -e "/@HALD_DEPEND@/ d" \
207                 "${T}"/xdm.initd \
208                 || die "sed failed"
209         newinitd "${T}"/xdm.initd xdm || die "initd file install failed"
210         newinitd "${FILESDIR}"/xdm-setup.initd-1 xdm-setup || die
211         newconfd "${FILESDIR}"/xdm.confd-3 xdm || die
212
213         # install the @x11-module-rebuild set for Portage
214         insinto /usr/share/portage/config/sets
215         newins "${FILESDIR}"/xorg-sets.conf xorg.conf || die
216 }
217
218 pkg_postinst() {
219         if [[ ${INFO} = yes ]]; then
220                 einfo "You should consider reading upgrade guide for this release:"
221                 einfo " http://www.gentoo.org/proj/en/desktop/x/x11/xorg-server-$(get_version_component_range 1-2)-upgrade-guide.xml"
222                 echo
223                 ewarn "You must rebuild all drivers if upgrading from <xorg-server-$(get_version_component_range 1-2)"
224                 ewarn "because the ABI changed. If you cannot start X because"
225                 ewarn "of module version mismatch errors, this is your problem."
226
227                 echo
228                 ewarn "You can generate a list of all installed packages in the x11-drivers"
229                 ewarn "category using this command:"
230                 ewarn " emerge portage-utils; qlist -I -C x11-drivers/"
231         fi
232 }
233
234 pkg_postrm() {
235         # Get rid of module dir to ensure opengl-update works properly
236         if ! has_version x11-base/xorg-server; then
237                 if [[ -e ${ROOT}/usr/$(get_libdir)/xorg/modules ]]; then
238                         rm -rf "${ROOT}"/usr/$(get_libdir)/xorg/modules
239                 fi
240         fi
241 }
242
243 dynamic_libgl_install() {
244         # next section is to setup the dynamic libGL stuff
245         ebegin "Moving GL files for dynamic switching"
246                 dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
247                 local x=""
248                 for x in "${D}"/usr/$(get_libdir)/xorg/modules/extensions/lib{glx,dri,dri2}*; do
249                         if [ -f ${x} -o -L ${x} ]; then
250                                 mv -f ${x} "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
251                         fi
252                 done
253         eend 0
254 }
255
256 server_based_install() {
257         if ! use xorg; then
258                 rm "${D}"/usr/share/man/man1/Xserver.1x \
259                         "${D}"/usr/$(get_libdir)/xserver/SecurityPolicy \
260                         "${D}"/usr/$(get_libdir)/pkgconfig/xorg-server.pc \
261                         "${D}"/usr/share/man/man1/Xserver.1x
262         fi
263 }
264
265 ensure_a_server_is_building() {
266         for server in ${IUSE_SERVERS}; do
267                 use ${server} && return;
268         done
269         eerror "You need to specify at least one server to build."
270         eerror "Valid servers are: ${IUSE_SERVERS}."
271         die "No servers were specified to build."
272 }