x11-misc/xkeyboard-config - cz_prog - ubuntu patch
[anomen-overlay.git] / eclass / kde-functions.eclass
blob089598262d1c501e070b3fbd1f218cf274c7cbab
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/kde-functions.eclass,v 1.175 2009/11/01 20:26:34 abcd Exp $
5 # @ECLASS: kde-functions.eclass
6 # @MAINTAINER:
7 # kde@gentoo.org
8 # Original author Dan Armak <danarmak@gentoo.org>
10 # @BLURB: This contains everything except things that modify ebuild variables and
11 # @DESCRIPTION:
12 # This contains everything except things that modify ebuild variables
13 # and functions (e.g. $P, src_compile() etc.)
15 inherit qt3 eutils
17 # map of the monolithic->split ebuild derivation; used to build deps describing
18 # the relationships between them
19 KDE_DERIVATION_MAP='
20 kde-base/kdeaccessibility kde-base/kbstateapplet
21 kde-base/kdeaccessibility kde-base/kdeaccessibility-iconthemes
22 kde-base/kdeaccessibility kde-base/kmag
23 kde-base/kdeaccessibility kde-base/kmousetool
24 kde-base/kdeaccessibility kde-base/kmouth
25 kde-base/kdeaccessibility kde-base/kttsd
26 kde-base/kdeaccessibility kde-base/ksayit
27 kde-base/kdeaddons kde-base/atlantikdesigner
28 kde-base/kdeaddons kde-base/kaddressbook-plugins
29 kde-base/kdeaddons kde-base/kate-plugins
30 kde-base/kdeaddons kde-base/kdeaddons-docs-konq-plugins
31 kde-base/kdeaddons kde-base/kdeaddons-kfile-plugins
32 kde-base/kdeaddons kde-base/kicker-applets
33 kde-base/kdeaddons kde-base/knewsticker-scripts
34 kde-base/kdeaddons kde-base/konq-plugins
35 kde-base/kdeaddons kde-base/konqueror-akregator
36 kde-base/kdeaddons kde-base/ksig
37 kde-base/kdeaddons kde-base/noatun-plugins
38 kde-base/kdeaddons kde-base/renamedlg-audio
39 kde-base/kdeaddons kde-base/renamedlg-images
40 kde-base/kdeadmin kde-base/kcron
41 kde-base/kdeadmin kde-base/kdat
42 kde-base/kdeadmin kde-base/kdeadmin-kfile-plugins
43 kde-base/kdeadmin kde-base/knetworkconf
44 kde-base/kdeadmin kde-base/kpackage
45 kde-base/kdeadmin kde-base/ksysv
46 kde-base/kdeadmin kde-base/kuser
47 kde-base/kdeadmin kde-base/lilo-config
48 kde-base/kdeadmin kde-base/secpolicy
49 kde-base/kdeartwork kde-base/kdeartwork-emoticons
50 kde-base/kdeartwork kde-base/kdeartwork-icewm-themes
51 kde-base/kdeartwork kde-base/kdeartwork-iconthemes
52 kde-base/kdeartwork kde-base/kdeartwork-kscreensaver
53 kde-base/kdeartwork kde-base/kdeartwork-kwin-styles
54 kde-base/kdeartwork kde-base/kdeartwork-kworldclock
55 kde-base/kdeartwork kde-base/kdeartwork-kworldwatch
56 kde-base/kdeartwork kde-base/kdeartwork-sounds
57 kde-base/kdeartwork kde-base/kdeartwork-styles
58 kde-base/kdeartwork kde-base/kdeartwork-wallpapers
59 kde-base/kdebase kde-base/drkonqi
60 kde-base/kdebase kde-base/kappfinder
61 kde-base/kdebase kde-base/kate
62 kde-base/kdebase kde-base/kcheckpass
63 kde-base/kdebase kde-base/kcminit
64 kde-base/kdebase kde-base/kcontrol
65 kde-base/kdebase kde-base/kdcop
66 kde-base/kdebase kde-base/kdebase-data
67 kde-base/kdebase kde-base/kdebase-kioslaves
68 kde-base/kdebase kde-base/kdebase-startkde
69 kde-base/kdebase kde-base/kdebugdialog
70 kde-base/kdebase kde-base/kdepasswd
71 kde-base/kdebase kde-base/kdeprint
72 kde-base/kdebase kde-base/kdesktop
73 kde-base/kdebase kde-base/kdesu
74 kde-base/kdebase kde-base/kdialog
75 kde-base/kdebase kde-base/kdm
76 kde-base/kdebase kde-base/kfind
77 kde-base/kdebase kde-base/khelpcenter
78 kde-base/kdebase kde-base/khotkeys
79 kde-base/kdebase kde-base/kicker
80 kde-base/kdebase kde-base/klipper
81 kde-base/kdebase kde-base/kmenuedit
82 kde-base/kdebase kde-base/knetattach
83 kde-base/kdebase kde-base/konqueror
84 kde-base/kdebase kde-base/konsole
85 kde-base/kdebase kde-base/kpager
86 kde-base/kdebase kde-base/kpersonalizer
87 kde-base/kdebase kde-base/kreadconfig
88 kde-base/kdebase kde-base/kscreensaver
89 kde-base/kdebase kde-base/ksmserver
90 kde-base/kdebase kde-base/ksplashml
91 kde-base/kdebase kde-base/kstart
92 kde-base/kdebase kde-base/ksysguard
93 kde-base/kdebase kde-base/ksystraycmd
94 kde-base/kdebase kde-base/ktip
95 kde-base/kdebase kde-base/kwin
96 kde-base/kdebase kde-base/kxkb
97 kde-base/kdebase kde-base/libkonq
98 kde-base/kdebase kde-base/nsplugins
99 kde-base/kdebindings kde-base/dcopc
100 kde-base/kdebindings kde-base/dcopjava
101 kde-base/kdebindings kde-base/dcopperl
102 kde-base/kdebindings kde-base/dcoppython
103 kde-base/kdebindings kde-base/kalyptus
104 kde-base/kdebindings kde-base/kdejava
105 kde-base/kdebindings kde-base/kjsembed
106 kde-base/kdebindings kde-base/korundum
107 kde-base/kdebindings kde-base/pykde
108 kde-base/kdebindings kde-base/qtjava
109 kde-base/kdebindings kde-base/qtruby
110 kde-base/kdebindings kde-base/qtsharp
111 kde-base/kdebindings kde-base/smoke
112 kde-base/kdebindings kde-base/xparts
113 kde-base/kdeedu kde-base/blinken
114 kde-base/kdeedu kde-base/kalzium
115 kde-base/kdeedu kde-base/kanagram
116 kde-base/kdeedu kde-base/kbruch
117 kde-base/kdeedu kde-base/kdeedu-applnk
118 kde-base/kdeedu kde-base/keduca
119 kde-base/kdeedu kde-base/kgeography
120 kde-base/kdeedu kde-base/khangman
121 kde-base/kdeedu kde-base/kig
122 kde-base/kdeedu kde-base/kiten
123 kde-base/kdeedu kde-base/klatin
124 kde-base/kdeedu kde-base/klettres
125 kde-base/kdeedu kde-base/kmathtool
126 kde-base/kdeedu kde-base/kmessedwords
127 kde-base/kdeedu kde-base/kmplot
128 kde-base/kdeedu kde-base/kpercentage
129 kde-base/kdeedu kde-base/kstars
130 kde-base/kdeedu kde-base/ktouch
131 kde-base/kdeedu kde-base/kturtle
132 kde-base/kdeedu kde-base/kverbos
133 kde-base/kdeedu kde-base/kvoctrain
134 kde-base/kdeedu kde-base/kwordquiz
135 kde-base/kdeedu kde-base/libkdeedu
136 kde-base/kdegames kde-base/atlantik
137 kde-base/kdegames kde-base/kasteroids
138 kde-base/kdegames kde-base/katomic
139 kde-base/kdegames kde-base/kbackgammon
140 kde-base/kdegames kde-base/kbattleship
141 kde-base/kdegames kde-base/kblackbox
142 kde-base/kdegames kde-base/kbounce
143 kde-base/kdegames kde-base/kenolaba
144 kde-base/kdegames kde-base/kfouleggs
145 kde-base/kdegames kde-base/kgoldrunner
146 kde-base/kdegames kde-base/kjumpingcube
147 kde-base/kdegames kde-base/klickety
148 kde-base/kdegames kde-base/klines
149 kde-base/kdegames kde-base/kmahjongg
150 kde-base/kdegames kde-base/kmines
151 kde-base/kdegames kde-base/knetwalk
152 kde-base/kdegames kde-base/kolf
153 kde-base/kdegames kde-base/konquest
154 kde-base/kdegames kde-base/kpat
155 kde-base/kdegames kde-base/kpoker
156 kde-base/kdegames kde-base/kreversi
157 kde-base/kdegames kde-base/ksame
158 kde-base/kdegames kde-base/kshisen
159 kde-base/kdegames kde-base/ksirtet
160 kde-base/kdegames kde-base/ksmiletris
161 kde-base/kdegames kde-base/ksnake
162 kde-base/kdegames kde-base/ksokoban
163 kde-base/kdegames kde-base/kspaceduel
164 kde-base/kdegames kde-base/ktron
165 kde-base/kdegames kde-base/ktuberling
166 kde-base/kdegames kde-base/kwin4
167 kde-base/kdegames kde-base/libkdegames
168 kde-base/kdegames kde-base/libksirtet
169 kde-base/kdegames kde-base/lskat
170 kde-base/kdegraphics kde-base/kamera
171 kde-base/kdegraphics kde-base/kcoloredit
172 kde-base/kdegraphics kde-base/kdegraphics-kfile-plugins
173 kde-base/kdegraphics kde-base/kdvi
174 kde-base/kdegraphics kde-base/kfax
175 kde-base/kdegraphics kde-base/kgamma
176 kde-base/kdegraphics kde-base/kghostview
177 kde-base/kdegraphics kde-base/kiconedit
178 kde-base/kdegraphics kde-base/kmrml
179 kde-base/kdegraphics kde-base/kolourpaint
180 kde-base/kdegraphics kde-base/kooka
181 kde-base/kdegraphics kde-base/kpdf
182 kde-base/kdegraphics kde-base/kpovmodeler
183 kde-base/kdegraphics kde-base/kruler
184 kde-base/kdegraphics kde-base/ksnapshot
185 kde-base/kdegraphics kde-base/ksvg
186 kde-base/kdegraphics kde-base/kuickshow
187 kde-base/kdegraphics kde-base/kview
188 kde-base/kdegraphics kde-base/kviewshell
189 kde-base/kdegraphics kde-base/libkscan
190 kde-base/kdemultimedia kde-base/akode
191 kde-base/kdemultimedia kde-base/artsplugin-akode
192 kde-base/kdemultimedia kde-base/artsplugin-audiofile
193 kde-base/kdemultimedia kde-base/artsplugin-mpeglib
194 kde-base/kdemultimedia kde-base/artsplugin-mpg123
195 kde-base/kdemultimedia kde-base/artsplugin-xine
196 kde-base/kdemultimedia kde-base/juk
197 kde-base/kdemultimedia kde-base/kaboodle
198 kde-base/kdemultimedia kde-base/kaudiocreator
199 kde-base/kdemultimedia kde-base/kdemultimedia-arts
200 kde-base/kdemultimedia kde-base/kdemultimedia-kappfinder-data
201 kde-base/kdemultimedia kde-base/kdemultimedia-kfile-plugins
202 kde-base/kdemultimedia kde-base/kdemultimedia-kioslaves
203 kde-base/kdemultimedia kde-base/kmid
204 kde-base/kdemultimedia kde-base/kmix
205 kde-base/kdemultimedia kde-base/krec
206 kde-base/kdemultimedia kde-base/kscd
207 kde-base/kdemultimedia kde-base/libkcddb
208 kde-base/kdemultimedia kde-base/mpeglib
209 kde-base/kdemultimedia kde-base/noatun
210 kde-base/kdenetwork kde-base/dcoprss
211 kde-base/kdenetwork kde-base/kdenetwork-filesharing
212 kde-base/kdenetwork kde-base/kdenetwork-kfile-plugins
213 kde-base/kdenetwork kde-base/kdict
214 kde-base/kdenetwork kde-base/kdnssd
215 kde-base/kdenetwork kde-base/kget
216 kde-base/kdenetwork kde-base/knewsticker
217 kde-base/kdenetwork kde-base/kopete
218 kde-base/kdenetwork kde-base/kpf
219 kde-base/kdenetwork kde-base/kppp
220 kde-base/kdenetwork kde-base/krdc
221 kde-base/kdenetwork kde-base/krfb
222 kde-base/kdenetwork kde-base/ksirc
223 kde-base/kdenetwork kde-base/ktalkd
224 kde-base/kdenetwork kde-base/kwifimanager
225 kde-base/kdenetwork kde-base/librss
226 kde-base/kdenetwork kde-base/lisa
227 kde-base/kdepim kde-base/akregator
228 kde-base/kdepim kde-base/certmanager
229 kde-base/kdepim kde-base/kaddressbook
230 kde-base/kdepim kde-base/kalarm
231 kde-base/kdepim kde-base/kandy
232 kde-base/kdepim kde-base/karm
233 kde-base/kdepim kde-base/kdepim-kioslaves
234 kde-base/kdepim kde-base/kdepim-kresources
235 kde-base/kdepim kde-base/kdepim-wizards
236 kde-base/kdepim kde-base/kitchensync
237 kde-base/kdepim kde-base/kmail
238 kde-base/kdepim kde-base/kmailcvt
239 kde-base/kdepim kde-base/knode
240 kde-base/kdepim kde-base/knotes
241 kde-base/kdepim kde-base/kode
242 kde-base/kdepim kde-base/konsolekalendar
243 kde-base/kdepim kde-base/kontact
244 kde-base/kdepim kde-base/kontact-specialdates
245 kde-base/kdepim kde-base/korganizer
246 kde-base/kdepim kde-base/korn
247 kde-base/kdepim kde-base/kpilot
248 kde-base/kdepim kde-base/ksync
249 kde-base/kdepim kde-base/ktnef
250 kde-base/kdepim kde-base/libkcal
251 kde-base/kdepim kde-base/libkdenetwork
252 kde-base/kdepim kde-base/libkdepim
253 kde-base/kdepim kde-base/libkholidays
254 kde-base/kdepim kde-base/libkmime
255 kde-base/kdepim kde-base/libkpgp
256 kde-base/kdepim kde-base/libkpimexchange
257 kde-base/kdepim kde-base/libkpimidentities
258 kde-base/kdepim kde-base/libksieve
259 kde-base/kdepim kde-base/mimelib
260 kde-base/kdepim kde-base/networkstatus
261 kde-base/kdesdk kde-base/cervisia
262 kde-base/kdesdk kde-base/kapptemplate
263 kde-base/kdesdk kde-base/kbabel
264 kde-base/kdesdk kde-base/kbugbuster
265 kde-base/kdesdk kde-base/kcachegrind
266 kde-base/kdesdk kde-base/kdesdk-kfile-plugins
267 kde-base/kdesdk kde-base/kdesdk-kioslaves
268 kde-base/kdesdk kde-base/kdesdk-misc
269 kde-base/kdesdk kde-base/kdesdk-scripts
270 kde-base/kdesdk kde-base/kmtrace
271 kde-base/kdesdk kde-base/kompare
272 kde-base/kdesdk kde-base/kspy
273 kde-base/kdesdk kde-base/kuiviewer
274 kde-base/kdesdk kde-base/umbrello
275 kde-base/kdetoys kde-base/amor
276 kde-base/kdetoys kde-base/eyesapplet
277 kde-base/kdetoys kde-base/fifteenapplet
278 kde-base/kdetoys kde-base/kmoon
279 kde-base/kdetoys kde-base/kodo
280 kde-base/kdetoys kde-base/kteatime
281 kde-base/kdetoys kde-base/ktux
282 kde-base/kdetoys kde-base/kweather
283 kde-base/kdetoys kde-base/kworldclock
284 kde-base/kdetoys kde-base/kworldwatch
285 kde-base/kdeutils kde-base/ark
286 kde-base/kdeutils kde-base/kcalc
287 kde-base/kdeutils kde-base/kcharselect
288 kde-base/kdeutils kde-base/kdelirc
289 kde-base/kdeutils kde-base/kdf
290 kde-base/kdeutils kde-base/kedit
291 kde-base/kdeutils kde-base/kfloppy
292 kde-base/kdeutils kde-base/kgpg
293 kde-base/kdeutils kde-base/khexedit
294 kde-base/kdeutils kde-base/kjots
295 kde-base/kdeutils kde-base/klaptopdaemon
296 kde-base/kdeutils kde-base/kmilo
297 kde-base/kdeutils kde-base/kregexpeditor
298 kde-base/kdeutils kde-base/ksim
299 kde-base/kdeutils kde-base/ktimer
300 kde-base/kdeutils kde-base/kwalletmanager
301 kde-base/kdeutils kde-base/superkaramba
302 kde-base/kdewebdev kde-base/kfilereplace
303 kde-base/kdewebdev kde-base/kimagemapeditor
304 kde-base/kdewebdev kde-base/klinkstatus
305 kde-base/kdewebdev kde-base/kommander
306 kde-base/kdewebdev kde-base/kxsldbg
307 kde-base/kdewebdev kde-base/quanta
308 app-office/koffice app-office/karbon
309 app-office/koffice app-office/kchart
310 app-office/koffice app-office/kexi
311 app-office/koffice app-office/kformula
312 app-office/koffice app-office/kivio
313 app-office/koffice app-office/koffice-data
314 app-office/koffice app-office/koffice-libs
315 app-office/koffice app-office/koffice-meta
316 app-office/koffice app-office/koshell
317 app-office/koffice app-office/kplato
318 app-office/koffice app-office/kpresenter
319 app-office/koffice app-office/krita
320 app-office/koffice app-office/kspread
321 app-office/koffice app-office/kugar
322 app-office/koffice app-office/kword
325 # @FUNCTION: get-parent-package
326 # @USAGE: < name of split-ebuild >
327 # @DESCRIPTION:
328 # accepts 1 parameter, the name of a split ebuild; echoes the name of its mother package
329 get-parent-package() {
330 local parent child
331 while read parent child; do
332 if [[ ${child} == $1 ]]; then
333 echo ${parent}
334 return 0
336 done <<EOF
337 $KDE_DERIVATION_MAP
339 die "Package $1 not found in KDE_DERIVATION_MAP, please report bug"
342 # @FUNCTION: get-child-packages
343 # @USAGE: < name of monolithic package >
344 # @DESCRIPTION:
345 # accepts 1 parameter, the name of a monolithic package; echoes the names of all ebuilds derived from it
346 get-child-packages() {
347 local parent child
348 while read parent child; do
349 [[ ${parent} == $1 ]] && echo -n "${child} "
350 done <<EOF
351 $KDE_DERIVATION_MAP
355 # @FUNCTION: is-parent-package
356 # @USAGE: < name >
357 # @RETURN: 0 if <name> is a parent package, otherwise 1
358 is-parent-package() {
359 local parent child
360 while read parent child; do
361 [[ "${parent}" == "$1" ]] && return 0
362 done <<EOF
363 $KDE_DERIVATION_MAP
365 return 1
368 # ---------------------------------------------------------------
369 # kde/qt directory management etc. functions, was kde-dirs.ebuild
370 # ---------------------------------------------------------------
372 # @FUNCTION: need-kde
373 # @USAGE: < version >
374 # @DESCRIPTION:
375 # Sets the correct DEPEND and RDEPEND for the needed kde < version >. Also takes
376 # care of the correct Qt-version and correct RDEPEND handling.
377 need-kde() {
378 debug-print-function $FUNCNAME "$@"
380 KDEVER="$1"
382 # determine install locations
383 set-kdedir ${KDEVER}
385 if [[ "${RDEPEND-unset}" != "unset" ]]; then
386 x_DEPEND="${RDEPEND}"
387 else
388 x_DEPEND="${DEPEND}"
390 if [[ -n "${KDEBASE}" ]]; then
391 # If we're a kde-base package, we need at least our own version of kdelibs.
392 # Note: we only set RDEPEND if it is already set, otherwise
393 # we break packages relying on portage copying RDEPEND from DEPEND.
394 DEPEND="${DEPEND} ~kde-base/kdelibs-$PV"
395 RDEPEND="${x_DEPEND} ~kde-base/kdelibs-${PV}"
396 else
397 # Things outside kde-base need a minimum version,
398 # but kde-base/kdelibs:kde-4 mustn't satisfy it.
399 min-kde-ver ${KDEVER}
400 DEPEND="${DEPEND} =kde-base/kdelibs-3.5*"
401 RDEPEND="${x_DEPEND} =kde-base/kdelibs-3.5*"
404 qtver-from-kdever ${KDEVER}
405 need-qt ${selected_version}
407 if [[ -n "${KDEBASE}" ]]; then
408 SLOT="$KDEMAJORVER.$KDEMINORVER"
409 else
410 : ${SLOT="0"}
414 # @FUNCTION: set-kdedir
415 # @USAGE: < version >
416 # @DESCRIPTION:
417 # Sets the right directories for the kde <version> wrt what kind of package will
418 # be installed, e. g. third-party-apps, kde-base-packages, ...
419 set-kdedir() {
420 debug-print-function $FUNCNAME "$@"
423 # set install location:
424 # - 3rd party apps go into /usr, and have SLOT="0".
425 # - kde-base category ebuilds go into /usr/kde/$MAJORVER.$MINORVER,
426 # and have SLOT="$MAJORVER.$MINORVER".
427 # - kde-base category cvs ebuilds have major version 5 and go into
428 # /usr/kde/cvs; they have SLOT="cvs".
429 # - Backward-compatibility exceptions: all kde2 packages (kde-base or otherwise)
430 # go into /usr/kde/2. kde 3.0.x goes into /usr/kde/3 (and not 3.0).
431 # - kde-base category ebuilds always depend on their exact matching version of
432 # kdelibs and link against it. Other ebuilds link aginst the latest one found.
433 # - This function exports $PREFIX (location to install to) and $KDEDIR
434 # (location of kdelibs to link against) for all ebuilds.
436 # -- Overrides - deprecated but working for now: --
437 # - If $KDEPREFIX is defined (in the profile or env), it overrides everything
438 # and both base and 3rd party kde stuff goes in there.
439 # - If $KDELIBSDIR is defined, the kdelibs installed in that location will be
440 # used, even by kde-base packages.
442 # get version elements
443 IFSBACKUP="$IFS"
444 IFS=".-_"
445 for x in $1; do
446 if [[ -z "$KDEMAJORVER" ]]; then KDEMAJORVER=$x
447 else if [[ -z "$KDEMINORVER" ]]; then KDEMINORVER=$x
448 else if [[ -z "$KDEREVISION" ]]; then KDEREVISION=$x
449 fi; fi; fi
450 done
451 [[ -z "$KDEMINORVER" ]] && KDEMINORVER="0"
452 [[ -z "$KDEREVISION" ]] && KDEREVISION="0"
453 IFS="$IFSBACKUP"
454 debug-print "$FUNCNAME: version breakup: KDEMAJORVER=$KDEMAJORVER KDEMINORVER=$KDEMINORVER KDEREVISION=$KDEREVISION"
456 # install prefix
457 if [[ -n "$KDEPREFIX" ]]; then
458 export PREFIX="$KDEPREFIX"
459 else
460 if [[ -z "$KDEBASE" ]]; then
461 PREFIX="/usr/kde/3.5"
462 else
463 case $KDEMAJORVER.$KDEMINORVER in
464 3*) export PREFIX="/usr/kde/3.5";;
465 5.0) export PREFIX="/usr/kde/svn";;
466 *) die "failed to set PREFIX";;
467 esac
471 # kdelibs location
472 if [[ -n "$KDELIBSDIR" ]]; then
473 export KDEDIR="$KDELIBSDIR"
474 else
475 if [[ -z "$KDEBASE" ]]; then
476 # find the latest kdelibs installed
477 for x in /usr/kde/{svn,3.5} "${PREFIX}" \
478 "${KDE3LIBSDIR}" "${KDELIBSDIR}" "${KDE3DIR}" "${KDEDIR}" /usr/kde/*; do
479 if [[ -f "${x}/include/kwin.h" ]]; then
480 debug-print found
481 export KDEDIR="$x"
482 break
484 done
485 else
486 # kde-base ebuilds must always use the exact version of kdelibs they came with
487 case $KDEMAJORVER.$KDEMINORVER in
488 3*) export KDEDIR="/usr/kde/3.5";;
489 5.0) export KDEDIR="/usr/kde/svn";;
490 *) die "failed to set KDEDIR";;
491 esac
495 debug-print "$FUNCNAME: Will use the kdelibs installed in $KDEDIR, and install into $PREFIX."
498 # @FUNCTION: need-qt
499 # @USAGE: < version >
500 # @DESCRIPTION:
501 # Sets the DEPEND and RDEPEND for Qt <version>.
502 need-qt() {
503 debug-print-function $FUNCNAME "${@}"
505 QTVER="$1"
507 QT=qt
509 if [[ "${RDEPEND-unset}" != "unset" ]]; then
510 x_DEPEND="${RDEPEND}"
511 else
512 x_DEPEND="${DEPEND}"
515 case ${QTVER} in
516 3*) DEPEND="${DEPEND} =x11-libs/qt-meta-3*"
517 RDEPEND="${RDEPEND} =x11-libs/qt-meta-3*"
519 *) echo "!!! error: $FUNCNAME() called with invalid parameter: \"$QTVER\", please report bug" && exit 1;;
520 esac
524 # @FUNCTION: set-qtdir
525 # @DESCRIPTION:
526 # This function is not needed anymore.
527 set-qtdir() {
531 # @FUNCTION: qtver-from-kdever
532 # @USAGE: < kde-version >
533 # @DESCRIPTION:
534 # returns minimal qt version needed for specified kde version
535 qtver-from-kdever() {
536 debug-print-function $FUNCNAME "$@"
538 local ver
540 case $1 in
541 3.1*) ver=3.1;;
542 3.2*) ver=3.2;;
543 3.3*) ver=3.3;;
544 3.4*) ver=3.3;;
545 3.5*) ver=3.3;;
546 3*) ver=3.0.5;;
547 5) ver=3.3;; # cvs version
548 *) echo "!!! error: $FUNCNAME called with invalid parameter: \"$1\", please report bug" && exit 1;;
549 esac
551 selected_version="$ver"
555 min-kde-ver() {
556 debug-print-function $FUNCNAME "$@"
558 case $1 in
559 3.0*) selected_version="3.0";;
560 3.1*) selected_version="3.1";;
561 3.2*) selected_version="3.2";;
562 3.3*) selected_version="3.3";;
563 3.4*) selected_version="3.4";;
564 3.5*) selected_version="3.5";;
565 3*) selected_version="3.0";;
566 5) selected_version="5";;
567 *) echo "!!! error: $FUNCNAME() called with invalid parameter: \"$1\", please report bug" && exit 1;;
568 esac
572 # @FUNCTION: kde_sandbox_patch
573 # @USAGE: < dir > [ dir ] [ dir ] [...]
574 # @DESCRIPTION:
575 # generic makefile sed for sandbox compatibility. for some reason when the kde makefiles (of many packages
576 # and versions) try to chown root and chmod 4755 some binaries (after installing, target install-exec-local),
577 # they do it to the files in $(bindir), not $(DESTDIR)/$(bindir). Most of these have been fixed in latest cvs
578 # but a few remain here and there.
580 # Pass a list of dirs to sed, Makefile.{am,in} in these dirs will be sed'ed.
581 # This should be harmless if the makefile doesn't need fixing.
582 kde_sandbox_patch() {
583 debug-print-function $FUNCNAME "$@"
585 while [[ -n "$1" ]]; do
586 # can't use dosed, because it only works for things in ${D}, not ${S}
587 cd $1
588 for x in Makefile.am Makefile.in Makefile
590 if [[ -f "$x" ]]; then
591 echo Running sed on $x
592 cp $x ${x}.orig
593 sed -e 's: $(bindir): $(DESTDIR)/$(bindir):g' -e 's: $(kde_datadir): $(DESTDIR)/$(kde_datadir):g' -e 's: $(TIMID_DIR): $(DESTDIR)/$(TIMID_DIR):g' ${x}.orig > ${x}
594 rm ${x}.orig
596 done
597 shift
598 done
602 # @FUNCTION: kde_remove_flag
603 # @USAGE: < dir > < flag >
604 # @DESCRIPTION:
605 # remove an optimization flag from a specific subdirectory's makefiles.
606 # currently kdebase and koffice use it to compile certain subdirs without
607 # -fomit-frame-pointer which breaks some things.
608 kde_remove_flag() {
609 debug-print-function $FUNCNAME "$@"
611 cd "${S}"/${1} || die "cd to '${S}/${1}' failed."
612 [[ -n "$2" ]] || die "missing argument to kde_remove_flag"
614 cp Makefile Makefile.orig
615 sed -e "/CFLAGS/ s/${2}//g
616 /CXXFLAGS/ s/${2}//g" Makefile.orig > Makefile
618 cd "${OLDPWD}"
622 buildsycoca() {
623 [[ $EBUILD_PHASE != postinst ]] && [[ $EBUILD_PHASE != postrm ]] && \
624 die "buildsycoca() has to be calles in pkg_postinst() and pkg_postrm()."
626 if [[ -x ${KDEDIR}/bin/kbuildsycoca ]] && [[ -z ${ROOT} || ${ROOT} == "/" ]] ; then
627 # First of all, make sure that the /usr/share/services directory exists
628 # and it has the right permissions
629 mkdir -p /usr/share/services
630 chown root:0 /usr/share/services
631 chmod 0755 /usr/share/services
633 ebegin "Running kbuildsycoca to build global database"
634 # Filter all KDEDIRs not belonging to the current SLOT from XDG_DATA_DIRS
635 # before running kbuildsycoca. This makes sure they don't show up in the
636 # 3.5 K-menu unless the user manually adds them.
637 XDG_DATA_DIRS="/usr/share:${KDEDIR}/share:/usr/local/share"
638 "${KDEDIR}"/bin/kbuildsycoca --global --noincremental &> /dev/null
639 eend $?
643 postprocess_desktop_entries() {
644 [[ $EBUILD_PHASE != preinst ]] && [[ $EBUILD_PHASE != install ]] && \
645 die "postprocess_desktop_entries() has to be called in src_install() or pkg_preinst()."
647 if [[ -d ${D}${PREFIX}/share/applnk ]] ; then
648 # min/max depth is _important_ as it excludes legacy KDE stuff. Moving it would cause breakage.
649 local desktop_entries="$(find "${D}${PREFIX}/share/applnk" -mindepth 2 -maxdepth 2 \
650 -name '*\.desktop' -not -path '*.hidden*' 2>/dev/null)"
652 if [[ -n ${desktop_entries} ]]; then
653 for entry in ${desktop_entries} ; do
654 if ! [[ -f "${D}${PREFIX}"/share/applications/kde/${entry##*/} ]] ; then
655 dodir "${PREFIX}"/share/applications/kde
656 mv ${entry} "${D}${PREFIX}"/share/applications/kde
658 done
662 validate_desktop_entries "${PREFIX}"/share/applications
665 # is this a kde-base ebuid?
666 if [[ "${CATEGORY}" == "kde-base" ]]; then
667 debug-print "${ECLASS}: KDEBASE ebuild recognized"
668 export KDEBASE="true"
669 export KDEREVISION