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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.125 - (hide annotations) (download)
Sun Apr 7 17:30:35 2013 UTC (15 months ago) by kensington
Branch: MAIN
Changes since 1.124: +30 -8 lines
Guard against multiple inheritance. Fix fetching for KDE SC 4.11 pre-releases. Drop old QT_MINIMAL logic. Add a set of base dependencies for kde-workspace packages to work around bugs like #444438 and #464614.

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

  ViewVC Help
Powered by ViewVC 1.1.20