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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.72 - (hide annotations) (download)
Sat Sep 11 05:18:35 2010 UTC (3 years, 7 months ago) by reavertm
Branch: MAIN
Changes since 1.71: +4 -4 lines
Ensure that *two* digits of patch version component determine unstable snaphots

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

  ViewVC Help
Powered by ViewVC 1.1.20