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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.28 - (hide annotations) (download)
Mon Feb 2 21:35:08 2009 UTC (5 years, 10 months ago) by scarabeus
Branch: MAIN
Changes since 1.27: +10 -10 lines
Fix spaces with tabs.

1 ingmar 1.1 # Copyright 2007-2008 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 scarabeus 1.28 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.27 2009/01/31 21:31:35 patrick Exp $
4 ingmar 1.1
5     # @ECLASS: kde4-base.eclass
6     # @MAINTAINER:
7     # kde@gentoo.org
8 jmbsvicetto 1.13 # @BLURB: This eclass provides functions for kde 4.X ebuilds
9 ingmar 1.1 # @DESCRIPTION:
10 scarabeus 1.22 # The kde4-base.eclass provides support for building KDE4 based ebuilds
11 ingmar 1.1 # and KDE4 applications.
12     #
13 scarabeus 1.22 # NOTE: KDE 4 ebuilds by default define EAPI="2", this can be redefined but
14     # eclass will fail with version older than 2.
15    
16     inherit base cmake-utils eutils multilib kde4-functions
17    
18     get_build_type
19     if [[ $BUILD_TYPE = live ]]; then
20     inherit subversion
21     fi
22    
23     EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_postinst pkg_postrm
24 ingmar 1.1
25 scarabeus 1.22 # @FUNCTION: kde4-base_set_qt_dependencies
26     # @DESCRIPTION:
27     # Set qt dependencies. And use opengl based on OPENGL_REQUIRED variable.
28 philantrop 1.7 kde4-base_set_qt_dependencies() {
29 scarabeus 1.22 local qtdepend qtopengldepend
30 zlin 1.4
31 philantrop 1.7 qtdepend="
32 scarabeus 1.22 x11-libs/qt-core:4[qt3support,ssl]
33     x11-libs/qt-gui:4[accessibility,dbus]
34     x11-libs/qt-qt3support:4[accessibility]
35 ingmar 1.11 x11-libs/qt-script:4
36 scarabeus 1.22 x11-libs/qt-sql:4[qt3support]
37 ingmar 1.11 x11-libs/qt-svg:4
38 scarabeus 1.22 x11-libs/qt-test:4
39     x11-libs/qt-webkit:4"
40 ingmar 1.11 qtopengldepend="x11-libs/qt-opengl:4"
41 philantrop 1.7
42     # opengl dependencies
43 scarabeus 1.22 case ${OPENGL_REQUIRED} in
44 philantrop 1.7 always)
45 scarabeus 1.22 qtdepend="${qtdepend}
46     ${qtopengldepend}"
47     ;;
48 philantrop 1.7 optional)
49 scarabeus 1.22 IUSE="${IUSE} opengl"
50     qtdepend="${qtdepend}
51     opengl? ( ${qtopengldepend} )"
52     ;;
53 philantrop 1.7 *)
54 scarabeus 1.22 OPENGL_REQUIRED="never"
55     ;;
56 philantrop 1.7 esac
57 zlin 1.4
58 yngwin 1.26 COMMONDEPEND="${COMMONDEPEND} ${qtdepend}"
59 philantrop 1.7 }
60     kde4-base_set_qt_dependencies
61 zlin 1.4
62 jmbsvicetto 1.13 # Set the cmake dependencies
63 scarabeus 1.22 # Quite a few packages fail with cmake-2.4 even for KDE 4.1, so we just require 2.6.2
64     CMAKEDEPEND=">=dev-util/cmake-2.6.2"
65 jmbsvicetto 1.13
66     # Set the common dependencies
67     DEPEND="${DEPEND} ${COMMONDEPEND} ${CMAKEDEPEND}
68 ingmar 1.1 dev-util/pkgconfig
69     x11-libs/libXt
70     x11-proto/xf86vidmodeproto"
71     RDEPEND="${RDEPEND} ${COMMONDEPEND}"
72    
73 scarabeus 1.22 if [[ $BUILD_TYPE = live ]]; then
74     # Disable tests for live ebuilds
75     RESTRICT="${RESTRICT} test"
76     # Live ebuilds in kde-base default to kdeprefix by default
77     IUSE="${IUSE} +kdeprefix"
78     else
79     # All other ebuild types default to -kdeprefix as before
80     IUSE="${IUSE} kdeprefix"
81     fi
82 jmbsvicetto 1.13
83 philantrop 1.7 # @ECLASS-VARIABLE: OPENGL_REQUIRED
84     # @DESCRIPTION:
85     # Is qt-opengl required? Possible values are 'always', 'optional' and 'never'.
86     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
87     OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}"
88    
89 zlin 1.4 # @ECLASS-VARIABLE: CPPUNIT_REQUIRED
90     # @DESCRIPTION:
91     # Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'.
92     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
93     CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}"
94    
95 scarabeus 1.22 case ${CPPUNIT_REQUIRED} in
96 zlin 1.4 always)
97 scarabeus 1.22 DEPEND="${DEPEND} dev-util/cppunit"
98     ;;
99 zlin 1.4 optional)
100 scarabeus 1.22 IUSE="${IUSE} test"
101     DEPEND="${DEPEND}
102     test? ( dev-util/cppunit )"
103     ;;
104 zlin 1.4 *)
105 scarabeus 1.22 CPPUNIT_REQUIRED="never"
106     ;;
107 zlin 1.4 esac
108 ingmar 1.1
109     # @ECLASS-VARIABLE: NEED_KDE
110     # @DESCRIPTION:
111     # This variable sets the version of KDE4 which will be used by the eclass.
112     # For kde-base packages, if it is not set by the ebuild,
113 scarabeus 1.22 # it's assumed that the required KDE4 version is the latest available.
114     # For non kde-base packages, it is also set to the latest by default.
115     #
116     # For more precise adjustments or for specifying particular kde version,
117     # KDE_MINIMAL variable can be used.
118 ingmar 1.1 #
119     # @CODE
120     # Acceptable values are:
121     # - latest - Use latest version in the portage tree
122 scarabeus 1.22 # Default for kde-base ebuilds.
123     # - live - Use live release (live ebuilds)
124 ingmar 1.1 # - none - Let the ebuild handle SLOT, kde dependencies, KDEDIR, ...
125 scarabeus 1.22 # - 4.2, 4.1, kde-4 - respective slots for kde versions
126     # @CODE
127     # Note: default NEED_KDE is latest
128     NEED_KDE="${NEED_KDE:=latest}"
129     export NEED_KDE
130    
131     # @ECLASS-VARIABLE: KDE_MINIMAL
132     # @DESCRIPTION:
133     # This wariable is used when NEED_KDE="latest" is set, to specify the
134     # required KDE minimal version for which apps will work.
135     # @CODE
136     # KDE_MINIMAL="-4.1"
137 ingmar 1.1 # @CODE
138 scarabeus 1.22 # Note: default minimal version is kde-4.1, which means that the apps will work
139     # with any KDE version >=${KDE_MINIMAL}
140     KDE_MINIMAL="${KDE_MINIMAL:=4.1}"
141     export KDE_MINIMAL
142    
143     # FIXME: the code section, explanation of live. The last sentence needs other
144     # formulation too.
145     #
146     # @ECLASS-VARIABLE: KDE_WANTED
147     # @DESCRIPTION:
148     # When NEED_KDE=latest is inherited, KDE_WANTED serves to indicate the prefered kde
149     # version. It's value is looked for before any other. Useful when having more
150     # +kdeprefix installs: you can choose which kde version, if present, to link
151     # against.
152 ingmar 1.1 #
153 scarabeus 1.22 # @CODE
154     # Acceptable values are:
155     # stable = whatever is main tree (now 4.1)
156     # testing = whatever is in testing on main tree
157     # snapshot = whatever is released under snapshots (4.2 at present)
158     # live = live svn ebuilds, also default value, do not be scared it goes in this
159     #
160     # order: live->snapshot->testing->stable, when searching for kde. This way we
161     # allow users to use just kde4snapshots and use software from the tree.
162     KDE_WANTED="${KDE_WANTED:=live}"
163     export KDE_WANTED
164 ingmar 1.1
165     case ${NEED_KDE} in
166     latest)
167 scarabeus 1.22 if [[ $KDEBASE = kde-base ]]; then
168 ingmar 1.1 case ${PV} in
169 patrick 1.27 4.2.6*)
170 scarabeus 1.28 _kdedir="4.3"
171     _pv="-${PV}:4.3"
172     _pvn="-${PV}"
173     ;;
174 scarabeus 1.22 4.2* | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*)
175     _kdedir="4.2"
176     _pv="-${PV}:4.2"
177     _pvn="-${PV}"
178     ;;
179 jmbsvicetto 1.13 4.1*| 4.0.9* | 4.0.8*)
180     _kdedir="4.1"
181 scarabeus 1.22 _pv="-${PV}:4.1"
182     _pvn="-${PV}"
183     ;;
184 jmbsvicetto 1.13 4.0*)
185     _kdedir="4.0"
186 scarabeus 1.22 _pv="-${PV}:kde-4"
187     _pvn="-${PV}"
188     ;;
189 jmbsvicetto 1.13 3.9*)
190     _kdedir="3.9"
191 scarabeus 1.22 _pv="-${PV}:kde-4"
192     _pvn="-${PV}"
193     ;;
194     9999*)
195     _kdedir="live"
196     _pv="-${PV}:live"
197     _pvn="-${PV}"
198     ;;
199 jmbsvicetto 1.13 *)
200     die "NEED_KDE=latest not supported for PV=${PV}" ;;
201 scarabeus 1.22 esac
202 ingmar 1.1 _operator=">="
203     else
204 scarabeus 1.22 # this creates dependency on any version of kde4
205     _operator=">="
206     _pv="-${KDE_MINIMAL}"
207     _pvn=${_pv}
208 ingmar 1.1 fi
209     ;;
210 jmbsvicetto 1.13
211 scarabeus 1.22 # NEED_KDE="${PV}"
212     scm|svn|live|9999*)
213     _kdedir="live"
214 ingmar 1.1 _operator=">="
215 scarabeus 1.22 _pv="-${NEED_KDE}:live"
216     _pvn="-${NEED_KDE}"
217     export NEED_KDE="live"
218     ;;
219 patrick 1.27 4.2.6*)
220 scarabeus 1.28 _kdedir="4.3"
221     _pv="-${NEED_KDE}:4.3"
222     _pvn="-${NEED_KDE}"
223     _operator=">="
224     ;;
225 scarabeus 1.22 4.2 | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*)
226     _kdedir="4.2"
227     _pv="-${NEED_KDE}:4.2"
228     _pvn="-${NEED_KDE}"
229 jmbsvicetto 1.13 _operator=">="
230     ;;
231     4.1 | 4.0.9* | 4.0.8*)
232     _kdedir="4.1"
233 scarabeus 1.22 _pv="-${NEED_KDE}:4.1"
234     _pvn="-${NEED_KDE}"
235 jmbsvicetto 1.13 _operator=">="
236 ingmar 1.1 ;;
237 jmbsvicetto 1.13 4.0* | 4)
238 ingmar 1.1 _kdedir="4.0"
239     _operator=">="
240 jmbsvicetto 1.13 _pv="-${NEED_KDE}:kde-4"
241 scarabeus 1.22 _pvn="-${NEED_KDE}"
242 ingmar 1.1 ;;
243     3.9*)
244     _kdedir="3.9"
245     _operator=">="
246     _pv="-${NEED_KDE}:kde-4"
247 scarabeus 1.22 _pvn="-${NEED_KDE}"
248 ingmar 1.1 ;;
249 jmbsvicetto 1.13
250     # The ebuild handles dependencies, KDEDIR, SLOT.
251     none)
252     :
253 ingmar 1.1 ;;
254 jmbsvicetto 1.13
255     *)
256     die "NEED_KDE=${NEED_KDE} currently not supported."
257 ingmar 1.1 ;;
258     esac
259    
260     if [[ ${NEED_KDE} != none ]]; then
261    
262 jmbsvicetto 1.13 #Set the SLOT
263 scarabeus 1.22 if [[ -n $KDEBASE ]]; then
264     if [[ $NEED_KDE = live ]]; then
265     SLOT="live"
266 ingmar 1.1 else
267 scarabeus 1.22 case ${KMNAME} in
268     koffice)
269     case ${PV} in
270     9999*) SLOT="live" ;;
271     *) SLOT="2" ;;
272     esac
273     ;;
274     kdevelop)
275     case ${PV} in
276     9999*) SLOT="live" ;;
277     4.0*|3.9*) SLOT="4" ;;
278     esac
279     ;;
280     kdevplatform)
281     case ${PV} in
282     9999*) SLOT="live" ;;
283     1.0*|0.9*) SLOT="1" ;;
284     esac
285     ;;
286     *)
287     case ${PV} in
288     9999*) SLOT="live" ;;
289     4.2* | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) SLOT="4.2" ;;
290     4.1* | 4.0.9* | 4.0.8*) SLOT="4.1" ;;
291     *) SLOT="4.1" ;;
292     esac
293     ;;
294     esac
295 ingmar 1.1 fi
296     fi
297    
298 scarabeus 1.22 # Block installation of other SLOTS unless kdeprefix
299     for KDE_SLOT in ${KDE_SLOTS[@]}; do
300     # block non kdeprefix ${PN} on other slots
301     # we do this only if we do not depend on any version of kde
302     if [[ ${SLOT} != ${KDE_SLOT} ]]; then
303     DEPEND="${DEPEND}
304     !kdeprefix? ( !kde-base/${PN}:${KDE_SLOT}[-kdeprefix] )"
305     RDEPEND="${RDEPEND}
306     !kdeprefix? ( !kde-base/${PN}:${KDE_SLOT}[-kdeprefix] )"
307     fi
308     done
309 jmbsvicetto 1.13
310 jmbsvicetto 1.19 # Adding kdelibs, kdepimlibs and kdebase-data deps to all other packages.
311 ingmar 1.1 # We only need to add the dependencies if ${PN} is not "kdelibs" or "kdepimlibs"
312 scarabeus 1.22 if [[ $PN != kdelibs ]]; then
313     DEPEND="${DEPEND}
314     kdeprefix? ( ${_operator}kde-base/kdelibs${_pv}[kdeprefix] )
315     !kdeprefix? ( ${_operator}kde-base/kdelibs${_pvn}[-kdeprefix] )"
316     RDEPEND="${RDEPEND}
317     kdeprefix? ( ${_operator}kde-base/kdelibs${_pv}[kdeprefix] )
318     !kdeprefix? ( ${_operator}kde-base/kdelibs${_pvn}[-kdeprefix] )"
319     if [[ $PN != kdepimlibs ]]; then
320     DEPEND="${DEPEND}
321     kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pv}[kdeprefix] )
322     !kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pvn}[-kdeprefix] )"
323     RDEPEND="${RDEPEND}
324     kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pv}[kdeprefix] )
325     !kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pvn}[-kdeprefix] )"
326     if [[ $PN != kdebase-data ]]; then
327     RDEPEND="${RDEPEND}
328     kdeprefix? ( ${_operator}kde-base/kdebase-data${_pv}[kdeprefix] )
329     !kdeprefix? ( ${_operator}kde-base/kdebase-data${_pvn}[-kdeprefix] )"
330 jmbsvicetto 1.19 fi
331 ingmar 1.1 fi
332     fi
333 scarabeus 1.22 unset _operator _pv _pvn
334 ingmar 1.1 fi
335    
336     # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
337     # koffice ebuild, the URI should be set in the ebuild itself
338 scarabeus 1.22 case ${SLOT} in
339     live)
340     ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
341     # Split ebuild, or extragear stuff
342     if [[ -n $KMNAME ]]; then
343     ESVN_PROJECT="${KMNAME}"
344     if [[ -z ${KMNOMODULE} && -z ${KMMODULE} ]]; then
345 jmbsvicetto 1.25 KMMODULE="${PN}"
346 scarabeus 1.22 fi
347     # Split kde-base/ ebuilds: (they reside in trunk/KDE)
348     case ${KMNAME} in
349     kdebase-*)
350     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/KDE/kdebase/${KMNAME#kdebase-}/"
351     ;;
352     kdereview)
353 jmbsvicetto 1.25 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/"
354 scarabeus 1.22 ;;
355     kde*)
356     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/KDE/${KMNAME}"
357     ;;
358     extragear*|playground*)
359     case ${PN} in
360     *-plasma)
361 jmbsvicetto 1.25 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/"
362     ESVN_PROJECT="${KMNAME}/${KMMODULE}/"
363 scarabeus 1.22 ;;
364     *)
365 jmbsvicetto 1.25 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/"
366 scarabeus 1.22 ;;
367     esac
368     ;;
369     koffice)
370     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
371     ;;
372     *)
373     # Extragear material
374     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/"
375     ;;
376     esac
377     else
378     # kdelibs, kdepimlibs
379     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/KDE/${PN}"
380     ESVN_PROJECT="${PN}"
381     fi
382     # limit syncing to 1 hour.
383     ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
384     ;;
385     *)
386     if [[ -n $KDEBASE ]]; then
387     if [[ -n ${KMNAME} ]]; then
388     _kmname=${KMNAME}
389     else
390     _kmname=${PN}
391     fi
392     _kmname_pv="${_kmname}-${PV}"
393     if [[ $NEED_KDE != live ]]; then
394     case ${KDEBASE} in
395     kde-base)
396     case ${PV} in
397 patrick 1.27 4.2.60)
398     SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.svn912032tar.bz2" ;;
399     4.2.61)
400     SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.svn917530.tar.bz2" ;;
401 scarabeus 1.22 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6* | 4.0.9* | 4.0.8*)
402     SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
403     *) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
404     esac
405     ;;
406     koffice)
407     SRC_URI="mirror://kde/unstable/${_kmname_pv}/src/${_kmname_pv}.tar.bz2"
408     ;;
409 ingmar 1.1 esac
410 scarabeus 1.22 fi
411     unset _kmname _kmname_pv
412     fi
413     ;;
414     esac
415 ingmar 1.1
416     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
417    
418     # @ECLASS-VARIABLE: PREFIX
419     # @DESCRIPTION:
420     # Set the installation PREFIX. All kde-base ebuilds go into the KDE4 installation directory.
421 scarabeus 1.22 # Applications installed by the other ebuilds go into ${KDEDIR} by default, this value
422 ingmar 1.1 # can be superseded by defining PREFIX before inheriting kde4-base.
423 jmbsvicetto 1.13 # This value is set on pkg_setup
424     PREFIX=""
425 ingmar 1.1
426 jmbsvicetto 1.13 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SLOT ${SLOT} - NEED_KDE ${NEED_KDE}"
427 ingmar 1.1
428     # @FUNCTION: kde4-base_pkg_setup
429     # @DESCRIPTION:
430     # Adds flags needed by all of KDE 4 to $QT4_BUILT_WITH_USE_CHECK. Uses
431     # kde4-functions_check_use from kde4-functions.eclass to print appropriate
432     # errors and die if any required flags listed in $QT4_BUILT_WITH_USE_CHECK or
433     # $KDE4_BUILT_WITH_USE_CHECK are missing.
434     kde4-base_pkg_setup() {
435     debug-print-function $FUNCNAME "$@"
436    
437 jmbsvicetto 1.13 # Don't set KDEHOME during compile, it will cause access violations
438     unset KDEHOME
439    
440 scarabeus 1.22 # Search for best suitable kde installation for misc kde package.
441     # Computation based on NEED_KDE and KDE_MINIMAL
442     get_latest_kdedir
443 jmbsvicetto 1.13
444 scarabeus 1.22 if [[ $NEED_KDE != none ]]; then
445 jmbsvicetto 1.13 # Set PREFIX
446 scarabeus 1.22 if use kdeprefix; then
447     KDEDIR="/usr/kde/${_kdedir}"
448     KDEDIRS="/usr/local/:/usr:${KDEDIR}"
449     else
450     KDEDIR="/usr"
451     KDEDIRS="/usr/local/:/usr"
452     fi
453 jmbsvicetto 1.13 fi
454 jmbsvicetto 1.15 # Set the prefix based on KDEDIR
455     # Make it a consequence of kdeprefix
456 scarabeus 1.22 PREFIX=$KDEDIR
457 jmbsvicetto 1.13
458     unset _kdedir
459    
460 scarabeus 1.22 # check if qt has correct deps
461     [[ -n ${QT4_BUILT_WITH_USE_CHECK} || -n ${KDE4_BUILT_WITH_USE_CHECK[@]} ]] && \
462     die "built_with_use illegal in this EAPI!"
463    
464     if [[ $BUILD_TYPE = live && -z $I_KNOW_WHAT_I_AM_DOING ]]; then
465     echo
466     elog "WARNING! This is an experimental live ebuild of ${KMNAME:-${PN}}"
467     elog "Use it at your own risk."
468     elog "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
469     echo
470 zlin 1.4 fi
471     }
472    
473     # @FUNCTION: kde4-base_src_unpack
474     # @DESCRIPTION:
475     # This function unpacks the source tarballs for KDE4 applications.
476     #
477     # If no argument is passed to this function, then standard src_unpack is
478 scarabeus 1.22 # executed. Otherwise, options are passed to base_src_unpack.
479 ingmar 1.1 kde4-base_src_unpack() {
480     debug-print-function $FUNCNAME "$@"
481    
482 scarabeus 1.22 if [[ $BUILD_TYPE = live ]]; then
483 scarabeus 1.23 migrate_store_dir
484 scarabeus 1.22 subversion_src_unpack
485 ingmar 1.1 else
486 scarabeus 1.22 [[ -z $KDE_S ]] && KDE_S="${S}"
487     if [[ -z $* ]]; then
488     # Unpack first and deal with KDE patches after examing possible patch sets.
489     # To be picked up, patches need to conform to the guidelines stated before.
490     # Monolithic ebuilds will use the split ebuild patches.
491     [[ -d "${KDE_S}" ]] || unpack ${A}
492     fi
493     # Updated cmake dir
494     if [[ -d "${WORKDIR}/cmake" && -d "${KDE_S}/cmake" ]]; then
495     ebegin "Updating cmake/ directory..."
496     rm -rf "${KDE_S}/cmake" || die "Unable to remove old cmake/ directory"
497     ln -s "${WORKDIR}/cmake" "${KDE_S}/cmake" || die "Unable to symlink the new cmake/ directory"
498     eend 0
499     fi
500 ingmar 1.1 fi
501 scarabeus 1.22 }
502 ingmar 1.1
503 scarabeus 1.22 # @FUNCTION: kde4-base_src_compile
504     # @DESCRIPTION:
505     # General pre-configure and pre-compile function for KDE4 applications.
506     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
507     # enable_selected_linguas() in kde4-functions.eclass(5) for further details.
508     kde4-base_src_prepare() {
509     debug-print-function ${FUNCNAME} "$@"
510 zlin 1.8
511     # Only enable selected languages, used for KDE extragear apps.
512 scarabeus 1.22 if [[ -n $KDE_LINGUAS ]]; then
513 zlin 1.8 enable_selected_linguas
514     fi
515 ingmar 1.1
516 scarabeus 1.22 # Autopatch
517     base_src_prepare
518 scarabeus 1.20
519 scarabeus 1.22 # Save library dependencies
520     if [[ -n $KMSAVELIBS ]] ; then
521     save_library_dependencies
522     fi
523 scarabeus 1.20
524 scarabeus 1.22 # Inject library dependencies
525     if [[ -n $KMLOADLIBS ]] ; then
526     load_library_dependencies
527 jmbsvicetto 1.13 fi
528 ingmar 1.1 }
529    
530     # @FUNCTION: kde4-base_src_configure
531     # @DESCRIPTION:
532     # Function for configuring the build of KDE4 applications.
533     kde4-base_src_configure() {
534     debug-print-function ${FUNCNAME} "$@"
535    
536 scarabeus 1.22 # We prefer KDE's own Debugfull mode over the standard Debug
537     if has debug ${IUSE//+} && use debug ; then
538     ebegin "Enabling debug flag"
539     mycmakeargs="${mycmakeargs} -DCMAKE_BUILD_TYPE=Debugfull"
540     eend $?
541 ingmar 1.1 fi
542    
543     # Enable generation of HTML handbook
544     if has htmlhandbook ${IUSE//+} && use htmlhandbook; then
545 scarabeus 1.22 ebegin "Enabling building of HTML handbook"
546 ingmar 1.1 mycmakeargs="${mycmakeargs} -DKDE4_ENABLE_HTMLHANDBOOK=ON"
547 scarabeus 1.22 eend $?
548 ingmar 1.1 fi
549    
550     # Build tests in src_test only, where we override this value
551     mycmakeargs="${mycmakeargs} -DKDE4_BUILD_TESTS=OFF"
552    
553     # Set distribution name
554 scarabeus 1.22 [[ $PN = kdelibs ]] && mycmakeargs="${mycmakeargs} -DKDE_DISTRIBUTION_TEXT=Gentoo"
555 ingmar 1.1
556     # runpath linking
557     mycmakeargs="${mycmakeargs} -DKDE4_USE_ALWAYS_FULL_RPATH=ON"
558    
559     # Here we set the install prefix
560     mycmakeargs="${mycmakeargs} -DCMAKE_INSTALL_PREFIX=${PREFIX}"
561    
562 jmbsvicetto 1.13 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
563 scarabeus 1.22 use kdeprefix || mycmakeargs="${mycmakeargs} -DSYSCONF_INSTALL_DIR=/etc"
564 jmbsvicetto 1.13
565 ingmar 1.1 # Set environment
566     QTEST_COLORED=1
567     QT_PLUGIN_PATH=${KDEDIR}/$(get_libdir)/kde4/plugins/
568    
569 jmbsvicetto 1.13 # hardcode path to *.cmake KDE files
570 alexxy 1.24 export PKG_CONFIG_PATH="${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}${KDEDIR}/$(get_libdir)/pkgconfig"
571 jmbsvicetto 1.13
572 scarabeus 1.22 # additonal arguments for KOFFICE
573     if [[ $KMNAME = koffice ]]; then
574     case ${PN} in
575     koffice-data) : ;;
576     *)
577     mycmakeargs="${mycmakeargs}
578     -DWITH_OpenEXR=ON
579     $(cmake-utils_use_with crypt QCA2)
580     $(cmake-utils_use_with opengl OpenGL)"
581     if use crypt; then
582     mycmakeargs="${mycmakeargs}
583     -DQCA2_LIBRARIES=/usr/$(get_libdir)/qca2/libqca.so.2"
584     fi
585     ;;
586     esac
587     fi
588    
589     [ -e CMakeLists.txt ] && cmake-utils_src_configure
590     }
591    
592     # @FUNCTION: kde4-base_src_compile
593     # @DESCRIPTION:
594     # General function for compiling KDE4 applications.
595     kde4-base_src_compile() {
596     debug-print-function ${FUNCNAME} "$@"
597    
598     kde4-base_src_make
599 ingmar 1.1 }
600    
601     # @FUNCTION: kde4-base_src_make
602     # @DESCRIPTION:
603     # Function for building KDE4 applications.
604     # Options are passed to cmake-utils_src_make.
605     kde4-base_src_make() {
606     debug-print-function ${FUNCNAME} "$@"
607    
608 scarabeus 1.22 if [[ -d "$WORKDIR/${PN}_build" ]]; then
609     pushd "${WORKDIR}"/${PN}_build > /dev/null
610     fi
611     [ -e [Mm]akefile ] && cmake-utils_src_make "$@"
612 ingmar 1.1 }
613    
614     # @FUNCTION: kde4-base_src_test
615     # @DESCRIPTION:
616     # Function for testing KDE4 applications.
617     kde4-base_src_test() {
618     debug-print-function ${FUNCNAME} "$@"
619    
620     # Override this value, set in kde4-base_src_configure()
621     mycmakeargs="${mycmakeargs} -DKDE4_BUILD_TESTS=ON"
622     cmake-utils_src_compile
623    
624     cmake-utils_src_test
625     }
626    
627     # @FUNCTION: kde4-base_src_install
628     # @DESCRIPTION:
629     # Function for installing KDE4 applications.
630     kde4-base_src_install() {
631     debug-print-function ${FUNCNAME} "$@"
632    
633 scarabeus 1.22 if [[ -n $KMSAVELIBS ]] ; then
634     install_library_dependencies
635     fi
636    
637 ingmar 1.1 kde4-base_src_make_doc
638 scarabeus 1.22 if [[ -d "$WORKDIR/${PN}_build" ]]; then
639 jmbsvicetto 1.13 pushd "${WORKDIR}"/${PN}_build > /dev/null
640     fi
641     [ -e [Mm]akefile ] && cmake-utils_src_install
642 ingmar 1.1 }
643    
644     # @FUNCTION: kde4-base_src_make_doc
645     # @DESCRIPTION:
646     # Function for installing the documentation of KDE4 applications.
647     kde4-base_src_make_doc() {
648     debug-print-function ${FUNCNAME} "$@"
649    
650     local doc
651     for doc in AUTHORS ChangeLog* README* NEWS TODO; do
652     [[ -s $doc ]] && dodoc ${doc}
653     done
654    
655 scarabeus 1.22 if [[ -z $KMNAME ]]; then
656 ingmar 1.1 for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*}; do
657     if [[ -s $doc ]]; then
658     local doc_complete=${doc}
659     doc="${doc#*/}"
660     newdoc "$doc_complete" "${doc%/*}.${doc##*/}"
661     fi
662     done
663     fi
664    
665 scarabeus 1.22 if [[ -n ${KDEBASE} && -d "${D}/usr/share/doc/${PF}" ]]; then
666 ingmar 1.1 # work around bug #97196
667     dodir /usr/share/doc/kde && \
668     mv "${D}"/usr/share/doc/${PF} "${D}"/usr/share/doc/kde/ || \
669     die "Failed to move docs to kde/ failed."
670     fi
671     }
672    
673     # @FUNCTION: kde4-base_pkg_postinst
674     # @DESCRIPTION:
675     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
676     kde4-base_pkg_postinst() {
677     buildsycoca
678     }
679    
680     # @FUNCTION: kde4-base_pkg_postrm
681     # @DESCRIPTION:
682     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
683     kde4-base_pkg_postrm() {
684     buildsycoca
685     }

  ViewVC Help
Powered by ViewVC 1.1.20