/[gentoo-x86]/eclass/kde4-functions.eclass
Gentoo

Contents of /eclass/kde4-functions.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download)
Thu May 15 19:49:32 2008 UTC (6 years, 5 months ago) by ingmar
Branch: MAIN
Changes since 1.5: +34 -16 lines
Eclass updates for KDE 4.0.4, thanks to Bo ├śrsted Andresen & Jorge Manuel B. S. Vicetto.

1 ingmar 1.1 # Copyright 1999-2008 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 zlin 1.5 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-functions.eclass,v 1.4 2008/03/13 17:57:51 ingmar Exp $
4 ingmar 1.1
5     # @ECLASS: kde4-functions.eclass
6     # @MAINTAINER:
7     # kde@gentoo.org
8     # @BLURB: Common ebuild functions for monolithic and split KDE 4 packages
9     # @DESCRIPTION:
10     # This eclass contains all functions shared by the different eclasses,
11     # for KDE 4 monolithic and split ebuilds.
12     #
13     # NOTE: This eclass uses the SLOT dependencies from EAPI="1" or compatible,
14     # hence you must define EAPI="1" in the ebuild, before inheriting any eclasses.
15    
16     # @ECLASS-VARIABLE: KDEBASE
17     # @DESCRIPTION:
18     # This gets set to a non-zero value when a package is considered a kde or
19     # koffice ebuild.
20    
21     if [[ "${CATEGORY}" == "kde-base" ]]; then
22     debug-print "${ECLASS}: KDEBASE ebuild recognized"
23     KDEBASE="kde-base"
24     fi
25    
26     # is this a koffice ebuild?
27     if [[ "${KMNAME}" == "koffice" || "${PN}" == "koffice" ]]; then
28     debug-print "${ECLASS}: KOFFICE ebuild recognized"
29     KDEBASE="koffice"
30     fi
31    
32     # @ECLASS-VARIABLE: KDE_DERIVATION_MAP
33     # @DESCRIPTION:
34     # Map of the monolithic->split ebuild derivation.
35     # Used to build dependencies describing the relationships between them:
36     # Monolithic ebuilds block their split counterparts in the same slot, and vice versa.
37     #
38     # Also see get-parent-package(), get-child-packages(), is-parent-package()
39     KDE_DERIVATION_MAP='
40     kde-base/kdeaccessibility kde-base/kdeaccessibility-colorschemes
41     kde-base/kdeaccessibility kde-base/kdeaccessibility-iconthemes
42     kde-base/kdeaccessibility kde-base/kmag
43     kde-base/kdeaccessibility kde-base/kmousetool
44     kde-base/kdeaccessibility kde-base/kmouth
45     kde-base/kdeaccessibility kde-base/kttsd
46     kde-base/kdeadmin kde-base/kcron
47     kde-base/kdeadmin kde-base/kdat
48     kde-base/kdeadmin kde-base/knetworkconf
49     kde-base/kdeadmin kde-base/ksysv
50     kde-base/kdeadmin kde-base/kuser
51     kde-base/kdeadmin kde-base/lilo-config
52     kde-base/kdeadmin kde-base/secpolicy
53     kde-base/kdeartwork kde-base/kdeartwork-colorschemes
54     kde-base/kdeartwork kde-base/kdeartwork-emoticons
55     kde-base/kdeartwork kde-base/kdeartwork-icewm-themes
56     kde-base/kdeartwork kde-base/kdeartwork-iconthemes
57     kde-base/kdeartwork kde-base/kdeartwork-kscreensaver
58     kde-base/kdeartwork kde-base/kdeartwork-kworldclock
59     kde-base/kdeartwork kde-base/kdeartwork-sounds
60     kde-base/kdeartwork kde-base/kdeartwork-styles
61     kde-base/kdeartwork kde-base/kdeartwork-wallpapers
62     kde-base/kdebase kde-base/dolphin
63     kde-base/kdebase kde-base/kappfinder
64     kde-base/kdebase kde-base/kdepasswd
65     kde-base/kdebase kde-base/kdialog
66     kde-base/kdebase kde-base/keditbookmarks
67     kde-base/kdebase kde-base/kfind
68 zlin 1.3 kde-base/kdebase kde-base/kinfocenter
69 ingmar 1.1 kde-base/kdebase kde-base/konqueror
70     kde-base/kdebase kde-base/konsole
71     kde-base/kdebase kde-base/kwrite
72     kde-base/kdebase kde-base/libkonq
73     kde-base/kdebase kde-base/nsplugins
74     kde-base/kdebase kde-base/drkonqi
75     kde-base/kdebase kde-base/kcmshell
76     kde-base/kdebase kde-base/kcontrol
77     kde-base/kdebase kde-base/kdebase-data
78     kde-base/kdebase kde-base/kdebase-kioslaves
79     kde-base/kdebase kde-base/kdebugdialog
80     kde-base/kdebase kde-base/kde-menu
81     kde-base/kdebase kde-base/kdesu
82     kde-base/kdebase kde-base/kfile
83     kde-base/kdebase kde-base/khelpcenter
84 ingmar 1.6 kde-base/kdebase kde-base/kiconfinder
85 ingmar 1.1 kde-base/kdebase kde-base/kioclient
86     kde-base/kdebase kde-base/kmimetypefinder
87     kde-base/kdebase kde-base/knetattach
88     kde-base/kdebase kde-base/knewstuff
89     kde-base/kdebase kde-base/knotify
90     kde-base/kdebase kde-base/kpasswdserver
91     kde-base/kdebase kde-base/kquitapp
92     kde-base/kdebase kde-base/kreadconfig
93     kde-base/kdebase kde-base/kstart
94     kde-base/kdebase kde-base/kstyles
95     kde-base/kdebase kde-base/ktimezoned
96     kde-base/kdebase kde-base/ktraderclient
97     kde-base/kdebase kde-base/kuiserver
98     kde-base/kdebase kde-base/kurifilter-plugins
99     kde-base/kdebase kde-base/nepomuk
100     kde-base/kdebase kde-base/phonon
101 ingmar 1.6 kde-base/kdebase kde-base/solid-hardware
102 ingmar 1.1 kde-base/kdebase kde-base/soliduiserver
103     kde-base/kdebase kde-base/kcheckpass
104     kde-base/kdebase kde-base/kcminit
105     kde-base/kdebase kde-base/kdebase-startkde
106     kde-base/kdebase kde-base/kstartupconfig
107     kde-base/kdebase kde-base/kde-menu-icons
108     kde-base/kdebase kde-base/kde-wallpapers
109     kde-base/kdebase kde-base/kdm
110     kde-base/kdebase kde-base/khotkeys
111     kde-base/kdebase kde-base/klipper
112     kde-base/kdebase kde-base/kmenuedit
113     kde-base/kdebase kde-base/krunner
114     kde-base/kdebase kde-base/kscreensaver
115     kde-base/kdebase kde-base/ksmserver
116     kde-base/kdebase kde-base/ksplash
117     kde-base/kdebase kde-base/ksysguard
118     kde-base/kdebase kde-base/ksystraycmd
119     kde-base/kdebase kde-base/ktip
120     kde-base/kdebase kde-base/kwin
121     kde-base/kdebase kde-base/libkworkspace
122     kde-base/kdebase kde-base/libplasma
123     kde-base/kdebase kde-base/libtaskmanager
124     kde-base/kdebase kde-base/plasma
125     kde-base/kdebase kde-base/solid
126     kde-base/kdebase kde-base/systemsettings
127     kde-base/kdebindings kde-base/kalyptus
128     kde-base/kdebindings kde-base/kdejava
129     kde-base/kdebindings kde-base/kimono
130     kde-base/kdebindings kde-base/kjsembed
131     kde-base/kdebindings kde-base/korundum
132     kde-base/kdebindings kde-base/krosspython
133     kde-base/kdebindings kde-base/krossruby
134     kde-base/kdebindings kde-base/pykde4
135     kde-base/kdebindings kde-base/qyoto
136     kde-base/kdebindings kde-base/qtjava
137     kde-base/kdebindings kde-base/qtruby
138     kde-base/kdebindings kde-base/qtsharp
139     kde-base/kdebindings kde-base/smoke
140     kde-base/kdebindings kde-base/xparts
141     kde-base/kdeedu kde-base/blinken
142     kde-base/kdeedu kde-base/kalgebra
143     kde-base/kdeedu kde-base/kalzium
144     kde-base/kdeedu kde-base/kanagram
145     kde-base/kdeedu kde-base/kbruch
146     kde-base/kdeedu kde-base/kgeography
147     kde-base/kdeedu kde-base/khangman
148     kde-base/kdeedu kde-base/kig
149     kde-base/kdeedu kde-base/kiten
150     kde-base/kdeedu kde-base/klettres
151     kde-base/kdeedu kde-base/kmplot
152     kde-base/kdeedu kde-base/kpercentage
153     kde-base/kdeedu kde-base/kstars
154     kde-base/kdeedu kde-base/ktouch
155     kde-base/kdeedu kde-base/kturtle
156     kde-base/kdeedu kde-base/kwordquiz
157     kde-base/kdeedu kde-base/libkdeedu
158     kde-base/kdeedu kde-base/marble
159     kde-base/kdeedu kde-base/parley
160 ingmar 1.6 kde-base/kdeedu kde-base/step
161 ingmar 1.1 kde-base/kdegames kde-base/bovo
162     kde-base/kdegames kde-base/katomic
163     kde-base/kdegames kde-base/kbattleship
164     kde-base/kdegames kde-base/kblackbox
165     kde-base/kdegames kde-base/kbounce
166 ingmar 1.6 kde-base/kdegames kde-base/kdiamond
167 ingmar 1.1 kde-base/kdegames kde-base/kfourinline
168     kde-base/kdegames kde-base/kgoldrunner
169     kde-base/kdegames kde-base/kiriki
170     kde-base/kdegames kde-base/kjumpingcube
171     kde-base/kdegames kde-base/klines
172     kde-base/kdegames kde-base/kmahjongg
173     kde-base/kdegames kde-base/kmines
174     kde-base/kdegames kde-base/knetwalk
175     kde-base/kdegames kde-base/kolf
176 ingmar 1.6 kde-base/kdegames kde-base/kollision
177 ingmar 1.1 kde-base/kdegames kde-base/konquest
178     kde-base/kdegames kde-base/kpat
179     kde-base/kdegames kde-base/kreversi
180     kde-base/kdegames kde-base/ksame
181     kde-base/kdegames kde-base/kshisen
182     kde-base/kdegames kde-base/kspaceduel
183     kde-base/kdegames kde-base/ksquares
184     kde-base/kdegames kde-base/ksudoku
185     kde-base/kdegames kde-base/ktuberling
186 ingmar 1.6 kde-base/kdegames kde-base/kubrick
187 ingmar 1.1 kde-base/kdegames kde-base/libkdegames
188     kde-base/kdegames kde-base/libkmahjongg
189     kde-base/kdegames kde-base/lskat
190     kde-base/kdegraphics kde-base/gwenview
191     kde-base/kdegraphics kde-base/kamera
192     kde-base/kdegraphics kde-base/kcolorchooser
193     kde-base/kdegraphics kde-base/kgamma
194     kde-base/kdegraphics kde-base/kghostview
195     kde-base/kdegraphics kde-base/kolourpaint
196     kde-base/kdegraphics kde-base/kruler
197     kde-base/kdegraphics kde-base/ksnapshot
198     kde-base/kdegraphics kde-base/libkscan
199     kde-base/kdegraphics kde-base/okular
200     kde-base/kdegraphics kde-base/svgpart
201 ingmar 1.6 kde-base/kdemultimedia kde-base/dragonplayer
202 ingmar 1.1 kde-base/kdemultimedia kde-base/juk
203     kde-base/kdemultimedia kde-base/kdemultimedia-kioslaves
204     kde-base/kdemultimedia kde-base/kmix
205     kde-base/kdemultimedia kde-base/kscd
206     kde-base/kdemultimedia kde-base/libkcddb
207     kde-base/kdemultimedia kde-base/libkcompactdisc
208     kde-base/kdenetwork kde-base/kdenetwork-filesharing
209     kde-base/kdenetwork kde-base/kdnssd
210     kde-base/kdenetwork kde-base/kget
211     kde-base/kdenetwork kde-base/knewsticker
212     kde-base/kdenetwork kde-base/kopete
213     kde-base/kdenetwork kde-base/kppp
214     kde-base/kdenetwork kde-base/krdc
215     kde-base/kdenetwork kde-base/krfb
216     kde-base/kdepim kde-base/akonadi
217     kde-base/kdepim kde-base/akregator
218     kde-base/kdepim kde-base/certmanager
219     kde-base/kdepim kde-base/kabc2mutt
220     kde-base/kdepim kde-base/kabcclient
221     kde-base/kdepim kde-base/kaddressbook
222     kde-base/kdepim kde-base/kalarm
223     kde-base/kdepim kde-base/kdemaildir
224     kde-base/kdepim kde-base/kdepim-kioslaves
225     kde-base/kdepim kde-base/kdepim-kresources
226     kde-base/kdepim kde-base/kdepim-wizards
227     kde-base/kdepim kde-base/kfeed
228     kde-base/kdepim kde-base/kitchensync
229     kde-base/kdepim kde-base/kleopatra
230     kde-base/kdepim kde-base/kmail
231     kde-base/kdepim kde-base/kmailcvt
232     kde-base/kdepim kde-base/kmobiletools
233     kde-base/kdepim kde-base/knode
234     kde-base/kdepim kde-base/knotes
235     kde-base/kdepim kde-base/kode
236     kde-base/kdepim kde-base/konsolekalendar
237     kde-base/kdepim kde-base/kontact
238     kde-base/kdepim kde-base/kontact-specialdates
239     kde-base/kdepim kde-base/korganizer
240     kde-base/kdepim kde-base/korn
241     kde-base/kdepim kde-base/kpilot
242     kde-base/kdepim kde-base/ktimetracker
243     kde-base/kdepim kde-base/ktnef
244     kde-base/kdepim kde-base/libkdepim
245     kde-base/kdepim kde-base/libkholidays
246     kde-base/kdepim kde-base/libkleo
247     kde-base/kdepim kde-base/libkpgp
248     kde-base/kdepim kde-base/libksieve
249     kde-base/kdepim kde-base/mailtransport
250     kde-base/kdepim kde-base/mimelib
251     kde-base/kdepim kde-base/networkstatus
252     kde-base/kdesdk kde-base/cervisia
253     kde-base/kdesdk kde-base/kdeaccounts-plugin
254     kde-base/kdesdk kde-base/kapptemplate
255     kde-base/kdesdk kde-base/kate
256     kde-base/kdesdk kde-base/kbabel
257     kde-base/kdesdk kde-base/kbugbuster
258     kde-base/kdesdk kde-base/kcachegrind
259     kde-base/kdesdk kde-base/kdesdk-kioslaves
260     kde-base/kdesdk kde-base/kdesdk-misc
261     kde-base/kdesdk kde-base/kdesdk-scripts
262     kde-base/kdesdk kde-base/kmtrace
263     kde-base/kdesdk kde-base/kompare
264     kde-base/kdesdk kde-base/kspy
265     kde-base/kdesdk kde-base/kstartperf
266     kde-base/kdesdk kde-base/strigi-analyzer
267     kde-base/kdesdk kde-base/kuiviewer
268     kde-base/kdesdk kde-base/poxml
269     kde-base/kdesdk kde-base/umbrello
270     kde-base/kdetoys kde-base/amor
271     kde-base/kdetoys kde-base/kteatime
272     kde-base/kdetoys kde-base/ktux
273     kde-base/kdetoys kde-base/kweather
274     kde-base/kdetoys kde-base/kworldclock
275     kde-base/kdeutils kde-base/ark
276     kde-base/kdeutils kde-base/kcalc
277     kde-base/kdeutils kde-base/kcharselect
278     kde-base/kdeutils kde-base/kdessh
279     kde-base/kdeutils kde-base/kdf
280     kde-base/kdeutils kde-base/kfloppy
281     kde-base/kdeutils kde-base/kgpg
282     kde-base/kdeutils kde-base/kjots
283     kde-base/kdeutils kde-base/kmilo
284     kde-base/kdeutils kde-base/kregexpeditor
285     kde-base/kdeutils kde-base/kdessh
286     kde-base/kdeutils kde-base/ktimer
287     kde-base/kdeutils kde-base/kwallet
288     kde-base/kdeutils kde-base/superkaramba
289     kde-base/kdeutils kde-base/sweeper
290     kde-base/kdewebdev kde-base/kfilereplace
291     kde-base/kdewebdev kde-base/kimagemapeditor
292     kde-base/kdewebdev kde-base/klinkstatus
293     kde-base/kdewebdev kde-base/kxsldbg
294     kde-base/kdewebdev kde-base/quanta
295     app-office/koffice app-office/karbon
296     app-office/koffice app-office/kchart
297     app-office/koffice app-office/kexi
298     app-office/koffice app-office/kformula
299     app-office/koffice app-office/kivio
300     app-office/koffice app-office/koffice-data
301     app-office/koffice app-office/koffice-libs
302     app-office/koffice app-office/koshell
303     app-office/koffice app-office/kplato
304     app-office/koffice app-office/kpresenter
305     app-office/koffice app-office/krita
306     app-office/koffice app-office/kspread
307     app-office/koffice app-office/kugar
308     app-office/koffice app-office/kword
309     '
310    
311     # @FUNCTION: get-parent-package
312     # @USAGE: <split ebuild>
313     # @DESCRIPTION:
314     # Echoes the name of the monolithic package that a given split ebuild was derived from.
315     get-parent-package() {
316     local parent child
317     while read parent child; do
318     if [[ "${child}" == "$1" ]]; then
319     echo ${parent}
320     return 0
321     fi
322     done <<< "$KDE_DERIVATION_MAP"
323     die "Package $target not found in KDE_DERIVATION_MAP, please report bug"
324     }
325    
326     # @FUNCTION: get-child-packages
327     # @USAGE: <monolithic ebuild>
328     # @DESCRIPTION:
329     # Echoes the names of all (split) ebuilds derived from a given monolithic ebuild.
330     get-child-packages() {
331     local parent child
332     while read parent child; do
333     [[ "${parent}" == "$1" ]] && echo -n "${child} "
334     done <<< "$KDE_DERIVATION_MAP"
335     }
336    
337     # @FUNCTION: is-parent-package
338     # @USAGE: <$CATEGORY/$PN>
339     # @DESCRIPTION:
340     # Returns zero exit-status if the given package is a parent (monolithic) ebuild.
341     # Returns non-zero exit-status if it's not.
342     is-parent-package() {
343     local parent child
344     while read parent child; do
345     [[ "${parent}" == "$1" ]] && return 0
346     done <<< "$KDE_DERIVATION_MAP"
347     return 1
348     }
349    
350     # @FUNCTION: buildsycoca
351     # @DESCRIPTION:
352     # Function to rebuild the KDE System Configuration Cache.
353     # All KDE ebuilds should run this in pkg_postinst and pkg_postrm.
354     #
355     # Note that kde4-base.eclass already does this.
356     buildsycoca() {
357     debug-print-function ${FUNCNAME} "$@"
358    
359 ingmar 1.6 if [[ -x ${KDEDIR}/bin/kbuildsycoca4 && -z "${ROOT%%/}" ]]; then
360 ingmar 1.1 # First of all, make sure that the /usr/share/services directory exists
361     # and it has the right permissions
362     mkdir -p /usr/share/services
363     chown root:0 /usr/share/services
364     chmod 0755 /usr/share/services
365    
366     # kbuildsycoca4 needs a running dbus session to work correctly.
367     # We have to start a new dbus session, because the DBUS_SESSION_BUS_ADDRESS in the environment
368     # could from from the user's environment (through su [without '-']), causing kbuildsycoca4 to hang.
369    
370 ingmar 1.4 echo "Starting dbus session for kbuildsycoca4"
371 ingmar 1.1 local _i
372     for _i in $(dbus-launch); do
373     # We export both the ADDRESS _and_ the PID. We need the latter only to kill our session.
374     debug-print "Exporting: ${_i}"
375     export "${_i}";
376     done
377     debug-print "kbuildsycoca4 is using ${DBUS_SESSION_BUS_ADDRESS}"
378    
379     ebegin "Running kbuildsycoca4 to build global database"
380     # This is needed because we support multiple kde versions installed together.
381 ingmar 1.6 XDG_DATA_DIRS="/usr/share:${KDEDIRS//:/\/share:}/share:/usr/local/share" \
382 ingmar 1.1 ${KDEDIR}/bin/kbuildsycoca4 --global --noincremental &> /dev/null
383     eend $?
384    
385 ingmar 1.4 echo "Killing dbus session for kbuildsycoca4"
386 ingmar 1.6 debug-print "ADDRESS ${DBUS_SESSION_BUS_ADDRESS}"
387 ingmar 1.1 debug-print "PID: ${DBUS_SESSION_BUS_PID}"
388     kill ${DBUS_SESSION_BUS_PID}
389     eend $?
390 ingmar 1.6 unset DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
391 zlin 1.2
392     # For some reason this directory gets created with noone other than root
393     # being able to read it. Hence we chmod it.
394     chmod -R 0755 "${ROOT}"/usr/share/kde4
395 ingmar 1.1 fi
396     }
397    
398     # @FUNCTION: comment_all_add_subdirectory
399     # @USAGE: [list of directory names]
400     # @DESCRIPTION:
401     # recursively comment all add_subdirectory instructions in listed directories
402     # except the ones in cmake/.
403     comment_all_add_subdirectory() {
404     find "$@" -name CMakeLists.txt -print0 | grep -vFzZ "./cmake" | \
405 ingmar 1.6 xargs -0 sed -i -e '/add_subdirectory/s/^/#DONOTCOMPILE /' -e '/ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' || \
406 ingmar 1.1 die "${LINENO}: Initial sed died"
407     }
408    
409 zlin 1.5 # @ECLASS-VARIABLE: KDE_LINGUAS
410     # @DESCRIPTION:
411     # This is a whitespace-separated list of translations that this ebuild supports.
412     # These translations automatically get added to IUSE. Therefore ebuilds must set
413     # this variable before inheriting any eclasses. To only enable selected
414     # translations ebuilds must call enable_selected_linguas(). kde4-base.eclass does
415     # this for you.
416     #
417     # Example: KDE_LINGUAS="en_GB de nl"
418     for _lingua in ${KDE_LINGUAS}; do
419     IUSE="${IUSE} linguas_${_lingua}"
420     done
421    
422     # @FUNCTION: enable_selected_linguas
423     # @DESCRIPTION:
424     # Enable translations based on LINGUAS settings and what translations are
425     # supported (see KDE_LINGUAS). By default translations are found in "${S}"/po
426     # but this default can be overridden by defining KDE_LINGUAS_DIR.
427     enable_selected_linguas() {
428     local lingua
429     comment_all_add_subdirectory "${KDE_LINGUAS_DIR:-${S}/po}"
430     for lingua in ${KDE_LINGUAS}; do
431     if use linguas_${lingua}; then
432 ingmar 1.6 sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
433     -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
434 zlin 1.5 -i "${KDE_LINGUAS_DIR:-${S}/po}"/CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed."
435     fi
436     done
437     }
438    
439 ingmar 1.1 # @ECLASS-VARIABLE: QT4_BUILT_WITH_USE_CHECK
440     # @DESCRIPTION:
441     # A list of USE flags that x11-libs/qt:4 needs to be built with.
442     #
443     # This list is automatically appended to KDE4_BUILT_WITH_USE_CHECK,
444     # so don't call qt4_pkg_setup manually.
445    
446     # @ECLASS-VARIABLE: KDE4_BUILT_WITH_USE_CHECK
447     # @DESCRIPTION:
448     # The contents of $KDE4_BUILT_WITH_USE_CHECK gets fed to built_with_use
449     # (eutils.eclass), line per line.
450     #
451     # Example:
452     # @CODE
453     # pkg_setup() {
454     # KDE4_BUILT_WITH_USE_CHECK="--missing true sys-apps/dbus X"
455     # use alsa && KDE4_BUILT_WITH_USE_CHECK="${KDE4_BUILT_WITH_USE_CHECK}
456     # --missing true media-libs/alsa-lib midi"
457     # kde4-base_pkg_setup
458     # }
459     # @CODE
460    
461     # run built_with_use on each flag and print appropriate error messages if any
462     # flags are missing
463     _kde4-functions_built_with_use() {
464     local missing opt pkg flag flags
465    
466     if [[ ${1} = "--missing" ]]; then
467     missing="${1} ${2}" && shift 2
468     fi
469     if [[ ${1:0:1} = "-" ]]; then
470     opt=${1} && shift
471     fi
472    
473     pkg=${1} && shift
474    
475     for flag in "${@}"; do
476     flags="${flags} ${flag}"
477     if ! built_with_use ${missing} ${opt} ${pkg} ${flag}; then
478     flags="${flags}*"
479     else
480     [[ ${opt} = "-o" ]] && return 0
481     fi
482     done
483     if [[ "${flags# }" = "${@}" ]]; then
484     return 0
485     fi
486     if [[ ${opt} = "-o" ]]; then
487     eerror "This package requires '${pkg}' to be built with any of the following USE flags: '$*'."
488     else
489     eerror "This package requires '${pkg}' to be built with the following USE flags: '${flags# }'."
490     fi
491     return 1
492     }
493    
494     # @FUNCTION: kde4-functions_check_use
495     # @DESCRIPTION:
496     # Check if the Qt4 libraries are built with the USE flags listed in
497     # $QT4_BUILT_WITH_USE_CHECK.
498     #
499     # Check if a list of packages are built with certain USE flags, as listed in
500     # $KDE4_BUILT_WITH_USE_CHECK.
501     #
502     # If any of the required USE flags are missing, an eerror will be printed for
503     # each package with missing USE flags.
504     kde4-functions_check_use() {
505     # I like to keep flags sorted
506     QT4_BUILT_WITH_USE_CHECK=$(echo "${QT4_BUILT_WITH_USE_CHECK}" | \
507     tr '[:space:]' '\n' | sort | xargs)
508    
509 ingmar 1.6 local line missing
510     if [[ -n ${KDE4_BUILT_WITH_USE_CHECK[@]} && $(declare -p KDE4_BUILT_WITH_USE_CHECK) = 'declare -a '* ]]; then
511     KDE4_BUILT_WITH_USE_CHECK=("x11-libs/qt:4 ${QT4_BUILT_WITH_USE_CHECK}"
512     "${KDE4_BUILT_WITH_USE_CHECK[@]}")
513    
514     for line in "${KDE4_BUILT_WITH_USE_CHECK[@]}"; do
515     [[ -z ${line} ]] && continue
516     if ! _kde4-functions_built_with_use ${line}; then
517     missing=true
518     fi
519     done
520     else
521     KDE4_BUILT_WITH_USE_CHECK="x11-libs/qt:4 ${QT4_BUILT_WITH_USE_CHECK}
522 ingmar 1.1 ${KDE4_BUILT_WITH_USE_CHECK}"
523    
524 ingmar 1.6 while read line; do
525     [[ -z ${line} ]] && continue
526     if ! _kde4-functions_built_with_use ${line}; then
527     missing=true
528     fi
529     done <<< "${KDE4_BUILT_WITH_USE_CHECK}"
530     fi
531 ingmar 1.1 if [[ -n ${missing} ]]; then
532     echo
533     eerror "Flags marked with an * are missing."
534     die "Missing USE flags found"
535     fi
536     }

  ViewVC Help
Powered by ViewVC 1.1.20