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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.111 - (hide annotations) (download)
Sun Dec 18 00:00:45 2011 UTC (3 years ago) by dilfridge
Branch: MAIN
Changes since 1.110: +26 -27 lines
Re-sync kde4 eclasses with kde overlay: remove libkworkspace target hacks (requires libkworkspace rebuild), force qt-4.7.4 for kde-4.8, properly treat kde-4.[789] version numbers, warn if the handbook useflag is added manually. Proofread by reavertm.

1 dilfridge 1.111 # Copyright 1999-2011 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 scarabeus 1.87 # Add experimental kdeenablefinal, masked by default
427 scarabeus 1.54 IUSE+=" kdeenablefinal"
428    
429 ingmar 1.1 # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
430     # koffice ebuild, the URI should be set in the ebuild itself
431 scarabeus 1.87 _calculate_src_uri() {
432     debug-print-function ${FUNCNAME} "$@"
433    
434     local _kmname _kmname_pv
435    
436     # we calculate URI only for known KDEBASE modules
437     [[ -n ${KDEBASE} ]] || return
438    
439     # calculate tarball module name
440     if [[ -n ${KMNAME} ]]; then
441     # fixup kdebase-apps name
442     case ${KMNAME} in
443     kdebase-apps)
444     _kmname="kdebase" ;;
445     *)
446     _kmname="${KMNAME}" ;;
447     esac
448     else
449     _kmname=${PN}
450     fi
451     _kmname_pv="${_kmname}-${PV}"
452     case ${KDEBASE} in
453     kde-base)
454     case ${PV} in
455 dilfridge 1.111 4.[456789].8[05] | 4.[456789].9[023568])
456 scarabeus 1.87 # Unstable KDE SC releases
457     SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2"
458 alexxy 1.105 if ! version_is_at_least 4.6.80 ${PV}
459     then
460     # KDEPIM IS SPECIAL
461     [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/unstable/kdepim/${PV}/${_kmname_pv}.tar.bz2"
462     fi
463 scarabeus 1.87 ;;
464     *)
465     # Stable KDE SC releases
466     SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2"
467 alexxy 1.105 if ! version_is_at_least 4.6.80 ${PV}
468     then
469     # KDEPIM IS SPECIAL
470     # TODO: It might not be with KDE 4.7 (see above)
471     [[ ${KMNAME} == "kdepim" || ${KMNAME} == "kdepim-runtime" ]] && SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2"
472     fi
473     ;;
474 scarabeus 1.87 esac
475     ;;
476     koffice)
477     case ${PV} in
478     2.[1234].[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
479     *) SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
480     esac
481     ;;
482     kdevelop)
483     SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2"
484     ;;
485     esac
486     }
487    
488     _calculate_live_repo() {
489     debug-print-function ${FUNCNAME} "$@"
490    
491     SRC_URI=""
492     case ${KDE_SCM} in
493     svn)
494 reavertm 1.61 # Determine branch URL based on live type
495     local branch_prefix
496     case ${PV} in
497     9999*)
498     # trunk
499     branch_prefix="trunk/KDE"
500     ;;
501     *)
502     # branch
503 abcd 1.97 branch_prefix="branches/KDE/$(get_kde_version)"
504 reavertm 1.61 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
505     # @DESCRIPTION
506     # Suffix appended to ESVN_PROJECT depending on fetched branch.
507     # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
508     ESVN_PROJECT_SUFFIX="-${PV}"
509     ;;
510     esac
511     # @ECLASS-VARIABLE: ESVN_MIRROR
512     # @DESCRIPTION:
513     # This variable allows easy overriding of default kde mirror service
514     # (anonsvn) with anything else you might want to use.
515     ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
516     # Split ebuild, or extragear stuff
517     if [[ -n ${KMNAME} ]]; then
518     ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
519     if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
520     KMMODULE="${PN}"
521     fi
522     # Split kde-base/ ebuilds: (they reside in trunk/KDE)
523     case ${KMNAME} in
524     kdebase-*)
525     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
526     ;;
527     kdelibs-*)
528     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
529     ;;
530     kdereview*)
531     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
532     ;;
533     kdesupport)
534     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
535     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
536     ;;
537     kde*)
538     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
539     ;;
540     extragear*|playground*)
541     # Unpack them in toplevel dir, so that they won't conflict with kde4-meta
542     # build packages from same svn location.
543     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
544     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
545     ;;
546     koffice)
547     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
548     ;;
549     *)
550     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
551     ;;
552     esac
553     else
554     # kdelibs, kdepimlibs
555     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}"
556     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
557     fi
558     # @ECLASS-VARIABLE: ESVN_UP_FREQ
559     # @DESCRIPTION:
560     # This variable is used for specifying the timeout between svn synces
561     # for kde-base and koffice modules. Does not affect misc apps.
562     # Default value is 1 hour.
563     [[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
564 scarabeus 1.87 ;;
565     git)
566     local _kmname
567     # @ECLASS-VARIABLE: EGIT_MIRROR
568     # @DESCRIPTION:
569     # This variable allows easy overriding of default kde mirror service
570     # (anongit) with anything else you might want to use.
571     EGIT_MIRROR=${EGIT_MIRROR:=git://anongit.kde.org}
572    
573     # @ECLASS-VARIABLE: EGIT_REPONAME
574     # @DESCRIPTION:
575     # This variable allows overriding of default repository
576     # name. Specify only if this differ from PN and KMNAME.
577     if [[ -n ${EGIT_REPONAME} ]]; then
578     # the repository and kmname different
579     _kmname=${EGIT_REPONAME}
580     elif [[ -n ${KMNAME} ]]; then
581     _kmname=${KMNAME}
582 scarabeus 1.22 else
583     _kmname=${PN}
584     fi
585 scarabeus 1.87
586     # default branching
587 alexxy 1.108 [[ ${PV} != 9999* && ${KDEBASE} == kde-base ]] && \
588     EGIT_BRANCH="KDE/$(get_kde_version)"
589 scarabeus 1.87
590 abcd 1.99 # default repo uri
591 tampakrap 1.102 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}"
592 scarabeus 1.87
593     debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}"
594     debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
595     ;;
596     esac
597     }
598    
599     case ${BUILD_TYPE} in
600     live) _calculate_live_repo ;;
601     *) _calculate_src_uri ;;
602 scarabeus 1.22 esac
603 ingmar 1.1
604     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
605    
606     # @ECLASS-VARIABLE: PREFIX
607     # @DESCRIPTION:
608 scarabeus 1.34 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
609 abcd 1.100 # kde-base packages go into KDE4 installation directory (/usr).
610     # No matter the PREFIX, package will be built against KDE installed in /usr.
611 ingmar 1.1
612     # @FUNCTION: kde4-base_pkg_setup
613     # @DESCRIPTION:
614 abcd 1.100 # Do some basic settings
615 ingmar 1.1 kde4-base_pkg_setup() {
616 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
617 ingmar 1.1
618 dilfridge 1.111 if has handbook ${IUSE} || has "+handbook" ${IUSE} && [ "${KDE_HANDBOOK}" != optional ] ; then
619     eqawarn "Handbook support is enabled via KDE_HANDBOOK=optional in the ebuild."
620     eqawarn "Please do not just set IUSE=handbook, as this leads to dependency errors."
621     fi
622    
623 abcd 1.110 if use_if_iuse kdeprefix; then
624 abcd 1.95 eerror "Sorry, kdeprefix support has been removed."
625     eerror "Please remove kdeprefix from your USE variable."
626     die "kdeprefix support has been removed"
627     fi
628    
629     if [[ ${CATEGORY}/${PN} != kde-base/kdelibs && ${CATEGORY}/${PN} != kde-base/kde-env ]] && \
630     { [[ ${KDE_REQUIRED} == always ]] || { [[ ${KDE_REQUIRED} == optional ]] && use kde; }; } && \
631     has_version kde-base/kdelibs[kdeprefix]; then
632     eerror "Sorry, kdeprefix support has been removed."
633     eerror "Please rebuild kdelibs without kdeprefix support."
634     die "kdeprefix support has been removed"
635     fi
636    
637 scarabeus 1.34 # Don't set KDEHOME during compilation, it will cause access violations
638 jmbsvicetto 1.13 unset KDEHOME
639    
640 scarabeus 1.91 # Check if gcc compiler is fresh enough.
641     # In theory should be in pkg_pretend but we check it only for kdelibs there
642     # and for others we do just quick scan in pkg_setup because pkg_pretend
643     # executions consume quite some time.
644 dilfridge 1.109 # We can only do this for EAPI 4 or later because the MERGE_TYPE variable
645     # is otherwise undefined.
646     if [[ ${EAPI:-0} != 3 ]]; then
647     if [[ ${MERGE_TYPE} != binary ]]; then
648     [[ $(gcc-major-version) -lt 4 ]] || \
649     ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
650     && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)."
651     fi
652 dilfridge 1.101 fi
653 scarabeus 1.91
654 abcd 1.96 KDEDIR=/usr
655     : ${PREFIX:=/usr}
656     EKDEDIR=${EPREFIX}/usr
657 abcd 1.57
658 wired 1.42 # Point to correct QT plugins path
659 abcd 1.100 QT_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/kde4/plugins/"
660 jmbsvicetto 1.13
661 scarabeus 1.47 # Fix XDG collision with sandbox
662     export XDG_CONFIG_HOME="${T}"
663 zlin 1.4 }
664    
665     # @FUNCTION: kde4-base_src_unpack
666     # @DESCRIPTION:
667     # This function unpacks the source tarballs for KDE4 applications.
668 ingmar 1.1 kde4-base_src_unpack() {
669 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
670 ingmar 1.1
671 scarabeus 1.30 if [[ ${BUILD_TYPE} = live ]]; then
672 scarabeus 1.87 case ${KDE_SCM} in
673     svn)
674     migrate_store_dir
675     subversion_src_unpack
676     ;;
677     git)
678 scarabeus 1.91 git-2_src_unpack
679 scarabeus 1.87 ;;
680     esac
681 ingmar 1.1 else
682 scarabeus 1.54 unpack ${A}
683 ingmar 1.1 fi
684 scarabeus 1.22 }
685 ingmar 1.1
686 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
687 scarabeus 1.22 # @DESCRIPTION:
688     # General pre-configure and pre-compile function for KDE4 applications.
689     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
690 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
691     # in kde4-functions.eclass(5) for further details.
692 scarabeus 1.22 kde4-base_src_prepare() {
693     debug-print-function ${FUNCNAME} "$@"
694 zlin 1.8
695 scarabeus 1.87 # enable handbook and linguas only when not using live ebuild
696    
697 zlin 1.8 # Only enable selected languages, used for KDE extragear apps.
698 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
699 zlin 1.8 enable_selected_linguas
700     fi
701 ingmar 1.1
702 wired 1.42 # Enable/disable handbooks for kde4-base packages
703 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
704     # kdelibs inherits kde4-base but handle installing the handbook itself
705 abcd 1.110 if ! has kde4-meta ${INHERITED} && in_iuse handbook; then
706 scarabeus 1.87 if [[ ${KDEBASE} == kde-base ]]; then
707     if [[ ${PN} != kde-l10n && ${PN} != kdepim-l10n && ${PN} != kdelibs ]] && use !handbook; then
708     # documentation in kde4-functions
709     : ${KDE_DOC_DIRS:=doc}
710     local dir
711     for dir in ${KDE_DOC_DIRS}; do
712 abcd 1.90 sed -e "\!^[[:space:]]*add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
713     -e "\!^[[:space:]]*ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
714     -e "\!^[[:space:]]*macro_optional_add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
715     -e "\!^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
716 scarabeus 1.87 -i CMakeLists.txt || die "failed to comment out handbook"
717     done
718     fi
719     else
720     enable_selected_doc_linguas
721     fi
722 wired 1.42 fi
723    
724 reavertm 1.61 # SCM bootstrap
725     if [[ ${BUILD_TYPE} = live ]]; then
726 scarabeus 1.87 case ${KDE_SCM} in
727     svn) subversion_src_prepare ;;
728     esac
729 reavertm 1.61 fi
730 reavertm 1.58
731     # Apply patches
732 scarabeus 1.22 base_src_prepare
733 scarabeus 1.20
734 scarabeus 1.22 # Save library dependencies
735 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
736 scarabeus 1.22 save_library_dependencies
737     fi
738 scarabeus 1.20
739 scarabeus 1.22 # Inject library dependencies
740 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
741 scarabeus 1.22 load_library_dependencies
742 jmbsvicetto 1.13 fi
743 dilfridge 1.76
744 dilfridge 1.77 # Hack for manuals relying on outdated DTD, only outside kde-base/koffice/...
745 alexxy 1.78 if [[ -z ${KDEBASE} ]]; then
746 dilfridge 1.77 find "${S}" -name "*.docbook" \
747     -exec sed -i -r \
748     -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' {} + \
749     || die 'failed to fix DocBook variant version'
750     fi
751 ingmar 1.1 }
752    
753     # @FUNCTION: kde4-base_src_configure
754     # @DESCRIPTION:
755     # Function for configuring the build of KDE4 applications.
756     kde4-base_src_configure() {
757     debug-print-function ${FUNCNAME} "$@"
758    
759     # Build tests in src_test only, where we override this value
760 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
761 ingmar 1.1
762 abcd 1.110 if use_if_iuse kdeenablefinal; then
763 abcd 1.56 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
764 scarabeus 1.54 fi
765    
766 abcd 1.110 if use_if_iuse debug; then
767 reavertm 1.68 # Set "real" debug mode
768     CMAKE_BUILD_TYPE="Debugfull"
769     else
770     # Handle common release builds
771     append-cppflags -DQT_NO_DEBUG
772 scarabeus 1.38 fi
773    
774 ingmar 1.1 # Set distribution name
775 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
776 ingmar 1.1
777     # Here we set the install prefix
778 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
779 jmbsvicetto 1.13
780 wired 1.42 # Use colors
781 ingmar 1.1 QTEST_COLORED=1
782 jmbsvicetto 1.13
783 abcd 1.100 # Shadow existing installations
784 scarabeus 1.34 unset KDEDIRS
785    
786 reavertm 1.61 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
787 abcd 1.96 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4)
788 reavertm 1.61 #kde-config -path data unavailable when cross-compiling
789     tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
790    
791 abcd 1.96 # sysconf needs to be /etc, not /usr/etc
792     cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
793 abcd 1.56
794 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
795 abcd 1.56 mycmakeargs=(${mycmakeargs})
796 scarabeus 1.22 fi
797    
798 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
799 scarabeus 1.34
800     cmake-utils_src_configure
801 scarabeus 1.22 }
802    
803     # @FUNCTION: kde4-base_src_compile
804     # @DESCRIPTION:
805     # General function for compiling KDE4 applications.
806     kde4-base_src_compile() {
807     debug-print-function ${FUNCNAME} "$@"
808    
809 wired 1.42 cmake-utils_src_compile "$@"
810 ingmar 1.1 }
811    
812     # @FUNCTION: kde4-base_src_test
813     # @DESCRIPTION:
814     # Function for testing KDE4 applications.
815     kde4-base_src_test() {
816     debug-print-function ${FUNCNAME} "$@"
817    
818     # Override this value, set in kde4-base_src_configure()
819 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
820 scarabeus 1.30 cmake-utils_src_configure
821     kde4-base_src_compile
822 ingmar 1.1
823 dilfridge 1.85 # When run as normal user during ebuild development with the ebuild command, the
824     # kde tests tend to access the session DBUS. This however is not possible in a real
825     # emerge or on the tinderbox.
826     # > make sure it does not happen, so bad tests can be recognized and disabled
827     unset DBUS_SESSION_BUS_ADDRESS
828    
829     if [[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]; then
830     # check for sanity if anyone already redefined VIRTUALX_COMMAND from the default
831 scarabeus 1.87 if [[ ${VIRTUALX_COMMAND} != emake ]]; then
832 alexxy 1.78 # surprise- we are already INSIDE virtualmake!!!
833 dilfridge 1.85 debug-print "QA Notice: This version of kde4-base.eclass includes the virtualx functionality."
834     debug-print " You may NOT set VIRTUALX_COMMAND or call virtualmake from the ebuild."
835     debug-print " Setting VIRTUALX_REQUIRED is completely sufficient. See the"
836     debug-print " kde4-base.eclass docs for details... Applying workaround."
837 alexxy 1.78 cmake-utils_src_test
838     else
839 dilfridge 1.85 VIRTUALX_COMMAND="cmake-utils_src_test" virtualmake
840 alexxy 1.78 fi
841     else
842     cmake-utils_src_test
843     fi
844 ingmar 1.1 }
845    
846     # @FUNCTION: kde4-base_src_install
847     # @DESCRIPTION:
848     # Function for installing KDE4 applications.
849     kde4-base_src_install() {
850     debug-print-function ${FUNCNAME} "$@"
851    
852 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
853 scarabeus 1.22 install_library_dependencies
854     fi
855    
856 reavertm 1.61 # Install common documentation of KDE4 applications
857 ingmar 1.1 local doc
858 reavertm 1.61 if ! has kde4-meta ${INHERITED}; then
859 reavertm 1.62 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
860 scarabeus 1.87 [[ -f ${doc} && -s ${doc} ]] && dodoc "${doc}"
861 reavertm 1.62 done
862     for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
863 scarabeus 1.87 [[ -f ${doc} && -s ${doc} ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
864 ingmar 1.1 done
865     fi
866 reavertm 1.61
867     cmake-utils_src_install
868 abcd 1.90
869     # In EAPI 4+, we don't want ${PREFIX}/share/doc/HTML to be compressed,
870     # because then khelpcenter can't find the docs
871     [[ ${EAPI:-0} != 3 && -d ${ED}/${PREFIX}/share/doc/HTML ]] &&
872     docompress -x ${PREFIX}/share/doc/HTML
873 ingmar 1.1 }
874    
875 scarabeus 1.87 # @FUNCTION: kde4-base_pkg_preinst
876     # @DESCRIPTION:
877     # Function storing icon caches
878     kde4-base_pkg_preinst() {
879     debug-print-function ${FUNCNAME} "$@"
880    
881     gnome2_icon_savelist
882 abcd 1.110 if [[ ${BUILD_TYPE} == live && ${KDE_SCM} == svn ]]; then
883     subversion_pkg_preinst
884     fi
885 scarabeus 1.87 }
886    
887 ingmar 1.1 # @FUNCTION: kde4-base_pkg_postinst
888     # @DESCRIPTION:
889     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
890     kde4-base_pkg_postinst() {
891 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
892    
893 scarabeus 1.87 gnome2_icon_cache_update
894     fdo-mime_desktop_database_update
895     fdo-mime_mime_database_update
896 ingmar 1.1 buildsycoca
897 scarabeus 1.36
898 scarabeus 1.87 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
899 abcd 1.110 if use_if_iuse kdeenablefinal; then
900 scarabeus 1.87 echo
901     ewarn "WARNING! you have kdeenable final useflag enabled."
902     ewarn "This useflag needs to be enabled on ALL kde using packages and"
903     ewarn "is known to cause issues."
904     ewarn "You are using this setup at your own risk and the kde team does not"
905     ewarn "take responsibilities for dead kittens."
906     echo
907     fi
908     if [[ ${BUILD_TYPE} = live ]]; then
909     echo
910     einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
911     einfo "Use it at your own risk."
912     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
913     echo
914     fi
915     # for all 3rd party soft tell user that he SHOULD install kdebase-startkde or kdebase-runtime-meta
916     if [[ ${KDEBASE} != kde-base ]] && \
917     ! has_version 'kde-base/kdebase-runtime-meta' && \
918     ! has_version 'kde-base/kdebase-startkde'; then
919     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
920     echo
921     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
922     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
923     ewarn "With this setting you are unsupported by KDE team."
924     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
925     fi
926 reavertm 1.58 fi
927     fi
928 ingmar 1.1 }
929    
930     # @FUNCTION: kde4-base_pkg_postrm
931     # @DESCRIPTION:
932     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
933     kde4-base_pkg_postrm() {
934 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
935    
936 scarabeus 1.87 gnome2_icon_cache_update
937     fdo-mime_desktop_database_update
938     fdo-mime_mime_database_update
939 ingmar 1.1 buildsycoca
940     }

  ViewVC Help
Powered by ViewVC 1.1.20