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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.77 - (hide annotations) (download)
Wed Nov 24 23:54:55 2010 UTC (3 years, 9 months ago) by dilfridge
Branch: MAIN
Changes since 1.76: +8 -6 lines
Restrict patching of dtd reference to ebuilds outside kde-proper

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

  ViewVC Help
Powered by ViewVC 1.1.20