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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.128 - (hide annotations) (download)
Thu Aug 15 14:52:58 2013 UTC (13 months ago) by kensington
Branch: MAIN
Changes since 1.127: +9 -14 lines
Remove EAPI 3 support.

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

  ViewVC Help
Powered by ViewVC 1.1.20