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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.124 - (hide annotations) (download)
Sun Mar 3 00:22:56 2013 UTC (13 months, 2 weeks ago) by pesa
Branch: MAIN
Changes since 1.123: +18 -18 lines
Qt category move.

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

  ViewVC Help
Powered by ViewVC 1.1.20