/[gentoo-x86]/eclass/x-modular.eclass
Gentoo

Contents of /eclass/x-modular.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.118 - (hide annotations) (download)
Wed Dec 9 10:21:49 2009 UTC (4 years, 10 months ago) by vapier
Branch: MAIN
Changes since 1.117: +5 -13 lines
tweak handling of default vars so that eclass-manpages can better pick things out

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

  ViewVC Help
Powered by ViewVC 1.1.20