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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.65 - (hide annotations) (download)
Sat Jun 26 16:02:18 2010 UTC (4 years, 3 months ago) by reavertm
Branch: MAIN
Changes since 1.64: +30 -7 lines
Add comment for accessibility USE dep on qt-gui, qt-qt3support, sync kdevelop eclass updates from overlay

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

  ViewVC Help
Powered by ViewVC 1.1.20