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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.122 - (hide annotations) (download)
Sat Feb 2 16:58:00 2013 UTC (18 months, 2 weeks ago) by dilfridge
Branch: MAIN
Changes since 1.121: +1 -21 lines
Remove remaining (obsolete) kdeprefix references. Needed so we dont run into trouble since "4.10"<"4.6" ...

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

  ViewVC Help
Powered by ViewVC 1.1.20