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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.129 - (show annotations) (download)
Thu Aug 15 15:10:05 2013 UTC (11 months, 1 week ago) by kensington
Branch: MAIN
Changes since 1.128: +2 -9 lines
Remove old, unused code.

1 # Copyright 1999-2013 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.128 2013/08/15 14:52:58 kensington 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 currently support EAPIs 4 and 5. This will be
14 # reviewed over time as new EAPI versions are approved.
15
16 if [[ ${___ECLASS_ONCE_KDE4_BASE} != "recur -_+^+_- spank" ]] ; then
17 ___ECLASS_ONCE_KDE4_BASE="recur -_+^+_- spank"
18
19 # @ECLASS-VARIABLE: KDE_SELINUX_MODULE
20 # @DESCRIPTION:
21 # If set to "none", do nothing.
22 # For any other value, add selinux to IUSE, and depending on that useflag
23 # add a dependency on sec-policy/selinux-${KDE_SELINUX_MODULE} to (R)DEPEND
24 : ${KDE_SELINUX_MODULE:=none}
25
26 # @ECLASS-VARIABLE: VIRTUALDBUS_TEST
27 # @DESCRIPTION:
28 # If defined, launch and use a private dbus session during src_test.
29
30 # @ECLASS-VARIABLE: VIRTUALX_REQUIRED
31 # @DESCRIPTION:
32 # For proper description see virtualx.eclass manpage.
33 # Here we redefine default value to be manual, if your package needs virtualx
34 # for tests you should proceed with setting VIRTUALX_REQUIRED=test.
35 : ${VIRTUALX_REQUIRED:=manual}
36
37 inherit kde4-functions toolchain-funcs fdo-mime flag-o-matic gnome2-utils base virtualx versionator eutils multilib
38
39 if [[ ${KDE_BUILD_TYPE} = live ]]; then
40 case ${KDE_SCM} in
41 svn) inherit subversion ;;
42 git) inherit git-2 ;;
43 esac
44 fi
45
46 # @ECLASS-VARIABLE: CMAKE_REQUIRED
47 # @DESCRIPTION:
48 # Specify if cmake buildsystem is being used. Possible values are 'always' and 'never'.
49 # Please note that if it's set to 'never' you need to explicitly override following phases:
50 # src_configure, src_compile, src_test and src_install.
51 # Defaults to 'always'.
52 : ${CMAKE_REQUIRED:=always}
53 if [[ ${CMAKE_REQUIRED} = always ]]; then
54 buildsystem_eclass="cmake-utils"
55 export_fns="src_configure src_compile src_test src_install"
56 fi
57
58 # @ECLASS-VARIABLE: KDE_MINIMAL
59 # @DESCRIPTION:
60 # This variable is used when KDE_REQUIRED is set, to specify required KDE minimal
61 # version for apps to work. Currently defaults to 4.4
62 # One may override this variable to raise version requirements.
63 # Note that it is fixed to ${PV} for kde-base packages.
64 KDE_MINIMAL="${KDE_MINIMAL:-4.4}"
65
66 # Set slot for KDEBASE known packages
67 case ${KDEBASE} in
68 kde-base)
69 SLOT=4
70 KDE_MINIMAL="${PV}"
71 ;;
72 kdevelop)
73 if [[ ${KDE_BUILD_TYPE} = live ]]; then
74 # @ECLASS-VARIABLE: KDEVELOP_VERSION
75 # @DESCRIPTION:
76 # Specifies KDevelop version. Default is 4.0.0 for tagged packages and 9999 for live packages.
77 # Applies to KDEBASE=kdevelop only.
78 KDEVELOP_VERSION="${KDEVELOP_VERSION:-9999}"
79 # @ECLASS-VARIABLE: KDEVPLATFORM_VERSION
80 # @DESCRIPTION:
81 # Specifies KDevplatform version. Default is 1.0.0 for tagged packages and 9999 for live packages.
82 # Applies to KDEBASE=kdevelop only.
83 KDEVPLATFORM_VERSION="${KDEVPLATFORM_VERSION:-9999}"
84 else
85 case ${PN} in
86 kdevelop|quanta)
87 KDEVELOP_VERSION=${PV}
88 KDEVPLATFORM_VERSION="$(($(get_major_version)-3)).$(get_after_major_version)"
89 ;;
90 kdevplatform|kdevelop-php*)
91 KDEVELOP_VERSION="$(($(get_major_version)+3)).$(get_after_major_version)"
92 KDEVPLATFORM_VERSION=${PV}
93 ;;
94 *)
95 KDEVELOP_VERSION="${KDEVELOP_VERSION:-4.0.0}"
96 KDEVPLATFORM_VERSION="${KDEVPLATFORM_VERSION:-1.0.0}"
97 esac
98 fi
99 SLOT="4"
100 ;;
101 esac
102
103 inherit ${buildsystem_eclass}
104
105 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare ${export_fns} pkg_preinst pkg_postinst pkg_postrm
106
107 unset buildsystem_eclass
108 unset export_fns
109
110 # @ECLASS-VARIABLE: DECLARATIVE_REQUIRED
111 # @DESCRIPTION:
112 # Is qtdeclarative required? Possible values are 'always', 'optional' and 'never'.
113 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
114 DECLARATIVE_REQUIRED="${DECLARATIVE_REQUIRED:-never}"
115
116 # @ECLASS-VARIABLE: QTHELP_REQUIRED
117 # @DESCRIPTION:
118 # Is qthelp required? Possible values are 'always', 'optional' and 'never'.
119 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
120 QTHELP_REQUIRED="${QTHELP_REQUIRED:-never}"
121
122 # @ECLASS-VARIABLE: OPENGL_REQUIRED
123 # @DESCRIPTION:
124 # Is qtopengl required? Possible values are 'always', 'optional' and 'never'.
125 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
126 OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}"
127
128 # @ECLASS-VARIABLE: MULTIMEDIA_REQUIRED
129 # @DESCRIPTION:
130 # Is qtmultimedia required? Possible values are 'always', 'optional' and 'never'.
131 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
132 MULTIMEDIA_REQUIRED="${MULTIMEDIA_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 # @ECLASS-VARIABLE: KDE_LINGUAS_LIVE_OVERRIDE
158 # @DESCRIPTION:
159 # Set this varible if you want your live package to manage its
160 # translations. (Mostly all kde ebuilds does not ship documentation
161 # and translations in live ebuilds)
162 if [[ ${KDE_BUILD_TYPE} == live && -z ${KDE_LINGUAS_LIVE_OVERRIDE} ]]; then
163 # Kdebase actualy provides the handbooks even for live stuff
164 [[ ${KDEBASE} == kde-base ]] || KDE_HANDBOOK=never
165 KDE_LINGUAS=""
166 fi
167
168 # Setup packages inheriting this eclass
169 case ${KDEBASE} in
170 kde-base)
171 HOMEPAGE="http://www.kde.org/"
172 LICENSE="GPL-2"
173 if [[ ${KDE_BUILD_TYPE} = live && -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
174 # Disable tests for live ebuilds by default
175 RESTRICT+=" test"
176 fi
177
178 # This code is to prevent portage from searching GENTOO_MIRRORS for
179 # packages that will never be mirrored. (As they only will ever be in
180 # the overlay).
181 case ${PV} in
182 *9999* | 4.?.[6-9]? | 4.??.[6-9]?)
183 RESTRICT+=" mirror"
184 ;;
185 esac
186 ;;
187 kdevelop)
188 HOMEPAGE="http://www.kdevelop.org/"
189 LICENSE="GPL-2"
190 ;;
191 esac
192
193 # @ECLASS-VARIABLE: QT_MINIMAL
194 # @DESCRIPTION:
195 # Determine version of qt we enforce as minimal for the package.
196 QT_MINIMAL="${QT_MINIMAL:-4.8.0}"
197
198 # Declarative dependencies
199 qtdeclarativedepend="
200 >=dev-qt/qtdeclarative-${QT_MINIMAL}:4
201 "
202 case ${DECLARATIVE_REQUIRED} in
203 always)
204 COMMONDEPEND+=" ${qtdeclarativedepend}"
205 ;;
206 optional)
207 IUSE+=" declarative"
208 COMMONDEPEND+=" declarative? ( ${qtdeclarativedepend} )"
209 ;;
210 *) ;;
211 esac
212 unset qtdeclarativedepend
213
214 # QtHelp dependencies
215 qthelpdepend="
216 >=dev-qt/qthelp-${QT_MINIMAL}:4
217 "
218 case ${QTHELP_REQUIRED} in
219 always)
220 COMMONDEPEND+=" ${qthelpdepend}"
221 ;;
222 optional)
223 IUSE+=" qthelp"
224 COMMONDEPEND+=" qthelp? ( ${qthelpdepend} )"
225 ;;
226 esac
227 unset qthelpdepend
228
229 # OpenGL dependencies
230 qtopengldepend="
231 >=dev-qt/qtopengl-${QT_MINIMAL}:4
232 "
233 case ${OPENGL_REQUIRED} in
234 always)
235 COMMONDEPEND+=" ${qtopengldepend}"
236 ;;
237 optional)
238 IUSE+=" opengl"
239 COMMONDEPEND+=" opengl? ( ${qtopengldepend} )"
240 ;;
241 *) ;;
242 esac
243 unset qtopengldepend
244
245 # MultiMedia dependencies
246 qtmultimediadepend="
247 >=dev-qt/qtmultimedia-${QT_MINIMAL}:4
248 "
249 case ${MULTIMEDIA_REQUIRED} in
250 always)
251 COMMONDEPEND+=" ${qtmultimediadepend}"
252 ;;
253 optional)
254 IUSE+=" multimedia"
255 COMMONDEPEND+=" multimedia? ( ${qtmultimediadepend} )"
256 ;;
257 *) ;;
258 esac
259 unset qtmultimediadepend
260
261 # CppUnit dependencies
262 cppuintdepend="
263 dev-util/cppunit
264 "
265 case ${CPPUNIT_REQUIRED} in
266 always)
267 DEPEND+=" ${cppuintdepend}"
268 ;;
269 optional)
270 IUSE+=" test"
271 DEPEND+=" test? ( ${cppuintdepend} )"
272 ;;
273 *) ;;
274 esac
275 unset cppuintdepend
276
277 # KDE dependencies
278 # Qt accessibility classes are needed in various places, bug 325461
279 kdecommondepend="
280 dev-lang/perl
281 >=dev-qt/qt3support-${QT_MINIMAL}:4[accessibility]
282 >=dev-qt/qtcore-${QT_MINIMAL}:4[qt3support,ssl]
283 >=dev-qt/qtdbus-${QT_MINIMAL}:4
284 || (
285 ( >=dev-qt/qtgui-4.8.5:4[accessibility,dbus(+)] dev-qt/designer:4[-phonon] )
286 <dev-qt/qtgui-4.8.5:4[accessibility,dbus(+)]
287 )
288 >=dev-qt/qtscript-${QT_MINIMAL}:4
289 >=dev-qt/qtsql-${QT_MINIMAL}:4[qt3support]
290 >=dev-qt/qtsvg-${QT_MINIMAL}:4
291 >=dev-qt/qttest-${QT_MINIMAL}:4
292 >=dev-qt/qtwebkit-${QT_MINIMAL}:4
293 !aqua? (
294 x11-libs/libXext
295 x11-libs/libXt
296 x11-libs/libXxf86vm
297 x11-libs/libXcomposite
298 x11-libs/libxkbfile
299 )
300 "
301
302 if [[ ${PN} != kdelibs ]]; then
303 kdecommondepend+=" $(add_kdebase_dep kdelibs)"
304 if [[ ${KDEBASE} = kdevelop ]]; then
305 if [[ ${PN} != kdevplatform ]]; then
306 # @ECLASS-VARIABLE: KDEVPLATFORM_REQUIRED
307 # @DESCRIPTION:
308 # Specifies whether kdevplatform is required. Possible values are 'always' (default) and 'never'.
309 # Applies to KDEBASE=kdevelop only.
310 KDEVPLATFORM_REQUIRED="${KDEVPLATFORM_REQUIRED:-always}"
311 case ${KDEVPLATFORM_REQUIRED} in
312 always)
313 kdecommondepend+="
314 >=dev-util/kdevplatform-${KDEVPLATFORM_VERSION}
315 "
316 ;;
317 *) ;;
318 esac
319 fi
320 fi
321 fi
322
323 kdedepend="
324 dev-util/automoc
325 virtual/pkgconfig
326 !aqua? (
327 >=x11-libs/libXtst-1.1.0
328 x11-proto/xf86vidmodeproto
329 )
330 "
331
332 kderdepend=""
333
334 # all packages needs oxygen icons for basic iconset
335 if [[ ${PN} != oxygen-icons ]]; then
336 kderdepend+=" $(add_kdebase_dep oxygen-icons)"
337 fi
338
339 if [[ ${KDEBASE} != "kde-base" && -n ${KDE_LINGUAS} ]]; then
340 for _lingua in ${KDE_LINGUAS}; do
341 # if our package has lignuas, pull in kde-l10n with selected lingua enabled,
342 # but only for selected ones.
343 # this can't be done on one line because if user doesn't use any localisation
344 # then he is probably not interested in kde-l10n at all.
345 kderdepend+="
346 linguas_${_lingua}? ( $(add_kdebase_dep kde-l10n "linguas_${_lingua}(+)") )
347 "
348 done
349 unset _lingua
350 fi
351
352 kdehandbookdepend="
353 app-text/docbook-xml-dtd:4.2
354 app-text/docbook-xsl-stylesheets
355 "
356 kdehandbookrdepend="
357 $(add_kdebase_dep kdelibs 'handbook')
358 "
359 case ${KDE_HANDBOOK} in
360 always)
361 kdedepend+=" ${kdehandbookdepend}"
362 [[ ${PN} != kdelibs ]] && kderdepend+=" ${kdehandbookrdepend}"
363 ;;
364 optional)
365 IUSE+=" +handbook"
366 kdedepend+=" handbook? ( ${kdehandbookdepend} )"
367 [[ ${PN} != kdelibs ]] && kderdepend+=" handbook? ( ${kdehandbookrdepend} )"
368 ;;
369 *) ;;
370 esac
371 unset kdehandbookdepend kdehandbookrdepend
372
373 case ${KDE_SELINUX_MODULE} in
374 none) ;;
375 *)
376 IUSE+=" selinux"
377 kdecommondepend+=" selinux? ( sec-policy/selinux-${KDE_SELINUX_MODULE} )"
378 ;;
379 esac
380
381 # These dependencies are added as they are unconditionally required by kde-workspace.
382 # They are not necessarily required by individual applications but are pulled in to prevent
383 # bugs like bug #444438. This list is subject to change in the future so do not rely on it
384 # in ebuilds - always set correct dependencies.
385 case ${KMNAME} in
386 kde-workspace)
387 kdedepend+="
388 x11-libs/xcb-util
389 x11-libs/libX11
390 x11-libs/libXcomposite
391 x11-libs/libXcursor
392 x11-libs/libXdamage
393 x11-libs/libXfixes
394 x11-libs/libxkbfile
395 x11-libs/libXrandr
396 x11-libs/libXrender
397 "
398 ;;
399 *)
400 ;;
401 esac
402
403 # We always need the aqua useflag because otherwise we cannot = refer to it inside
404 # add_kdebase_dep. This was always kind of a bug, but came to light with EAPI=5
405 # (where referring to a use flag not in IUSE masks the ebuild).
406 # The only alternative would be to prohibit using add_kdebase_dep if KDE_REQUIRED=never
407 IUSE+=" aqua"
408
409 case ${KDE_REQUIRED} in
410 always)
411 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" ${kdecommondepend}"
412 [[ -n ${kdedepend} ]] && DEPEND+=" ${kdedepend}"
413 [[ -n ${kderdepend} ]] && RDEPEND+=" ${kderdepend}"
414 ;;
415 optional)
416 IUSE+=" kde"
417 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" kde? ( ${kdecommondepend} )"
418 [[ -n ${kdedepend} ]] && DEPEND+=" kde? ( ${kdedepend} )"
419 [[ -n ${kderdepend} ]] && RDEPEND+=" kde? ( ${kderdepend} )"
420 ;;
421 *) ;;
422 esac
423
424 unset kdecommondepend kdedepend kderdepend
425
426 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}"
427 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}"
428 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}"
429
430 # Accumulate dependencies set by this eclass
431 DEPEND+=" ${COMMONDEPEND}"
432 RDEPEND+=" ${COMMONDEPEND}"
433 unset COMMONDEPEND
434
435 # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
436 # kdevelop ebuild, the URI should be set in the ebuild itself
437 _calculate_src_uri() {
438 debug-print-function ${FUNCNAME} "$@"
439
440 local _kmname _kmname_pv
441
442 # we calculate URI only for known KDEBASE modules
443 [[ -n ${KDEBASE} ]] || return
444
445 # calculate tarball module name
446 if [[ -n ${KMNAME} ]]; then
447 _kmname="${KMNAME}"
448 else
449 _kmname=${PN}
450 fi
451 _kmname_pv="${_kmname}-${PV}"
452 case ${KDEBASE} in
453 kde-base)
454 case ${PV} in
455 4.4.11.1)
456 # KDEPIM 4.4, special case
457 # TODO: Remove this part when KDEPIM 4.4 gets out of the tree
458 SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2" ;;
459 4.?.[6-9]? | 4.??.[6-9]?)
460 # Unstable KDE SC releases
461 SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.xz" ;;
462 4.[1-7].[12345])
463 # Stable KDE SC with old .bz2 support
464 SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
465 *)
466 # Stable KDE SC releases
467 SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.xz" ;;
468 esac
469 ;;
470 kdevelop|kdevelop-php*|kdevplatform)
471 case ${KDEVELOP_VERSION} in
472 4.[123].[6-9]*) SRC_URI="mirror://kde/unstable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2" ;;
473 *) SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2" ;;
474 esac
475 ;;
476 esac
477 }
478
479 _calculate_live_repo() {
480 debug-print-function ${FUNCNAME} "$@"
481
482 SRC_URI=""
483 case ${KDE_SCM} in
484 svn)
485 # Determine branch URL based on live type
486 local branch_prefix
487 case ${PV} in
488 9999*)
489 # trunk
490 branch_prefix="trunk/KDE"
491 ;;
492 *)
493 # branch
494 branch_prefix="branches/KDE/$(get_kde_version)"
495 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
496 # @DESCRIPTION
497 # Suffix appended to ESVN_PROJECT depending on fetched branch.
498 # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
499 ESVN_PROJECT_SUFFIX="-${PV}"
500 ;;
501 esac
502 # @ECLASS-VARIABLE: ESVN_MIRROR
503 # @DESCRIPTION:
504 # This variable allows easy overriding of default kde mirror service
505 # (anonsvn) with anything else you might want to use.
506 ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
507 # Split ebuild, or extragear stuff
508 if [[ -n ${KMNAME} ]]; then
509 ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
510 if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
511 KMMODULE="${PN}"
512 fi
513 # Split kde-base/ ebuilds: (they reside in trunk/KDE)
514 case ${KMNAME} in
515 kdebase-*)
516 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
517 ;;
518 kdelibs-*)
519 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
520 ;;
521 kdereview*)
522 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
523 ;;
524 kdesupport)
525 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
526 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
527 ;;
528 kde*)
529 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
530 ;;
531 extragear*|playground*)
532 # Unpack them in toplevel dir, so that they won't conflict with kde4-meta
533 # build packages from same svn location.
534 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
535 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
536 ;;
537 *)
538 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
539 ;;
540 esac
541 else
542 # kdelibs, kdepimlibs
543 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}"
544 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
545 fi
546 # @ECLASS-VARIABLE: ESVN_UP_FREQ
547 # @DESCRIPTION:
548 # This variable is used for specifying the timeout between svn synces
549 # for kde-base modules. Does not affect misc apps.
550 # Default value is 1 hour.
551 [[ ${KDEBASE} = kde-base ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
552 ;;
553 git)
554 local _kmname
555 # @ECLASS-VARIABLE: EGIT_MIRROR
556 # @DESCRIPTION:
557 # This variable allows easy overriding of default kde mirror service
558 # (anongit) with anything else you might want to use.
559 EGIT_MIRROR=${EGIT_MIRROR:=git://anongit.kde.org}
560
561 # @ECLASS-VARIABLE: EGIT_REPONAME
562 # @DESCRIPTION:
563 # This variable allows overriding of default repository
564 # name. Specify only if this differ from PN and KMNAME.
565 if [[ -n ${EGIT_REPONAME} ]]; then
566 # the repository and kmname different
567 _kmname=${EGIT_REPONAME}
568 elif [[ -n ${KMNAME} ]]; then
569 _kmname=${KMNAME}
570 else
571 _kmname=${PN}
572 fi
573
574 # default branching
575 [[ ${PV} != 9999* && ${KDEBASE} == kde-base ]] && \
576 EGIT_BRANCH="KDE/$(get_kde_version)"
577
578 # default repo uri
579 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}"
580
581 debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}"
582 debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
583 ;;
584 esac
585 }
586
587 case ${KDE_BUILD_TYPE} in
588 live) _calculate_live_repo ;;
589 *) _calculate_src_uri ;;
590 esac
591
592 debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
593
594 # @ECLASS-VARIABLE: PREFIX
595 # @DESCRIPTION:
596 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
597 # kde-base packages go into KDE4 installation directory (/usr).
598 # No matter the PREFIX, package will be built against KDE installed in /usr.
599
600 # @FUNCTION: kde4-base_pkg_setup
601 # @DESCRIPTION:
602 # Do some basic settings
603 kde4-base_pkg_setup() {
604 debug-print-function ${FUNCNAME} "$@"
605
606 if has handbook ${IUSE} || has "+handbook" ${IUSE} && [ "${KDE_HANDBOOK}" != optional ] ; then
607 eqawarn "Handbook support is enabled via KDE_HANDBOOK=optional in the ebuild."
608 eqawarn "Please do not just set IUSE=handbook, as this leads to dependency errors."
609 fi
610
611 # Don't set KDEHOME during compilation, it will cause access violations
612 unset KDEHOME
613
614 # Check if gcc compiler is fresh enough.
615 # In theory should be in pkg_pretend but we check it only for kdelibs there
616 # and for others we do just quick scan in pkg_setup because pkg_pretend
617 # executions consume quite some time.
618 if [[ ${MERGE_TYPE} != binary ]]; then
619 [[ $(gcc-major-version) -lt 4 ]] || \
620 ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
621 && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)."
622 fi
623
624 KDEDIR=/usr
625 : ${PREFIX:=/usr}
626 EKDEDIR=${EPREFIX}/usr
627
628 # Point to correct QT plugins path
629 QT_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/kde4/plugins/"
630
631 # Fix XDG collision with sandbox
632 export XDG_CONFIG_HOME="${T}"
633 }
634
635 # @FUNCTION: kde4-base_src_unpack
636 # @DESCRIPTION:
637 # This function unpacks the source tarballs for KDE4 applications.
638 kde4-base_src_unpack() {
639 debug-print-function ${FUNCNAME} "$@"
640
641 if [[ ${KDE_BUILD_TYPE} = live ]]; then
642 case ${KDE_SCM} in
643 svn)
644 subversion_src_unpack
645 ;;
646 git)
647 git-2_src_unpack
648 ;;
649 esac
650 else
651 unpack ${A}
652 fi
653 }
654
655 # @FUNCTION: kde4-base_src_prepare
656 # @DESCRIPTION:
657 # General pre-configure and pre-compile function for KDE4 applications.
658 # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
659 # enable_selected_linguas() and enable_selected_doc_linguas()
660 # in kde4-functions.eclass(5) for further details.
661 kde4-base_src_prepare() {
662 debug-print-function ${FUNCNAME} "$@"
663
664 # enable handbook and linguas only when not using live ebuild
665
666 # Only enable selected languages, used for KDE extragear apps.
667 if [[ -n ${KDE_LINGUAS} ]]; then
668 enable_selected_linguas
669 fi
670
671 # Enable/disable handbooks for kde4-base packages
672 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
673 # kdelibs inherits kde4-base but handle installing the handbook itself
674 if ! has kde4-meta ${INHERITED} && in_iuse handbook; then
675 if [[ ${KDEBASE} == kde-base ]]; then
676 if [[ ${PN} != kde-l10n && ${PN} != kdepim-l10n && ${PN} != kdelibs ]] && use !handbook; then
677 # documentation in kde4-functions
678 : ${KDE_DOC_DIRS:=doc}
679 local dir
680 for dir in ${KDE_DOC_DIRS}; do
681 sed -e "\!^[[:space:]]*add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
682 -e "\!^[[:space:]]*ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
683 -e "\!^[[:space:]]*macro_optional_add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
684 -e "\!^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
685 -i CMakeLists.txt || die "failed to comment out handbook"
686 done
687 fi
688 else
689 enable_selected_doc_linguas
690 fi
691 fi
692
693 # SCM bootstrap
694 if [[ ${KDE_BUILD_TYPE} = live ]]; then
695 case ${KDE_SCM} in
696 svn) subversion_src_prepare ;;
697 esac
698 fi
699
700 # Apply patches
701 base_src_prepare
702
703 # Save library dependencies
704 if [[ -n ${KMSAVELIBS} ]] ; then
705 save_library_dependencies
706 fi
707
708 # Inject library dependencies
709 if [[ -n ${KMLOADLIBS} ]] ; then
710 load_library_dependencies
711 fi
712
713 # Hack for manuals relying on outdated DTD, only outside kde-base/...
714 if [[ -z ${KDEBASE} ]]; then
715 find "${S}" -name "*.docbook" \
716 -exec sed -i -r \
717 -e 's:-//KDE//DTD DocBook XML V4\.1(\..)?-Based Variant V1\.[01]//EN:-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN:g' {} + \
718 || die 'failed to fix DocBook variant version'
719 fi
720 }
721
722 # @FUNCTION: kde4-base_src_configure
723 # @DESCRIPTION:
724 # Function for configuring the build of KDE4 applications.
725 kde4-base_src_configure() {
726 debug-print-function ${FUNCNAME} "$@"
727
728 # Build tests in src_test only, where we override this value
729 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
730
731 if use_if_iuse debug; then
732 # Set "real" debug mode
733 CMAKE_KDE_BUILD_TYPE="Debugfull"
734 else
735 # Handle common release builds
736 append-cppflags -DQT_NO_DEBUG
737 fi
738
739 # Set distribution name
740 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
741
742 # Here we set the install prefix
743 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
744
745 # Use colors
746 QTEST_COLORED=1
747
748 # Shadow existing installations
749 unset KDEDIRS
750
751 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
752 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4)
753 #kde-config -path data unavailable when cross-compiling
754 tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
755
756 # sysconf needs to be /etc, not /usr/etc
757 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
758
759 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
760 if [[ ${mycmakeargs} ]]; then
761 eqawarn "mycmakeargs should always be declared as an array, not a string"
762 fi
763 mycmakeargs=(${mycmakeargs})
764 fi
765
766 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
767
768 cmake-utils_src_configure
769 }
770
771 # @FUNCTION: kde4-base_src_compile
772 # @DESCRIPTION:
773 # General function for compiling KDE4 applications.
774 kde4-base_src_compile() {
775 debug-print-function ${FUNCNAME} "$@"
776
777 cmake-utils_src_compile "$@"
778 }
779
780 # @FUNCTION: kde4-base_src_test
781 # @DESCRIPTION:
782 # Function for testing KDE4 applications.
783 kde4-base_src_test() {
784 debug-print-function ${FUNCNAME} "$@"
785
786 local kded4_pid
787
788 _test_runner() {
789 if [[ -n "${VIRTUALDBUS_TEST}" ]]; then
790 export $(dbus-launch)
791 kded4 2>&1 > /dev/null &
792 kded4_pid=$!
793 fi
794
795 cmake-utils_src_test
796 }
797
798 # When run as normal user during ebuild development with the ebuild command, the
799 # kde tests tend to access the session DBUS. This however is not possible in a real
800 # emerge or on the tinderbox.
801 # > make sure it does not happen, so bad tests can be recognized and disabled
802 unset DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
803
804 # Override this value, set in kde4-base_src_configure()
805 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
806 cmake-utils_src_configure
807 kde4-base_src_compile
808
809 if [[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]; then
810 # check for sanity if anyone already redefined VIRTUALX_COMMAND from the default
811 if [[ ${VIRTUALX_COMMAND} != emake ]]; then
812 # surprise- we are already INSIDE virtualmake!!!
813 debug-print "QA Notice: This version of kde4-base.eclass includes the virtualx functionality."
814 debug-print " You may NOT set VIRTUALX_COMMAND or call virtualmake from the ebuild."
815 debug-print " Setting VIRTUALX_REQUIRED is completely sufficient. See the"
816 debug-print " kde4-base.eclass docs for details... Applying workaround."
817 _test_runner
818 else
819 VIRTUALX_COMMAND="_test_runner" virtualmake
820 fi
821 else
822 _test_runner
823 fi
824
825 if [ -n "${kded4_pid}" ] ; then
826 kill ${kded4_pid}
827 fi
828
829 if [ -n "${DBUS_SESSION_BUS_PID}" ] ; then
830 kill ${DBUS_SESSION_BUS_PID}
831 fi
832 }
833
834 # @FUNCTION: kde4-base_src_install
835 # @DESCRIPTION:
836 # Function for installing KDE4 applications.
837 kde4-base_src_install() {
838 debug-print-function ${FUNCNAME} "$@"
839
840 if [[ -n ${KMSAVELIBS} ]] ; then
841 install_library_dependencies
842 fi
843
844 # Install common documentation of KDE4 applications
845 local doc
846 if ! has kde4-meta ${INHERITED}; then
847 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
848 [[ -f ${doc} && -s ${doc} ]] && dodoc "${doc}"
849 done
850 for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
851 [[ -f ${doc} && -s ${doc} ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
852 done
853 fi
854
855 cmake-utils_src_install
856
857 # We don't want ${PREFIX}/share/doc/HTML to be compressed,
858 # because then khelpcenter can't find the docs
859 [[ -d ${ED}/${PREFIX}/share/doc/HTML ]] &&
860 docompress -x ${PREFIX}/share/doc/HTML
861 }
862
863 # @FUNCTION: kde4-base_pkg_preinst
864 # @DESCRIPTION:
865 # Function storing icon caches
866 kde4-base_pkg_preinst() {
867 debug-print-function ${FUNCNAME} "$@"
868
869 gnome2_icon_savelist
870 if [[ ${KDE_BUILD_TYPE} == live && ${KDE_SCM} == svn ]]; then
871 subversion_pkg_preinst
872 fi
873 }
874
875 # @FUNCTION: kde4-base_pkg_postinst
876 # @DESCRIPTION:
877 # Function to rebuild the KDE System Configuration Cache after an application has been installed.
878 kde4-base_pkg_postinst() {
879 debug-print-function ${FUNCNAME} "$@"
880
881 gnome2_icon_cache_update
882 fdo-mime_desktop_database_update
883 fdo-mime_mime_database_update
884 buildsycoca
885
886 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
887 if [[ ${KDE_BUILD_TYPE} = live ]]; then
888 echo
889 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
890 einfo "Use it at your own risk."
891 einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
892 echo
893 fi
894 # for all 3rd party soft tell user that he SHOULD install kdebase-startkde or kdebase-runtime-meta
895 if [[ ${KDEBASE} != kde-base ]] && \
896 ! has_version 'kde-base/kdebase-runtime-meta' && \
897 ! has_version 'kde-base/kdebase-startkde'; then
898 if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
899 echo
900 ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
901 ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
902 ewarn "With this setting you are unsupported by KDE team."
903 ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
904 fi
905 fi
906 fi
907 }
908
909 # @FUNCTION: kde4-base_pkg_postrm
910 # @DESCRIPTION:
911 # Function to rebuild the KDE System Configuration Cache after an application has been removed.
912 kde4-base_pkg_postrm() {
913 debug-print-function ${FUNCNAME} "$@"
914
915 gnome2_icon_cache_update
916 fdo-mime_desktop_database_update
917 fdo-mime_mime_database_update
918 buildsycoca
919 }
920
921 fi

  ViewVC Help
Powered by ViewVC 1.1.20