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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.127 - (hide annotations) (download)
Tue Jul 23 19:55:30 2013 UTC (17 months ago) by johu
Branch: MAIN
Changes since 1.126: +5 -2 lines
Handle dev-qt/desinger split from dev-qt/gui, see bug #477934.

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 johu 1.127 # $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.126 2013/07/10 03:46:48 patrick 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 alexxy 1.123 # NOTE: KDE 4 ebuilds currently support EAPIs 3, 4, and 5. This will be
14     # 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 abcd 1.90 # add a dependency over kde-l10n if EAPI4 or better is around
340     if [[ ${KDEBASE} != "kde-base" && -n ${KDE_LINGUAS} && ${EAPI:-0} != 3 ]]; 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 kensington 1.125 # These dependencies are added as they are unconditionally required by kde-workspace.
383     # They are not necessarily required by individual applications but are pulled in to prevent
384     # bugs like bug #444438. This list is subject to change in the future so do not rely on it
385     # in ebuilds - always set correct dependencies.
386     case ${KMNAME} in
387     kde-workspace)
388     kdedepend+="
389     x11-libs/xcb-util
390     x11-libs/libX11
391     x11-libs/libXcomposite
392     x11-libs/libXcursor
393     x11-libs/libXdamage
394     x11-libs/libXfixes
395     x11-libs/libxkbfile
396     x11-libs/libXrandr
397     x11-libs/libXrender
398     "
399     ;;
400     *)
401     ;;
402     esac
403    
404 alexxy 1.123 # We always need the aqua useflag because otherwise we cannot = refer to it inside
405     # add_kdebase_dep. This was always kind of a bug, but came to light with EAPI=5
406     # (where referring to a use flag not in IUSE masks the ebuild).
407     # The only alternative would be to prohibit using add_kdebase_dep if KDE_REQUIRED=never
408     IUSE+=" aqua"
409    
410 scarabeus 1.34 case ${KDE_REQUIRED} in
411     always)
412 reavertm 1.73 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" ${kdecommondepend}"
413     [[ -n ${kdedepend} ]] && DEPEND+=" ${kdedepend}"
414     [[ -n ${kderdepend} ]] && RDEPEND+=" ${kderdepend}"
415 scarabeus 1.34 ;;
416     optional)
417 alexxy 1.123 IUSE+=" kde"
418 reavertm 1.73 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" kde? ( ${kdecommondepend} )"
419     [[ -n ${kdedepend} ]] && DEPEND+=" kde? ( ${kdedepend} )"
420     [[ -n ${kderdepend} ]] && RDEPEND+=" kde? ( ${kderdepend} )"
421 scarabeus 1.34 ;;
422     *) ;;
423     esac
424 scarabeus 1.54
425 reavertm 1.73 unset kdecommondepend kdedepend kderdepend
426 scarabeus 1.34
427     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}"
428     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}"
429     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}"
430    
431     # Accumulate dependencies set by this eclass
432 wired 1.42 DEPEND+=" ${COMMONDEPEND}"
433     RDEPEND+=" ${COMMONDEPEND}"
434     unset COMMONDEPEND
435 ingmar 1.1
436     # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
437 johu 1.121 # kdevelop ebuild, the URI should be set in the ebuild itself
438 scarabeus 1.87 _calculate_src_uri() {
439     debug-print-function ${FUNCNAME} "$@"
440    
441     local _kmname _kmname_pv
442    
443     # we calculate URI only for known KDEBASE modules
444     [[ -n ${KDEBASE} ]] || return
445    
446     # calculate tarball module name
447     if [[ -n ${KMNAME} ]]; then
448     # fixup kdebase-apps name
449     case ${KMNAME} in
450     kdebase-apps)
451     _kmname="kdebase" ;;
452     *)
453     _kmname="${KMNAME}" ;;
454     esac
455     else
456     _kmname=${PN}
457     fi
458     _kmname_pv="${_kmname}-${PV}"
459     case ${KDEBASE} in
460     kde-base)
461     case ${PV} in
462 dilfridge 1.113 4.4.11.1)
463     # KDEPIM 4.4, special case
464     # TODO: Remove this part when KDEPIM 4.4 gets out of the tree
465     SRC_URI="mirror://kde/stable/kdepim-${PV}/src/${_kmname_pv}.tar.bz2" ;;
466 alexxy 1.123 4.?.[6-9]? | 4.??.[6-9]?)
467 scarabeus 1.87 # Unstable KDE SC releases
468 johu 1.120 SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.xz" ;;
469 alexxy 1.123 4.[1-7].[12345])
470 johu 1.120 # Stable KDE SC with old .bz2 support
471     SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
472 scarabeus 1.87 *)
473     # Stable KDE SC releases
474 johu 1.120 SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.xz" ;;
475 scarabeus 1.87 esac
476     ;;
477 dilfridge 1.113 kdevelop|kdevelop-php*|kdevplatform)
478     case ${KDEVELOP_VERSION} in
479 alexxy 1.123 4.[123].[6-9]*) SRC_URI="mirror://kde/unstable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2" ;;
480 dilfridge 1.113 *) SRC_URI="mirror://kde/stable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2" ;;
481     esac
482 scarabeus 1.87 ;;
483     esac
484     }
485    
486     _calculate_live_repo() {
487     debug-print-function ${FUNCNAME} "$@"
488    
489     SRC_URI=""
490     case ${KDE_SCM} in
491     svn)
492 reavertm 1.61 # Determine branch URL based on live type
493     local branch_prefix
494     case ${PV} in
495     9999*)
496     # trunk
497     branch_prefix="trunk/KDE"
498     ;;
499     *)
500     # branch
501 abcd 1.97 branch_prefix="branches/KDE/$(get_kde_version)"
502 reavertm 1.61 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
503     # @DESCRIPTION
504     # Suffix appended to ESVN_PROJECT depending on fetched branch.
505     # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
506     ESVN_PROJECT_SUFFIX="-${PV}"
507     ;;
508     esac
509     # @ECLASS-VARIABLE: ESVN_MIRROR
510     # @DESCRIPTION:
511     # This variable allows easy overriding of default kde mirror service
512     # (anonsvn) with anything else you might want to use.
513     ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
514     # Split ebuild, or extragear stuff
515     if [[ -n ${KMNAME} ]]; then
516     ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
517     if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
518     KMMODULE="${PN}"
519     fi
520     # Split kde-base/ ebuilds: (they reside in trunk/KDE)
521     case ${KMNAME} in
522     kdebase-*)
523     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
524     ;;
525     kdelibs-*)
526     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
527     ;;
528     kdereview*)
529     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
530     ;;
531     kdesupport)
532     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
533     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
534     ;;
535     kde*)
536     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
537     ;;
538     extragear*|playground*)
539     # Unpack them in toplevel dir, so that they won't conflict with kde4-meta
540     # build packages from same svn location.
541     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
542     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
543     ;;
544     *)
545     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
546     ;;
547     esac
548     else
549     # kdelibs, kdepimlibs
550     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}"
551     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
552     fi
553     # @ECLASS-VARIABLE: ESVN_UP_FREQ
554     # @DESCRIPTION:
555     # This variable is used for specifying the timeout between svn synces
556 johu 1.121 # for kde-base modules. Does not affect misc apps.
557 reavertm 1.61 # Default value is 1 hour.
558 johu 1.121 [[ ${KDEBASE} = kde-base ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
559 scarabeus 1.87 ;;
560     git)
561     local _kmname
562     # @ECLASS-VARIABLE: EGIT_MIRROR
563     # @DESCRIPTION:
564     # This variable allows easy overriding of default kde mirror service
565     # (anongit) with anything else you might want to use.
566     EGIT_MIRROR=${EGIT_MIRROR:=git://anongit.kde.org}
567    
568     # @ECLASS-VARIABLE: EGIT_REPONAME
569     # @DESCRIPTION:
570     # This variable allows overriding of default repository
571     # name. Specify only if this differ from PN and KMNAME.
572     if [[ -n ${EGIT_REPONAME} ]]; then
573     # the repository and kmname different
574     _kmname=${EGIT_REPONAME}
575     elif [[ -n ${KMNAME} ]]; then
576     _kmname=${KMNAME}
577 scarabeus 1.22 else
578     _kmname=${PN}
579     fi
580 scarabeus 1.87
581     # default branching
582 alexxy 1.108 [[ ${PV} != 9999* && ${KDEBASE} == kde-base ]] && \
583     EGIT_BRANCH="KDE/$(get_kde_version)"
584 scarabeus 1.87
585 abcd 1.99 # default repo uri
586 tampakrap 1.102 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}"
587 scarabeus 1.87
588     debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}"
589     debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
590     ;;
591     esac
592     }
593    
594 johu 1.120 case ${KDE_BUILD_TYPE} in
595 scarabeus 1.87 live) _calculate_live_repo ;;
596     *) _calculate_src_uri ;;
597 scarabeus 1.22 esac
598 ingmar 1.1
599     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
600    
601     # @ECLASS-VARIABLE: PREFIX
602     # @DESCRIPTION:
603 scarabeus 1.34 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
604 abcd 1.100 # kde-base packages go into KDE4 installation directory (/usr).
605     # No matter the PREFIX, package will be built against KDE installed in /usr.
606 ingmar 1.1
607     # @FUNCTION: kde4-base_pkg_setup
608     # @DESCRIPTION:
609 abcd 1.100 # Do some basic settings
610 ingmar 1.1 kde4-base_pkg_setup() {
611 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
612 ingmar 1.1
613 dilfridge 1.111 if has handbook ${IUSE} || has "+handbook" ${IUSE} && [ "${KDE_HANDBOOK}" != optional ] ; then
614     eqawarn "Handbook support is enabled via KDE_HANDBOOK=optional in the ebuild."
615     eqawarn "Please do not just set IUSE=handbook, as this leads to dependency errors."
616     fi
617    
618 scarabeus 1.34 # Don't set KDEHOME during compilation, it will cause access violations
619 jmbsvicetto 1.13 unset KDEHOME
620    
621 scarabeus 1.91 # Check if gcc compiler is fresh enough.
622     # In theory should be in pkg_pretend but we check it only for kdelibs there
623     # and for others we do just quick scan in pkg_setup because pkg_pretend
624     # executions consume quite some time.
625 dilfridge 1.109 # We can only do this for EAPI 4 or later because the MERGE_TYPE variable
626     # is otherwise undefined.
627     if [[ ${EAPI:-0} != 3 ]]; then
628     if [[ ${MERGE_TYPE} != binary ]]; then
629     [[ $(gcc-major-version) -lt 4 ]] || \
630     ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
631     && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)."
632     fi
633 dilfridge 1.101 fi
634 scarabeus 1.91
635 abcd 1.96 KDEDIR=/usr
636     : ${PREFIX:=/usr}
637     EKDEDIR=${EPREFIX}/usr
638 abcd 1.57
639 wired 1.42 # Point to correct QT plugins path
640 abcd 1.100 QT_PLUGIN_PATH="${EPREFIX}/usr/$(get_libdir)/kde4/plugins/"
641 jmbsvicetto 1.13
642 scarabeus 1.47 # Fix XDG collision with sandbox
643     export XDG_CONFIG_HOME="${T}"
644 zlin 1.4 }
645    
646     # @FUNCTION: kde4-base_src_unpack
647     # @DESCRIPTION:
648     # This function unpacks the source tarballs for KDE4 applications.
649 ingmar 1.1 kde4-base_src_unpack() {
650 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
651 ingmar 1.1
652 johu 1.120 if [[ ${KDE_BUILD_TYPE} = live ]]; then
653 scarabeus 1.87 case ${KDE_SCM} in
654     svn)
655     migrate_store_dir
656     subversion_src_unpack
657     ;;
658     git)
659 scarabeus 1.91 git-2_src_unpack
660 scarabeus 1.87 ;;
661     esac
662 ingmar 1.1 else
663 scarabeus 1.54 unpack ${A}
664 ingmar 1.1 fi
665 scarabeus 1.22 }
666 ingmar 1.1
667 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
668 scarabeus 1.22 # @DESCRIPTION:
669     # General pre-configure and pre-compile function for KDE4 applications.
670     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
671 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
672     # in kde4-functions.eclass(5) for further details.
673 scarabeus 1.22 kde4-base_src_prepare() {
674     debug-print-function ${FUNCNAME} "$@"
675 zlin 1.8
676 scarabeus 1.87 # enable handbook and linguas only when not using live ebuild
677    
678 zlin 1.8 # Only enable selected languages, used for KDE extragear apps.
679 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
680 zlin 1.8 enable_selected_linguas
681     fi
682 ingmar 1.1
683 wired 1.42 # Enable/disable handbooks for kde4-base packages
684 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
685     # kdelibs inherits kde4-base but handle installing the handbook itself
686 abcd 1.110 if ! has kde4-meta ${INHERITED} && in_iuse handbook; then
687 scarabeus 1.87 if [[ ${KDEBASE} == kde-base ]]; then
688     if [[ ${PN} != kde-l10n && ${PN} != kdepim-l10n && ${PN} != kdelibs ]] && use !handbook; then
689     # documentation in kde4-functions
690     : ${KDE_DOC_DIRS:=doc}
691     local dir
692     for dir in ${KDE_DOC_DIRS}; do
693 abcd 1.90 sed -e "\!^[[:space:]]*add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
694     -e "\!^[[:space:]]*ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
695     -e "\!^[[:space:]]*macro_optional_add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
696     -e "\!^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
697 scarabeus 1.87 -i CMakeLists.txt || die "failed to comment out handbook"
698     done
699     fi
700     else
701     enable_selected_doc_linguas
702     fi
703 wired 1.42 fi
704    
705 reavertm 1.61 # SCM bootstrap
706 johu 1.120 if [[ ${KDE_BUILD_TYPE} = live ]]; then
707 scarabeus 1.87 case ${KDE_SCM} in
708     svn) subversion_src_prepare ;;
709     esac
710 reavertm 1.61 fi
711 reavertm 1.58
712     # Apply patches
713 scarabeus 1.22 base_src_prepare
714 scarabeus 1.20
715 scarabeus 1.22 # Save library dependencies
716 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
717 scarabeus 1.22 save_library_dependencies
718     fi
719 scarabeus 1.20
720 scarabeus 1.22 # Inject library dependencies
721 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
722 scarabeus 1.22 load_library_dependencies
723 jmbsvicetto 1.13 fi
724 dilfridge 1.76
725 johu 1.121 # Hack for manuals relying on outdated DTD, only outside kde-base/...
726 alexxy 1.78 if [[ -z ${KDEBASE} ]]; then
727 dilfridge 1.77 find "${S}" -name "*.docbook" \
728     -exec sed -i -r \
729     -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' {} + \
730     || die 'failed to fix DocBook variant version'
731     fi
732 ingmar 1.1 }
733    
734     # @FUNCTION: kde4-base_src_configure
735     # @DESCRIPTION:
736     # Function for configuring the build of KDE4 applications.
737     kde4-base_src_configure() {
738     debug-print-function ${FUNCNAME} "$@"
739    
740     # Build tests in src_test only, where we override this value
741 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
742 ingmar 1.1
743 abcd 1.110 if use_if_iuse debug; then
744 reavertm 1.68 # Set "real" debug mode
745 johu 1.120 CMAKE_KDE_BUILD_TYPE="Debugfull"
746 reavertm 1.68 else
747     # Handle common release builds
748     append-cppflags -DQT_NO_DEBUG
749 scarabeus 1.38 fi
750    
751 ingmar 1.1 # Set distribution name
752 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
753 ingmar 1.1
754     # Here we set the install prefix
755 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
756 jmbsvicetto 1.13
757 wired 1.42 # Use colors
758 ingmar 1.1 QTEST_COLORED=1
759 jmbsvicetto 1.13
760 abcd 1.100 # Shadow existing installations
761 scarabeus 1.34 unset KDEDIRS
762    
763 reavertm 1.61 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
764 abcd 1.96 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4)
765 reavertm 1.61 #kde-config -path data unavailable when cross-compiling
766     tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
767    
768 abcd 1.96 # sysconf needs to be /etc, not /usr/etc
769     cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
770 abcd 1.56
771 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
772 dilfridge 1.116 if [[ ${mycmakeargs} ]]; then
773     eqawarn "mycmakeargs should always be declared as an array, not a string"
774     fi
775 abcd 1.56 mycmakeargs=(${mycmakeargs})
776 scarabeus 1.22 fi
777    
778 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
779 scarabeus 1.34
780     cmake-utils_src_configure
781 scarabeus 1.22 }
782    
783     # @FUNCTION: kde4-base_src_compile
784     # @DESCRIPTION:
785     # General function for compiling KDE4 applications.
786     kde4-base_src_compile() {
787     debug-print-function ${FUNCNAME} "$@"
788    
789 wired 1.42 cmake-utils_src_compile "$@"
790 ingmar 1.1 }
791    
792     # @FUNCTION: kde4-base_src_test
793     # @DESCRIPTION:
794     # Function for testing KDE4 applications.
795     kde4-base_src_test() {
796     debug-print-function ${FUNCNAME} "$@"
797    
798 kensington 1.119 local kded4_pid
799    
800     _test_runner() {
801     if [[ -n "${VIRTUALDBUS_TEST}" ]]; then
802     export $(dbus-launch)
803     kded4 2>&1 > /dev/null &
804     kded4_pid=$!
805     fi
806    
807     cmake-utils_src_test
808     }
809 ingmar 1.1
810 dilfridge 1.85 # When run as normal user during ebuild development with the ebuild command, the
811     # kde tests tend to access the session DBUS. This however is not possible in a real
812     # emerge or on the tinderbox.
813     # > make sure it does not happen, so bad tests can be recognized and disabled
814 kensington 1.119 unset DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
815    
816     # Override this value, set in kde4-base_src_configure()
817     mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
818     cmake-utils_src_configure
819     kde4-base_src_compile
820 dilfridge 1.85
821     if [[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]; then
822     # check for sanity if anyone already redefined VIRTUALX_COMMAND from the default
823 scarabeus 1.87 if [[ ${VIRTUALX_COMMAND} != emake ]]; then
824 alexxy 1.78 # surprise- we are already INSIDE virtualmake!!!
825 dilfridge 1.85 debug-print "QA Notice: This version of kde4-base.eclass includes the virtualx functionality."
826     debug-print " You may NOT set VIRTUALX_COMMAND or call virtualmake from the ebuild."
827     debug-print " Setting VIRTUALX_REQUIRED is completely sufficient. See the"
828     debug-print " kde4-base.eclass docs for details... Applying workaround."
829 kensington 1.119 _test_runner
830 alexxy 1.78 else
831 kensington 1.119 VIRTUALX_COMMAND="_test_runner" virtualmake
832 alexxy 1.78 fi
833     else
834 kensington 1.119 _test_runner
835     fi
836    
837     if [ -n "${kded4_pid}" ] ; then
838     kill ${kded4_pid}
839     fi
840    
841     if [ -n "${DBUS_SESSION_BUS_PID}" ] ; then
842     kill ${DBUS_SESSION_BUS_PID}
843 alexxy 1.78 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 johu 1.120 if [[ ${KDE_BUILD_TYPE} == live && ${KDE_SCM} == svn ]]; then
883 abcd 1.110 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 johu 1.120 if [[ ${KDE_BUILD_TYPE} = live ]]; then
900 scarabeus 1.87 echo
901     einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
902     einfo "Use it at your own risk."
903     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
904     echo
905     fi
906     # for all 3rd party soft tell user that he SHOULD install kdebase-startkde or kdebase-runtime-meta
907     if [[ ${KDEBASE} != kde-base ]] && \
908     ! has_version 'kde-base/kdebase-runtime-meta' && \
909     ! has_version 'kde-base/kdebase-startkde'; then
910     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
911     echo
912     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
913     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
914     ewarn "With this setting you are unsupported by KDE team."
915     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
916     fi
917 reavertm 1.58 fi
918     fi
919 ingmar 1.1 }
920    
921     # @FUNCTION: kde4-base_pkg_postrm
922     # @DESCRIPTION:
923     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
924     kde4-base_pkg_postrm() {
925 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
926    
927 scarabeus 1.87 gnome2_icon_cache_update
928     fdo-mime_desktop_database_update
929     fdo-mime_mime_database_update
930 ingmar 1.1 buildsycoca
931     }
932 kensington 1.125
933     fi

  ViewVC Help
Powered by ViewVC 1.1.20