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

Contents of /eclass/x-modular.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.92 - (hide annotations) (download)
Fri Feb 22 05:10:03 2008 UTC (6 years, 9 months ago) by dberkholz
Branch: MAIN
Changes since 1.91: +2 -2 lines
Use braces around variables.

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

  ViewVC Help
Powered by ViewVC 1.1.20