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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.73 - (hide annotations) (download)
Mon Sep 13 21:47:37 2010 UTC (4 years, 1 month ago) by reavertm
Branch: MAIN
Changes since 1.72: +27 -44 lines
Sync from overlay: use add_kdebase_dep in eclass, depend on perl everywhere (kconfig update needs it at runtime), update handbook handling (just pull khelpcenter)

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

  ViewVC Help
Powered by ViewVC 1.1.20