| 1 | # Copyright 1999-2005 Gentoo Foundation |
1 | # Copyright 1999-2005 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/x-modular.eclass,v 1.92 2008/02/22 05:10:03 dberkholz Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/x-modular.eclass,v 1.103 2008/11/26 23:13:24 dberkholz Exp $ |
| 4 | # |
4 | # |
| 5 | # @ECLASS: x-modular.eclass |
5 | # @ECLASS: x-modular.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Donnie Berkholz <dberkholz@gentoo.org>, x11@gentoo.org |
7 | # Donnie Berkholz <dberkholz@gentoo.org>, x11@gentoo.org |
| 8 | # @BLURB: Reduces code duplication in the modularized X11 ebuilds. |
8 | # @BLURB: Reduces code duplication in the modularized X11 ebuilds. |
| … | |
… | |
| 24 | # recently tested. You may need to uncomment the setting of datadir and |
24 | # recently tested. You may need to uncomment the setting of datadir and |
| 25 | # mandir in x-modular_src_install() or add it back in if it's no longer |
25 | # mandir in x-modular_src_install() or add it back in if it's no longer |
| 26 | # there. You may also want to change the SLOT. |
26 | # there. You may also want to change the SLOT. |
| 27 | XDIR="/usr" |
27 | XDIR="/usr" |
| 28 | |
28 | |
| 29 | if [[ -z "${XDPVER}" ]]; then |
|
|
| 30 | # @ECLASS-VARIABLE: XDPVER |
|
|
| 31 | # @DESCRIPTION: |
|
|
| 32 | # Set up default patchset version(s) if necessary for driver patches. If |
|
|
| 33 | # you want to change the auto-application of the driver patchset or |
|
|
| 34 | # prevent it from applying, edit XDPVER in the ebuild. Set it to -1 to |
|
|
| 35 | # prevent patch application or positive integers for that patch version. |
|
|
| 36 | # Set before inheriting this eclass. |
|
|
| 37 | XDPVER="1" |
|
|
| 38 | fi |
|
|
| 39 | |
|
|
| 40 | IUSE="" |
29 | IUSE="" |
| 41 | HOMEPAGE="http://xorg.freedesktop.org/" |
30 | HOMEPAGE="http://xorg.freedesktop.org/" |
| 42 | |
31 | |
|
|
32 | if [[ -z ${SNAPSHOT} ]]; then |
| 43 | # @ECLASS-VARIABLE: SNAPSHOT |
33 | # @ECLASS-VARIABLE: SNAPSHOT |
| 44 | # @DESCRIPTION: |
34 | # @DESCRIPTION: |
| 45 | # If set to 'yes' and configure.ac exists, eautoreconf will run. Set |
35 | # If set to 'yes' and configure.ac exists, eautoreconf will run. Set |
| 46 | # before inheriting this eclass. |
36 | # before inheriting this eclass. |
| 47 | SNAPSHOT="no" |
37 | SNAPSHOT="no" |
|
|
38 | fi |
| 48 | |
39 | |
| 49 | if [[ ${PV} = 9999* ]]; then |
40 | if [[ ${PV} = 9999* ]]; then |
| 50 | GIT_ECLASS="git" |
41 | GIT_ECLASS="git" |
| 51 | SNAPSHOT="yes" |
42 | SNAPSHOT="yes" |
| 52 | SRC_URI="" |
43 | SRC_URI="" |
| 53 | fi |
44 | fi |
| 54 | |
45 | |
| 55 | # Set up SRC_URI for individual modular releases |
46 | # Set up SRC_URI for individual modular releases |
| 56 | BASE_INDIVIDUAL_URI="http://xorg.freedesktop.org/releases/individual" |
47 | BASE_INDIVIDUAL_URI="http://xorg.freedesktop.org/releases/individual" |
| 57 | if [[ ${CATEGORY} = x11-apps ]] || [[ ${CATEGORY} = x11-wm ]]; then |
48 | # @ECLASS-VARIABLE: MODULE |
|
|
49 | # @DESCRIPTION: |
|
|
50 | # The subdirectory to download source from. Possible settings are app, |
|
|
51 | # doc, data, util, driver, font, lib, proto, xserver. Set above the |
|
|
52 | # inherit to override the default autoconfigured module. |
|
|
53 | if [[ -z ${MODULE} ]]; then |
| 58 | MODULE="app" |
54 | MODULE="" |
| 59 | elif [[ ${CATEGORY} = app-doc ]]; then |
55 | case ${CATEGORY} in |
| 60 | MODULE="doc" |
56 | app-doc) MODULE="doc" ;; |
| 61 | # x11-misc contains data and util, x11-themes contains data |
57 | media-fonts) MODULE="font" ;; |
| 62 | elif [[ ${CATEGORY} = x11-misc ]] || [[ ${CATEGORY} = x11-themes ]]; then |
58 | x11-apps|x11-wm) MODULE="app" ;; |
| 63 | if [[ ${PN} == xbitmaps || ${PN} == xcursor-themes || ${PN} == xkbdata ]]; then |
59 | x11-misc|x11-themes) MODULE="util" ;; |
| 64 | MODULE="data" |
60 | x11-drivers) MODULE="driver" ;; |
| 65 | else |
61 | x11-base) MODULE="xserver" ;; |
| 66 | MODULE="data" |
62 | x11-proto) MODULE="proto" ;; |
| 67 | fi |
63 | x11-libs) MODULE="lib" ;; |
| 68 | elif [[ ${CATEGORY} = x11-drivers ]]; then |
64 | esac |
| 69 | MODULE="driver" |
|
|
| 70 | elif [[ ${CATEGORY} = media-fonts ]]; then |
|
|
| 71 | MODULE="font" |
|
|
| 72 | elif [[ ${CATEGORY} = x11-libs ]]; then |
|
|
| 73 | MODULE="lib" |
|
|
| 74 | elif [[ ${CATEGORY} = x11-proto ]]; then |
|
|
| 75 | MODULE="proto" |
|
|
| 76 | elif [[ ${CATEGORY} = x11-base ]]; then |
|
|
| 77 | MODULE="xserver" |
|
|
| 78 | fi |
65 | fi |
| 79 | |
66 | |
| 80 | if [[ -n ${GIT_ECLASS} ]]; then |
67 | if [[ -n ${GIT_ECLASS} ]]; then |
| 81 | EGIT_REPO_URI="git://anongit.freedesktop.org/git/xorg/${MODULE}/${PN}" |
68 | EGIT_REPO_URI="git://anongit.freedesktop.org/git/xorg/${MODULE}/${PN}" |
| 82 | else |
69 | else |
| … | |
… | |
| 141 | |
128 | |
| 142 | # Set up configure option |
129 | # Set up configure option |
| 143 | FONT_OPTIONS="--with-fontdir=\"/usr/share/fonts/${FONT_DIR}\"" |
130 | FONT_OPTIONS="--with-fontdir=\"/usr/share/fonts/${FONT_DIR}\"" |
| 144 | |
131 | |
| 145 | if [[ -n "${FONT}" ]]; then |
132 | if [[ -n "${FONT}" ]]; then |
| 146 | if [[ ${PN##*-} = misc ]] || [[ ${PN##*-} = 75dpi ]] || [[ ${PN##*-} = 100dpi ]]; then |
133 | if [[ ${PN##*-} = misc ]] || [[ ${PN##*-} = 75dpi ]] || [[ ${PN##*-} = 100dpi ]] || [[ ${PN##*-} = cyrillic ]]; then |
| 147 | IUSE="${IUSE} nls" |
134 | IUSE="${IUSE} nls" |
| 148 | fi |
135 | fi |
| 149 | fi |
136 | fi |
| 150 | fi |
137 | fi |
| 151 | |
138 | |
| 152 | # If we're a driver package |
139 | # If we're a driver package |
| 153 | if [[ "${PN/#xf86-video}" != "${PN}" ]] || [[ "${PN/#xf86-input}" != "${PN}" ]]; then |
140 | if [[ "${PN/#xf86-video}" != "${PN}" ]] || [[ "${PN/#xf86-input}" != "${PN}" ]]; then |
| 154 | # Enable driver code in the rest of the eclass |
141 | # Enable driver code in the rest of the eclass |
| 155 | DRIVER="yes" |
142 | DRIVER="yes" |
| 156 | |
|
|
| 157 | if [[ ${XDPVER} != -1 ]]; then |
|
|
| 158 | # Add driver patchset to SRC_URI |
|
|
| 159 | SRC_URI="${SRC_URI} |
|
|
| 160 | mirror://gentoo/x11-driver-patches-${XDPVER}.tar.bz2" |
|
|
| 161 | fi |
|
|
| 162 | fi |
143 | fi |
| 163 | |
144 | |
| 164 | # Debugging -- ignore packages that can't be built with debugging |
145 | # Debugging -- ignore packages that can't be built with debugging |
| 165 | if [[ -z "${FONT}" ]] \ |
146 | if [[ -z "${FONT}" ]] \ |
| 166 | && [[ "${CATEGORY/app-doc}" = "${CATEGORY}" ]] \ |
147 | && [[ "${CATEGORY/app-doc}" = "${CATEGORY}" ]] \ |
| … | |
… | |
| 212 | # (#120057) Enabling DRI in drivers requires that the server was built with |
193 | # (#120057) Enabling DRI in drivers requires that the server was built with |
| 213 | # support for it |
194 | # support for it |
| 214 | if [[ -n "${DRIVER}" ]]; then |
195 | if [[ -n "${DRIVER}" ]]; then |
| 215 | if has dri ${IUSE} && use dri; then |
196 | if has dri ${IUSE} && use dri; then |
| 216 | einfo "Checking for direct rendering capabilities ..." |
197 | einfo "Checking for direct rendering capabilities ..." |
| 217 | if ! built_with_use x11-base/xorg-server dri; then |
198 | if ! built_with_use --missing true x11-base/xorg-server dri; then |
| 218 | die "You must build x11-base/xorg-server with USE=dri." |
199 | die "You must build x11-base/xorg-server with USE=dri." |
| 219 | fi |
200 | fi |
| 220 | fi |
201 | fi |
| 221 | fi |
202 | fi |
| 222 | } |
203 | } |
| … | |
… | |
| 265 | # See epatch() in eutils.eclass for more documentation |
246 | # See epatch() in eutils.eclass for more documentation |
| 266 | if [[ -z "${EPATCH_SUFFIX}" ]] ; then |
247 | if [[ -z "${EPATCH_SUFFIX}" ]] ; then |
| 267 | EPATCH_SUFFIX="patch" |
248 | EPATCH_SUFFIX="patch" |
| 268 | fi |
249 | fi |
| 269 | |
250 | |
| 270 | # If this is a driver package we need to fix man page install location. |
|
|
| 271 | # Running autoreconf will use the patched util-macros to make the |
|
|
| 272 | # change for us, so we only need to patch if it is not going to run. |
|
|
| 273 | if [[ -n "${DRIVER}" ]] && [[ "${SNAPSHOT}" != "yes" ]]\ |
|
|
| 274 | && [[ ${XDPVER} != -1 ]]; then |
|
|
| 275 | PATCHES="${PATCHES} ${DISTDIR}/x11-driver-patches-${XDPVER}.tar.bz2" |
|
|
| 276 | fi |
|
|
| 277 | |
|
|
| 278 | # @VARIABLE: PATCHES |
251 | # @VARIABLE: PATCHES |
| 279 | # @DESCRIPTION: |
252 | # @DESCRIPTION: |
| 280 | # If you have any patches to apply, set PATCHES to their locations and epatch |
253 | # If you have any patches to apply, set PATCHES to their locations and epatch |
| 281 | # will apply them. It also handles epatch-style bulk patches, if you know how to |
254 | # will apply them. It also handles epatch-style bulk patches, if you know how to |
| 282 | # use them and set the correct variables. If you don't, read eutils.eclass. |
255 | # use them and set the correct variables. If you don't, read eutils.eclass. |
|
|
256 | if [[ ${#PATCHES[@]} -gt 1 ]]; then |
|
|
257 | for x in "${PATCHES[@]}"; do |
|
|
258 | epatch "${x}" |
|
|
259 | done |
| 283 | if [[ -n "${PATCHES}" ]] ; then |
260 | elif [[ -n "${PATCHES}" ]]; then |
| 284 | for PATCH in ${PATCHES} |
261 | for x in ${PATCHES}; do |
| 285 | do |
|
|
| 286 | epatch ${PATCH} |
262 | epatch "${x}" |
| 287 | done |
263 | done |
| 288 | # For non-default directory bulk patching |
264 | # For non-default directory bulk patching |
| 289 | elif [[ -n "${PATCH_LOC}" ]] ; then |
265 | elif [[ -n "${PATCH_LOC}" ]] ; then |
| 290 | epatch ${PATCH_LOC} |
266 | epatch ${PATCH_LOC} |
| 291 | # For standard bulk patching |
267 | # For standard bulk patching |
| … | |
… | |
| 379 | x-modular_debug_setup |
355 | x-modular_debug_setup |
| 380 | |
356 | |
| 381 | # @VARIABLE: CONFIGURE_OPTIONS |
357 | # @VARIABLE: CONFIGURE_OPTIONS |
| 382 | # @DESCRIPTION: |
358 | # @DESCRIPTION: |
| 383 | # Any options to pass to configure |
359 | # Any options to pass to configure |
| 384 | [[ -n ${CONFIGURE_OPTIONTS} ]] |
360 | [[ -n ${CONFIGURE_OPTIONS} ]] |
| 385 | |
361 | |
| 386 | # If prefix isn't set here, .pc files cause problems |
362 | # If prefix isn't set here, .pc files cause problems |
| 387 | if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then |
363 | if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then |
| 388 | econf --prefix=${XDIR} \ |
364 | econf --prefix=${XDIR} \ |
| 389 | --datadir=${XDIR}/share \ |
365 | --datadir=${XDIR}/share \ |
| … | |
… | |
| 417 | # Creates a ChangeLog from git if using live ebuilds. |
393 | # Creates a ChangeLog from git if using live ebuilds. |
| 418 | x-modular_src_install() { |
394 | x-modular_src_install() { |
| 419 | # Install everything to ${XDIR} |
395 | # Install everything to ${XDIR} |
| 420 | make \ |
396 | make \ |
| 421 | DESTDIR="${D}" \ |
397 | DESTDIR="${D}" \ |
| 422 | install |
398 | install \ |
|
|
399 | || die |
| 423 | # Shouldn't be necessary in XDIR=/usr |
400 | # Shouldn't be necessary in XDIR=/usr |
| 424 | # einstall forces datadir, so we need to re-force it |
401 | # einstall forces datadir, so we need to re-force it |
| 425 | # datadir=${XDIR}/share \ |
402 | # datadir=${XDIR}/share \ |
| 426 | # mandir=${XDIR}/share/man \ |
403 | # mandir=${XDIR}/share/man \ |
| 427 | |
404 | |