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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.75 - (show annotations) (download)
Sun Oct 24 15:56:03 2010 UTC (3 years, 10 months ago) by tampakrap
Branch: MAIN
Changes since 1.74: +2 -2 lines
Add KDEPIM 4.4.7 support

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

  ViewVC Help
Powered by ViewVC 1.1.20