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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.69 - (hide annotations) (download)
Thu Sep 9 17:02:30 2010 UTC (3 years, 11 months ago) by reavertm
Branch: MAIN
Changes since 1.68: +42 -16 lines
Sync some changes from overlay:
- KDE_HANDBOOK=1 instead of IUSE=handbook
- add_kdebase_dep can be used outside of kde-base now

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.69 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.68 2010/08/13 05:05:40 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.66 4.[45].8[05] | 4.[45].9[02568])
483     # Normally packed unstable releases
484 scarabeus 1.37 SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
485 reavertm 1.66 4.[45].[6-9]*)
486 scarabeus 1.54 # Repacked tarballs: need to depend on xz-utils to ensure that they can be unpacked
487 reavertm 1.61 SRC_URI="http://dev.gentooexperimental.org/~alexxy/kde/${PV}/src/${_kmname_pv}.tar.xz"
488 scarabeus 1.54 DEPEND+=" app-arch/xz-utils"
489     ;;
490 scarabeus 1.22 *) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
491     esac
492     ;;
493     koffice)
494 scarabeus 1.38 case ${PV} in
495 reavertm 1.61 2.1.[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
496 tampakrap 1.53 *) SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
497 scarabeus 1.38 esac
498 reavertm 1.61 ;;
499     kdevelop)
500     SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2"
501     ;;
502 ingmar 1.1 esac
503 scarabeus 1.30 unset _kmname _kmname_pv
504     fi
505 scarabeus 1.22 ;;
506     esac
507 ingmar 1.1
508     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
509    
510     # @ECLASS-VARIABLE: PREFIX
511     # @DESCRIPTION:
512 scarabeus 1.34 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
513     # kde-base packages go into KDE4 installation directory (KDEDIR) by default.
514 wired 1.42 # No matter the PREFIX, package will be built against KDE installed in KDEDIR.
515 ingmar 1.1
516     # @FUNCTION: kde4-base_pkg_setup
517     # @DESCRIPTION:
518 scarabeus 1.34 # Do the basic kdeprefix KDEDIR settings and determine with which kde should
519     # optional applications link
520 ingmar 1.1 kde4-base_pkg_setup() {
521 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
522 ingmar 1.1
523 scarabeus 1.47 # Prefix compat:
524 abcd 1.56 if [[ ${EAPI} == 2 ]] && ! use prefix; then
525     EPREFIX=
526     EROOT=${ROOT}
527     fi
528    
529 scarabeus 1.47 # Append missing trailing slash character
530     [[ ${EROOT} = */ ]] || EROOT+="/"
531    
532 scarabeus 1.34 # QA ebuilds
533     [[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})."
534    
535     # Don't set KDEHOME during compilation, it will cause access violations
536 jmbsvicetto 1.13 unset KDEHOME
537    
538 scarabeus 1.34 if [[ ${KDEBASE} = kde-base ]]; then
539     if use kdeprefix; then
540 reavertm 1.61 KDEDIR=/usr/kde/${SLOT}
541 scarabeus 1.34 else
542 abcd 1.57 KDEDIR=/usr
543 scarabeus 1.34 fi
544 abcd 1.56 : ${PREFIX:=${KDEDIR}}
545 scarabeus 1.29 else
546 scarabeus 1.34 # Determine KDEDIR by loooking for the closest match with KDE_MINIMAL
547     KDEDIR=
548     local kde_minimal_met
549     for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
550     [[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1
551     if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
552     if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
553 abcd 1.57 KDEDIR=/usr/kde/${slot}
554 scarabeus 1.34 else
555 abcd 1.57 KDEDIR=/usr
556 scarabeus 1.34 fi
557     break;
558     fi
559     done
560 scarabeus 1.37 unset slot
561 scarabeus 1.41
562     # Bail out if kdelibs required but not found
563     if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then
564     [[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!"
565     else
566 abcd 1.57 [[ -z ${KDEDIR} ]] && KDEDIR=/usr
567 scarabeus 1.41 fi
568    
569 abcd 1.57 : ${PREFIX:=/usr}
570 jmbsvicetto 1.13 fi
571 abcd 1.57 EKDEDIR=${EPREFIX}${KDEDIR}
572    
573 wired 1.42 # Point pkg-config path to KDE *.pc files
574 abcd 1.57 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
575 wired 1.42 # Point to correct QT plugins path
576 abcd 1.57 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/"
577 jmbsvicetto 1.13
578 scarabeus 1.47 # Fix XDG collision with sandbox
579     export XDG_CONFIG_HOME="${T}"
580 zlin 1.4 }
581    
582     # @FUNCTION: kde4-base_src_unpack
583     # @DESCRIPTION:
584     # This function unpacks the source tarballs for KDE4 applications.
585 ingmar 1.1 kde4-base_src_unpack() {
586 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
587 ingmar 1.1
588 scarabeus 1.30 if [[ ${BUILD_TYPE} = live ]]; then
589 reavertm 1.61 if has subversion ${INHERITED}; then
590     migrate_store_dir
591     subversion_src_unpack
592     elif has git ${INHERITED}; then
593     git_src_unpack
594     fi
595 reavertm 1.58 elif [[ ${EAPI} == 2 ]]; then
596 scarabeus 1.54 local file
597     for file in ${A}; do
598 reavertm 1.58 # This setup is because EAPI <= 2 cannot unpack *.tar.xz files
599 scarabeus 1.54 # directly, so we do it ourselves (using the exact same code as portage)
600     case ${file} in
601     *.tar.xz)
602     echo ">>> Unpacking ${file} to ${PWD}"
603     xz -dc "${DISTDIR}"/${file} | tar xof -
604     assert "failed unpacking ${file}"
605     ;;
606     *)
607     unpack ${file}
608     ;;
609     esac
610     done
611 ingmar 1.1 else
612 reavertm 1.58 # For EAPI >= 3, we can just use unpack() directly
613 scarabeus 1.54 unpack ${A}
614 ingmar 1.1 fi
615 scarabeus 1.22 }
616 ingmar 1.1
617 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
618 scarabeus 1.22 # @DESCRIPTION:
619     # General pre-configure and pre-compile function for KDE4 applications.
620     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
621 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
622     # in kde4-functions.eclass(5) for further details.
623 scarabeus 1.22 kde4-base_src_prepare() {
624     debug-print-function ${FUNCNAME} "$@"
625 zlin 1.8
626     # Only enable selected languages, used for KDE extragear apps.
627 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
628 zlin 1.8 enable_selected_linguas
629     fi
630 ingmar 1.1
631 wired 1.42 # Enable/disable handbooks for kde4-base packages
632 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
633     # kdelibs inherits kde4-base but handle installing the handbook itself
634 wired 1.42 if ! has kde4-meta ${INHERITED}; then
635 scarabeus 1.44 has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas
636 wired 1.42 fi
637    
638 reavertm 1.61 # SCM bootstrap
639     if [[ ${BUILD_TYPE} = live ]]; then
640     if has subversion ${INHERITED}; then
641     subversion_src_prepare
642     elif has git ${INHERITED}; then
643     git_src_prepare
644     fi
645     fi
646 reavertm 1.58
647     # Apply patches
648 scarabeus 1.22 base_src_prepare
649 scarabeus 1.20
650 scarabeus 1.22 # Save library dependencies
651 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
652 scarabeus 1.22 save_library_dependencies
653     fi
654 scarabeus 1.20
655 scarabeus 1.22 # Inject library dependencies
656 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
657 scarabeus 1.22 load_library_dependencies
658 jmbsvicetto 1.13 fi
659 ingmar 1.1 }
660    
661     # @FUNCTION: kde4-base_src_configure
662     # @DESCRIPTION:
663     # Function for configuring the build of KDE4 applications.
664     kde4-base_src_configure() {
665     debug-print-function ${FUNCNAME} "$@"
666    
667     # Build tests in src_test only, where we override this value
668 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
669 ingmar 1.1
670 scarabeus 1.54 if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
671 abcd 1.56 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
672 scarabeus 1.54 fi
673    
674 reavertm 1.68 if has debug ${IUSE//+} && use debug; then
675     # Set "real" debug mode
676     CMAKE_BUILD_TYPE="Debugfull"
677     else
678     # Handle common release builds
679     append-cppflags -DQT_NO_DEBUG
680 scarabeus 1.38 fi
681    
682 ingmar 1.1 # Set distribution name
683 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
684 ingmar 1.1
685     # Here we set the install prefix
686 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
687 jmbsvicetto 1.13
688 wired 1.42 # Use colors
689 ingmar 1.1 QTEST_COLORED=1
690 jmbsvicetto 1.13
691 scarabeus 1.34 # Shadow existing /usr installations
692     unset KDEDIRS
693    
694 scarabeus 1.45 # Handle kdeprefix-ed KDE
695 abcd 1.57 if [[ ${KDEDIR} != /usr ]]; then
696 scarabeus 1.37 # Override some environment variables - only when kdeprefix is different,
697     # to not break ccache/distcc
698 abcd 1.57 PATH="${EKDEDIR}/bin:${PATH}"
699 reavertm 1.61
700     # Append library search path
701     append-ldflags -L"${EKDEDIR}/$(get_libdir)"
702 scarabeus 1.37
703     # Append full RPATH
704 abcd 1.56 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
705 scarabeus 1.34
706 scarabeus 1.45 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
707 scarabeus 1.34 # when more are present
708 abcd 1.57 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
709 scarabeus 1.45 fi
710    
711 reavertm 1.61 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
712     tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/lib/qt4)
713     #kde-config -path data unavailable when cross-compiling
714     tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
715    
716 scarabeus 1.45 # Handle kdeprefix in application itself
717     if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
718 scarabeus 1.34 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
719 abcd 1.56 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
720     fi
721    
722 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
723 abcd 1.56 mycmakeargs=(${mycmakeargs})
724 scarabeus 1.22 fi
725    
726 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
727 scarabeus 1.34
728     cmake-utils_src_configure
729 scarabeus 1.22 }
730    
731     # @FUNCTION: kde4-base_src_compile
732     # @DESCRIPTION:
733     # General function for compiling KDE4 applications.
734     kde4-base_src_compile() {
735     debug-print-function ${FUNCNAME} "$@"
736    
737 wired 1.42 cmake-utils_src_compile "$@"
738 ingmar 1.1 }
739    
740     # @FUNCTION: kde4-base_src_test
741     # @DESCRIPTION:
742     # Function for testing KDE4 applications.
743     kde4-base_src_test() {
744     debug-print-function ${FUNCNAME} "$@"
745    
746     # Override this value, set in kde4-base_src_configure()
747 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
748 scarabeus 1.30 cmake-utils_src_configure
749     kde4-base_src_compile
750 ingmar 1.1
751     cmake-utils_src_test
752     }
753    
754     # @FUNCTION: kde4-base_src_install
755     # @DESCRIPTION:
756     # Function for installing KDE4 applications.
757     kde4-base_src_install() {
758     debug-print-function ${FUNCNAME} "$@"
759    
760 abcd 1.57 # Prefix support, for usage in ebuilds
761     if [[ ${EAPI} == 2 ]] && ! use prefix; then
762     ED=${D}
763     fi
764    
765 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
766 scarabeus 1.22 install_library_dependencies
767     fi
768    
769 reavertm 1.61 # Install common documentation of KDE4 applications
770 ingmar 1.1 local doc
771 reavertm 1.61 if ! has kde4-meta ${INHERITED}; then
772 reavertm 1.62 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
773 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && dodoc "${doc}"
774 reavertm 1.62 done
775     for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
776 reavertm 1.63 [[ -f "${doc}" ]] && [[ -s "${doc}" ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
777 ingmar 1.1 done
778     fi
779 reavertm 1.61
780     cmake-utils_src_install
781 ingmar 1.1 }
782    
783     # @FUNCTION: kde4-base_pkg_postinst
784     # @DESCRIPTION:
785     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
786     kde4-base_pkg_postinst() {
787 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
788    
789 ingmar 1.1 buildsycoca
790 scarabeus 1.36
791     if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
792     echo
793 wired 1.42 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
794 scarabeus 1.36 einfo "Use it at your own risk."
795     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
796     echo
797 scarabeus 1.39 elif [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then
798     # warning about kdeprefix for non-live users
799     echo
800 wired 1.42 ewarn "WARNING! You have the kdeprefix useflag enabled."
801     ewarn "This setting is strongly discouraged and might lead to potential trouble"
802 scarabeus 1.39 ewarn "with KDE update strategies."
803 wired 1.42 ewarn "You are using this setup at your own risk and the kde team does not"
804 scarabeus 1.39 ewarn "take responsibilities for dead kittens."
805     echo
806 scarabeus 1.36 fi
807 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
808     # warn about not supported approach
809     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
810     echo
811     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
812     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
813     ewarn "With this setting you are unsupported by KDE team."
814     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
815     fi
816     fi
817 ingmar 1.1 }
818    
819     # @FUNCTION: kde4-base_pkg_postrm
820     # @DESCRIPTION:
821     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
822     kde4-base_pkg_postrm() {
823 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
824    
825 ingmar 1.1 buildsycoca
826     }

  ViewVC Help
Powered by ViewVC 1.1.20