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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.70 - (hide annotations) (download)
Sat Sep 11 04:25:23 2010 UTC (3 years, 9 months ago) by reavertm
Branch: MAIN
Changes since 1.69: +8 -9 lines
Remove repacked unstable snapshots handling codepaths, add kdepim-4.4.6 dependency rule

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.70 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.69 2010/09/09 17:02:30 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.66 4.6* | 4.5.[6-9]*) SLOT="4.6" ;;
66 reavertm 1.61 4.5* | 4.4.[6-9]*) SLOT="4.5" ;;
67     4.4* | 4.3.[6-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 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     *)
487     # Stable KDE SC releases
488     SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2"
489 scarabeus 1.54 ;;
490 scarabeus 1.22 esac
491     ;;
492     koffice)
493 scarabeus 1.38 case ${PV} in
494 reavertm 1.61 2.1.[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
495 tampakrap 1.53 *) SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
496 scarabeus 1.38 esac
497 reavertm 1.61 ;;
498     kdevelop)
499     SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2"
500     ;;
501 ingmar 1.1 esac
502 scarabeus 1.30 unset _kmname _kmname_pv
503     fi
504 scarabeus 1.22 ;;
505     esac
506 ingmar 1.1
507     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
508    
509     # @ECLASS-VARIABLE: PREFIX
510     # @DESCRIPTION:
511 scarabeus 1.34 # 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 wired 1.42 # No matter the PREFIX, package will be built against KDE installed in KDEDIR.
514 ingmar 1.1
515     # @FUNCTION: kde4-base_pkg_setup
516     # @DESCRIPTION:
517 scarabeus 1.34 # Do the basic kdeprefix KDEDIR settings and determine with which kde should
518     # optional applications link
519 ingmar 1.1 kde4-base_pkg_setup() {
520 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
521 ingmar 1.1
522 scarabeus 1.47 # Prefix compat:
523 abcd 1.56 if [[ ${EAPI} == 2 ]] && ! use prefix; then
524     EPREFIX=
525     EROOT=${ROOT}
526     fi
527    
528 scarabeus 1.47 # Append missing trailing slash character
529     [[ ${EROOT} = */ ]] || EROOT+="/"
530    
531 scarabeus 1.34 # 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 jmbsvicetto 1.13 unset KDEHOME
536    
537 scarabeus 1.34 if [[ ${KDEBASE} = kde-base ]]; then
538     if use kdeprefix; then
539 reavertm 1.61 KDEDIR=/usr/kde/${SLOT}
540 scarabeus 1.34 else
541 abcd 1.57 KDEDIR=/usr
542 scarabeus 1.34 fi
543 abcd 1.56 : ${PREFIX:=${KDEDIR}}
544 scarabeus 1.29 else
545 scarabeus 1.34 # 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 abcd 1.57 KDEDIR=/usr/kde/${slot}
553 scarabeus 1.34 else
554 abcd 1.57 KDEDIR=/usr
555 scarabeus 1.34 fi
556     break;
557     fi
558     done
559 scarabeus 1.37 unset slot
560 scarabeus 1.41
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 abcd 1.57 [[ -z ${KDEDIR} ]] && KDEDIR=/usr
566 scarabeus 1.41 fi
567    
568 abcd 1.57 : ${PREFIX:=/usr}
569 jmbsvicetto 1.13 fi
570 abcd 1.57 EKDEDIR=${EPREFIX}${KDEDIR}
571    
572 wired 1.42 # Point pkg-config path to KDE *.pc files
573 abcd 1.57 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
574 wired 1.42 # Point to correct QT plugins path
575 abcd 1.57 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/"
576 jmbsvicetto 1.13
577 scarabeus 1.47 # Fix XDG collision with sandbox
578     export XDG_CONFIG_HOME="${T}"
579 zlin 1.4 }
580    
581     # @FUNCTION: kde4-base_src_unpack
582     # @DESCRIPTION:
583     # This function unpacks the source tarballs for KDE4 applications.
584 ingmar 1.1 kde4-base_src_unpack() {
585 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
586 ingmar 1.1
587 scarabeus 1.30 if [[ ${BUILD_TYPE} = live ]]; then
588 reavertm 1.61 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 reavertm 1.58 elif [[ ${EAPI} == 2 ]]; then
595 scarabeus 1.54 local file
596     for file in ${A}; do
597 reavertm 1.58 # This setup is because EAPI <= 2 cannot unpack *.tar.xz files
598 scarabeus 1.54 # 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 ingmar 1.1 else
611 reavertm 1.58 # For EAPI >= 3, we can just use unpack() directly
612 scarabeus 1.54 unpack ${A}
613 ingmar 1.1 fi
614 scarabeus 1.22 }
615 ingmar 1.1
616 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
617 scarabeus 1.22 # @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 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
621     # in kde4-functions.eclass(5) for further details.
622 scarabeus 1.22 kde4-base_src_prepare() {
623     debug-print-function ${FUNCNAME} "$@"
624 zlin 1.8
625     # Only enable selected languages, used for KDE extragear apps.
626 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
627 zlin 1.8 enable_selected_linguas
628     fi
629 ingmar 1.1
630 wired 1.42 # Enable/disable handbooks for kde4-base packages
631 scarabeus 1.44 # 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 wired 1.42 if ! has kde4-meta ${INHERITED}; then
634 scarabeus 1.44 has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas
635 wired 1.42 fi
636    
637 reavertm 1.61 # 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 reavertm 1.58
646     # Apply patches
647 scarabeus 1.22 base_src_prepare
648 scarabeus 1.20
649 scarabeus 1.22 # Save library dependencies
650 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
651 scarabeus 1.22 save_library_dependencies
652     fi
653 scarabeus 1.20
654 scarabeus 1.22 # Inject library dependencies
655 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
656 scarabeus 1.22 load_library_dependencies
657 jmbsvicetto 1.13 fi
658 ingmar 1.1 }
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 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
668 ingmar 1.1
669 scarabeus 1.54 if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
670 abcd 1.56 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
671 scarabeus 1.54 fi
672    
673 reavertm 1.68 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 scarabeus 1.38 fi
680    
681 ingmar 1.1 # Set distribution name
682 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
683 ingmar 1.1
684     # Here we set the install prefix
685 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
686 jmbsvicetto 1.13
687 wired 1.42 # Use colors
688 ingmar 1.1 QTEST_COLORED=1
689 jmbsvicetto 1.13
690 scarabeus 1.34 # Shadow existing /usr installations
691     unset KDEDIRS
692    
693 scarabeus 1.45 # Handle kdeprefix-ed KDE
694 abcd 1.57 if [[ ${KDEDIR} != /usr ]]; then
695 scarabeus 1.37 # Override some environment variables - only when kdeprefix is different,
696     # to not break ccache/distcc
697 abcd 1.57 PATH="${EKDEDIR}/bin:${PATH}"
698 reavertm 1.61
699     # Append library search path
700     append-ldflags -L"${EKDEDIR}/$(get_libdir)"
701 scarabeus 1.37
702     # Append full RPATH
703 abcd 1.56 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
704 scarabeus 1.34
705 scarabeus 1.45 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
706 scarabeus 1.34 # when more are present
707 abcd 1.57 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
708 scarabeus 1.45 fi
709    
710 reavertm 1.61 #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 scarabeus 1.45 # Handle kdeprefix in application itself
716     if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
717 scarabeus 1.34 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
718 abcd 1.56 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
719     fi
720    
721 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
722 abcd 1.56 mycmakeargs=(${mycmakeargs})
723 scarabeus 1.22 fi
724    
725 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
726 scarabeus 1.34
727     cmake-utils_src_configure
728 scarabeus 1.22 }
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 wired 1.42 cmake-utils_src_compile "$@"
737 ingmar 1.1 }
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 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
747 scarabeus 1.30 cmake-utils_src_configure
748     kde4-base_src_compile
749 ingmar 1.1
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 abcd 1.57 # Prefix support, for usage in ebuilds
760     if [[ ${EAPI} == 2 ]] && ! use prefix; then
761     ED=${D}
762     fi
763    
764 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
765 scarabeus 1.22 install_library_dependencies
766     fi
767    
768 reavertm 1.61 # Install common documentation of KDE4 applications
769 ingmar 1.1 local doc
770 reavertm 1.61 if ! has kde4-meta ${INHERITED}; then
771 reavertm 1.62 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
772 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && dodoc "${doc}"
773 reavertm 1.62 done
774     for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
775 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
776 ingmar 1.1 done
777     fi
778 reavertm 1.61
779     cmake-utils_src_install
780 ingmar 1.1 }
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 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
787    
788 ingmar 1.1 buildsycoca
789 scarabeus 1.36
790     if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
791     echo
792 wired 1.42 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
793 scarabeus 1.36 einfo "Use it at your own risk."
794     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
795     echo
796 scarabeus 1.39 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 wired 1.42 ewarn "WARNING! You have the kdeprefix useflag enabled."
800     ewarn "This setting is strongly discouraged and might lead to potential trouble"
801 scarabeus 1.39 ewarn "with KDE update strategies."
802 wired 1.42 ewarn "You are using this setup at your own risk and the kde team does not"
803 scarabeus 1.39 ewarn "take responsibilities for dead kittens."
804     echo
805 scarabeus 1.36 fi
806 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
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 ingmar 1.1 }
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 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
823    
824 ingmar 1.1 buildsycoca
825     }

  ViewVC Help
Powered by ViewVC 1.1.20