1 |
spyderous |
1.1 |
# Copyright 1999-2005 Gentoo Foundation |
2 |
|
|
# Distributed under the terms of the GNU General Public License v2 |
3 |
dberkholz |
1.77 |
# $Header: /var/cvsroot/gentoo-x86/eclass/x-modular.eclass,v 1.76 2006/10/11 02:31:47 dberkholz Exp $ |
4 |
spyderous |
1.1 |
# |
5 |
|
|
# Author: Donnie Berkholz <spyderous@gentoo.org> |
6 |
|
|
# |
7 |
|
|
# This eclass is designed to reduce code duplication in the modularized X11 |
8 |
|
|
# ebuilds. |
9 |
spyderous |
1.32 |
# |
10 |
|
|
# Using this eclass: |
11 |
|
|
# |
12 |
|
|
# Inherit it. If you need to run autoreconf for any reason (e.g., your patches |
13 |
|
|
# apply to the autotools files rather than configure), set SNAPSHOT="yes". Set |
14 |
|
|
# CONFIGURE_OPTIONS to everything you want to pass to the configure script. |
15 |
|
|
# |
16 |
|
|
# If you have any patches to apply, set PATCHES to their locations and epatch |
17 |
|
|
# will apply them. It also handles epatch-style bulk patches, if you know how to |
18 |
|
|
# use them and set the correct variables. If you don't, read eutils.eclass. |
19 |
|
|
# |
20 |
|
|
# If you're creating a font package and the suffix of PN is not equal to the |
21 |
|
|
# subdirectory of /usr/share/fonts/ it should install into, set FONT_DIR to that |
22 |
|
|
# directory or directories. |
23 |
|
|
# |
24 |
spyderous |
1.33 |
# IMPORTANT: Both SNAPSHOT and FONT_DIR must be set _before_ the inherit. |
25 |
|
|
# |
26 |
spyderous |
1.32 |
# Pretty much everything else should be automatic. |
27 |
spyderous |
1.1 |
|
28 |
spyderous |
1.25 |
EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_postrm |
29 |
spyderous |
1.1 |
|
30 |
spyderous |
1.70 |
inherit eutils libtool multilib toolchain-funcs flag-o-matic autotools |
31 |
spyderous |
1.1 |
|
32 |
|
|
# Directory prefix to use for everything |
33 |
|
|
XDIR="/usr" |
34 |
|
|
|
35 |
joshuabaergen |
1.29 |
# Set up default patchset version(s) if necessary |
36 |
|
|
# x11-driver-patches |
37 |
|
|
if [[ -z "${XDPVER}" ]]; then |
38 |
|
|
XDPVER="1" |
39 |
|
|
fi |
40 |
|
|
|
41 |
spyderous |
1.1 |
IUSE="" |
42 |
|
|
HOMEPAGE="http://xorg.freedesktop.org/" |
43 |
spyderous |
1.44 |
|
44 |
|
|
# Set up SRC_URI for individual modular releases |
45 |
|
|
BASE_INDIVIDUAL_URI="http://xorg.freedesktop.org/releases/individual" |
46 |
spyderous |
1.57 |
if [[ ${CATEGORY} = x11-apps ]] || [[ ${CATEGORY} = x11-wm ]]; then |
47 |
spyderous |
1.44 |
SRC_URI="${SRC_URI} |
48 |
|
|
${BASE_INDIVIDUAL_URI}/app/${P}.tar.bz2" |
49 |
|
|
elif [[ ${CATEGORY} = app-doc ]]; then |
50 |
|
|
SRC_URI="${SRC_URI} |
51 |
|
|
${BASE_INDIVIDUAL_URI}/doc/${P}.tar.bz2" |
52 |
|
|
# x11-misc contains data and util, x11-themes contains data |
53 |
|
|
elif [[ ${CATEGORY} = x11-misc ]] || [[ ${CATEGORY} = x11-themes ]]; then |
54 |
|
|
SRC_URI="${SRC_URI} |
55 |
|
|
${BASE_INDIVIDUAL_URI}/data/${P}.tar.bz2 |
56 |
|
|
${BASE_INDIVIDUAL_URI}/util/${P}.tar.bz2" |
57 |
|
|
elif [[ ${CATEGORY} = x11-drivers ]]; then |
58 |
|
|
SRC_URI="${SRC_URI} |
59 |
|
|
${BASE_INDIVIDUAL_URI}/driver/${P}.tar.bz2" |
60 |
|
|
elif [[ ${CATEGORY} = media-fonts ]]; then |
61 |
|
|
SRC_URI="${SRC_URI} |
62 |
|
|
${BASE_INDIVIDUAL_URI}/font/${P}.tar.bz2" |
63 |
|
|
elif [[ ${CATEGORY} = x11-libs ]]; then |
64 |
|
|
SRC_URI="${SRC_URI} |
65 |
|
|
${BASE_INDIVIDUAL_URI}/lib/${P}.tar.bz2" |
66 |
|
|
elif [[ ${CATEGORY} = x11-proto ]]; then |
67 |
|
|
SRC_URI="${SRC_URI} |
68 |
|
|
${BASE_INDIVIDUAL_URI}/proto/${P}.tar.bz2" |
69 |
|
|
elif [[ ${CATEGORY} = x11-base ]]; then |
70 |
|
|
SRC_URI="${SRC_URI} |
71 |
|
|
${BASE_INDIVIDUAL_URI}/xserver/${P}.tar.bz2" |
72 |
|
|
fi |
73 |
|
|
|
74 |
spyderous |
1.1 |
SLOT="0" |
75 |
|
|
|
76 |
joshuabaergen |
1.40 |
# Set the license for the package. This can be overridden by setting |
77 |
|
|
# LICENSE after the inherit. |
78 |
|
|
LICENSE=${PN} |
79 |
|
|
|
80 |
spyderous |
1.1 |
# Set up shared dependencies |
81 |
spyderous |
1.28 |
if [[ -n "${SNAPSHOT}" ]]; then |
82 |
spyderous |
1.1 |
# FIXME: What's the minimal libtool version supporting arbitrary versioning? |
83 |
|
|
DEPEND="${DEPEND} |
84 |
|
|
>=sys-devel/autoconf-2.57 |
85 |
|
|
>=sys-devel/automake-1.7 |
86 |
|
|
>=sys-devel/libtool-1.5 |
87 |
|
|
>=sys-devel/m4-1.4" |
88 |
|
|
fi |
89 |
|
|
|
90 |
spyderous |
1.3 |
# If we're a font package, but not the font.alias one |
91 |
spyderous |
1.25 |
if [[ "${PN/#font-}" != "${PN}" ]] \ |
92 |
spyderous |
1.49 |
&& [[ "${CATEGORY}" = "media-fonts" ]] \ |
93 |
spyderous |
1.25 |
&& [[ "${PN}" != "font-alias" ]] \ |
94 |
|
|
&& [[ "${PN}" != "font-util" ]]; then |
95 |
spyderous |
1.4 |
# Activate font code in the rest of the eclass |
96 |
|
|
FONT="yes" |
97 |
|
|
|
98 |
spyderous |
1.3 |
RDEPEND="${RDEPEND} |
99 |
spyderous |
1.36 |
media-fonts/encodings |
100 |
spyderous |
1.30 |
x11-apps/mkfontscale |
101 |
|
|
x11-apps/mkfontdir" |
102 |
spyderous |
1.3 |
PDEPEND="${PDEPEND} |
103 |
|
|
media-fonts/font-alias" |
104 |
spyderous |
1.25 |
|
105 |
|
|
# Starting with 7.0RC3, we can specify the font directory |
106 |
|
|
# But oddly, we can't do the same for encodings or font-alias |
107 |
|
|
|
108 |
|
|
# Wrap in `if` so ebuilds can set it too |
109 |
|
|
if [[ -z ${FONT_DIR} ]]; then |
110 |
|
|
FONT_DIR=${PN##*-} |
111 |
|
|
|
112 |
|
|
fi |
113 |
|
|
|
114 |
|
|
# Fix case of font directories |
115 |
|
|
FONT_DIR=${FONT_DIR/ttf/TTF} |
116 |
|
|
FONT_DIR=${FONT_DIR/otf/OTF} |
117 |
|
|
FONT_DIR=${FONT_DIR/type1/Type1} |
118 |
|
|
FONT_DIR=${FONT_DIR/speedo/Speedo} |
119 |
|
|
|
120 |
|
|
# Set up configure option |
121 |
|
|
FONT_OPTIONS="--with-fontdir=\"/usr/share/fonts/${FONT_DIR}\"" |
122 |
|
|
|
123 |
|
|
if [[ -n "${FONT}" ]]; then |
124 |
|
|
if [[ ${PN##*-} = misc ]] || [[ ${PN##*-} = 75dpi ]] || [[ ${PN##*-} = 100dpi ]]; then |
125 |
|
|
IUSE="${IUSE} nls" |
126 |
|
|
fi |
127 |
|
|
fi |
128 |
spyderous |
1.3 |
fi |
129 |
|
|
|
130 |
spyderous |
1.7 |
# If we're a driver package |
131 |
spyderous |
1.12 |
if [[ "${PN/#xf86-video}" != "${PN}" ]] || [[ "${PN/#xf86-input}" != "${PN}" ]]; then |
132 |
joshuabaergen |
1.29 |
# Enable driver code in the rest of the eclass |
133 |
|
|
DRIVER="yes" |
134 |
|
|
|
135 |
joshuabaergen |
1.72 |
if [[ ${XDPVER} != -1 ]]; then |
136 |
|
|
# Add driver patchset to SRC_URI |
137 |
|
|
SRC_URI="${SRC_URI} |
138 |
|
|
http://dev.gentoo.org/~joshuabaergen/distfiles/x11-driver-patches-${XDPVER}.tar.bz2" |
139 |
|
|
fi |
140 |
spyderous |
1.7 |
fi |
141 |
|
|
|
142 |
spyderous |
1.41 |
# Debugging -- ignore packages that can't be built with debugging |
143 |
|
|
if [[ -z "${FONT}" ]] \ |
144 |
|
|
|| [[ "${PN/app-doc}" != "${PN}" ]] \ |
145 |
|
|
|| [[ "${PN/x11-proto}" != "${PN}" ]] \ |
146 |
|
|
|| [[ "${PN/util-macros}" != "${PN}" ]] \ |
147 |
|
|
|| [[ "${PN/xbitmaps}" != "${PN}" ]] \ |
148 |
|
|
|| [[ "${PN/xkbdata}" != "${PN}" ]] \ |
149 |
|
|
|| [[ "${PN/xorg-cf-files}" != "${PN}" ]] \ |
150 |
|
|
|| [[ "${PN/xcursor}" != "${PN}" ]] \ |
151 |
|
|
; then |
152 |
|
|
DEBUGGABLE="yes" |
153 |
|
|
IUSE="${IUSE} debug" |
154 |
|
|
if use debug; then |
155 |
spyderous |
1.46 |
if ! has splitdebug ${FEATURES}; then |
156 |
|
|
RESTRICT="${RESTRICT} nostrip" |
157 |
|
|
fi |
158 |
spyderous |
1.41 |
fi |
159 |
|
|
fi |
160 |
|
|
|
161 |
spyderous |
1.1 |
DEPEND="${DEPEND} |
162 |
spyderous |
1.64 |
>=dev-util/pkgconfig-0.18" |
163 |
spyderous |
1.39 |
|
164 |
spyderous |
1.43 |
if [[ "${PN/util-macros}" = "${PN}" ]]; then |
165 |
spyderous |
1.39 |
DEPEND="${DEPEND} |
166 |
spyderous |
1.68 |
>=x11-misc/util-macros-0.99.2 |
167 |
spyderous |
1.71 |
>=sys-devel/binutils-2.16.1-r3" |
168 |
spyderous |
1.39 |
fi |
169 |
spyderous |
1.1 |
|
170 |
spyderous |
1.13 |
RDEPEND="${RDEPEND} |
171 |
dberkholz |
1.76 |
|| ( >=sys-apps/man-1.6b-r2 >=sys-apps/man-db-2.4.3-r1 ) |
172 |
exg |
1.59 |
!<=x11-base/xorg-x11-6.9" |
173 |
spyderous |
1.13 |
# Provides virtual/x11 for temporary use until packages are ported |
174 |
spyderous |
1.1 |
# x11-base/x11-env" |
175 |
|
|
|
176 |
spyderous |
1.54 |
x-modular_specs_check() { |
177 |
|
|
if [[ ${PN:0:11} = "xorg-server" ]] || [[ -n "${DRIVER}" ]]; then |
178 |
solar |
1.62 |
append-ldflags -Wl,-z,lazy |
179 |
spyderous |
1.56 |
# (#116698) breaks loading |
180 |
|
|
filter-ldflags -Wl,-z,now |
181 |
spyderous |
1.54 |
fi |
182 |
|
|
} |
183 |
|
|
|
184 |
spyderous |
1.55 |
x-modular_dri_check() { |
185 |
spyderous |
1.53 |
# (#120057) Enabling DRI in drivers requires that the server was built with |
186 |
|
|
# support for it |
187 |
|
|
if [[ -n "${DRIVER}" ]]; then |
188 |
|
|
if has dri ${IUSE} && use dri; then |
189 |
|
|
einfo "Checking for direct rendering capabilities ..." |
190 |
|
|
if ! built_with_use x11-base/xorg-server dri; then |
191 |
|
|
die "You must build x11-base/xorg-server with USE=dri." |
192 |
|
|
fi |
193 |
|
|
fi |
194 |
|
|
fi |
195 |
spyderous |
1.55 |
} |
196 |
spyderous |
1.53 |
|
197 |
joshuabaergen |
1.61 |
x-modular_server_supports_drivers_check() { |
198 |
|
|
# (#135873) Only certain servers will actually use or be capable of |
199 |
|
|
# building external drivers, including binary drivers. |
200 |
|
|
if [[ -n "${DRIVER}" ]]; then |
201 |
spyderous |
1.67 |
if has_version '>=x11-base/xorg-server-1.1'; then |
202 |
spyderous |
1.66 |
if ! built_with_use x11-base/xorg-server xorg; then |
203 |
|
|
eerror "x11-base/xorg-server is not built with support for external drivers." |
204 |
|
|
die "You must build x11-base/xorg-server with USE=xorg." |
205 |
|
|
fi |
206 |
joshuabaergen |
1.61 |
fi |
207 |
|
|
fi |
208 |
|
|
} |
209 |
|
|
|
210 |
spyderous |
1.55 |
x-modular_unpack_source() { |
211 |
spyderous |
1.1 |
unpack ${A} |
212 |
|
|
cd ${S} |
213 |
joshuabaergen |
1.16 |
|
214 |
spyderous |
1.25 |
if [[ -n ${FONT_OPTIONS} ]]; then |
215 |
|
|
einfo "Detected font directory: ${FONT_DIR}" |
216 |
|
|
fi |
217 |
spyderous |
1.1 |
} |
218 |
|
|
|
219 |
|
|
x-modular_patch_source() { |
220 |
|
|
# Use standardized names and locations with bulk patching |
221 |
|
|
# Patch directory is ${WORKDIR}/patch |
222 |
|
|
# See epatch() in eutils.eclass for more documentation |
223 |
spyderous |
1.28 |
if [[ -z "${EPATCH_SUFFIX}" ]] ; then |
224 |
spyderous |
1.1 |
EPATCH_SUFFIX="patch" |
225 |
|
|
fi |
226 |
|
|
|
227 |
joshuabaergen |
1.29 |
# If this is a driver package we need to fix man page install location. |
228 |
|
|
# Running autoreconf will use the patched util-macros to make the |
229 |
|
|
# change for us, so we only need to patch if it is not going to run. |
230 |
joshuabaergen |
1.72 |
if [[ -n "${DRIVER}" ]] && [[ "${SNAPSHOT}" != "yes" ]]\ |
231 |
|
|
&& [[ ${XDPVER} != -1 ]]; then |
232 |
joshuabaergen |
1.29 |
PATCHES="${PATCHES} ${DISTDIR}/x11-driver-patches-${XDPVER}.tar.bz2" |
233 |
|
|
fi |
234 |
|
|
|
235 |
spyderous |
1.1 |
# For specific list of patches |
236 |
spyderous |
1.28 |
if [[ -n "${PATCHES}" ]] ; then |
237 |
spyderous |
1.1 |
for PATCH in ${PATCHES} |
238 |
|
|
do |
239 |
|
|
epatch ${PATCH} |
240 |
|
|
done |
241 |
|
|
# For non-default directory bulk patching |
242 |
spyderous |
1.28 |
elif [[ -n "${PATCH_LOC}" ]] ; then |
243 |
spyderous |
1.1 |
epatch ${PATCH_LOC} |
244 |
|
|
# For standard bulk patching |
245 |
spyderous |
1.28 |
elif [[ -d "${EPATCH_SOURCE}" ]] ; then |
246 |
spyderous |
1.1 |
epatch |
247 |
|
|
fi |
248 |
|
|
} |
249 |
|
|
|
250 |
|
|
x-modular_reconf_source() { |
251 |
|
|
# Run autoreconf for CVS snapshots only |
252 |
spyderous |
1.28 |
if [[ "${SNAPSHOT}" = "yes" ]] |
253 |
spyderous |
1.1 |
then |
254 |
|
|
# If possible, generate configure if it doesn't exist |
255 |
dberkholz |
1.74 |
if [ -f "./configure.ac" ] |
256 |
spyderous |
1.1 |
then |
257 |
spyderous |
1.51 |
eautoreconf |
258 |
spyderous |
1.1 |
fi |
259 |
|
|
fi |
260 |
|
|
|
261 |
spyderous |
1.54 |
# Joshua Baergen - October 23, 2005 |
262 |
|
|
# Fix shared lib issues on MIPS, FBSD, etc etc |
263 |
|
|
elibtoolize |
264 |
spyderous |
1.1 |
} |
265 |
|
|
|
266 |
|
|
x-modular_src_unpack() { |
267 |
spyderous |
1.54 |
x-modular_specs_check |
268 |
joshuabaergen |
1.61 |
x-modular_server_supports_drivers_check |
269 |
spyderous |
1.55 |
x-modular_dri_check |
270 |
spyderous |
1.1 |
x-modular_unpack_source |
271 |
|
|
x-modular_patch_source |
272 |
|
|
x-modular_reconf_source |
273 |
|
|
} |
274 |
|
|
|
275 |
spyderous |
1.25 |
x-modular_font_configure() { |
276 |
|
|
if [[ -n "${FONT}" ]]; then |
277 |
|
|
# Might be worth adding an option to configure your desired font |
278 |
|
|
# and exclude all others. Also, should this USE be nls or minimal? |
279 |
|
|
if ! use nls; then |
280 |
|
|
FONT_OPTIONS="${FONT_OPTIONS} |
281 |
|
|
--disable-iso8859-2 |
282 |
|
|
--disable-iso8859-3 |
283 |
|
|
--disable-iso8859-4 |
284 |
|
|
--disable-iso8859-5 |
285 |
|
|
--disable-iso8859-6 |
286 |
|
|
--disable-iso8859-7 |
287 |
|
|
--disable-iso8859-8 |
288 |
|
|
--disable-iso8859-9 |
289 |
|
|
--disable-iso8859-10 |
290 |
|
|
--disable-iso8859-11 |
291 |
|
|
--disable-iso8859-12 |
292 |
|
|
--disable-iso8859-13 |
293 |
|
|
--disable-iso8859-14 |
294 |
|
|
--disable-iso8859-15 |
295 |
|
|
--disable-iso8859-16 |
296 |
|
|
--disable-jisx0201 |
297 |
|
|
--disable-koi8-r" |
298 |
|
|
fi |
299 |
|
|
fi |
300 |
|
|
} |
301 |
|
|
|
302 |
spyderous |
1.41 |
x-modular_debug_setup() { |
303 |
|
|
if [[ -n "${DEBUGGABLE}" ]]; then |
304 |
|
|
if use debug; then |
305 |
|
|
strip-flags |
306 |
spyderous |
1.42 |
append-flags -g |
307 |
spyderous |
1.41 |
fi |
308 |
|
|
fi |
309 |
|
|
} |
310 |
|
|
|
311 |
spyderous |
1.6 |
x-modular_src_configure() { |
312 |
spyderous |
1.25 |
x-modular_font_configure |
313 |
spyderous |
1.41 |
x-modular_debug_setup |
314 |
spyderous |
1.25 |
|
315 |
spyderous |
1.1 |
# If prefix isn't set here, .pc files cause problems |
316 |
spyderous |
1.28 |
if [[ -x ./configure ]]; then |
317 |
spyderous |
1.1 |
econf --prefix=${XDIR} \ |
318 |
|
|
--datadir=${XDIR}/share \ |
319 |
spyderous |
1.25 |
${FONT_OPTIONS} \ |
320 |
spyderous |
1.7 |
${DRIVER_OPTIONS} \ |
321 |
spyderous |
1.1 |
${CONFIGURE_OPTIONS} |
322 |
|
|
fi |
323 |
spyderous |
1.6 |
} |
324 |
|
|
|
325 |
|
|
x-modular_src_make() { |
326 |
spyderous |
1.1 |
emake || die "emake failed" |
327 |
|
|
} |
328 |
|
|
|
329 |
spyderous |
1.6 |
x-modular_src_compile() { |
330 |
|
|
x-modular_src_configure |
331 |
|
|
x-modular_src_make |
332 |
|
|
} |
333 |
|
|
|
334 |
spyderous |
1.1 |
x-modular_src_install() { |
335 |
|
|
# Install everything to ${XDIR} |
336 |
|
|
make \ |
337 |
|
|
DESTDIR="${D}" \ |
338 |
|
|
install |
339 |
|
|
# Shouldn't be necessary in XDIR=/usr |
340 |
|
|
# einstall forces datadir, so we need to re-force it |
341 |
|
|
# datadir=${XDIR}/share \ |
342 |
|
|
# mandir=${XDIR}/share/man \ |
343 |
spyderous |
1.7 |
|
344 |
spyderous |
1.60 |
if [[ -e ${S}/ChangeLog ]]; then |
345 |
|
|
dodoc ${S}/ChangeLog |
346 |
|
|
fi |
347 |
|
|
|
348 |
spyderous |
1.52 |
# Make sure docs get compressed |
349 |
|
|
prepalldocs |
350 |
|
|
|
351 |
spyderous |
1.7 |
# Don't install libtool archives for server modules |
352 |
spyderous |
1.70 |
if [[ -e ${D}/usr/$(get_libdir)/xorg/modules ]]; then |
353 |
|
|
find ${D}/usr/$(get_libdir)/xorg/modules -name '*.la' \ |
354 |
spyderous |
1.7 |
| xargs rm -f |
355 |
|
|
fi |
356 |
spyderous |
1.48 |
|
357 |
|
|
# Don't install overlapping fonts.* files |
358 |
|
|
# Generate them instead when possible |
359 |
|
|
if [[ -n "${FONT}" ]]; then |
360 |
|
|
remove_font_metadata |
361 |
|
|
fi |
362 |
dberkholz |
1.75 |
|
363 |
|
|
if [[ -n "${DRIVER}" ]]; then |
364 |
|
|
install_driver_hwdata |
365 |
|
|
fi |
366 |
spyderous |
1.1 |
} |
367 |
spyderous |
1.2 |
|
368 |
spyderous |
1.4 |
x-modular_pkg_preinst() { |
369 |
dberkholz |
1.77 |
# We no longer do anything here, but we can't remove it from the API |
370 |
|
|
: |
371 |
spyderous |
1.4 |
} |
372 |
|
|
|
373 |
spyderous |
1.2 |
x-modular_pkg_postinst() { |
374 |
|
|
if [[ -n "${FONT}" ]]; then |
375 |
|
|
setup_fonts |
376 |
|
|
fi |
377 |
|
|
} |
378 |
|
|
|
379 |
spyderous |
1.25 |
x-modular_pkg_postrm() { |
380 |
|
|
if [[ -n "${FONT}" ]]; then |
381 |
|
|
cleanup_fonts |
382 |
|
|
fi |
383 |
|
|
} |
384 |
|
|
|
385 |
|
|
cleanup_fonts() { |
386 |
|
|
local ALLOWED_FILES="encodings.dir fonts.cache-1 fonts.dir fonts.scale" |
387 |
|
|
for DIR in ${FONT_DIR}; do |
388 |
|
|
unset KEEP_FONTDIR |
389 |
|
|
REAL_DIR=${ROOT}usr/share/fonts/${DIR} |
390 |
|
|
|
391 |
|
|
ebegin "Checking ${REAL_DIR} for useless files" |
392 |
|
|
pushd ${REAL_DIR} &> /dev/null |
393 |
|
|
for FILE in *; do |
394 |
|
|
unset MATCH |
395 |
|
|
for ALLOWED_FILE in ${ALLOWED_FILES}; do |
396 |
|
|
if [[ ${FILE} = ${ALLOWED_FILE} ]]; then |
397 |
|
|
# If it's allowed, then move on to the next file |
398 |
|
|
MATCH="yes" |
399 |
|
|
break |
400 |
|
|
fi |
401 |
|
|
done |
402 |
|
|
# If we found a match in allowed files, move on to the next file |
403 |
|
|
if [[ -n ${MATCH} ]]; then |
404 |
|
|
continue |
405 |
|
|
fi |
406 |
|
|
# If we get this far, there wasn't a match in the allowed files |
407 |
|
|
KEEP_FONTDIR="yes" |
408 |
|
|
# We don't need to check more files if we're already keeping it |
409 |
|
|
break |
410 |
|
|
done |
411 |
|
|
popd &> /dev/null |
412 |
|
|
# If there are no files worth keeping, then get rid of the dir |
413 |
|
|
if [[ -z "${KEEP_FONTDIR}" ]]; then |
414 |
|
|
rm -rf ${REAL_DIR} |
415 |
|
|
fi |
416 |
|
|
eend 0 |
417 |
|
|
done |
418 |
|
|
} |
419 |
|
|
|
420 |
spyderous |
1.2 |
setup_fonts() { |
421 |
dberkholz |
1.77 |
if [[ ! -n "${FONT_DIR}" ]]; then |
422 |
|
|
msg="FONT_DIR is empty. The ebuild should set it to at least one subdir of /usr/share/fonts." |
423 |
spyderous |
1.25 |
eerror "${msg}" |
424 |
|
|
die "${msg}" |
425 |
spyderous |
1.2 |
fi |
426 |
|
|
|
427 |
|
|
create_fonts_scale |
428 |
|
|
create_fonts_dir |
429 |
|
|
fix_font_permissions |
430 |
|
|
create_font_cache |
431 |
|
|
} |
432 |
|
|
|
433 |
spyderous |
1.48 |
remove_font_metadata() { |
434 |
|
|
local DIR |
435 |
|
|
for DIR in ${FONT_DIR}; do |
436 |
|
|
if [[ "${DIR}" != "Speedo" ]] && \ |
437 |
|
|
[[ "${DIR}" != "CID" ]] ; then |
438 |
|
|
# Delete font metadata files |
439 |
|
|
# fonts.scale, fonts.dir, fonts.cache-1 |
440 |
|
|
rm -f ${D}/usr/share/fonts/${DIR}/fonts.{scale,dir,cache-1} |
441 |
|
|
fi |
442 |
|
|
done |
443 |
|
|
} |
444 |
|
|
|
445 |
dberkholz |
1.75 |
# Installs device-to-driver mappings for system-config-display |
446 |
|
|
# and anything else that uses hwdata |
447 |
|
|
install_driver_hwdata() { |
448 |
|
|
insinto /usr/share/hwdata/videoaliases |
449 |
|
|
for i in "${FILESDIR}"/*.xinf; do |
450 |
|
|
# We need this for the case when none exist, |
451 |
|
|
# so *.xinf doesn't expand |
452 |
|
|
if [[ -e $i ]]; then |
453 |
|
|
doins $i |
454 |
|
|
fi |
455 |
|
|
done |
456 |
|
|
} |
457 |
|
|
|
458 |
spyderous |
1.4 |
discover_font_dirs() { |
459 |
dberkholz |
1.77 |
FONT_DIRS="${FONT_DIR}" |
460 |
spyderous |
1.4 |
} |
461 |
|
|
|
462 |
spyderous |
1.2 |
create_fonts_scale() { |
463 |
|
|
ebegin "Creating fonts.scale files" |
464 |
|
|
local x |
465 |
dberkholz |
1.77 |
for DIR in ${FONT_DIR}; do |
466 |
|
|
x=${ROOT}/usr/share/fonts/${DIR} |
467 |
spyderous |
1.28 |
[[ -z "$(ls ${x}/)" ]] && continue |
468 |
|
|
[[ "$(ls ${x}/)" = "fonts.cache-1" ]] && continue |
469 |
spyderous |
1.2 |
|
470 |
|
|
# Only generate .scale files if truetype, opentype or type1 |
471 |
|
|
# fonts are present ... |
472 |
|
|
|
473 |
|
|
# First truetype (ttf,ttc) |
474 |
|
|
# NOTE: ttmkfdir does NOT work on type1 fonts (#53753) |
475 |
|
|
# Also, there is no way to regenerate Speedo/CID fonts.scale |
476 |
|
|
# <spyderous@gentoo.org> 2 August 2004 |
477 |
spyderous |
1.28 |
if [[ "${x/encodings}" = "${x}" ]] \ |
478 |
|
|
&& [[ -n "$(find ${x} -iname '*.tt[cf]' -print)" ]]; then |
479 |
|
|
if [[ -x ${ROOT}/usr/bin/ttmkfdir ]]; then |
480 |
spyderous |
1.2 |
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROOT}/usr/$(get_libdir)" \ |
481 |
|
|
${ROOT}/usr/bin/ttmkfdir -x 2 \ |
482 |
|
|
-e ${ROOT}/usr/share/fonts/encodings/encodings.dir \ |
483 |
|
|
-o ${x}/fonts.scale -d ${x} |
484 |
|
|
# ttmkfdir fails on some stuff, so try mkfontscale if it does |
485 |
|
|
local ttmkfdir_return=$? |
486 |
|
|
else |
487 |
|
|
# We didn't use ttmkfdir at all |
488 |
|
|
local ttmkfdir_return=2 |
489 |
|
|
fi |
490 |
spyderous |
1.28 |
if [[ ${ttmkfdir_return} -ne 0 ]]; then |
491 |
spyderous |
1.2 |
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROOT}/usr/$(get_libdir)" \ |
492 |
|
|
${ROOT}/usr/bin/mkfontscale \ |
493 |
|
|
-a /usr/share/fonts/encodings/encodings.dir \ |
494 |
|
|
-- ${x} |
495 |
|
|
fi |
496 |
|
|
# Next type1 and opentype (pfa,pfb,otf,otc) |
497 |
spyderous |
1.28 |
elif [[ "${x/encodings}" = "${x}" ]] \ |
498 |
|
|
&& [[ -n "$(find ${x} -iname '*.[po][ft][abcf]' -print)" ]]; then |
499 |
spyderous |
1.2 |
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROOT}/usr/$(get_libdir)" \ |
500 |
|
|
${ROOT}/usr/bin/mkfontscale \ |
501 |
|
|
-a ${ROOT}/usr/share/fonts/encodings/encodings.dir \ |
502 |
|
|
-- ${x} |
503 |
|
|
fi |
504 |
|
|
done |
505 |
|
|
eend 0 |
506 |
|
|
} |
507 |
|
|
|
508 |
|
|
create_fonts_dir() { |
509 |
|
|
ebegin "Generating fonts.dir files" |
510 |
dberkholz |
1.77 |
for DIR in ${FONT_DIR}; do |
511 |
|
|
x=${ROOT}/usr/share/fonts/${DIR} |
512 |
spyderous |
1.28 |
[[ -z "$(ls ${x}/)" ]] && continue |
513 |
|
|
[[ "$(ls ${x}/)" = "fonts.cache-1" ]] && continue |
514 |
spyderous |
1.2 |
|
515 |
spyderous |
1.28 |
if [[ "${x/encodings}" = "${x}" ]]; then |
516 |
spyderous |
1.2 |
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROOT}/usr/$(get_libdir)" \ |
517 |
|
|
${ROOT}/usr/bin/mkfontdir \ |
518 |
|
|
-e ${ROOT}/usr/share/fonts/encodings \ |
519 |
|
|
-e ${ROOT}/usr/share/fonts/encodings/large \ |
520 |
|
|
-- ${x} |
521 |
|
|
fi |
522 |
|
|
done |
523 |
|
|
eend 0 |
524 |
|
|
} |
525 |
|
|
|
526 |
|
|
fix_font_permissions() { |
527 |
|
|
ebegin "Fixing permissions" |
528 |
dberkholz |
1.77 |
for DIR in ${FONT_DIR}; do |
529 |
|
|
find ${ROOT}/usr/share/fonts/${DIR} -type f -name 'font.*' \ |
530 |
spyderous |
1.2 |
-exec chmod 0644 {} \; |
531 |
|
|
done |
532 |
|
|
eend 0 |
533 |
|
|
} |
534 |
|
|
|
535 |
|
|
create_font_cache() { |
536 |
|
|
# danarmak found out that fc-cache should be run AFTER all the above |
537 |
|
|
# stuff, as otherwise the cache is invalid, and has to be run again |
538 |
|
|
# as root anyway |
539 |
spyderous |
1.28 |
if [[ -x ${ROOT}/usr/bin/fc-cache ]]; then |
540 |
spyderous |
1.2 |
ebegin "Creating FC font cache" |
541 |
|
|
HOME="/root" ${ROOT}/usr/bin/fc-cache |
542 |
|
|
eend 0 |
543 |
|
|
fi |
544 |
|
|
} |