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

Contents of /eclass/kde4-functions.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (show annotations) (download)
Sat May 17 14:09:03 2008 UTC (6 years, 11 months ago) by zlin
Branch: MAIN
Changes since 1.6: +2 -2 lines
Actually convert to an array... Bug #216863.

1 # Copyright 1999-2008 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-functions.eclass,v 1.6 2008/05/15 19:49:32 ingmar Exp $
4
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 kde-base/kdebase kde-base/kinfocenter
69 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 kde-base/kdebase kde-base/kiconfinder
85 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 kde-base/kdebase kde-base/solid-hardware
102 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 kde-base/kdeedu kde-base/step
161 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 kde-base/kdegames kde-base/kdiamond
167 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 kde-base/kdegames kde-base/kollision
177 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 kde-base/kdegames kde-base/kubrick
187 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 kde-base/kdemultimedia kde-base/dragonplayer
202 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 if [[ -x ${KDEDIR}/bin/kbuildsycoca4 && -z "${ROOT%%/}" ]]; then
360 # 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 echo "Starting dbus session for kbuildsycoca4"
371 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 XDG_DATA_DIRS="/usr/share:${KDEDIRS//:/\/share:}/share:/usr/local/share" \
382 ${KDEDIR}/bin/kbuildsycoca4 --global --noincremental &> /dev/null
383 eend $?
384
385 echo "Killing dbus session for kbuildsycoca4"
386 debug-print "ADDRESS ${DBUS_SESSION_BUS_ADDRESS}"
387 debug-print "PID: ${DBUS_SESSION_BUS_PID}"
388 kill ${DBUS_SESSION_BUS_PID}
389 eend $?
390 unset DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
391
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 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 xargs -0 sed -i -e '/add_subdirectory/s/^/#DONOTCOMPILE /' -e '/ADD_SUBDIRECTORY/s/^/#DONOTCOMPILE /' || \
406 die "${LINENO}: Initial sed died"
407 }
408
409 # @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 sed -e "/add_subdirectory([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
433 -e "/ADD_SUBDIRECTORY([[:space:]]*${lingua}[[:space:]]*)[[:space:]]*$/ s/^#DONOTCOMPILE //" \
434 -i "${KDE_LINGUAS_DIR:-${S}/po}"/CMakeLists.txt || die "Sed to uncomment linguas_${lingua} failed."
435 fi
436 done
437 }
438
439 # @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 | uniq | xargs)
508
509 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 ${KDE4_BUILT_WITH_USE_CHECK}"
523
524 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 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