]> git.draconx.ca Git - gentoo-draconx.git/blob - x11-base/xorg-server/xorg-server-9999.ebuild
b059c99d778d1d050d349d885841f75ee66cc1c1
[gentoo-draconx.git] / x11-base / xorg-server / xorg-server-9999.ebuild
1 # Copyright 1999-2010 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/x11-base/xorg-server/xorg-server-1.9.0.ebuild,v 1.1 2010/09/12 18:41:36 chithanh Exp $
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 ipv6 minimal nptl tslib +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.4.2
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                 x11-libs/libXv
48         )
49         !minimal? (
50                 >=x11-libs/libX11-1.1.5
51                 >=x11-libs/libXext-1.0.5
52                 >=media-libs/mesa-7.8_rc[nptl=]
53         )
54         tslib? ( >=x11-libs/tslib-1.0 x11-proto/xcalibrateproto )
55         udev? ( >=sys-fs/udev-150 )"
56
57 DEPEND="${RDEPEND}
58         sys-devel/flex
59         >=x11-proto/bigreqsproto-1.1.0
60         >=x11-proto/compositeproto-0.4
61         >=x11-proto/damageproto-1.1
62         >=x11-proto/fixesproto-4.1
63         >=x11-proto/fontsproto-2.0.2
64         >=x11-proto/glproto-1.4.11
65         >=x11-proto/inputproto-1.9.99.902
66         >=x11-proto/kbproto-1.0.3
67         >=x11-proto/randrproto-1.2.99.3
68         >=x11-proto/recordproto-1.13.99.1
69         >=x11-proto/renderproto-0.11
70         >=x11-proto/resourceproto-1.0.2
71         >=x11-proto/scrnsaverproto-1.1
72         >=x11-proto/trapproto-3.4.3
73         >=x11-proto/videoproto-2.2.2
74         >=x11-proto/xcmiscproto-1.2.0
75         >=x11-proto/xextproto-7.0.99.3
76         >=x11-proto/xf86dgaproto-2.0.99.1
77         >=x11-proto/xf86rushproto-1.1.2
78         >=x11-proto/xf86vidmodeproto-2.2.99.1
79         >=x11-proto/xineramaproto-1.1.3
80         >=x11-proto/xproto-7.0.17
81         dmx? ( >=x11-proto/dmxproto-2.2.99.1 )
82         doc? (
83                 >=app-doc/doxygen-1.6.1
84                 app-text/xmlto
85         )
86         !minimal? (
87                 >=x11-proto/xf86driproto-2.1.0
88                 >=x11-proto/dri2proto-2.3
89                 >=x11-libs/libdrm-2.4.20
90         )"
91
92 PDEPEND="
93         >=x11-apps/xinit-1.2.1-r1
94         xorg? ( x11-base/xorg-drivers )"
95
96 EPATCH_FORCE="yes"
97 EPATCH_SUFFIX="patch"
98
99 # These have been sent upstream
100 #UPSTREAMED_PATCHES=(
101 #       "${WORKDIR}/patches/"
102 #       )
103
104 PATCHES=(
105         "${UPSTREAMED_PATCHES[@]}"
106         "${FILESDIR}"/${PN}-disable-acpi.patch
107         "${FILESDIR}"/${PN}-1.9-nouveau-default.patch
108         "${FILESDIR}"/1.7.5.902-fix-tslib-1.0-check.patch
109         )
110
111 pkg_setup() {
112         xorg-2_pkg_setup
113
114         use minimal || ensure_a_server_is_building
115
116         # localstatedir is used for the log location; we need to override the default
117         #       from ebuild.sh
118         # sysconfdir is used for the xorg.conf location; same applies
119         #       --enable-install-setuid needed because sparcs default off
120         # NOTE: fop is used for doc generating ; and i have no idea if gentoo
121         #       package it somewhere
122         CONFIGURE_OPTIONS="
123                 $(use_enable ipv6)
124                 $(use_enable dmx)
125                 $(use_enable kdrive)
126                 $(use_enable kdrive kdrive-kbd)
127                 $(use_enable kdrive kdrive-mouse)
128                 $(use_enable kdrive kdrive-evdev)
129                 $(use_enable tslib)
130                 $(use_enable tslib xcalibrate)
131                 $(use_enable !minimal xvfb)
132                 $(use_enable !minimal xnest)
133                 $(use_enable !minimal record)
134                 $(use_enable !minimal xfree86-utils)
135                 $(use_enable !minimal install-libxf86config)
136                 $(use_enable !minimal dri)
137                 $(use_enable !minimal dri2)
138                 $(use_enable !minimal glx)
139                 $(use_enable xorg)
140                 $(use_enable nptl glx-tls)
141                 $(use_enable udev config-udev)
142                 $(use_with doc doxygen)
143                 $(use_with doc xmlto)
144                 --sysconfdir=/etc/X11
145                 --localstatedir=/var
146                 --enable-install-setuid
147                 --with-fontrootdir=/usr/share/fonts
148                 --with-xkb-output=/var/lib/xkb
149                 --disable-config-hal
150                 --without-dtrace
151                 --without-fop
152                 --with-os-vendor=Gentoo
153                 ${conf_opts}"
154
155         # Xorg-server requires includes from OS mesa which are not visible for
156         # users of binary drivers.
157         # Due to the limitations of CONFIGURE_OPTIONS, we have to export this
158         mkdir -p "${T}/mesa-symlinks/GL"
159         for i in gl glx glxmd glxproto glxtokens; do
160                 ln -s "${EROOT}usr/$(get_libdir)/opengl/xorg-x11/include/$i.h" "${T}/mesa-symlinks/GL/$i.h" || die
161         done
162         for i in glext glxext; do
163                 ln -s "${EROOT}usr/$(get_libdir)/opengl/global/include/$i.h" "${T}/mesa-symlinks/GL/$i.h" || die
164         done
165         append-cppflags "-I${T}/mesa-symlinks"
166
167         # (#121394) Causes window corruption
168         filter-flags -fweb
169
170         # Incompatible with GCC 3.x SSP on x86, bug #244352
171         if use x86 ; then
172                 if [[ $(gcc-major-version) -lt 4 ]]; then
173                         filter-flags -fstack-protector
174                 fi
175         fi
176
177         # Incompatible with GCC 3.x CPP, bug #314615
178         if [[ $(gcc-major-version) -lt 4 ]]; then
179                 ewarn "GCC 3.x C preprocessor may cause build failures. Use GCC 4.x"
180                 ewarn "or set CPP=cpp-4.3.4 (replace with the actual installed version)"
181         fi
182
183         # detect if we should inform user about ebuild breakage
184         if ! has_version "x11-base/xorg-server" ||
185                         has_version "<x11-base/xorg-server-$(get_version_component_range 1-2)"; then
186                 INFO="yes"
187         fi
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         newinitd "${FILESDIR}"/xdm-setup.initd-1 xdm-setup || die
204         newinitd "${FILESDIR}"/xdm.initd-3 xdm || die
205         newconfd "${FILESDIR}"/xdm.confd-3 xdm || die
206
207         # install the @x11-module-rebuild set for Portage
208         insinto /usr/share/portage/config/sets
209         newins "${FILESDIR}"/xorg-sets.conf xorg.conf || die
210 }
211
212 pkg_postinst() {
213         # sets up libGL and DRI2 symlinks if needed (ie, on a fresh install)
214         eselect opengl set --use-old xorg-x11
215
216         if [[ ${INFO} = yes ]]; then
217                 einfo "You should consider reading upgrade guide for this release:"
218                 einfo " http://www.gentoo.org/proj/en/desktop/x/x11/xorg-server-$(get_version_component_range 1-2)-upgrade-guide.xml"
219                 echo
220                 ewarn "You must rebuild all drivers if upgrading from <xorg-server-$(get_version_component_range 1-2)"
221                 ewarn "because the ABI changed. If you cannot start X because"
222                 ewarn "of module version mismatch errors, this is your problem."
223
224                 echo
225                 ewarn "You can generate a list of all installed packages in the x11-drivers"
226                 ewarn "category using this command:"
227                 ewarn " emerge portage-utils; qlist -I -C x11-drivers/"
228         fi
229 }
230
231 pkg_postrm() {
232         # Get rid of module dir to ensure opengl-update works properly
233         if ! has_version x11-base/xorg-server; then
234                 if [[ -e ${ROOT}/usr/$(get_libdir)/xorg/modules ]]; then
235                         rm -rf "${ROOT}"/usr/$(get_libdir)/xorg/modules
236                 fi
237         fi
238 }
239
240 dynamic_libgl_install() {
241         # next section is to setup the dynamic libGL stuff
242         ebegin "Moving GL files for dynamic switching"
243                 dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
244                 local x=""
245                 for x in "${D}"/usr/$(get_libdir)/xorg/modules/extensions/lib{glx,dri,dri2}*; do
246                         if [ -f ${x} -o -L ${x} ]; then
247                                 mv -f ${x} "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
248                         fi
249                 done
250         eend 0
251 }
252
253 server_based_install() {
254         if ! use xorg; then
255                 rm "${D}"/usr/share/man/man1/Xserver.1x \
256                         "${D}"/usr/$(get_libdir)/xserver/SecurityPolicy \
257                         "${D}"/usr/$(get_libdir)/pkgconfig/xorg-server.pc \
258                         "${D}"/usr/share/man/man1/Xserver.1x
259         fi
260 }
261
262 ensure_a_server_is_building() {
263         for server in ${IUSE_SERVERS}; do
264                 use ${server} && return;
265         done
266         eerror "You need to specify at least one server to build."
267         eerror "Valid servers are: ${IUSE_SERVERS}."
268         die "No servers were specified to build."
269 }