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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.112 - (hide annotations) (download)
Tue Jan 17 11:20:03 2012 UTC (3 years, 1 month ago) by johu
Branch: MAIN
Changes since 1.111: +2 -18 lines
Drop kdeenablefinal build feature. Fix source uri calc for KDE SC 4.7.97 aka
4.8 RC2 caused by screwed up version number scheme by upstream.

1 johu 1.112 # Copyright 1999-2012 Gentoo Foundation
2 ingmar 1.1 # Distributed under the terms of the GNU General Public License v2
3 dilfridge 1.111 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.110 2011/10/29 15:07:16 abcd 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.87 # NOTE: KDE 4 ebuilds currently support EAPI "3". This will be reviewed
14     # over time as new EAPI versions are approved.
15 scarabeus 1.22
16 dilfridge 1.111 # @ECLASS-VARIABLE: KDE_SELINUX_MODULE
17     # @DESCRIPTION:
18     # If set to "none", do nothing.
19     # For any other value, add selinux to IUSE, and depending on that useflag
20     # add a dependency on sec-policy/selinux-${KDE_SELINUX_MODULE} to (R)DEPEND
21     : ${KDE_SELINUX_MODULE:=none}
22    
23 alexxy 1.78 # @ECLASS-VARIABLE: VIRTUALX_REQUIRED
24     # @DESCRIPTION:
25 dilfridge 1.85 # For proper description see virtualx.eclass manpage.
26     # Here we redefine default value to be manual, if your package needs virtualx
27     # for tests you should proceed with setting VIRTUALX_REQUIRED=test.
28 alexxy 1.78 : ${VIRTUALX_REQUIRED:=manual}
29    
30 scarabeus 1.91 inherit kde4-functions toolchain-funcs fdo-mime gnome2-utils base virtualx versionator eutils
31 reavertm 1.61
32     if [[ ${BUILD_TYPE} = live ]]; then
33 scarabeus 1.87 case ${KDE_SCM} in
34     svn) inherit subversion ;;
35 scarabeus 1.91 git) inherit git-2 ;;
36 scarabeus 1.87 esac
37 reavertm 1.61 fi
38    
39 scarabeus 1.52 # @ECLASS-VARIABLE: CMAKE_REQUIRED
40 scarabeus 1.44 # @DESCRIPTION:
41 scarabeus 1.47 # Specify if cmake buildsystem is being used. Possible values are 'always' and 'never'.
42     # Please note that if it's set to 'never' you need to explicitly override following phases:
43     # src_configure, src_compile, src_test and src_install.
44     # Defaults to 'always'.
45 scarabeus 1.54 : ${CMAKE_REQUIRED:=always}
46 reavertm 1.61 if [[ ${CMAKE_REQUIRED} = always ]]; then
47 scarabeus 1.47 buildsystem_eclass="cmake-utils"
48     export_fns="src_configure src_compile src_test src_install"
49 scarabeus 1.44 fi
50    
51 reavertm 1.61 # @ECLASS-VARIABLE: KDE_MINIMAL
52     # @DESCRIPTION:
53     # This variable is used when KDE_REQUIRED is set, to specify required KDE minimal
54 reavertm 1.66 # version for apps to work. Currently defaults to 4.4
55 reavertm 1.61 # One may override this variable to raise version requirements.
56 abcd 1.97 # Note that it is fixed to ${PV} for kde-base packages.
57 reavertm 1.66 KDE_MINIMAL="${KDE_MINIMAL:-4.4}"
58 scarabeus 1.48
59 scarabeus 1.87 # Set slot for KDEBASE known packages
60 reavertm 1.61 case ${KDEBASE} in
61     kde-base)
62 abcd 1.100 SLOT=4
63 abcd 1.97 KDE_MINIMAL="${PV}"
64 reavertm 1.61 ;;
65     koffice)
66     SLOT="2"
67     ;;
68     kdevelop)
69     if [[ ${BUILD_TYPE} = live ]]; then
70 reavertm 1.65 # @ECLASS-VARIABLE: KDEVELOP_VERSION
71     # @DESCRIPTION:
72     # Specifies KDevelop version. Default is 4.0.0 for tagged packages and 9999 for live packages.
73     # Applies to KDEBASE=kdevelop only.
74     KDEVELOP_VERSION="${KDEVELOP_VERSION:-9999}"
75     # @ECLASS-VARIABLE: KDEVPLATFORM_VERSION
76     # @DESCRIPTION:
77     # Specifies KDevplatform version. Default is 1.0.0 for tagged packages and 9999 for live packages.
78     # Applies to KDEBASE=kdevelop only.
79     KDEVPLATFORM_VERSION="${KDEVPLATFORM_VERSION:-9999}"
80 reavertm 1.61 else
81     case ${PN} in
82     kdevelop|quanta)
83     KDEVELOP_VERSION=${PV}
84     KDEVPLATFORM_VERSION="$(($(get_major_version)-3)).$(get_after_major_version)"
85     ;;
86 reavertm 1.65 kdevplatform)
87 reavertm 1.61 KDEVELOP_VERSION="$(($(get_major_version)+3)).$(get_after_major_version)"
88     KDEVPLATFORM_VERSION=${PV}
89 reavertm 1.65 ;;
90     *)
91     KDEVELOP_VERSION="${KDEVELOP_VERSION:-4.0.0}"
92     KDEVPLATFORM_VERSION="${KDEVPLATFORM_VERSION:-1.0.0}"
93 reavertm 1.61 esac
94     fi
95     SLOT="4"
96     ;;
97     esac
98    
99     inherit ${buildsystem_eclass}
100 scarabeus 1.47
101 scarabeus 1.87 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare ${export_fns} pkg_preinst pkg_postinst pkg_postrm
102 scarabeus 1.44
103 scarabeus 1.47 unset buildsystem_eclass
104     unset export_fns
105 ingmar 1.1
106 alexxy 1.78 # @ECLASS-VARIABLE: DECLARATIVE_REQUIRED
107     # @DESCRIPTION:
108     # Is qt-declarative required? Possible values are 'always', 'optional' and 'never'.
109     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
110     DECLARATIVE_REQUIRED="${DECLARATIVE_REQUIRED:-never}"
111    
112     # @ECLASS-VARIABLE: QTHELP_REQUIRED
113     # @DESCRIPTION:
114     # Is qt-assistant required? Possible values are 'always', 'optional' and 'never'.
115     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
116     QTHELP_REQUIRED="${QTHELP_REQUIRED:-never}"
117    
118 philantrop 1.7 # @ECLASS-VARIABLE: OPENGL_REQUIRED
119     # @DESCRIPTION:
120     # Is qt-opengl required? Possible values are 'always', 'optional' and 'never'.
121     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
122     OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}"
123    
124 abcd 1.56 # @ECLASS-VARIABLE: MULTIMEDIA_REQUIRED
125     # @DESCRIPTION:
126     # Is qt-multimedia required? Possible values are 'always', 'optional' and 'never'.
127     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
128     MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}"
129    
130 zlin 1.4 # @ECLASS-VARIABLE: CPPUNIT_REQUIRED
131     # @DESCRIPTION:
132     # Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'.
133     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
134     CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}"
135    
136 scarabeus 1.34 # @ECLASS-VARIABLE: KDE_REQUIRED
137     # @DESCRIPTION:
138     # Is kde required? Possible values are 'always', 'optional' and 'never'.
139     # This variable must be set before inheriting any eclasses. Defaults to 'always'
140 reavertm 1.74 # If set to 'always' or 'optional', KDE_MINIMAL may be overriden as well.
141 scarabeus 1.34 # Note that for kde-base packages this variable is fixed to 'always'.
142     KDE_REQUIRED="${KDE_REQUIRED:-always}"
143    
144 reavertm 1.69 # @ECLASS-VARIABLE: KDE_HANDBOOK
145     # @DESCRIPTION:
146 reavertm 1.74 # Set to enable handbook in application. Possible values are 'always', 'optional'
147     # (handbook USE flag) and 'never'.
148     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
149     # It adds default handbook dirs for kde-base packages to KMEXTRA and in any case it
150     # ensures buildtime and runtime dependencies.
151     KDE_HANDBOOK="${KDE_HANDBOOK:-never}"
152 reavertm 1.69
153 scarabeus 1.87 # @ECLASS-VARIABLE: KDE_LINGUAS_LIVE_OVERRIDE
154     # @DESCRIPTION:
155     # Set this varible if you want your live package to manage its
156     # translations. (Mostly all kde ebuilds does not ship documentation
157     # and translations in live ebuilds)
158 abcd 1.90 if [[ ${BUILD_TYPE} == live && -z ${KDE_LINGUAS_LIVE_OVERRIDE} ]]; then
159     # Kdebase actualy provides the handbooks even for live stuff
160     [[ ${KDEBASE} == kde-base ]] || KDE_HANDBOOK=never
161 scarabeus 1.87 KDE_LINGUAS=""
162     fi
163    
164 scarabeus 1.47 # Setup packages inheriting this eclass
165     case ${KDEBASE} in
166     kde-base)
167 reavertm 1.69 HOMEPAGE="http://www.kde.org/"
168     LICENSE="GPL-2"
169 scarabeus 1.47 if [[ $BUILD_TYPE = live ]]; then
170     # Disable tests for live ebuilds
171     RESTRICT+=" test"
172 abcd 1.96 fi
173    
174     # Only add the kdeprefix USE flag for older versions, to help
175     # non-portage package managers handle the upgrade
176 tampakrap 1.98 if [[ ${PV} < 4.6.4 && ( ( ${KMNAME} != kdepim && ${PN} != kdepim-runtime ) || ${PV} < 4.6 ) ]]; then
177 scarabeus 1.47 IUSE+=" kdeprefix"
178     fi
179 abcd 1.96
180 scarabeus 1.47 # This code is to prevent portage from searching GENTOO_MIRRORS for
181     # packages that will never be mirrored. (As they only will ever be in
182     # the overlay).
183     case ${PV} in
184     *9999* | 4.?.[6-9]?)
185     RESTRICT+=" mirror"
186     ;;
187     esac
188     ;;
189 reavertm 1.69 koffice)
190     HOMEPAGE="http://www.koffice.org/"
191     LICENSE="GPL-2"
192     ;;
193     kdevelop)
194     HOMEPAGE="http://www.kdevelop.org/"
195     LICENSE="GPL-2"
196     ;;
197 scarabeus 1.47 esac
198 scarabeus 1.34
199 scarabeus 1.47 # @ECLASS-VARIABLE: QT_MINIMAL
200 scarabeus 1.39 # @DESCRIPTION:
201 scarabeus 1.87 # Determine version of qt we enforce as minimal for the package.
202 dilfridge 1.111 if version_is_at_least 4.7.80 "${KDE_MINIMAL}"; then
203     QT_MINIMAL="${QT_MINIMAL:-4.7.4}"
204     else
205 alexxy 1.78 QT_MINIMAL="${QT_MINIMAL:-4.7.0}"
206 scarabeus 1.47 fi
207    
208 alexxy 1.78 # Declarative dependencies
209     qtdeclarativedepend="
210     >=x11-libs/qt-declarative-${QT_MINIMAL}:4
211     "
212     case ${DECLARATIVE_REQUIRED} in
213     always)
214     COMMONDEPEND+=" ${qtdeclarativedepend}"
215     ;;
216     optional)
217     IUSE+=" declarative"
218     COMMONDEPEND+=" declarative? ( ${qtdeclarativedepend} )"
219     ;;
220     *) ;;
221     esac
222     unset qtdeclarativedepend
223    
224     # QtHelp dependencies
225     qthelpdepend="
226     >=x11-libs/qt-assistant-${QT_MINIMAL}:4
227     "
228     case ${QTHELP_REQUIRED} in
229     always)
230     COMMONDEPEND+=" ${qthelpdepend}"
231     ;;
232     optional)
233     IUSE+=" qthelp"
234     COMMONDEPEND+=" qthelp? ( ${qthelpdepend} )"
235     ;;
236     esac
237     unset qthelpdepend
238    
239 scarabeus 1.34 # OpenGL dependencies
240     qtopengldepend="
241 scarabeus 1.47 >=x11-libs/qt-opengl-${QT_MINIMAL}:4
242 scarabeus 1.34 "
243     case ${OPENGL_REQUIRED} in
244     always)
245 wired 1.42 COMMONDEPEND+=" ${qtopengldepend}"
246 scarabeus 1.34 ;;
247     optional)
248 wired 1.42 IUSE+=" opengl"
249     COMMONDEPEND+=" opengl? ( ${qtopengldepend} )"
250 scarabeus 1.34 ;;
251     *) ;;
252     esac
253     unset qtopengldepend
254    
255 abcd 1.56 # MultiMedia dependencies
256     qtmultimediadepend="
257     >=x11-libs/qt-multimedia-${QT_MINIMAL}:4
258     "
259     case ${MULTIMEDIA_REQUIRED} in
260     always)
261     COMMONDEPEND+=" ${qtmultimediadepend}"
262     ;;
263     optional)
264     IUSE+=" multimedia"
265     COMMONDEPEND+=" multimedia? ( ${qtmultimediadepend} )"
266     ;;
267     *) ;;
268     esac
269     unset qtmultimediadepend
270    
271 scarabeus 1.34 # CppUnit dependencies
272     cppuintdepend="
273     dev-util/cppunit
274     "
275 scarabeus 1.22 case ${CPPUNIT_REQUIRED} in
276 zlin 1.4 always)
277 wired 1.42 DEPEND+=" ${cppuintdepend}"
278 scarabeus 1.22 ;;
279 zlin 1.4 optional)
280 wired 1.42 IUSE+=" test"
281     DEPEND+=" test? ( ${cppuintdepend} )"
282 scarabeus 1.22 ;;
283 scarabeus 1.34 *) ;;
284 zlin 1.4 esac
285 scarabeus 1.34 unset cppuintdepend
286    
287 abcd 1.94
288     # WebKit use dependencies
289     case ${KDE_REQUIRED} in
290     always)
291     qtwebkitusedeps="[kde]"
292     ;;
293     optional)
294     qtwebkitusedeps="[kde?]"
295     ;;
296     *) ;;
297     esac
298 scarabeus 1.34 # KDE dependencies
299 reavertm 1.65 # Qt accessibility classes are needed in various places, bug 325461
300 scarabeus 1.34 kdecommondepend="
301 reavertm 1.73 dev-lang/perl
302 scarabeus 1.47 >=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl]
303 reavertm 1.64 >=x11-libs/qt-gui-${QT_MINIMAL}:4[accessibility,dbus]
304     >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde]
305 scarabeus 1.47 >=x11-libs/qt-script-${QT_MINIMAL}:4
306     >=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support]
307     >=x11-libs/qt-svg-${QT_MINIMAL}:4
308     >=x11-libs/qt-test-${QT_MINIMAL}:4
309 abcd 1.94 >=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps}
310 wired 1.42 !aqua? (
311     x11-libs/libXext
312     x11-libs/libXt
313     x11-libs/libXxf86vm
314 dilfridge 1.92 x11-libs/libXcomposite
315 dilfridge 1.106 x11-libs/libxkbfile
316 wired 1.42 )
317 scarabeus 1.34 "
318 reavertm 1.61
319 scarabeus 1.34 if [[ ${PN} != kdelibs ]]; then
320 reavertm 1.73 kdecommondepend+=" $(add_kdebase_dep kdelibs)"
321     if [[ ${KDEBASE} = kdevelop ]]; then
322     if [[ ${PN} != kdevplatform ]]; then
323     # @ECLASS-VARIABLE: KDEVPLATFORM_REQUIRED
324     # @DESCRIPTION:
325     # Specifies whether kdevplatform is required. Possible values are 'always' (default) and 'never'.
326     # Applies to KDEBASE=kdevelop only.
327     KDEVPLATFORM_REQUIRED="${KDEVPLATFORM_REQUIRED:-always}"
328     case ${KDEVPLATFORM_REQUIRED} in
329     always)
330     kdecommondepend+="
331     >=dev-util/kdevplatform-${KDEVPLATFORM_VERSION}
332     "
333     ;;
334     *) ;;
335     esac
336 reavertm 1.61 fi
337 ingmar 1.1 fi
338     fi
339 scarabeus 1.87
340 scarabeus 1.34 kdedepend="
341 reavertm 1.60 dev-util/automoc
342 scarabeus 1.34 dev-util/pkgconfig
343 scarabeus 1.54 !aqua? (
344 xarthisius 1.83 >=x11-libs/libXtst-1.1.0
345 scarabeus 1.54 x11-proto/xf86vidmodeproto
346     )
347 scarabeus 1.34 "
348 scarabeus 1.87
349 reavertm 1.73 kderdepend=""
350 reavertm 1.69
351 scarabeus 1.87 # all packages needs oxygen icons for basic iconset
352 dilfridge 1.82 if [[ ${PN} != oxygen-icons ]]; then
353     kderdepend+=" $(add_kdebase_dep oxygen-icons)"
354     fi
355    
356 abcd 1.90 # add a dependency over kde-l10n if EAPI4 or better is around
357     if [[ ${KDEBASE} != "kde-base" && -n ${KDE_LINGUAS} && ${EAPI:-0} != 3 ]]; then
358 scarabeus 1.87 for _lingua in ${KDE_LINGUAS}; do
359 scarabeus 1.89 # if our package has lignuas, pull in kde-l10n with selected lingua enabled,
360     # but only for selected ones.
361     # this can't be done on one line because if user doesn't use any localisation
362     # then he is probably not interested in kde-l10n at all.
363     kderdepend+="
364 scarabeus 1.91 linguas_${_lingua}? ( $(add_kdebase_dep kde-l10n "linguas_${_lingua}(+)") )
365 scarabeus 1.89 "
366 scarabeus 1.87 done
367 scarabeus 1.89 unset _lingua
368 scarabeus 1.87 fi
369    
370 reavertm 1.74 kdehandbookdepend="
371     app-text/docbook-xml-dtd:4.2
372     app-text/docbook-xsl-stylesheets
373     "
374     kdehandbookrdepend="
375     $(add_kdebase_dep kdelibs 'handbook')
376     "
377     case ${KDE_HANDBOOK} in
378     always)
379     kdedepend+=" ${kdehandbookdepend}"
380     [[ ${PN} != kdelibs ]] && kderdepend+=" ${kdehandbookrdepend}"
381     ;;
382     optional)
383     IUSE+=" +handbook"
384     kdedepend+=" handbook? ( ${kdehandbookdepend} )"
385     [[ ${PN} != kdelibs ]] && kderdepend+=" handbook? ( ${kdehandbookrdepend} )"
386     ;;
387     *) ;;
388     esac
389     unset kdehandbookdepend kdehandbookrdepend
390 reavertm 1.69
391 dilfridge 1.111 case ${KDE_SELINUX_MODULE} in
392     none) ;;
393     *)
394     IUSE+=" selinux"
395     kdecommondepend+=" selinux? ( sec-policy/selinux-${KDE_SELINUX_MODULE} )"
396     ;;
397     esac
398    
399 scarabeus 1.34 case ${KDE_REQUIRED} in
400     always)
401 wired 1.42 IUSE+=" aqua"
402 reavertm 1.73 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" ${kdecommondepend}"
403     [[ -n ${kdedepend} ]] && DEPEND+=" ${kdedepend}"
404     [[ -n ${kderdepend} ]] && RDEPEND+=" ${kderdepend}"
405 scarabeus 1.34 ;;
406     optional)
407 wired 1.42 IUSE+=" aqua kde"
408 reavertm 1.73 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" kde? ( ${kdecommondepend} )"
409     [[ -n ${kdedepend} ]] && DEPEND+=" kde? ( ${kdedepend} )"
410     [[ -n ${kderdepend} ]] && RDEPEND+=" kde? ( ${kderdepend} )"
411 scarabeus 1.34 ;;
412     *) ;;
413     esac
414 scarabeus 1.54
415 reavertm 1.73 unset kdecommondepend kdedepend kderdepend
416 scarabeus 1.34
417     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}"
418     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}"
419     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}"
420    
421     # Accumulate dependencies set by this eclass
422 wired 1.42 DEPEND+=" ${COMMONDEPEND}"
423     RDEPEND+=" ${COMMONDEPEND}"
424     unset COMMONDEPEND
425 ingmar 1.1
426     # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
427     # koffice ebuild, the URI should be set in the ebuild itself
428 scarabeus 1.87 _calculate_src_uri() {
429     debug-print-function ${FUNCNAME} "$@"
430    
431     local _kmname _kmname_pv
432    
433     # we calculate URI only for known KDEBASE modules
434     [[ -n ${KDEBASE} ]] || return
435    
436     # calculate tarball module name
437     if [[ -n ${KMNAME} ]]; then
438     # fixup kdebase-apps name
439     case ${KMNAME} in
440     kdebase-apps)
441     _kmname="kdebase" ;;
442     *)
443     _kmname="${KMNAME}" ;;
444     esac
445     else
446     _kmname=${PN}
447     fi
448     _kmname_pv="${_kmname}-${PV}"
449     case ${KDEBASE} in
450     kde-base)
451     case ${PV} in
452 johu 1.112 4.[456789].8[05] | 4.[456789].9[0235678])
453 scarabeus 1.87 # Unstable KDE SC releases
454     SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2"
455 alexxy 1.105 if ! version_is_at_least 4.6.80 ${PV}
456     then
457     # KDEPIM IS SPECIAL
458     [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/unstable/kdepim/${PV}/${_kmname_pv}.tar.bz2"
459     fi
460 scarabeus 1.87 ;;
461     *)
462     # Stable KDE SC releases
463     SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2"
464 alexxy 1.105 if ! version_is_at_least 4.6.80 ${PV}
465     then
466     # KDEPIM IS SPECIAL
467     # TODO: It might not be with KDE 4.7 (see above)
468     [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2"
469     fi
470     ;;
471 scarabeus 1.87 esac
472     ;;
473     koffice)
474     case ${PV} in
475     2.[1234].[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
476     *) SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
477     esac
478     ;;
479     kdevelop)
480     SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2"
481     ;;
482     esac
483     }
484    
485     _calculate_live_repo() {
486     debug-print-function ${FUNCNAME} "$@"
487    
488     SRC_URI=""
489     case ${KDE_SCM} in
490     svn)
491 reavertm 1.61 # Determine branch URL based on live type
492     local branch_prefix
493     case ${PV} in
494     9999*)
495     # trunk
496     branch_prefix="trunk/KDE"
497     ;;
498     *)
499     # branch
500 abcd 1.97 branch_prefix="branches/KDE/$(get_kde_version)"
501 reavertm 1.61 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
502     # @DESCRIPTION
503     # Suffix appended to ESVN_PROJECT depending on fetched branch.
504     # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
505     ESVN_PROJECT_SUFFIX="-${PV}"
506     ;;
507     esac
508     # @ECLASS-VARIABLE: ESVN_MIRROR
509     # @DESCRIPTION:
510     # This variable allows easy overriding of default kde mirror service
511     # (anonsvn) with anything else you might want to use.
512     ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
513     # Split ebuild, or extragear stuff
514     if [[ -n ${KMNAME} ]]; then
515     ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
516     if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
517     KMMODULE="${PN}"
518     fi
519     # Split kde-base/ ebuilds: (they reside in trunk/KDE)
520     case ${KMNAME} in
521     kdebase-*)
522     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
523     ;;
524     kdelibs-*)
525     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
526     ;;
527     kdereview*)
528     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
529     ;;
530     kdesupport)
531     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
532     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
533     ;;
534     kde*)
535     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
536     ;;
537     extragear*|playground*)
538     # Unpack them in toplevel dir, so that they won't conflict with kde4-meta
539     # build packages from same svn location.
540     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
541     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
542     ;;
543     koffice)
544     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
545     ;;
546     *)
547     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
548     ;;
549     esac
550     else
551     # kdelibs, kdepimlibs
552     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}"
553     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
554     fi
555     # @ECLASS-VARIABLE: ESVN_UP_FREQ
556     # @DESCRIPTION:
557     # This variable is used for specifying the timeout between svn synces
558     # for kde-base and koffice modules. Does not affect misc apps.
559     # Default value is 1 hour.
560     [[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
561 scarabeus 1.87 ;;
562     git)
563     local _kmname
564     # @ECLASS-VARIABLE: EGIT_MIRROR
565     # @DESCRIPTION:
566     # This variable allows easy overriding of default kde mirror service
567     # (anongit) with anything else you might want to use.
568     EGIT_MIRROR=${EGIT_MIRROR:=git://anongit.kde.org}
569    
570     # @ECLASS-VARIABLE: EGIT_REPONAME
571     # @DESCRIPTION:
572     # This variable allows overriding of default repository
573     # name. Specify only if this differ from PN and KMNAME.
574     if [[ -n ${EGIT_REPONAME} ]]; then
575     # the repository and kmname different
576     _kmname=${EGIT_REPONAME}
577     elif [[ -n ${KMNAME} ]]; then
578     _kmname=${KMNAME}
579 scarabeus 1.22 else
580     _kmname=${PN}
581     fi
582 scarabeus 1.87
583     # default branching
584 alexxy 1.108 [[ ${PV} != 9999* && ${KDEBASE} == kde-base ]] && \
585     EGIT_BRANCH="KDE/$(get_kde_version)"
586 scarabeus 1.87
587 abcd 1.99 # default repo uri
588 tampakrap 1.102 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}"
589 scarabeus 1.87
590     debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}"
591     debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
592     ;;
593     esac
594     }
595    
596     case ${BUILD_TYPE} in
597     live) _calculate_live_repo ;;
598     *) _calculate_src_uri ;;
599 scarabeus 1.22 esac
600 ingmar 1.1
601     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
602    
603     # @ECLASS-VARIABLE: PREFIX
604     # @DESCRIPTION:
605 scarabeus 1.34 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
606 abcd 1.100 # kde-base packages go into KDE4 installation directory (/usr).
607     # No matter the PREFIX, package will be built against KDE installed in /usr.
608 ingmar 1.1
609     # @FUNCTION: kde4-base_pkg_setup
610     # @DESCRIPTION:
611 abcd 1.100 # Do some basic settings
612 ingmar 1.1 kde4-base_pkg_setup() {
613 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
614 ingmar 1.1
615 dilfridge 1.111 if has handbook ${IUSE} || has "+handbook" ${IUSE} && [ "${KDE_HANDBOOK}" != optional ] ; then
616     eqawarn "Handbook support is enabled via KDE_HANDBOOK=optional in the ebuild."
617     eqawarn "Please do not just set IUSE=handbook, as this leads to dependency errors."
618     fi
619    
620 abcd 1.110 if use_if_iuse kdeprefix; then
621 abcd 1.95 eerror "Sorry, kdeprefix support has been removed."
622     eerror "Please remove kdeprefix from your USE variable."
623     die "kdeprefix support has been removed"
624     fi
625    
626     if [[ ${CATEGORY}/${PN} != kde-base/kdelibs && ${CATEGORY}/${PN} != kde-base/kde-env ]] && \
627     { [[ ${KDE_REQUIRED} == always ]] || { [[ ${KDE_REQUIRED} == optional ]] && use kde; }; } && \
628     has_version kde-base/kdelibs[kdeprefix]; then
629     eerror "Sorry, kdeprefix support has been removed."
630     eerror "Please rebuild kdelibs without kdeprefix support."
631     die "kdeprefix support has been removed"
632     fi
633    
634 scarabeus 1.34 # Don't set KDEHOME during compilation, it will cause access violations
635 jmbsvicetto 1.13 unset KDEHOME
636    
637 scarabeus 1.91 # Check if gcc compiler is fresh enough.
638     # In theory should be in pkg_pretend but we check it only for kdelibs there
639     # and for others we do just quick scan in pkg_setup because pkg_pretend
640     # executions consume quite some time.
641 dilfridge 1.109 # We can only do this for EAPI 4 or later because the MERGE_TYPE variable
642     # is otherwise undefined.
643     if [[ ${EAPI:-0} != 3 ]]; then
644     if [[ ${MERGE_TYPE} != binary ]]; then
645     [[ $(gcc-major-version) -lt 4 ]] || \
646     ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
647     && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)."
648     fi
649 dilfridge 1.101 fi
650 scarabeus 1.91
651 abcd 1.96 KDEDIR=/usr
652     : ${PREFIX:=/usr}
653     EKDEDIR=${EPREFIX}/usr
654 abcd 1.57
655 wired 1.42 # Point to correct QT plugins path
656 abcd 1.100 QT_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/kde4/plugins/"
657 jmbsvicetto 1.13
658 scarabeus 1.47 # Fix XDG collision with sandbox
659     export XDG_CONFIG_HOME="${T}"
660 zlin 1.4 }
661    
662     # @FUNCTION: kde4-base_src_unpack
663     # @DESCRIPTION:
664     # This function unpacks the source tarballs for KDE4 applications.
665 ingmar 1.1 kde4-base_src_unpack() {
666 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
667 ingmar 1.1
668 scarabeus 1.30 if [[ ${BUILD_TYPE} = live ]]; then
669 scarabeus 1.87 case ${KDE_SCM} in
670     svn)
671     migrate_store_dir
672     subversion_src_unpack
673     ;;
674     git)
675 scarabeus 1.91 git-2_src_unpack
676 scarabeus 1.87 ;;
677     esac
678 ingmar 1.1 else
679 scarabeus 1.54 unpack ${A}
680 ingmar 1.1 fi
681 scarabeus 1.22 }
682 ingmar 1.1
683 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
684 scarabeus 1.22 # @DESCRIPTION:
685     # General pre-configure and pre-compile function for KDE4 applications.
686     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
687 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
688     # in kde4-functions.eclass(5) for further details.
689 scarabeus 1.22 kde4-base_src_prepare() {
690     debug-print-function ${FUNCNAME} "$@"
691 zlin 1.8
692 scarabeus 1.87 # enable handbook and linguas only when not using live ebuild
693    
694 zlin 1.8 # Only enable selected languages, used for KDE extragear apps.
695 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
696 zlin 1.8 enable_selected_linguas
697     fi
698 ingmar 1.1
699 wired 1.42 # Enable/disable handbooks for kde4-base packages
700 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
701     # kdelibs inherits kde4-base but handle installing the handbook itself
702 abcd 1.110 if ! has kde4-meta ${INHERITED} && in_iuse handbook; then
703 scarabeus 1.87 if [[ ${KDEBASE} == kde-base ]]; then
704     if [[ ${PN} != kde-l10n && ${PN} != kdepim-l10n && ${PN} != kdelibs ]] && use !handbook; then
705     # documentation in kde4-functions
706     : ${KDE_DOC_DIRS:=doc}
707     local dir
708     for dir in ${KDE_DOC_DIRS}; do
709 abcd 1.90 sed -e "\!^[[:space:]]*add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
710     -e "\!^[[:space:]]*ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
711     -e "\!^[[:space:]]*macro_optional_add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
712     -e "\!^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
713 scarabeus 1.87 -i CMakeLists.txt || die "failed to comment out handbook"
714     done
715     fi
716     else
717     enable_selected_doc_linguas
718     fi
719 wired 1.42 fi
720    
721 reavertm 1.61 # SCM bootstrap
722     if [[ ${BUILD_TYPE} = live ]]; then
723 scarabeus 1.87 case ${KDE_SCM} in
724     svn) subversion_src_prepare ;;
725     esac
726 reavertm 1.61 fi
727 reavertm 1.58
728     # Apply patches
729 scarabeus 1.22 base_src_prepare
730 scarabeus 1.20
731 scarabeus 1.22 # Save library dependencies
732 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
733 scarabeus 1.22 save_library_dependencies
734     fi
735 scarabeus 1.20
736 scarabeus 1.22 # Inject library dependencies
737 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
738 scarabeus 1.22 load_library_dependencies
739 jmbsvicetto 1.13 fi
740 dilfridge 1.76
741 dilfridge 1.77 # Hack for manuals relying on outdated DTD, only outside kde-base/koffice/...
742 alexxy 1.78 if [[ -z ${KDEBASE} ]]; then
743 dilfridge 1.77 find "${S}" -name "*.docbook" \
744     -exec sed -i -r \
745     -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' {} + \
746     || die 'failed to fix DocBook variant version'
747     fi
748 ingmar 1.1 }
749    
750     # @FUNCTION: kde4-base_src_configure
751     # @DESCRIPTION:
752     # Function for configuring the build of KDE4 applications.
753     kde4-base_src_configure() {
754     debug-print-function ${FUNCNAME} "$@"
755    
756     # Build tests in src_test only, where we override this value
757 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
758 ingmar 1.1
759 abcd 1.110 if use_if_iuse debug; then
760 reavertm 1.68 # Set "real" debug mode
761     CMAKE_BUILD_TYPE="Debugfull"
762     else
763     # Handle common release builds
764     append-cppflags -DQT_NO_DEBUG
765 scarabeus 1.38 fi
766    
767 ingmar 1.1 # Set distribution name
768 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
769 ingmar 1.1
770     # Here we set the install prefix
771 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
772 jmbsvicetto 1.13
773 wired 1.42 # Use colors
774 ingmar 1.1 QTEST_COLORED=1
775 jmbsvicetto 1.13
776 abcd 1.100 # Shadow existing installations
777 scarabeus 1.34 unset KDEDIRS
778    
779 reavertm 1.61 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
780 abcd 1.96 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4)
781 reavertm 1.61 #kde-config -path data unavailable when cross-compiling
782     tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
783    
784 abcd 1.96 # sysconf needs to be /etc, not /usr/etc
785     cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
786 abcd 1.56
787 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
788 abcd 1.56 mycmakeargs=(${mycmakeargs})
789 scarabeus 1.22 fi
790    
791 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
792 scarabeus 1.34
793     cmake-utils_src_configure
794 scarabeus 1.22 }
795    
796     # @FUNCTION: kde4-base_src_compile
797     # @DESCRIPTION:
798     # General function for compiling KDE4 applications.
799     kde4-base_src_compile() {
800     debug-print-function ${FUNCNAME} "$@"
801    
802 wired 1.42 cmake-utils_src_compile "$@"
803 ingmar 1.1 }
804    
805     # @FUNCTION: kde4-base_src_test
806     # @DESCRIPTION:
807     # Function for testing KDE4 applications.
808     kde4-base_src_test() {
809     debug-print-function ${FUNCNAME} "$@"
810    
811     # Override this value, set in kde4-base_src_configure()
812 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
813 scarabeus 1.30 cmake-utils_src_configure
814     kde4-base_src_compile
815 ingmar 1.1
816 dilfridge 1.85 # When run as normal user during ebuild development with the ebuild command, the
817     # kde tests tend to access the session DBUS. This however is not possible in a real
818     # emerge or on the tinderbox.
819     # > make sure it does not happen, so bad tests can be recognized and disabled
820     unset DBUS_SESSION_BUS_ADDRESS
821    
822     if [[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]; then
823     # check for sanity if anyone already redefined VIRTUALX_COMMAND from the default
824 scarabeus 1.87 if [[ ${VIRTUALX_COMMAND} != emake ]]; then
825 alexxy 1.78 # surprise- we are already INSIDE virtualmake!!!
826 dilfridge 1.85 debug-print "QA Notice: This version of kde4-base.eclass includes the virtualx functionality."
827     debug-print " You may NOT set VIRTUALX_COMMAND or call virtualmake from the ebuild."
828     debug-print " Setting VIRTUALX_REQUIRED is completely sufficient. See the"
829     debug-print " kde4-base.eclass docs for details... Applying workaround."
830 alexxy 1.78 cmake-utils_src_test
831     else
832 dilfridge 1.85 VIRTUALX_COMMAND="cmake-utils_src_test" virtualmake
833 alexxy 1.78 fi
834     else
835     cmake-utils_src_test
836     fi
837 ingmar 1.1 }
838    
839     # @FUNCTION: kde4-base_src_install
840     # @DESCRIPTION:
841     # Function for installing KDE4 applications.
842     kde4-base_src_install() {
843     debug-print-function ${FUNCNAME} "$@"
844    
845 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
846 scarabeus 1.22 install_library_dependencies
847     fi
848    
849 reavertm 1.61 # Install common documentation of KDE4 applications
850 ingmar 1.1 local doc
851 reavertm 1.61 if ! has kde4-meta ${INHERITED}; then
852 reavertm 1.62 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
853 scarabeus 1.87 [[ -f ${doc} && -s ${doc} ]] && dodoc "${doc}"
854 reavertm 1.62 done
855     for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
856 scarabeus 1.87 [[ -f ${doc} && -s ${doc} ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
857 ingmar 1.1 done
858     fi
859 reavertm 1.61
860     cmake-utils_src_install
861 abcd 1.90
862     # In EAPI 4+, we don't want ${PREFIX}/share/doc/HTML to be compressed,
863     # because then khelpcenter can't find the docs
864     [[ ${EAPI:-0} != 3 && -d ${ED}/${PREFIX}/share/doc/HTML ]] &&
865     docompress -x ${PREFIX}/share/doc/HTML
866 ingmar 1.1 }
867    
868 scarabeus 1.87 # @FUNCTION: kde4-base_pkg_preinst
869     # @DESCRIPTION:
870     # Function storing icon caches
871     kde4-base_pkg_preinst() {
872     debug-print-function ${FUNCNAME} "$@"
873    
874     gnome2_icon_savelist
875 abcd 1.110 if [[ ${BUILD_TYPE} == live && ${KDE_SCM} == svn ]]; then
876     subversion_pkg_preinst
877     fi
878 scarabeus 1.87 }
879    
880 ingmar 1.1 # @FUNCTION: kde4-base_pkg_postinst
881     # @DESCRIPTION:
882     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
883     kde4-base_pkg_postinst() {
884 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
885    
886 scarabeus 1.87 gnome2_icon_cache_update
887     fdo-mime_desktop_database_update
888     fdo-mime_mime_database_update
889 ingmar 1.1 buildsycoca
890 scarabeus 1.36
891 scarabeus 1.87 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
892     if [[ ${BUILD_TYPE} = live ]]; then
893     echo
894     einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
895     einfo "Use it at your own risk."
896     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
897     echo
898     fi
899     # for all 3rd party soft tell user that he SHOULD install kdebase-startkde or kdebase-runtime-meta
900     if [[ ${KDEBASE} != kde-base ]] && \
901     ! has_version 'kde-base/kdebase-runtime-meta' && \
902     ! has_version 'kde-base/kdebase-startkde'; then
903     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
904     echo
905     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
906     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
907     ewarn "With this setting you are unsupported by KDE team."
908     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
909     fi
910 reavertm 1.58 fi
911     fi
912 ingmar 1.1 }
913    
914     # @FUNCTION: kde4-base_pkg_postrm
915     # @DESCRIPTION:
916     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
917     kde4-base_pkg_postrm() {
918 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
919    
920 scarabeus 1.87 gnome2_icon_cache_update
921     fdo-mime_desktop_database_update
922     fdo-mime_mime_database_update
923 ingmar 1.1 buildsycoca
924     }

  ViewVC Help
Powered by ViewVC 1.1.20