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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.58 - (show annotations) (download)
Tue Feb 2 14:20:16 2010 UTC (4 years, 2 months ago) by reavertm
Branch: MAIN
Changes since 1.57: +20 -17 lines
Synchronized KDE eclasses from overlay, changes:
- KDE SC 4.5 support
- EAPI-3 support
- prefix support
- moved docs to /usr/share/doc/${PF}
- applied override for kdepim hardcoded checks

1 # Copyright 1999-2010 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: $
4
5 # @ECLASS: kde4-base.eclass
6 # @MAINTAINER:
7 # kde@gentoo.org
8 # @BLURB: This eclass provides functions for kde 4.X ebuilds
9 # @DESCRIPTION:
10 # The kde4-base.eclass provides support for building KDE4 based ebuilds
11 # and KDE4 applications.
12 #
13 # 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 # @ECLASS-VARIABLE: CMAKE_REQUIRED
17 # @DESCRIPTION:
18 # Specify if cmake buildsystem is being used. Possible values are 'always' and 'never'.
19 # Please note that if it's set to 'never' you need to explicitly override following phases:
20 # src_configure, src_compile, src_test and src_install.
21 # Defaults to 'always'.
22 : ${CMAKE_REQUIRED:=always}
23 if [[ ${CMAKE_REQUIRED} = false || ${CMAKE_REQUIRED} = never ]]; then
24 buildsystem_eclass=""
25 export_fns=""
26 else
27 buildsystem_eclass="cmake-utils"
28 export_fns="src_configure src_compile src_test src_install"
29 fi
30
31 inherit kde4-functions
32
33 get_build_type
34 if [[ ${BUILD_TYPE} = live ]]; then
35 subversion_eclass="subversion"
36 fi
37
38 inherit base ${buildsystem_eclass} eutils ${subversion_eclass}
39
40 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare ${export_fns} pkg_postinst pkg_postrm
41
42 unset buildsystem_eclass
43 unset export_fns
44 unset subversion_eclass
45
46 case ${KDEBASE} in
47 kde-base)
48 HOMEPAGE="http://www.kde.org/"
49 LICENSE="GPL-2"
50 ;;
51 koffice)
52 HOMEPAGE="http://www.koffice.org/"
53 LICENSE="GPL-2"
54 ;;
55 esac
56
57 # @ECLASS-VARIABLE: OPENGL_REQUIRED
58 # @DESCRIPTION:
59 # Is qt-opengl required? Possible values are 'always', 'optional' and 'never'.
60 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
61 OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}"
62
63 # @ECLASS-VARIABLE: MULTIMEDIA_REQUIRED
64 # @DESCRIPTION:
65 # Is qt-multimedia required? Possible values are 'always', 'optional' and 'never'.
66 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
67 MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}"
68
69 # @ECLASS-VARIABLE: WEBKIT_REQUIRED
70 # @DESCRIPTION:
71 # Is qt-webkit requred? Possible values are 'always', 'optional' and 'never'.
72 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
73 WEBKIT_REQUIRED="${WEBKIT_REQUIRED:-never}"
74
75 # @ECLASS-VARIABLE: CPPUNIT_REQUIRED
76 # @DESCRIPTION:
77 # Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'.
78 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
79 CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}"
80
81 # @ECLASS-VARIABLE: KDE_REQUIRED
82 # @DESCRIPTION:
83 # Is kde required? Possible values are 'always', 'optional' and 'never'.
84 # This variable must be set before inheriting any eclasses. Defaults to 'always'
85 # If set to always or optional, KDE_MINIMAL may be overriden as well.
86 # Note that for kde-base packages this variable is fixed to 'always'.
87 KDE_REQUIRED="${KDE_REQUIRED:-always}"
88
89 # Verify KDE_MINIMAL (display QA notice in pkg_setup, still we need to fix it here)
90 if [[ -n ${KDE_MINIMAL} ]]; then
91 for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
92 [[ ${KDE_MINIMAL} = ${slot} ]] && KDE_MINIMAL_VALID=1 && break
93 done
94 unset slot
95 [[ -z ${KDE_MINIMAL_VALID} ]] && unset KDE_MINIMAL
96 else
97 KDE_MINIMAL_VALID=1
98 fi
99
100 # @ECLASS-VARIABLE: KDE_MINIMAL
101 # @DESCRIPTION:
102 # This variable is used when KDE_REQUIRED is set, to specify required KDE minimal
103 # version for apps to work. Currently defaults to 4.3
104 # One may override this variable to raise version requirements.
105 # For possible values look at KDE_SLOTS and KDE_LIVE_SLOTS variables.
106 # Note that it is fixed to ${SLOT} for kde-base packages.
107 KDE_MINIMAL="${KDE_MINIMAL:-4.3}"
108
109 # Setup packages inheriting this eclass
110 case ${KDEBASE} in
111 kde-base)
112 if [[ $BUILD_TYPE = live ]]; then
113 # Disable tests for live ebuilds
114 RESTRICT+=" test"
115 # Live ebuilds in kde-base default to kdeprefix by default
116 IUSE+=" +kdeprefix"
117 else
118 # All other ebuild types default to -kdeprefix as before
119 IUSE+=" kdeprefix"
120 fi
121 # Determine SLOT from PVs
122 case ${PV} in
123 *.9999*) SLOT="${PV/.9999*/}" ;; # stable live
124 4.5* | 4.4.[6-9]*) SLOT="4.5" ;;
125 4.4* | 4.3.[6-9]*) SLOT="4.4" ;;
126 4.3*) SLOT="4.3" ;;
127 9999*) SLOT="live" ;; # regular live
128 *) die "Unsupported ${PV}" ;;
129 esac
130 # This code is to prevent portage from searching GENTOO_MIRRORS for
131 # packages that will never be mirrored. (As they only will ever be in
132 # the overlay).
133 case ${PV} in
134 *9999* | 4.?.[6-9]?)
135 RESTRICT+=" mirror"
136 ;;
137 esac
138 KDE_MINIMAL="${SLOT}"
139 _kdedir="${SLOT}"
140
141 # Block installation of other SLOTS unless kdeprefix
142 RDEPEND+=" $(block_other_slots)"
143 ;;
144 koffice)
145 SLOT="2"
146 ;;
147 esac
148
149 # @ECLASS-VARIABLE: QT_MINIMAL
150 # @DESCRIPTION:
151 # Determine version of qt we enforce as minimal for the package. 4.4.0 4.5.1..
152 # Currently defaults to 4.5.1 for KDE 4.3 and earlier
153 # or 4.6.0_rc1 for KDE 4.4 and later
154 if slot_is_at_least 4.4 "${KDE_MINIMAL}"; then
155 QT_MINIMAL="${QT_MINIMAL:-4.6.0}"
156 fi
157
158 QT_MINIMAL="${QT_MINIMAL:-4.5.1}"
159
160 # OpenGL dependencies
161 qtopengldepend="
162 >=x11-libs/qt-opengl-${QT_MINIMAL}:4
163 "
164 case ${OPENGL_REQUIRED} in
165 always)
166 COMMONDEPEND+=" ${qtopengldepend}"
167 ;;
168 optional)
169 IUSE+=" opengl"
170 COMMONDEPEND+=" opengl? ( ${qtopengldepend} )"
171 ;;
172 *) ;;
173 esac
174 unset qtopengldepend
175
176 # MultiMedia dependencies
177 qtmultimediadepend="
178 >=x11-libs/qt-multimedia-${QT_MINIMAL}:4
179 "
180 case ${MULTIMEDIA_REQUIRED} in
181 always)
182 COMMONDEPEND+=" ${qtmultimediadepend}"
183 ;;
184 optional)
185 IUSE+=" multimedia"
186 COMMONDEPEND+=" multimedia? ( ${qtmultimediadepend} )"
187 ;;
188 *) ;;
189 esac
190 unset qtmultimediadepend
191
192 # WebKit dependencies
193 case ${KDE_REQUIRED} in
194 always)
195 qtwebkitusedeps="[kde]"
196 ;;
197 optional)
198 qtwebkitusedeps="[kde?]"
199 ;;
200 *) ;;
201 esac
202 qtwebkitdepend="
203 >=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps}
204 "
205 unset qtwebkitusedeps
206 case ${WEBKIT_REQUIRED} in
207 always)
208 COMMONDEPEND+=" ${qtwebkitdepend}"
209 ;;
210 optional)
211 IUSE+=" webkit"
212 COMMONDEPEND+=" webkit? ( ${qtwebkitdepend} )"
213 ;;
214 *) ;;
215 esac
216 unset qtwebkitdepend
217
218 # CppUnit dependencies
219 cppuintdepend="
220 dev-util/cppunit
221 "
222 case ${CPPUNIT_REQUIRED} in
223 always)
224 DEPEND+=" ${cppuintdepend}"
225 ;;
226 optional)
227 IUSE+=" test"
228 DEPEND+=" test? ( ${cppuintdepend} )"
229 ;;
230 *) ;;
231 esac
232 unset cppuintdepend
233
234 # KDE dependencies
235 kdecommondepend="
236 dev-lang/perl
237 >=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl]
238 >=x11-libs/qt-gui-${QT_MINIMAL}:4[accessibility,dbus]
239 >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde]
240 >=x11-libs/qt-script-${QT_MINIMAL}:4
241 >=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support]
242 >=x11-libs/qt-svg-${QT_MINIMAL}:4
243 >=x11-libs/qt-test-${QT_MINIMAL}:4
244 !aqua? (
245 x11-libs/libXext
246 x11-libs/libXt
247 x11-libs/libXxf86vm
248 )
249 "
250 if [[ ${PN} != kdelibs ]]; then
251 if [[ ${KDEBASE} = kde-base ]]; then
252 kdecommondepend+=" $(add_kdebase_dep kdelibs)"
253 # libknotificationitem only when SLOT is 4.3
254 [[ ${PN} != libknotificationitem ]] && [[ ${SLOT} = 4.3 ]] && \
255 kdecommondepend+=" $(add_kdebase_dep libknotificationitem)"
256 else
257 kdecommondepend+="
258 >=kde-base/kdelibs-${KDE_MINIMAL}
259 "
260 fi
261 fi
262 kdedepend="
263 dev-util/pkgconfig
264 !aqua? (
265 || ( >=x11-libs/libXtst-1.1.0 <x11-proto/xextproto-7.1.0 )
266 x11-proto/xf86vidmodeproto
267 )
268 "
269 case ${KDE_REQUIRED} in
270 always)
271 IUSE+=" aqua"
272 COMMONDEPEND+=" ${kdecommondepend}"
273 DEPEND+=" ${kdedepend}"
274 ;;
275 optional)
276 IUSE+=" aqua kde"
277 COMMONDEPEND+=" kde? ( ${kdecommondepend} )"
278 DEPEND+=" kde? ( ${kdedepend} )"
279 ;;
280 *) ;;
281 esac
282
283 unset kdecommondepend kdedepend
284
285 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}"
286 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}"
287 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}"
288
289 # Accumulate dependencies set by this eclass
290 DEPEND+=" ${COMMONDEPEND}"
291 RDEPEND+=" ${COMMONDEPEND}"
292 unset COMMONDEPEND
293
294 # Add experimental kdeenablefinal, disabled by default
295 IUSE+=" kdeenablefinal"
296
297 # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
298 # koffice ebuild, the URI should be set in the ebuild itself
299 case ${BUILD_TYPE} in
300 live)
301 # Determine branch URL based on live type
302 local branch_prefix
303 case ${PV} in
304 9999*)
305 # trunk
306 branch_prefix="trunk/KDE"
307 ;;
308 *)
309 # branch
310 branch_prefix="branches/KDE/${SLOT}"
311 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
312 # @DESCRIPTION
313 # Suffix appended to ESVN_PROJECT depending on fetched branch.
314 # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
315 ESVN_PROJECT_SUFFIX="-${PV}"
316 ;;
317 esac
318 SRC_URI=""
319 # @ECLASS-VARIABLE: ESVN_MIRROR
320 # @DESCRIPTION:
321 # This variable allows easy overriding of default kde mirror service
322 # (anonsvn) with anything else you might want to use.
323 ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
324 # Split ebuild, or extragear stuff
325 if [[ -n ${KMNAME} ]]; then
326 ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
327 if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
328 KMMODULE="${PN}"
329 fi
330 # Split kde-base/ ebuilds: (they reside in trunk/KDE)
331 case ${KMNAME} in
332 kdebase-*)
333 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
334 ;;
335 kdelibs-*)
336 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
337 ;;
338 kdereview*)
339 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
340 ;;
341 kdesupport)
342 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
343 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
344 ;;
345 kde*)
346 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
347 ;;
348 extragear*|playground*)
349 # Unpack them in toplevel dir, so that they won't conflict with kde4-meta
350 # build packages from same svn location.
351 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
352 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
353 ;;
354 koffice)
355 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
356 ;;
357 *)
358 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
359 ;;
360 esac
361 else
362 # kdelibs, kdepimlibs
363 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}"
364 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
365 fi
366 # @ECLASS-VARIABLE: ESVN_UP_FREQ
367 # @DESCRIPTION:
368 # This variable is used for specifying the timeout between svn synces
369 # for kde-base and koffice modules. Does not affect misc apps.
370 # Default value is 1 hour.
371 [[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
372 ;;
373 *)
374 if [[ -n ${KDEBASE} ]]; then
375 if [[ -n ${KMNAME} ]]; then
376 case ${KMNAME} in
377 kdebase-apps)
378 _kmname="kdebase" ;;
379 *)
380 _kmname="${KMNAME}" ;;
381 esac
382 else
383 _kmname=${PN}
384 fi
385 _kmname_pv="${_kmname}-${PV}"
386 case ${KDEBASE} in
387 kde-base)
388 case ${PV} in
389 4.[34].8[05] | 4.[34].9[0568])
390 # block for normally packed unstable releases
391 SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
392 4.[34].[6-9]*)
393 # Repacked tarballs: need to depend on xz-utils to ensure that they can be unpacked
394 SRC_URI="http://dev.gentooexperimental.org/~alexxy/kde/${PV}/${_kmname_pv}.tar.xz"
395 DEPEND+=" app-arch/xz-utils"
396 ;;
397 *) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
398 esac
399 ;;
400 koffice)
401 case ${PV} in
402 2.0.[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/src/${_kmname_pv}.tar.bz2" ;;
403 *) SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
404 esac
405 esac
406 unset _kmname _kmname_pv
407 fi
408 ;;
409 esac
410
411 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
412
413 # @ECLASS-VARIABLE: PREFIX
414 # @DESCRIPTION:
415 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
416 # kde-base packages go into KDE4 installation directory (KDEDIR) by default.
417 # No matter the PREFIX, package will be built against KDE installed in KDEDIR.
418
419 # @FUNCTION: kde4-base_pkg_setup
420 # @DESCRIPTION:
421 # Do the basic kdeprefix KDEDIR settings and determine with which kde should
422 # optional applications link
423 kde4-base_pkg_setup() {
424 debug-print-function ${FUNCNAME} "$@"
425
426 # Prefix compat:
427 if [[ ${EAPI} == 2 ]] && ! use prefix; then
428 EPREFIX=
429 EROOT=${ROOT}
430 fi
431
432 # Append missing trailing slash character
433 [[ ${EROOT} = */ ]] || EROOT+="/"
434
435 # QA ebuilds
436 [[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})."
437
438 # Don't set KDEHOME during compilation, it will cause access violations
439 unset KDEHOME
440
441 if [[ ${KDEBASE} = kde-base ]]; then
442 if use kdeprefix; then
443 KDEDIR=/usr/kde/${_kdedir}
444 else
445 KDEDIR=/usr
446 fi
447 : ${PREFIX:=${KDEDIR}}
448 else
449 # Determine KDEDIR by loooking for the closest match with KDE_MINIMAL
450 KDEDIR=
451 local kde_minimal_met
452 for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
453 [[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1
454 if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
455 if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
456 KDEDIR=/usr/kde/${slot}
457 else
458 KDEDIR=/usr
459 fi
460 break;
461 fi
462 done
463 unset slot
464
465 # Bail out if kdelibs required but not found
466 if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then
467 [[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!"
468 else
469 [[ -z ${KDEDIR} ]] && KDEDIR=/usr
470 fi
471
472 : ${PREFIX:=/usr}
473 fi
474 EKDEDIR=${EPREFIX}${KDEDIR}
475
476 # Point pkg-config path to KDE *.pc files
477 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
478 # Point to correct QT plugins path
479 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/"
480
481 # Fix XDG collision with sandbox
482 export XDG_CONFIG_HOME="${T}"
483 # Not needed anymore
484 unset _kdedir
485 }
486
487 # @FUNCTION: kde4-base_src_unpack
488 # @DESCRIPTION:
489 # This function unpacks the source tarballs for KDE4 applications.
490 kde4-base_src_unpack() {
491 debug-print-function ${FUNCNAME} "$@"
492
493 if [[ ${BUILD_TYPE} = live ]]; then
494 migrate_store_dir
495 subversion_src_unpack
496 elif [[ ${EAPI} == 2 ]]; then
497 local file
498 for file in ${A}; do
499 # This setup is because EAPI <= 2 cannot unpack *.tar.xz files
500 # directly, so we do it ourselves (using the exact same code as portage)
501 case ${file} in
502 *.tar.xz)
503 echo ">>> Unpacking ${file} to ${PWD}"
504 xz -dc "${DISTDIR}"/${file} | tar xof -
505 assert "failed unpacking ${file}"
506 ;;
507 *)
508 unpack ${file}
509 ;;
510 esac
511 done
512 else
513 # For EAPI >= 3, we can just use unpack() directly
514 unpack ${A}
515 fi
516 }
517
518 # @FUNCTION: kde4-base_src_prepare
519 # @DESCRIPTION:
520 # General pre-configure and pre-compile function for KDE4 applications.
521 # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
522 # enable_selected_linguas() and enable_selected_doc_linguas()
523 # in kde4-functions.eclass(5) for further details.
524 kde4-base_src_prepare() {
525 debug-print-function ${FUNCNAME} "$@"
526
527 # Only enable selected languages, used for KDE extragear apps.
528 if [[ -n ${KDE_LINGUAS} ]]; then
529 enable_selected_linguas
530 fi
531
532 # Enable/disable handbooks for kde4-base packages
533 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
534 # kdelibs inherits kde4-base but handle installing the handbook itself
535 if ! has kde4-meta ${INHERITED}; then
536 has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas
537 fi
538
539 [[ ${BUILD_TYPE} = live ]] && subversion_src_prepare
540
541 # Apply patches
542 base_src_prepare
543 epatch_user
544
545 # Save library dependencies
546 if [[ -n ${KMSAVELIBS} ]] ; then
547 save_library_dependencies
548 fi
549
550 # Inject library dependencies
551 if [[ -n ${KMLOADLIBS} ]] ; then
552 load_library_dependencies
553 fi
554 }
555
556 # @FUNCTION: kde4-base_src_configure
557 # @DESCRIPTION:
558 # Function for configuring the build of KDE4 applications.
559 kde4-base_src_configure() {
560 debug-print-function ${FUNCNAME} "$@"
561
562 # Build tests in src_test only, where we override this value
563 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
564
565 if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
566 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
567 fi
568
569 if has debug ${IUSE//+} && use debug; then
570 # Set "real" debug mode
571 CMAKE_BUILD_TYPE="Debugfull"
572 else
573 # Handle common release builds
574 append-cppflags -DQT_NO_DEBUG
575 fi
576
577 # Set distribution name
578 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
579
580 # Here we set the install prefix
581 cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
582
583 # Use colors
584 QTEST_COLORED=1
585
586 # Shadow existing /usr installations
587 unset KDEDIRS
588
589 # Handle kdeprefix-ed KDE
590 if [[ ${KDEDIR} != /usr ]]; then
591 # Override some environment variables - only when kdeprefix is different,
592 # to not break ccache/distcc
593 PATH="${EKDEDIR}/bin:${PATH}"
594 LDPATH="${EKDEDIR}/$(get_libdir)${LDPATH+:}${LDPATH}"
595
596 # Append full RPATH
597 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
598
599 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
600 # when more are present
601 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
602 fi
603
604 # Handle kdeprefix in application itself
605 if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
606 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
607 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
608 fi
609
610 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
611 mycmakeargs=(${mycmakeargs})
612 fi
613
614 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
615
616 cmake-utils_src_configure
617 }
618
619 # @FUNCTION: kde4-base_src_compile
620 # @DESCRIPTION:
621 # General function for compiling KDE4 applications.
622 kde4-base_src_compile() {
623 debug-print-function ${FUNCNAME} "$@"
624
625 cmake-utils_src_compile "$@"
626 }
627
628 # @FUNCTION: kde4-base_src_test
629 # @DESCRIPTION:
630 # Function for testing KDE4 applications.
631 kde4-base_src_test() {
632 debug-print-function ${FUNCNAME} "$@"
633
634 # Override this value, set in kde4-base_src_configure()
635 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
636 cmake-utils_src_configure
637 kde4-base_src_compile
638
639 cmake-utils_src_test
640 }
641
642 # @FUNCTION: kde4-base_src_install
643 # @DESCRIPTION:
644 # Function for installing KDE4 applications.
645 kde4-base_src_install() {
646 debug-print-function ${FUNCNAME} "$@"
647
648 # Prefix support, for usage in ebuilds
649 if [[ ${EAPI} == 2 ]] && ! use prefix; then
650 ED=${D}
651 fi
652
653 if [[ -n ${KMSAVELIBS} ]] ; then
654 install_library_dependencies
655 fi
656
657 kde4-base_src_make_doc
658 cmake-utils_src_install
659 }
660
661 # @FUNCTION: kde4-base_src_make_doc
662 # @DESCRIPTION:
663 # Function for installing the documentation of KDE4 applications.
664 kde4-base_src_make_doc() {
665 debug-print-function ${FUNCNAME} "$@"
666
667 local doc
668 for doc in AUTHORS ChangeLog* README* NEWS TODO; do
669 [[ -s ${doc} ]] && dodoc ${doc}
670 done
671
672 if [[ -z ${KMNAME} ]]; then
673 for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*}; do
674 if [[ -s ${doc} ]]; then
675 local doc_complete=${doc}
676 doc="${doc#*/}"
677 newdoc "$doc_complete" "${doc%/*}.${doc##*/}"
678 fi
679 done
680 fi
681 }
682
683 # @FUNCTION: kde4-base_pkg_postinst
684 # @DESCRIPTION:
685 # Function to rebuild the KDE System Configuration Cache after an application has been installed.
686 kde4-base_pkg_postinst() {
687 debug-print-function ${FUNCNAME} "$@"
688
689 buildsycoca
690
691 if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
692 echo
693 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
694 einfo "Use it at your own risk."
695 einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
696 echo
697 elif [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then
698 # warning about kdeprefix for non-live users
699 echo
700 ewarn "WARNING! You have the kdeprefix useflag enabled."
701 ewarn "This setting is strongly discouraged and might lead to potential trouble"
702 ewarn "with KDE update strategies."
703 ewarn "You are using this setup at your own risk and the kde team does not"
704 ewarn "take responsibilities for dead kittens."
705 echo
706 fi
707 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && ! has_version 'kde-base/kdebase-runtime-meta' && ! has_version 'kde-base/kdebase-startkde'; then
708 # warn about not supported approach
709 if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
710 echo
711 ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
712 ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
713 ewarn "With this setting you are unsupported by KDE team."
714 ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
715 fi
716 fi
717 }
718
719 # @FUNCTION: kde4-base_pkg_postrm
720 # @DESCRIPTION:
721 # Function to rebuild the KDE System Configuration Cache after an application has been removed.
722 kde4-base_pkg_postrm() {
723 debug-print-function ${FUNCNAME} "$@"
724
725 buildsycoca
726 }

  ViewVC Help
Powered by ViewVC 1.1.20