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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.114 - (hide annotations) (download)
Wed Apr 4 15:10:20 2012 UTC (2 years, 6 months ago) by johu
Branch: MAIN
Changes since 1.113: +1 -1 lines
Use .xz also for 4.8.x with x>1.

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

  ViewVC Help
Powered by ViewVC 1.1.20