1 |
spyderous |
1.1 |
# Copyright 1999-2005 Gentoo Foundation |
2 |
|
|
# Distributed under the terms of the GNU General Public License v2 |
3 |
dberkholz |
1.98 |
# $Header: /var/cvsroot/gentoo-x86/eclass/x-modular.eclass,v 1.97 2008/05/09 07:18:19 dberkholz Exp $ |
4 |
spyderous |
1.1 |
# |
5 |
dberkholz |
1.91 |
# @ECLASS: x-modular.eclass |
6 |
|
|
# @MAINTAINER: |
7 |
|
|
# Donnie Berkholz <dberkholz@gentoo.org>, x11@gentoo.org |
8 |
|
|
# @BLURB: Reduces code duplication in the modularized X11 ebuilds. |
9 |
|
|
# @DESCRIPTION: |
10 |
|
|
# This eclass makes trivial X ebuilds possible for apps, fonts, drivers, |
11 |
|
|
# and more. Many things that would normally be done in various functions |
12 |
|
|
# can be accessed by setting variables instead, such as patching, |
13 |
|
|
# running eautoreconf, passing options to configure and installing docs. |
14 |
spyderous |
1.1 |
# |
15 |
dberkholz |
1.91 |
# All you need to do in a basic ebuild is inherit this eclass and set |
16 |
|
|
# DESCRIPTION, KEYWORDS and RDEPEND/DEPEND. If your package is hosted |
17 |
|
|
# with the other X packages, you don't need to set SRC_URI. Pretty much |
18 |
|
|
# everything else should be automatic. |
19 |
|
|
|
20 |
|
|
# @ECLASS-VARIABLE: XDIR |
21 |
|
|
# @DESCRIPTION: |
22 |
|
|
# Directory prefix to use for everything. If you want to install to a |
23 |
|
|
# non-default prefix (e.g., /opt/xorg), change XDIR. This has not been |
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 |
26 |
|
|
# there. You may also want to change the SLOT. |
27 |
spyderous |
1.1 |
XDIR="/usr" |
28 |
|
|
|
29 |
|
|
IUSE="" |
30 |
|
|
HOMEPAGE="http://xorg.freedesktop.org/" |
31 |
spyderous |
1.44 |
|
32 |
dberkholz |
1.93 |
if [[ -z ${SNAPSHOT} ]]; then |
33 |
dberkholz |
1.91 |
# @ECLASS-VARIABLE: SNAPSHOT |
34 |
|
|
# @DESCRIPTION: |
35 |
|
|
# If set to 'yes' and configure.ac exists, eautoreconf will run. Set |
36 |
|
|
# before inheriting this eclass. |
37 |
dberkholz |
1.93 |
SNAPSHOT="no" |
38 |
|
|
fi |
39 |
dberkholz |
1.91 |
|
40 |
dberkholz |
1.87 |
if [[ ${PV} = 9999* ]]; then |
41 |
|
|
GIT_ECLASS="git" |
42 |
|
|
SNAPSHOT="yes" |
43 |
|
|
SRC_URI="" |
44 |
|
|
fi |
45 |
|
|
|
46 |
spyderous |
1.44 |
# Set up SRC_URI for individual modular releases |
47 |
|
|
BASE_INDIVIDUAL_URI="http://xorg.freedesktop.org/releases/individual" |
48 |
dberkholz |
1.99 |
if [[ -z ${MODULE} ]]; then |
49 |
|
|
# @ECLASS-VARIABLE: MODULE |
50 |
|
|
# @DESCRIPTION: |
51 |
|
|
# The subdirectory to download source from. Possible settings are app, |
52 |
|
|
# doc, data, util, driver, font, lib, proto, xserver. Set above the |
53 |
|
|
# inherit to override the default autoconfigured module. |
54 |
|
|
MODULE="" |
55 |
|
|
if [[ ${CATEGORY} = x11-apps ]] || [[ ${CATEGORY} = x11-wm ]]; then |
56 |
|
|
MODULE="app" |
57 |
|
|
elif [[ ${CATEGORY} = app-doc ]]; then |
58 |
|
|
MODULE="doc" |
59 |
|
|
# x11-misc contains data and util, x11-themes contains data |
60 |
|
|
elif [[ ${CATEGORY} = x11-misc ]] || [[ ${CATEGORY} = x11-themes ]]; then |
61 |
|
|
if [[ ${PN} == xbitmaps || ${PN} == xcursor-themes || ${PN} == xkbdata ]]; then |
62 |
|
|
MODULE="data" |
63 |
|
|
else |
64 |
|
|
MODULE="util" |
65 |
|
|
fi |
66 |
|
|
elif [[ ${CATEGORY} = x11-drivers ]]; then |
67 |
|
|
MODULE="driver" |
68 |
|
|
elif [[ ${CATEGORY} = media-fonts ]]; then |
69 |
|
|
MODULE="font" |
70 |
|
|
elif [[ ${CATEGORY} = x11-libs ]]; then |
71 |
|
|
MODULE="lib" |
72 |
|
|
elif [[ ${CATEGORY} = x11-proto ]]; then |
73 |
|
|
MODULE="proto" |
74 |
|
|
elif [[ ${CATEGORY} = x11-base ]]; then |
75 |
|
|
MODULE="xserver" |
76 |
dberkholz |
1.87 |
fi |
77 |
|
|
fi |
78 |
|
|
|
79 |
|
|
if [[ -n ${GIT_ECLASS} ]]; then |
80 |
|
|
EGIT_REPO_URI="git://anongit.freedesktop.org/git/xorg/${MODULE}/${PN}" |
81 |
|
|
else |
82 |
|
|
SRC_URI="${SRC_URI} ${BASE_INDIVIDUAL_URI}/${MODULE}/${P}.tar.bz2" |
83 |
spyderous |
1.44 |
fi |
84 |
|
|
|
85 |
spyderous |
1.1 |
SLOT="0" |
86 |
|
|
|
87 |
joshuabaergen |
1.40 |
# Set the license for the package. This can be overridden by setting |
88 |
|
|
# LICENSE after the inherit. |
89 |
|
|
LICENSE=${PN} |
90 |
|
|
|
91 |
spyderous |
1.1 |
# Set up shared dependencies |
92 |
spyderous |
1.28 |
if [[ -n "${SNAPSHOT}" ]]; then |
93 |
spyderous |
1.1 |
# FIXME: What's the minimal libtool version supporting arbitrary versioning? |
94 |
|
|
DEPEND="${DEPEND} |
95 |
|
|
>=sys-devel/libtool-1.5 |
96 |
|
|
>=sys-devel/m4-1.4" |
97 |
joshuabaergen |
1.81 |
WANT_AUTOCONF="latest" |
98 |
|
|
WANT_AUTOMAKE="latest" |
99 |
spyderous |
1.1 |
fi |
100 |
|
|
|
101 |
spyderous |
1.3 |
# If we're a font package, but not the font.alias one |
102 |
dberkholz |
1.80 |
FONT_ECLASS="" |
103 |
spyderous |
1.25 |
if [[ "${PN/#font-}" != "${PN}" ]] \ |
104 |
spyderous |
1.49 |
&& [[ "${CATEGORY}" = "media-fonts" ]] \ |
105 |
spyderous |
1.25 |
&& [[ "${PN}" != "font-alias" ]] \ |
106 |
|
|
&& [[ "${PN}" != "font-util" ]]; then |
107 |
spyderous |
1.4 |
# Activate font code in the rest of the eclass |
108 |
|
|
FONT="yes" |
109 |
|
|
|
110 |
dberkholz |
1.80 |
# Whether to inherit the font eclass |
111 |
|
|
FONT_ECLASS="font" |
112 |
|
|
|
113 |
spyderous |
1.3 |
RDEPEND="${RDEPEND} |
114 |
spyderous |
1.36 |
media-fonts/encodings |
115 |
spyderous |
1.30 |
x11-apps/mkfontscale |
116 |
|
|
x11-apps/mkfontdir" |
117 |
spyderous |
1.3 |
PDEPEND="${PDEPEND} |
118 |
|
|
media-fonts/font-alias" |
119 |
spyderous |
1.25 |
|
120 |
|
|
# Starting with 7.0RC3, we can specify the font directory |
121 |
|
|
# But oddly, we can't do the same for encodings or font-alias |
122 |
|
|
|
123 |
|
|
# Wrap in `if` so ebuilds can set it too |
124 |
|
|
if [[ -z ${FONT_DIR} ]]; then |
125 |
dberkholz |
1.91 |
# @ECLASS-VARIABLE: FONT_DIR |
126 |
|
|
# @DESCRIPTION: |
127 |
|
|
# If you're creating a font package and the suffix of PN is not equal to |
128 |
|
|
# the subdirectory of /usr/share/fonts/ it should install into, set |
129 |
|
|
# FONT_DIR to that directory or directories. Set before inheriting this |
130 |
|
|
# eclass. |
131 |
spyderous |
1.25 |
FONT_DIR=${PN##*-} |
132 |
|
|
|
133 |
|
|
fi |
134 |
|
|
|
135 |
|
|
# Fix case of font directories |
136 |
|
|
FONT_DIR=${FONT_DIR/ttf/TTF} |
137 |
|
|
FONT_DIR=${FONT_DIR/otf/OTF} |
138 |
|
|
FONT_DIR=${FONT_DIR/type1/Type1} |
139 |
|
|
FONT_DIR=${FONT_DIR/speedo/Speedo} |
140 |
|
|
|
141 |
|
|
# Set up configure option |
142 |
|
|
FONT_OPTIONS="--with-fontdir=\"/usr/share/fonts/${FONT_DIR}\"" |
143 |
|
|
|
144 |
|
|
if [[ -n "${FONT}" ]]; then |
145 |
dberkholz |
1.96 |
if [[ ${PN##*-} = misc ]] || [[ ${PN##*-} = 75dpi ]] || [[ ${PN##*-} = 100dpi ]] || [[ ${PN##*-} = cyrillic ]]; then |
146 |
spyderous |
1.25 |
IUSE="${IUSE} nls" |
147 |
|
|
fi |
148 |
|
|
fi |
149 |
spyderous |
1.3 |
fi |
150 |
|
|
|
151 |
spyderous |
1.7 |
# If we're a driver package |
152 |
spyderous |
1.12 |
if [[ "${PN/#xf86-video}" != "${PN}" ]] || [[ "${PN/#xf86-input}" != "${PN}" ]]; then |
153 |
joshuabaergen |
1.29 |
# Enable driver code in the rest of the eclass |
154 |
|
|
DRIVER="yes" |
155 |
spyderous |
1.7 |
fi |
156 |
|
|
|
157 |
spyderous |
1.41 |
# Debugging -- ignore packages that can't be built with debugging |
158 |
|
|
if [[ -z "${FONT}" ]] \ |
159 |
dberkholz |
1.89 |
&& [[ "${CATEGORY/app-doc}" = "${CATEGORY}" ]] \ |
160 |
|
|
&& [[ "${CATEGORY/x11-proto}" = "${CATEGORY}" ]] \ |
161 |
|
|
&& [[ "${PN/util-macros}" = "${PN}" ]] \ |
162 |
|
|
&& [[ "${PN/xbitmaps}" = "${PN}" ]] \ |
163 |
|
|
&& [[ "${PN/xkbdata}" = "${PN}" ]] \ |
164 |
|
|
&& [[ "${PN/xorg-cf-files}" = "${PN}" ]] \ |
165 |
|
|
&& [[ "${PN/xcursor}" = "${PN}" ]] \ |
166 |
spyderous |
1.41 |
; then |
167 |
|
|
DEBUGGABLE="yes" |
168 |
|
|
IUSE="${IUSE} debug" |
169 |
|
|
fi |
170 |
|
|
|
171 |
spyderous |
1.1 |
DEPEND="${DEPEND} |
172 |
spyderous |
1.64 |
>=dev-util/pkgconfig-0.18" |
173 |
spyderous |
1.39 |
|
174 |
spyderous |
1.43 |
if [[ "${PN/util-macros}" = "${PN}" ]]; then |
175 |
spyderous |
1.39 |
DEPEND="${DEPEND} |
176 |
spyderous |
1.68 |
>=x11-misc/util-macros-0.99.2 |
177 |
spyderous |
1.71 |
>=sys-devel/binutils-2.16.1-r3" |
178 |
spyderous |
1.39 |
fi |
179 |
spyderous |
1.1 |
|
180 |
spyderous |
1.13 |
RDEPEND="${RDEPEND} |
181 |
exg |
1.59 |
!<=x11-base/xorg-x11-6.9" |
182 |
spyderous |
1.13 |
# Provides virtual/x11 for temporary use until packages are ported |
183 |
spyderous |
1.1 |
# x11-base/x11-env" |
184 |
|
|
|
185 |
dberkholz |
1.87 |
inherit eutils libtool multilib toolchain-funcs flag-o-matic autotools \ |
186 |
|
|
${FONT_ECLASS} ${GIT_ECLASS} |
187 |
dberkholz |
1.80 |
|
188 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_specs_check |
189 |
|
|
# @USAGE: |
190 |
|
|
# @DESCRIPTION: |
191 |
|
|
# Make any necessary changes related to gcc specs (generally hardened) |
192 |
spyderous |
1.54 |
x-modular_specs_check() { |
193 |
|
|
if [[ ${PN:0:11} = "xorg-server" ]] || [[ -n "${DRIVER}" ]]; then |
194 |
solar |
1.62 |
append-ldflags -Wl,-z,lazy |
195 |
spyderous |
1.56 |
# (#116698) breaks loading |
196 |
|
|
filter-ldflags -Wl,-z,now |
197 |
spyderous |
1.54 |
fi |
198 |
|
|
} |
199 |
|
|
|
200 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_dri_check |
201 |
|
|
# @USAGE: |
202 |
|
|
# @DESCRIPTION: |
203 |
|
|
# Ensures the server supports DRI if building a driver with DRI support |
204 |
spyderous |
1.55 |
x-modular_dri_check() { |
205 |
spyderous |
1.53 |
# (#120057) Enabling DRI in drivers requires that the server was built with |
206 |
|
|
# support for it |
207 |
|
|
if [[ -n "${DRIVER}" ]]; then |
208 |
|
|
if has dri ${IUSE} && use dri; then |
209 |
|
|
einfo "Checking for direct rendering capabilities ..." |
210 |
|
|
if ! built_with_use x11-base/xorg-server dri; then |
211 |
|
|
die "You must build x11-base/xorg-server with USE=dri." |
212 |
|
|
fi |
213 |
|
|
fi |
214 |
|
|
fi |
215 |
spyderous |
1.55 |
} |
216 |
spyderous |
1.53 |
|
217 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_server_supports_drivers_check |
218 |
|
|
# @USAGE: |
219 |
|
|
# @DESCRIPTION: |
220 |
|
|
# Ensures the server SDK is installed if a driver is being built |
221 |
joshuabaergen |
1.61 |
x-modular_server_supports_drivers_check() { |
222 |
|
|
# (#135873) Only certain servers will actually use or be capable of |
223 |
|
|
# building external drivers, including binary drivers. |
224 |
|
|
if [[ -n "${DRIVER}" ]]; then |
225 |
spyderous |
1.67 |
if has_version '>=x11-base/xorg-server-1.1'; then |
226 |
spyderous |
1.66 |
if ! built_with_use x11-base/xorg-server xorg; then |
227 |
|
|
eerror "x11-base/xorg-server is not built with support for external drivers." |
228 |
|
|
die "You must build x11-base/xorg-server with USE=xorg." |
229 |
|
|
fi |
230 |
joshuabaergen |
1.61 |
fi |
231 |
|
|
fi |
232 |
|
|
} |
233 |
|
|
|
234 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_unpack_source |
235 |
|
|
# @USAGE: |
236 |
|
|
# @DESCRIPTION: |
237 |
|
|
# Simply unpack source code. Nothing else. |
238 |
spyderous |
1.55 |
x-modular_unpack_source() { |
239 |
dberkholz |
1.87 |
if [[ -n ${GIT_ECLASS} ]]; then |
240 |
|
|
git_src_unpack |
241 |
|
|
else |
242 |
|
|
unpack ${A} |
243 |
|
|
fi |
244 |
spyderous |
1.1 |
cd ${S} |
245 |
joshuabaergen |
1.16 |
|
246 |
spyderous |
1.25 |
if [[ -n ${FONT_OPTIONS} ]]; then |
247 |
|
|
einfo "Detected font directory: ${FONT_DIR}" |
248 |
|
|
fi |
249 |
spyderous |
1.1 |
} |
250 |
|
|
|
251 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_patch_source |
252 |
|
|
# @USAGE: |
253 |
|
|
# @DESCRIPTION: |
254 |
|
|
# Apply all patches |
255 |
spyderous |
1.1 |
x-modular_patch_source() { |
256 |
|
|
# Use standardized names and locations with bulk patching |
257 |
|
|
# Patch directory is ${WORKDIR}/patch |
258 |
|
|
# See epatch() in eutils.eclass for more documentation |
259 |
spyderous |
1.28 |
if [[ -z "${EPATCH_SUFFIX}" ]] ; then |
260 |
spyderous |
1.1 |
EPATCH_SUFFIX="patch" |
261 |
|
|
fi |
262 |
|
|
|
263 |
dberkholz |
1.91 |
# @VARIABLE: PATCHES |
264 |
|
|
# @DESCRIPTION: |
265 |
|
|
# If you have any patches to apply, set PATCHES to their locations and epatch |
266 |
|
|
# will apply them. It also handles epatch-style bulk patches, if you know how to |
267 |
|
|
# use them and set the correct variables. If you don't, read eutils.eclass. |
268 |
dberkholz |
1.95 |
if [[ ${#PATCHES[@]} -gt 1 ]]; then |
269 |
|
|
for x in "${PATCHES[@]}"; do |
270 |
|
|
epatch "${x}" |
271 |
|
|
done |
272 |
|
|
elif [[ -n "${PATCHES}" ]]; then |
273 |
|
|
for x in ${PATCHES}; do |
274 |
|
|
epatch "${x}" |
275 |
spyderous |
1.1 |
done |
276 |
|
|
# For non-default directory bulk patching |
277 |
spyderous |
1.28 |
elif [[ -n "${PATCH_LOC}" ]] ; then |
278 |
spyderous |
1.1 |
epatch ${PATCH_LOC} |
279 |
|
|
# For standard bulk patching |
280 |
spyderous |
1.28 |
elif [[ -d "${EPATCH_SOURCE}" ]] ; then |
281 |
spyderous |
1.1 |
epatch |
282 |
|
|
fi |
283 |
|
|
} |
284 |
|
|
|
285 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_reconf_source |
286 |
|
|
# @USAGE: |
287 |
|
|
# @DESCRIPTION: |
288 |
|
|
# Run eautoreconf if necessary, and run elibtoolize. |
289 |
spyderous |
1.1 |
x-modular_reconf_source() { |
290 |
spyderous |
1.28 |
if [[ "${SNAPSHOT}" = "yes" ]] |
291 |
spyderous |
1.1 |
then |
292 |
|
|
# If possible, generate configure if it doesn't exist |
293 |
dberkholz |
1.74 |
if [ -f "./configure.ac" ] |
294 |
spyderous |
1.1 |
then |
295 |
spyderous |
1.51 |
eautoreconf |
296 |
spyderous |
1.1 |
fi |
297 |
|
|
fi |
298 |
|
|
|
299 |
spyderous |
1.54 |
# Joshua Baergen - October 23, 2005 |
300 |
|
|
# Fix shared lib issues on MIPS, FBSD, etc etc |
301 |
|
|
elibtoolize |
302 |
spyderous |
1.1 |
} |
303 |
|
|
|
304 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_src_unpack |
305 |
|
|
# @USAGE: |
306 |
|
|
# @DESCRIPTION: |
307 |
|
|
# Unpack a package, performing all X-related tasks. |
308 |
spyderous |
1.1 |
x-modular_src_unpack() { |
309 |
spyderous |
1.54 |
x-modular_specs_check |
310 |
joshuabaergen |
1.61 |
x-modular_server_supports_drivers_check |
311 |
spyderous |
1.55 |
x-modular_dri_check |
312 |
spyderous |
1.1 |
x-modular_unpack_source |
313 |
|
|
x-modular_patch_source |
314 |
|
|
x-modular_reconf_source |
315 |
|
|
} |
316 |
|
|
|
317 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_font_configure |
318 |
|
|
# @USAGE: |
319 |
|
|
# @DESCRIPTION: |
320 |
|
|
# If a font package, perform any necessary configuration steps |
321 |
spyderous |
1.25 |
x-modular_font_configure() { |
322 |
|
|
if [[ -n "${FONT}" ]]; then |
323 |
|
|
# Might be worth adding an option to configure your desired font |
324 |
|
|
# and exclude all others. Also, should this USE be nls or minimal? |
325 |
|
|
if ! use nls; then |
326 |
|
|
FONT_OPTIONS="${FONT_OPTIONS} |
327 |
|
|
--disable-iso8859-2 |
328 |
|
|
--disable-iso8859-3 |
329 |
|
|
--disable-iso8859-4 |
330 |
|
|
--disable-iso8859-5 |
331 |
|
|
--disable-iso8859-6 |
332 |
|
|
--disable-iso8859-7 |
333 |
|
|
--disable-iso8859-8 |
334 |
|
|
--disable-iso8859-9 |
335 |
|
|
--disable-iso8859-10 |
336 |
|
|
--disable-iso8859-11 |
337 |
|
|
--disable-iso8859-12 |
338 |
|
|
--disable-iso8859-13 |
339 |
|
|
--disable-iso8859-14 |
340 |
|
|
--disable-iso8859-15 |
341 |
|
|
--disable-iso8859-16 |
342 |
|
|
--disable-jisx0201 |
343 |
|
|
--disable-koi8-r" |
344 |
|
|
fi |
345 |
|
|
fi |
346 |
|
|
} |
347 |
|
|
|
348 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_debug_setup |
349 |
|
|
# @USAGE: |
350 |
|
|
# @DESCRIPTION: |
351 |
|
|
# Set up CFLAGS for a debug build |
352 |
spyderous |
1.41 |
x-modular_debug_setup() { |
353 |
|
|
if [[ -n "${DEBUGGABLE}" ]]; then |
354 |
|
|
if use debug; then |
355 |
|
|
strip-flags |
356 |
spyderous |
1.42 |
append-flags -g |
357 |
spyderous |
1.41 |
fi |
358 |
|
|
fi |
359 |
|
|
} |
360 |
|
|
|
361 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_src_configure |
362 |
|
|
# @USAGE: |
363 |
|
|
# @DESCRIPTION: |
364 |
|
|
# Perform any necessary pre-configuration steps, then run configure |
365 |
spyderous |
1.6 |
x-modular_src_configure() { |
366 |
spyderous |
1.25 |
x-modular_font_configure |
367 |
spyderous |
1.41 |
x-modular_debug_setup |
368 |
spyderous |
1.25 |
|
369 |
dberkholz |
1.91 |
# @VARIABLE: CONFIGURE_OPTIONS |
370 |
|
|
# @DESCRIPTION: |
371 |
|
|
# Any options to pass to configure |
372 |
dberkholz |
1.98 |
[[ -n ${CONFIGURE_OPTIONS} ]] |
373 |
dberkholz |
1.91 |
|
374 |
spyderous |
1.1 |
# If prefix isn't set here, .pc files cause problems |
375 |
dberkholz |
1.85 |
if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then |
376 |
spyderous |
1.1 |
econf --prefix=${XDIR} \ |
377 |
|
|
--datadir=${XDIR}/share \ |
378 |
spyderous |
1.25 |
${FONT_OPTIONS} \ |
379 |
spyderous |
1.7 |
${DRIVER_OPTIONS} \ |
380 |
spyderous |
1.1 |
${CONFIGURE_OPTIONS} |
381 |
|
|
fi |
382 |
spyderous |
1.6 |
} |
383 |
|
|
|
384 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_src_make |
385 |
|
|
# @USAGE: |
386 |
|
|
# @DESCRIPTION: |
387 |
|
|
# Run make. |
388 |
spyderous |
1.6 |
x-modular_src_make() { |
389 |
spyderous |
1.1 |
emake || die "emake failed" |
390 |
|
|
} |
391 |
|
|
|
392 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_src_configure |
393 |
|
|
# @USAGE: |
394 |
|
|
# @DESCRIPTION: |
395 |
|
|
# Compile a package, performing all X-related tasks. |
396 |
spyderous |
1.6 |
x-modular_src_compile() { |
397 |
|
|
x-modular_src_configure |
398 |
|
|
x-modular_src_make |
399 |
|
|
} |
400 |
|
|
|
401 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_src_install |
402 |
|
|
# @USAGE: |
403 |
|
|
# @DESCRIPTION: |
404 |
|
|
# Install a built package to ${D}, performing any necessary steps. |
405 |
|
|
# Creates a ChangeLog from git if using live ebuilds. |
406 |
spyderous |
1.1 |
x-modular_src_install() { |
407 |
|
|
# Install everything to ${XDIR} |
408 |
|
|
make \ |
409 |
|
|
DESTDIR="${D}" \ |
410 |
|
|
install |
411 |
|
|
# Shouldn't be necessary in XDIR=/usr |
412 |
|
|
# einstall forces datadir, so we need to re-force it |
413 |
|
|
# datadir=${XDIR}/share \ |
414 |
|
|
# mandir=${XDIR}/share/man \ |
415 |
spyderous |
1.7 |
|
416 |
dberkholz |
1.87 |
if [[ -n ${GIT_ECLASS} ]]; then |
417 |
|
|
pushd "${EGIT_STORE_DIR}/${EGIT_CLONE_DIR}" |
418 |
|
|
git log ${GIT_TREE} > "${S}"/ChangeLog |
419 |
|
|
popd |
420 |
|
|
fi |
421 |
|
|
|
422 |
spyderous |
1.60 |
if [[ -e ${S}/ChangeLog ]]; then |
423 |
|
|
dodoc ${S}/ChangeLog |
424 |
|
|
fi |
425 |
dberkholz |
1.91 |
# @VARIABLE: DOCS |
426 |
|
|
# @DESCRIPTION: |
427 |
|
|
# Any documentation to install |
428 |
dberkholz |
1.92 |
[[ -n ${DOCS} ]] && dodoc ${DOCS} |
429 |
spyderous |
1.60 |
|
430 |
spyderous |
1.52 |
# Make sure docs get compressed |
431 |
|
|
prepalldocs |
432 |
|
|
|
433 |
spyderous |
1.7 |
# Don't install libtool archives for server modules |
434 |
spyderous |
1.70 |
if [[ -e ${D}/usr/$(get_libdir)/xorg/modules ]]; then |
435 |
|
|
find ${D}/usr/$(get_libdir)/xorg/modules -name '*.la' \ |
436 |
spyderous |
1.7 |
| xargs rm -f |
437 |
|
|
fi |
438 |
spyderous |
1.48 |
|
439 |
|
|
if [[ -n "${FONT}" ]]; then |
440 |
|
|
remove_font_metadata |
441 |
|
|
fi |
442 |
dberkholz |
1.75 |
|
443 |
|
|
if [[ -n "${DRIVER}" ]]; then |
444 |
|
|
install_driver_hwdata |
445 |
|
|
fi |
446 |
spyderous |
1.1 |
} |
447 |
spyderous |
1.2 |
|
448 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_pkg_preinst |
449 |
|
|
# @USAGE: |
450 |
|
|
# @DESCRIPTION: |
451 |
|
|
# This function doesn't do anything right now, but it may in the future. |
452 |
spyderous |
1.4 |
x-modular_pkg_preinst() { |
453 |
dberkholz |
1.77 |
# We no longer do anything here, but we can't remove it from the API |
454 |
|
|
: |
455 |
spyderous |
1.4 |
} |
456 |
|
|
|
457 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_pkg_postinst |
458 |
|
|
# @USAGE: |
459 |
|
|
# @DESCRIPTION: |
460 |
|
|
# Run X-specific post-installation tasks on the live filesystem. The |
461 |
|
|
# only task right now is some setup for font packages. |
462 |
spyderous |
1.2 |
x-modular_pkg_postinst() { |
463 |
|
|
if [[ -n "${FONT}" ]]; then |
464 |
|
|
setup_fonts |
465 |
|
|
fi |
466 |
|
|
} |
467 |
|
|
|
468 |
dberkholz |
1.91 |
# @FUNCTION: x-modular_pkg_postrm |
469 |
|
|
# @USAGE: |
470 |
|
|
# @DESCRIPTION: |
471 |
|
|
# Run X-specific post-removal tasks on the live filesystem. The only |
472 |
|
|
# task right now is some cleanup for font packages. |
473 |
spyderous |
1.25 |
x-modular_pkg_postrm() { |
474 |
|
|
if [[ -n "${FONT}" ]]; then |
475 |
|
|
cleanup_fonts |
476 |
dberkholz |
1.78 |
font_pkg_postrm |
477 |
spyderous |
1.25 |
fi |
478 |
|
|
} |
479 |
|
|
|
480 |
dberkholz |
1.91 |
# @FUNCTION: cleanup_fonts |
481 |
|
|
# @USAGE: |
482 |
|
|
# @DESCRIPTION: |
483 |
|
|
# Get rid of font directories that only contain generated files |
484 |
spyderous |
1.25 |
cleanup_fonts() { |
485 |
|
|
local ALLOWED_FILES="encodings.dir fonts.cache-1 fonts.dir fonts.scale" |
486 |
|
|
for DIR in ${FONT_DIR}; do |
487 |
|
|
unset KEEP_FONTDIR |
488 |
|
|
REAL_DIR=${ROOT}usr/share/fonts/${DIR} |
489 |
|
|
|
490 |
|
|
ebegin "Checking ${REAL_DIR} for useless files" |
491 |
|
|
pushd ${REAL_DIR} &> /dev/null |
492 |
|
|
for FILE in *; do |
493 |
|
|
unset MATCH |
494 |
|
|
for ALLOWED_FILE in ${ALLOWED_FILES}; do |
495 |
|
|
if [[ ${FILE} = ${ALLOWED_FILE} ]]; then |
496 |
|
|
# If it's allowed, then move on to the next file |
497 |
|
|
MATCH="yes" |
498 |
|
|
break |
499 |
|
|
fi |
500 |
|
|
done |
501 |
|
|
# If we found a match in allowed files, move on to the next file |
502 |
|
|
if [[ -n ${MATCH} ]]; then |
503 |
|
|
continue |
504 |
|
|
fi |
505 |
|
|
# If we get this far, there wasn't a match in the allowed files |
506 |
|
|
KEEP_FONTDIR="yes" |
507 |
|
|
# We don't need to check more files if we're already keeping it |
508 |
|
|
break |
509 |
|
|
done |
510 |
|
|
popd &> /dev/null |
511 |
|
|
# If there are no files worth keeping, then get rid of the dir |
512 |
|
|
if [[ -z "${KEEP_FONTDIR}" ]]; then |
513 |
|
|
rm -rf ${REAL_DIR} |
514 |
|
|
fi |
515 |
|
|
eend 0 |
516 |
|
|
done |
517 |
|
|
} |
518 |
|
|
|
519 |
dberkholz |
1.91 |
# @FUNCTION: setup_fonts |
520 |
|
|
# @USAGE: |
521 |
|
|
# @DESCRIPTION: |
522 |
|
|
# Generates needed files for fonts and fixes font permissions |
523 |
spyderous |
1.2 |
setup_fonts() { |
524 |
dberkholz |
1.77 |
if [[ ! -n "${FONT_DIR}" ]]; then |
525 |
|
|
msg="FONT_DIR is empty. The ebuild should set it to at least one subdir of /usr/share/fonts." |
526 |
spyderous |
1.25 |
eerror "${msg}" |
527 |
|
|
die "${msg}" |
528 |
spyderous |
1.2 |
fi |
529 |
|
|
|
530 |
|
|
create_fonts_scale |
531 |
|
|
create_fonts_dir |
532 |
|
|
fix_font_permissions |
533 |
|
|
create_font_cache |
534 |
|
|
} |
535 |
|
|
|
536 |
dberkholz |
1.91 |
# @FUNCTION: remove_font_metadata |
537 |
|
|
# @USAGE: |
538 |
|
|
# @DESCRIPTION: |
539 |
|
|
# Don't let the package install generated font files that may overlap |
540 |
|
|
# with other packages. Instead, they're generated in pkg_postinst(). |
541 |
spyderous |
1.48 |
remove_font_metadata() { |
542 |
|
|
local DIR |
543 |
|
|
for DIR in ${FONT_DIR}; do |
544 |
|
|
if [[ "${DIR}" != "Speedo" ]] && \ |
545 |
|
|
[[ "${DIR}" != "CID" ]] ; then |
546 |
|
|
# Delete font metadata files |
547 |
|
|
# fonts.scale, fonts.dir, fonts.cache-1 |
548 |
|
|
rm -f ${D}/usr/share/fonts/${DIR}/fonts.{scale,dir,cache-1} |
549 |
|
|
fi |
550 |
|
|
done |
551 |
|
|
} |
552 |
|
|
|
553 |
dberkholz |
1.91 |
# @FUNCTION: install_driver_hwdata |
554 |
|
|
# @USAGE: |
555 |
|
|
# @DESCRIPTION: |
556 |
|
|
# Installs device-to-driver mappings for system-config-display and |
557 |
|
|
# anything else that uses hwdata. |
558 |
dberkholz |
1.75 |
install_driver_hwdata() { |
559 |
|
|
insinto /usr/share/hwdata/videoaliases |
560 |
|
|
for i in "${FILESDIR}"/*.xinf; do |
561 |
|
|
# We need this for the case when none exist, |
562 |
|
|
# so *.xinf doesn't expand |
563 |
|
|
if [[ -e $i ]]; then |
564 |
|
|
doins $i |
565 |
|
|
fi |
566 |
|
|
done |
567 |
|
|
} |
568 |
|
|
|
569 |
dberkholz |
1.91 |
# @FUNCTION: discover_font_dirs |
570 |
|
|
# @USAGE: |
571 |
|
|
# @DESCRIPTION: |
572 |
|
|
# Deprecated. Sets up the now-unused FONT_DIRS variable. |
573 |
spyderous |
1.4 |
discover_font_dirs() { |
574 |
dberkholz |
1.77 |
FONT_DIRS="${FONT_DIR}" |
575 |
spyderous |
1.4 |
} |
576 |
|
|
|
577 |
dberkholz |
1.91 |
# @FUNCTION: create_fonts_scale |
578 |
|
|
# @USAGE: |
579 |
|
|
# @DESCRIPTION: |
580 |
|
|
# Create fonts.scale file, used by the old server-side fonts subsystem. |
581 |
spyderous |
1.2 |
create_fonts_scale() { |
582 |
|
|
ebegin "Creating fonts.scale files" |
583 |
|
|
local x |
584 |
dberkholz |
1.77 |
for DIR in ${FONT_DIR}; do |
585 |
|
|
x=${ROOT}/usr/share/fonts/${DIR} |
586 |
spyderous |
1.28 |
[[ -z "$(ls ${x}/)" ]] && continue |
587 |
|
|
[[ "$(ls ${x}/)" = "fonts.cache-1" ]] && continue |
588 |
spyderous |
1.2 |
|
589 |
|
|
# Only generate .scale files if truetype, opentype or type1 |
590 |
|
|
# fonts are present ... |
591 |
|
|
|
592 |
dberkholz |
1.79 |
# NOTE: There is no way to regenerate Speedo/CID fonts.scale |
593 |
dberkholz |
1.83 |
# <dberkholz@gentoo.org> 2 August 2004 |
594 |
spyderous |
1.28 |
if [[ "${x/encodings}" = "${x}" ]] \ |
595 |
dberkholz |
1.79 |
&& [[ -n "$(find ${x} -iname '*.[pot][ft][abcf]' -print)" ]]; then |
596 |
|
|
mkfontscale \ |
597 |
spyderous |
1.2 |
-a ${ROOT}/usr/share/fonts/encodings/encodings.dir \ |
598 |
|
|
-- ${x} |
599 |
|
|
fi |
600 |
|
|
done |
601 |
|
|
eend 0 |
602 |
|
|
} |
603 |
|
|
|
604 |
dberkholz |
1.91 |
# @FUNCTION: create_fonts_dir |
605 |
|
|
# @USAGE: |
606 |
|
|
# @DESCRIPTION: |
607 |
|
|
# Create fonts.dir file, used by the old server-side fonts subsystem. |
608 |
spyderous |
1.2 |
create_fonts_dir() { |
609 |
|
|
ebegin "Generating fonts.dir files" |
610 |
dberkholz |
1.77 |
for DIR in ${FONT_DIR}; do |
611 |
|
|
x=${ROOT}/usr/share/fonts/${DIR} |
612 |
spyderous |
1.28 |
[[ -z "$(ls ${x}/)" ]] && continue |
613 |
|
|
[[ "$(ls ${x}/)" = "fonts.cache-1" ]] && continue |
614 |
spyderous |
1.2 |
|
615 |
spyderous |
1.28 |
if [[ "${x/encodings}" = "${x}" ]]; then |
616 |
dberkholz |
1.79 |
mkfontdir \ |
617 |
spyderous |
1.2 |
-e ${ROOT}/usr/share/fonts/encodings \ |
618 |
|
|
-e ${ROOT}/usr/share/fonts/encodings/large \ |
619 |
|
|
-- ${x} |
620 |
|
|
fi |
621 |
|
|
done |
622 |
|
|
eend 0 |
623 |
|
|
} |
624 |
|
|
|
625 |
dberkholz |
1.91 |
# @FUNCTION: fix_font_permissions |
626 |
|
|
# @USAGE: |
627 |
|
|
# @DESCRIPTION: |
628 |
|
|
# Font files should have 644 permissions. Ensure this is the case. |
629 |
spyderous |
1.2 |
fix_font_permissions() { |
630 |
|
|
ebegin "Fixing permissions" |
631 |
dberkholz |
1.77 |
for DIR in ${FONT_DIR}; do |
632 |
|
|
find ${ROOT}/usr/share/fonts/${DIR} -type f -name 'font.*' \ |
633 |
spyderous |
1.2 |
-exec chmod 0644 {} \; |
634 |
|
|
done |
635 |
|
|
eend 0 |
636 |
|
|
} |
637 |
|
|
|
638 |
dberkholz |
1.91 |
# @FUNCTION: create_font_cache |
639 |
|
|
# @USAGE: |
640 |
|
|
# @DESCRIPTION: |
641 |
|
|
# Create fonts.cache-1 files, used by the new client-side fonts |
642 |
|
|
# subsystem. |
643 |
spyderous |
1.2 |
create_font_cache() { |
644 |
dberkholz |
1.78 |
font_pkg_postinst |
645 |
spyderous |
1.2 |
} |
646 |
dberkholz |
1.78 |
|
647 |
|
|
EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_postrm |