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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.131 - (hide annotations) (download)
Thu Aug 15 15:36:26 2013 UTC (11 months, 1 week ago) by kensington
Branch: MAIN
Changes since 1.130: +2 -1 lines
Fixes for KDE 4.11 and other small improvements.

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

  ViewVC Help
Powered by ViewVC 1.1.20