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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.132 - (hide annotations) (download)
Sat Jan 18 00:43:03 2014 UTC (2 years, 7 months ago) by dilfridge
Branch: MAIN
Changes since 1.131: +21 -17 lines
Sync from kde overlay, adds subslot

1 dilfridge 1.132 # Copyright 1999-2014 Gentoo Foundation
2 ingmar 1.1 # Distributed under the terms of the GNU General Public License v2
3 dilfridge 1.132 # $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 kensington 1.128 # NOTE: KDE 4 ebuilds currently support EAPIs 4 and 5. This will be
14 alexxy 1.123 # reviewed over time as new EAPI versions are approved.
15 scarabeus 1.22
16 kensington 1.125 if [[ ${___ECLASS_ONCE_KDE4_BASE} != "recur -_+^+_- spank" ]] ; then
17     ___ECLASS_ONCE_KDE4_BASE="recur -_+^+_- spank"
18    
19 dilfridge 1.111 # @ECLASS-VARIABLE: KDE_SELINUX_MODULE
20     # @DESCRIPTION:
21     # If set to "none", do nothing.
22     # For any other value, add selinux to IUSE, and depending on that useflag
23     # add a dependency on sec-policy/selinux-${KDE_SELINUX_MODULE} to (R)DEPEND
24     : ${KDE_SELINUX_MODULE:=none}
25    
26 kensington 1.119 # @ECLASS-VARIABLE: VIRTUALDBUS_TEST
27     # @DESCRIPTION:
28     # If defined, launch and use a private dbus session during src_test.
29    
30 alexxy 1.78 # @ECLASS-VARIABLE: VIRTUALX_REQUIRED
31     # @DESCRIPTION:
32 dilfridge 1.85 # For proper description see virtualx.eclass manpage.
33     # Here we redefine default value to be manual, if your package needs virtualx
34     # for tests you should proceed with setting VIRTUALX_REQUIRED=test.
35 alexxy 1.78 : ${VIRTUALX_REQUIRED:=manual}
36    
37 dilfridge 1.132 inherit kde4-functions toolchain-funcs fdo-mime flag-o-matic gnome2-utils 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 dilfridge 1.132 git) inherit git-r3 ;;
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 dilfridge 1.132 case ${EAPI} in
70     5)
71     SLOT=4/$(get_version_component_range 1-2)
72     ;;
73     *)
74     SLOT=4
75     ;;
76     esac
77 abcd 1.97 KDE_MINIMAL="${PV}"
78 reavertm 1.61 ;;
79     kdevelop)
80 johu 1.120 if [[ ${KDE_BUILD_TYPE} = live ]]; then
81 reavertm 1.65 # @ECLASS-VARIABLE: KDEVELOP_VERSION
82     # @DESCRIPTION:
83     # Specifies KDevelop version. Default is 4.0.0 for tagged packages and 9999 for live packages.
84     # Applies to KDEBASE=kdevelop only.
85     KDEVELOP_VERSION="${KDEVELOP_VERSION:-9999}"
86     # @ECLASS-VARIABLE: KDEVPLATFORM_VERSION
87     # @DESCRIPTION:
88     # Specifies KDevplatform version. Default is 1.0.0 for tagged packages and 9999 for live packages.
89     # Applies to KDEBASE=kdevelop only.
90     KDEVPLATFORM_VERSION="${KDEVPLATFORM_VERSION:-9999}"
91 reavertm 1.61 else
92     case ${PN} in
93     kdevelop|quanta)
94     KDEVELOP_VERSION=${PV}
95     KDEVPLATFORM_VERSION="$(($(get_major_version)-3)).$(get_after_major_version)"
96     ;;
97 dilfridge 1.132 kdevplatform|kdevelop-php*|kdevelop-python)
98 reavertm 1.61 KDEVELOP_VERSION="$(($(get_major_version)+3)).$(get_after_major_version)"
99     KDEVPLATFORM_VERSION=${PV}
100 reavertm 1.65 ;;
101     *)
102     KDEVELOP_VERSION="${KDEVELOP_VERSION:-4.0.0}"
103     KDEVPLATFORM_VERSION="${KDEVPLATFORM_VERSION:-1.0.0}"
104 reavertm 1.61 esac
105     fi
106     SLOT="4"
107     ;;
108     esac
109    
110     inherit ${buildsystem_eclass}
111 scarabeus 1.47
112 scarabeus 1.87 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare ${export_fns} pkg_preinst pkg_postinst pkg_postrm
113 scarabeus 1.44
114 scarabeus 1.47 unset buildsystem_eclass
115     unset export_fns
116 ingmar 1.1
117 alexxy 1.78 # @ECLASS-VARIABLE: DECLARATIVE_REQUIRED
118     # @DESCRIPTION:
119 pesa 1.124 # Is qtdeclarative required? Possible values are 'always', 'optional' and 'never'.
120 alexxy 1.78 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
121     DECLARATIVE_REQUIRED="${DECLARATIVE_REQUIRED:-never}"
122    
123     # @ECLASS-VARIABLE: QTHELP_REQUIRED
124     # @DESCRIPTION:
125 pesa 1.124 # Is qthelp required? Possible values are 'always', 'optional' and 'never'.
126 alexxy 1.78 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
127     QTHELP_REQUIRED="${QTHELP_REQUIRED:-never}"
128    
129 philantrop 1.7 # @ECLASS-VARIABLE: OPENGL_REQUIRED
130     # @DESCRIPTION:
131 pesa 1.124 # Is qtopengl required? Possible values are 'always', 'optional' and 'never'.
132 philantrop 1.7 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
133     OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}"
134    
135 abcd 1.56 # @ECLASS-VARIABLE: MULTIMEDIA_REQUIRED
136     # @DESCRIPTION:
137 pesa 1.124 # Is qtmultimedia required? Possible values are 'always', 'optional' and 'never'.
138 abcd 1.56 # This variable must be set before inheriting any eclasses. Defaults to 'never'.
139     MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}"
140    
141 zlin 1.4 # @ECLASS-VARIABLE: CPPUNIT_REQUIRED
142     # @DESCRIPTION:
143     # Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'.
144     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
145     CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}"
146    
147 scarabeus 1.34 # @ECLASS-VARIABLE: KDE_REQUIRED
148     # @DESCRIPTION:
149     # Is kde required? Possible values are 'always', 'optional' and 'never'.
150     # This variable must be set before inheriting any eclasses. Defaults to 'always'
151 reavertm 1.74 # If set to 'always' or 'optional', KDE_MINIMAL may be overriden as well.
152 scarabeus 1.34 # Note that for kde-base packages this variable is fixed to 'always'.
153     KDE_REQUIRED="${KDE_REQUIRED:-always}"
154    
155 reavertm 1.69 # @ECLASS-VARIABLE: KDE_HANDBOOK
156     # @DESCRIPTION:
157 reavertm 1.74 # Set to enable handbook in application. Possible values are 'always', 'optional'
158     # (handbook USE flag) and 'never'.
159     # This variable must be set before inheriting any eclasses. Defaults to 'never'.
160     # It adds default handbook dirs for kde-base packages to KMEXTRA and in any case it
161     # ensures buildtime and runtime dependencies.
162     KDE_HANDBOOK="${KDE_HANDBOOK:-never}"
163 reavertm 1.69
164 scarabeus 1.87 # @ECLASS-VARIABLE: KDE_LINGUAS_LIVE_OVERRIDE
165     # @DESCRIPTION:
166     # Set this varible if you want your live package to manage its
167     # translations. (Mostly all kde ebuilds does not ship documentation
168     # and translations in live ebuilds)
169 johu 1.120 if [[ ${KDE_BUILD_TYPE} == live && -z ${KDE_LINGUAS_LIVE_OVERRIDE} ]]; then
170 abcd 1.90 # Kdebase actualy provides the handbooks even for live stuff
171     [[ ${KDEBASE} == kde-base ]] || KDE_HANDBOOK=never
172 scarabeus 1.87 KDE_LINGUAS=""
173     fi
174    
175 scarabeus 1.47 # Setup packages inheriting this eclass
176     case ${KDEBASE} in
177     kde-base)
178 reavertm 1.69 HOMEPAGE="http://www.kde.org/"
179     LICENSE="GPL-2"
180 johu 1.120 if [[ ${KDE_BUILD_TYPE} = live && -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
181 kensington 1.119 # Disable tests for live ebuilds by default
182 scarabeus 1.47 RESTRICT+=" test"
183 abcd 1.96 fi
184    
185 scarabeus 1.47 # This code is to prevent portage from searching GENTOO_MIRRORS for
186     # packages that will never be mirrored. (As they only will ever be in
187     # the overlay).
188     case ${PV} in
189 kensington 1.125 *9999* | 4.?.[6-9]? | 4.??.[6-9]?)
190 scarabeus 1.47 RESTRICT+=" mirror"
191     ;;
192     esac
193     ;;
194 reavertm 1.69 kdevelop)
195     HOMEPAGE="http://www.kdevelop.org/"
196     LICENSE="GPL-2"
197     ;;
198 scarabeus 1.47 esac
199 scarabeus 1.34
200 scarabeus 1.47 # @ECLASS-VARIABLE: QT_MINIMAL
201 scarabeus 1.39 # @DESCRIPTION:
202 scarabeus 1.87 # Determine version of qt we enforce as minimal for the package.
203 kensington 1.125 QT_MINIMAL="${QT_MINIMAL:-4.8.0}"
204 scarabeus 1.47
205 alexxy 1.78 # Declarative dependencies
206     qtdeclarativedepend="
207 pesa 1.124 >=dev-qt/qtdeclarative-${QT_MINIMAL}:4
208 alexxy 1.78 "
209     case ${DECLARATIVE_REQUIRED} in
210     always)
211     COMMONDEPEND+=" ${qtdeclarativedepend}"
212     ;;
213     optional)
214     IUSE+=" declarative"
215     COMMONDEPEND+=" declarative? ( ${qtdeclarativedepend} )"
216     ;;
217     *) ;;
218     esac
219     unset qtdeclarativedepend
220    
221     # QtHelp dependencies
222     qthelpdepend="
223 pesa 1.124 >=dev-qt/qthelp-${QT_MINIMAL}:4
224 alexxy 1.78 "
225     case ${QTHELP_REQUIRED} in
226     always)
227     COMMONDEPEND+=" ${qthelpdepend}"
228     ;;
229     optional)
230     IUSE+=" qthelp"
231     COMMONDEPEND+=" qthelp? ( ${qthelpdepend} )"
232     ;;
233     esac
234     unset qthelpdepend
235    
236 scarabeus 1.34 # OpenGL dependencies
237     qtopengldepend="
238 pesa 1.124 >=dev-qt/qtopengl-${QT_MINIMAL}:4
239 scarabeus 1.34 "
240     case ${OPENGL_REQUIRED} in
241     always)
242 wired 1.42 COMMONDEPEND+=" ${qtopengldepend}"
243 scarabeus 1.34 ;;
244     optional)
245 wired 1.42 IUSE+=" opengl"
246     COMMONDEPEND+=" opengl? ( ${qtopengldepend} )"
247 scarabeus 1.34 ;;
248     *) ;;
249     esac
250     unset qtopengldepend
251    
252 abcd 1.56 # MultiMedia dependencies
253     qtmultimediadepend="
254 pesa 1.124 >=dev-qt/qtmultimedia-${QT_MINIMAL}:4
255 abcd 1.56 "
256     case ${MULTIMEDIA_REQUIRED} in
257     always)
258     COMMONDEPEND+=" ${qtmultimediadepend}"
259     ;;
260     optional)
261     IUSE+=" multimedia"
262     COMMONDEPEND+=" multimedia? ( ${qtmultimediadepend} )"
263     ;;
264     *) ;;
265     esac
266     unset qtmultimediadepend
267    
268 scarabeus 1.34 # CppUnit dependencies
269     cppuintdepend="
270     dev-util/cppunit
271     "
272 scarabeus 1.22 case ${CPPUNIT_REQUIRED} in
273 zlin 1.4 always)
274 wired 1.42 DEPEND+=" ${cppuintdepend}"
275 scarabeus 1.22 ;;
276 zlin 1.4 optional)
277 wired 1.42 IUSE+=" test"
278     DEPEND+=" test? ( ${cppuintdepend} )"
279 scarabeus 1.22 ;;
280 scarabeus 1.34 *) ;;
281 zlin 1.4 esac
282 scarabeus 1.34 unset cppuintdepend
283    
284     # KDE dependencies
285 reavertm 1.65 # Qt accessibility classes are needed in various places, bug 325461
286 scarabeus 1.34 kdecommondepend="
287 reavertm 1.73 dev-lang/perl
288 pesa 1.124 >=dev-qt/qt3support-${QT_MINIMAL}:4[accessibility]
289     >=dev-qt/qtcore-${QT_MINIMAL}:4[qt3support,ssl]
290     >=dev-qt/qtdbus-${QT_MINIMAL}:4
291 johu 1.127 || (
292     ( >=dev-qt/qtgui-4.8.5:4[accessibility,dbus(+)] dev-qt/designer:4[-phonon] )
293     <dev-qt/qtgui-4.8.5:4[accessibility,dbus(+)]
294     )
295 pesa 1.124 >=dev-qt/qtscript-${QT_MINIMAL}:4
296     >=dev-qt/qtsql-${QT_MINIMAL}:4[qt3support]
297     >=dev-qt/qtsvg-${QT_MINIMAL}:4
298     >=dev-qt/qttest-${QT_MINIMAL}:4
299     >=dev-qt/qtwebkit-${QT_MINIMAL}:4
300 scarabeus 1.34 "
301 reavertm 1.61
302 scarabeus 1.34 if [[ ${PN} != kdelibs ]]; then
303 reavertm 1.73 kdecommondepend+=" $(add_kdebase_dep kdelibs)"
304     if [[ ${KDEBASE} = kdevelop ]]; then
305     if [[ ${PN} != kdevplatform ]]; then
306     # @ECLASS-VARIABLE: KDEVPLATFORM_REQUIRED
307     # @DESCRIPTION:
308     # Specifies whether kdevplatform is required. Possible values are 'always' (default) and 'never'.
309     # Applies to KDEBASE=kdevelop only.
310     KDEVPLATFORM_REQUIRED="${KDEVPLATFORM_REQUIRED:-always}"
311     case ${KDEVPLATFORM_REQUIRED} in
312     always)
313     kdecommondepend+="
314     >=dev-util/kdevplatform-${KDEVPLATFORM_VERSION}
315     "
316     ;;
317     *) ;;
318     esac
319 reavertm 1.61 fi
320 ingmar 1.1 fi
321     fi
322 scarabeus 1.87
323 scarabeus 1.34 kdedepend="
324 reavertm 1.60 dev-util/automoc
325 jdhore 1.115 virtual/pkgconfig
326 scarabeus 1.54 !aqua? (
327 xarthisius 1.83 >=x11-libs/libXtst-1.1.0
328 scarabeus 1.54 x11-proto/xf86vidmodeproto
329     )
330 scarabeus 1.34 "
331 scarabeus 1.87
332 reavertm 1.73 kderdepend=""
333 reavertm 1.69
334 scarabeus 1.87 # all packages needs oxygen icons for basic iconset
335 dilfridge 1.82 if [[ ${PN} != oxygen-icons ]]; then
336     kderdepend+=" $(add_kdebase_dep oxygen-icons)"
337     fi
338    
339 kensington 1.131 # add a dependency over kde-l10n
340 kensington 1.128 if [[ ${KDEBASE} != "kde-base" && -n ${KDE_LINGUAS} ]]; then
341 scarabeus 1.87 for _lingua in ${KDE_LINGUAS}; do
342 scarabeus 1.89 # if our package has lignuas, pull in kde-l10n with selected lingua enabled,
343     # but only for selected ones.
344     # this can't be done on one line because if user doesn't use any localisation
345     # then he is probably not interested in kde-l10n at all.
346     kderdepend+="
347 scarabeus 1.91 linguas_${_lingua}? ( $(add_kdebase_dep kde-l10n "linguas_${_lingua}(+)") )
348 scarabeus 1.89 "
349 scarabeus 1.87 done
350 scarabeus 1.89 unset _lingua
351 scarabeus 1.87 fi
352    
353 reavertm 1.74 kdehandbookdepend="
354     app-text/docbook-xml-dtd:4.2
355     app-text/docbook-xsl-stylesheets
356     "
357     kdehandbookrdepend="
358     $(add_kdebase_dep kdelibs 'handbook')
359     "
360     case ${KDE_HANDBOOK} in
361     always)
362     kdedepend+=" ${kdehandbookdepend}"
363     [[ ${PN} != kdelibs ]] && kderdepend+=" ${kdehandbookrdepend}"
364     ;;
365     optional)
366     IUSE+=" +handbook"
367     kdedepend+=" handbook? ( ${kdehandbookdepend} )"
368     [[ ${PN} != kdelibs ]] && kderdepend+=" handbook? ( ${kdehandbookrdepend} )"
369     ;;
370     *) ;;
371     esac
372     unset kdehandbookdepend kdehandbookrdepend
373 reavertm 1.69
374 dilfridge 1.111 case ${KDE_SELINUX_MODULE} in
375     none) ;;
376     *)
377     IUSE+=" selinux"
378     kdecommondepend+=" selinux? ( sec-policy/selinux-${KDE_SELINUX_MODULE} )"
379     ;;
380     esac
381    
382 alexxy 1.123 # We always need the aqua useflag because otherwise we cannot = refer to it inside
383     # add_kdebase_dep. This was always kind of a bug, but came to light with EAPI=5
384     # (where referring to a use flag not in IUSE masks the ebuild).
385     # The only alternative would be to prohibit using add_kdebase_dep if KDE_REQUIRED=never
386     IUSE+=" aqua"
387    
388 scarabeus 1.34 case ${KDE_REQUIRED} in
389     always)
390 reavertm 1.73 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" ${kdecommondepend}"
391     [[ -n ${kdedepend} ]] && DEPEND+=" ${kdedepend}"
392     [[ -n ${kderdepend} ]] && RDEPEND+=" ${kderdepend}"
393 scarabeus 1.34 ;;
394     optional)
395 alexxy 1.123 IUSE+=" kde"
396 reavertm 1.73 [[ -n ${kdecommondepend} ]] && COMMONDEPEND+=" kde? ( ${kdecommondepend} )"
397     [[ -n ${kdedepend} ]] && DEPEND+=" kde? ( ${kdedepend} )"
398     [[ -n ${kderdepend} ]] && RDEPEND+=" kde? ( ${kderdepend} )"
399 scarabeus 1.34 ;;
400     *) ;;
401     esac
402 scarabeus 1.54
403 reavertm 1.73 unset kdecommondepend kdedepend kderdepend
404 scarabeus 1.34
405     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}"
406     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}"
407     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}"
408    
409     # Accumulate dependencies set by this eclass
410 wired 1.42 DEPEND+=" ${COMMONDEPEND}"
411     RDEPEND+=" ${COMMONDEPEND}"
412     unset COMMONDEPEND
413 ingmar 1.1
414     # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
415 johu 1.121 # kdevelop ebuild, the URI should be set in the ebuild itself
416 scarabeus 1.87 _calculate_src_uri() {
417     debug-print-function ${FUNCNAME} "$@"
418    
419     local _kmname _kmname_pv
420    
421     # we calculate URI only for known KDEBASE modules
422     [[ -n ${KDEBASE} ]] || return
423    
424     # calculate tarball module name
425     if [[ -n ${KMNAME} ]]; then
426 kensington 1.129 _kmname="${KMNAME}"
427 scarabeus 1.87 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 alexxy 1.123 4.?.[6-9]? | 4.??.[6-9]?)
439 scarabeus 1.87 # Unstable KDE SC releases
440 johu 1.120 SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.xz" ;;
441 alexxy 1.123 4.[1-7].[12345])
442 johu 1.120 # 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 alexxy 1.123 4.[123].[6-9]*) SRC_URI="mirror://kde/unstable/kdevelop/${KDEVELOP_VERSION}/src/${P}.tar.bz2" ;;
452 dilfridge 1.113 *) 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 dilfridge 1.132 # kde-workspace master needs Qt5/kf5
558     [[ ${PV} == 9999 && ${_kmname} == kde-workspace ]] && \
559     EGIT_BRANCH="KDE/4.11"
560    
561 abcd 1.99 # default repo uri
562 dilfridge 1.132 EGIT_REPO_URI+=( "${EGIT_MIRROR}/${_kmname}" )
563 scarabeus 1.87
564     debug-print "${FUNCNAME}: Repository: ${EGIT_REPO_URI}"
565     debug-print "${FUNCNAME}: Branch: ${EGIT_BRANCH}"
566     ;;
567     esac
568     }
569    
570 johu 1.120 case ${KDE_BUILD_TYPE} in
571 scarabeus 1.87 live) _calculate_live_repo ;;
572     *) _calculate_src_uri ;;
573 scarabeus 1.22 esac
574 ingmar 1.1
575     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
576    
577     # @ECLASS-VARIABLE: PREFIX
578     # @DESCRIPTION:
579 scarabeus 1.34 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
580 abcd 1.100 # kde-base packages go into KDE4 installation directory (/usr).
581     # No matter the PREFIX, package will be built against KDE installed in /usr.
582 ingmar 1.1
583     # @FUNCTION: kde4-base_pkg_setup
584     # @DESCRIPTION:
585 abcd 1.100 # Do some basic settings
586 ingmar 1.1 kde4-base_pkg_setup() {
587 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
588 ingmar 1.1
589 dilfridge 1.111 if has handbook ${IUSE} || has "+handbook" ${IUSE} && [ "${KDE_HANDBOOK}" != optional ] ; then
590     eqawarn "Handbook support is enabled via KDE_HANDBOOK=optional in the ebuild."
591     eqawarn "Please do not just set IUSE=handbook, as this leads to dependency errors."
592     fi
593    
594 scarabeus 1.34 # Don't set KDEHOME during compilation, it will cause access violations
595 jmbsvicetto 1.13 unset KDEHOME
596    
597 scarabeus 1.91 # Check if gcc compiler is fresh enough.
598     # In theory should be in pkg_pretend but we check it only for kdelibs there
599     # and for others we do just quick scan in pkg_setup because pkg_pretend
600     # executions consume quite some time.
601 kensington 1.128 if [[ ${MERGE_TYPE} != binary ]]; then
602     [[ $(gcc-major-version) -lt 4 ]] || \
603     ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
604     && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)."
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     subversion_src_unpack
628     ;;
629     git)
630 dilfridge 1.132 git-r3_src_unpack
631 scarabeus 1.87 ;;
632     esac
633 ingmar 1.1 else
634 scarabeus 1.54 unpack ${A}
635 ingmar 1.1 fi
636 scarabeus 1.22 }
637 ingmar 1.1
638 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
639 scarabeus 1.22 # @DESCRIPTION:
640     # General pre-configure and pre-compile function for KDE4 applications.
641     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
642 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
643     # in kde4-functions.eclass(5) for further details.
644 scarabeus 1.22 kde4-base_src_prepare() {
645     debug-print-function ${FUNCNAME} "$@"
646 zlin 1.8
647 scarabeus 1.87 # enable handbook and linguas only when not using live ebuild
648    
649 zlin 1.8 # Only enable selected languages, used for KDE extragear apps.
650 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
651 zlin 1.8 enable_selected_linguas
652     fi
653 ingmar 1.1
654 wired 1.42 # Enable/disable handbooks for kde4-base packages
655 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
656     # kdelibs inherits kde4-base but handle installing the handbook itself
657 abcd 1.110 if ! has kde4-meta ${INHERITED} && in_iuse handbook; then
658 scarabeus 1.87 if [[ ${KDEBASE} == kde-base ]]; then
659     if [[ ${PN} != kde-l10n && ${PN} != kdepim-l10n && ${PN} != kdelibs ]] && use !handbook; then
660     # documentation in kde4-functions
661     : ${KDE_DOC_DIRS:=doc}
662     local dir
663     for dir in ${KDE_DOC_DIRS}; do
664 abcd 1.90 sed -e "\!^[[:space:]]*add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
665     -e "\!^[[:space:]]*ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
666     -e "\!^[[:space:]]*macro_optional_add_subdirectory[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
667     -e "\!^[[:space:]]*MACRO_OPTIONAL_ADD_SUBDIRECTORY[[:space:]]*([[:space:]]*${dir}[[:space:]]*)!s/^/#DONOTCOMPILE /" \
668 scarabeus 1.87 -i CMakeLists.txt || die "failed to comment out handbook"
669     done
670     fi
671     else
672     enable_selected_doc_linguas
673     fi
674 wired 1.42 fi
675    
676 reavertm 1.61 # SCM bootstrap
677 johu 1.120 if [[ ${KDE_BUILD_TYPE} = live ]]; then
678 scarabeus 1.87 case ${KDE_SCM} in
679     svn) subversion_src_prepare ;;
680     esac
681 reavertm 1.61 fi
682 reavertm 1.58
683 dilfridge 1.132 # Apply patches, cmake-utils does the job already
684     cmake-utils_src_prepare
685 scarabeus 1.20
686 scarabeus 1.22 # Save library dependencies
687 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
688 scarabeus 1.22 save_library_dependencies
689     fi
690 scarabeus 1.20
691 scarabeus 1.22 # Inject library dependencies
692 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
693 scarabeus 1.22 load_library_dependencies
694 jmbsvicetto 1.13 fi
695 dilfridge 1.76
696 johu 1.121 # Hack for manuals relying on outdated DTD, only outside kde-base/...
697 alexxy 1.78 if [[ -z ${KDEBASE} ]]; then
698 dilfridge 1.77 find "${S}" -name "*.docbook" \
699     -exec sed -i -r \
700     -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' {} + \
701     || die 'failed to fix DocBook variant version'
702     fi
703 ingmar 1.1 }
704    
705     # @FUNCTION: kde4-base_src_configure
706     # @DESCRIPTION:
707     # Function for configuring the build of KDE4 applications.
708     kde4-base_src_configure() {
709     debug-print-function ${FUNCNAME} "$@"
710    
711     # Build tests in src_test only, where we override this value
712 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
713 ingmar 1.1
714 abcd 1.110 if use_if_iuse debug; then
715 reavertm 1.68 # Set "real" debug mode
716 johu 1.120 CMAKE_KDE_BUILD_TYPE="Debugfull"
717 reavertm 1.68 else
718     # Handle common release builds
719     append-cppflags -DQT_NO_DEBUG
720 scarabeus 1.38 fi
721    
722 ingmar 1.1 # Set distribution name
723 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
724 ingmar 1.1
725     # Here we set the install prefix
726 reavertm 1.61 tc-is-cross-compiler || cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
727 jmbsvicetto 1.13
728 wired 1.42 # Use colors
729 ingmar 1.1 QTEST_COLORED=1
730 jmbsvicetto 1.13
731 abcd 1.100 # Shadow existing installations
732 scarabeus 1.34 unset KDEDIRS
733    
734 reavertm 1.61 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
735 abcd 1.96 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4)
736 reavertm 1.61 #kde-config -path data unavailable when cross-compiling
737     tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
738    
739 abcd 1.96 # sysconf needs to be /etc, not /usr/etc
740     cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
741 abcd 1.56
742 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
743 dilfridge 1.116 if [[ ${mycmakeargs} ]]; then
744     eqawarn "mycmakeargs should always be declared as an array, not a string"
745     fi
746 abcd 1.56 mycmakeargs=(${mycmakeargs})
747 scarabeus 1.22 fi
748    
749 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
750 scarabeus 1.34
751     cmake-utils_src_configure
752 scarabeus 1.22 }
753    
754     # @FUNCTION: kde4-base_src_compile
755     # @DESCRIPTION:
756     # General function for compiling KDE4 applications.
757     kde4-base_src_compile() {
758     debug-print-function ${FUNCNAME} "$@"
759    
760 wired 1.42 cmake-utils_src_compile "$@"
761 ingmar 1.1 }
762    
763     # @FUNCTION: kde4-base_src_test
764     # @DESCRIPTION:
765     # Function for testing KDE4 applications.
766     kde4-base_src_test() {
767     debug-print-function ${FUNCNAME} "$@"
768    
769 kensington 1.119 local kded4_pid
770    
771     _test_runner() {
772     if [[ -n "${VIRTUALDBUS_TEST}" ]]; then
773     export $(dbus-launch)
774     kded4 2>&1 > /dev/null &
775     kded4_pid=$!
776     fi
777    
778     cmake-utils_src_test
779     }
780 ingmar 1.1
781 dilfridge 1.85 # When run as normal user during ebuild development with the ebuild command, the
782     # kde tests tend to access the session DBUS. This however is not possible in a real
783     # emerge or on the tinderbox.
784     # > make sure it does not happen, so bad tests can be recognized and disabled
785 kensington 1.119 unset DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
786    
787     # Override this value, set in kde4-base_src_configure()
788     mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
789     cmake-utils_src_configure
790     kde4-base_src_compile
791 dilfridge 1.85
792     if [[ ${VIRTUALX_REQUIRED} == always || ${VIRTUALX_REQUIRED} == test ]]; then
793     # check for sanity if anyone already redefined VIRTUALX_COMMAND from the default
794 scarabeus 1.87 if [[ ${VIRTUALX_COMMAND} != emake ]]; then
795 alexxy 1.78 # surprise- we are already INSIDE virtualmake!!!
796 dilfridge 1.85 debug-print "QA Notice: This version of kde4-base.eclass includes the virtualx functionality."
797     debug-print " You may NOT set VIRTUALX_COMMAND or call virtualmake from the ebuild."
798     debug-print " Setting VIRTUALX_REQUIRED is completely sufficient. See the"
799     debug-print " kde4-base.eclass docs for details... Applying workaround."
800 kensington 1.119 _test_runner
801 alexxy 1.78 else
802 kensington 1.119 VIRTUALX_COMMAND="_test_runner" virtualmake
803 alexxy 1.78 fi
804     else
805 kensington 1.119 _test_runner
806     fi
807    
808     if [ -n "${kded4_pid}" ] ; then
809     kill ${kded4_pid}
810     fi
811    
812     if [ -n "${DBUS_SESSION_BUS_PID}" ] ; then
813     kill ${DBUS_SESSION_BUS_PID}
814 alexxy 1.78 fi
815 ingmar 1.1 }
816    
817     # @FUNCTION: kde4-base_src_install
818     # @DESCRIPTION:
819     # Function for installing KDE4 applications.
820     kde4-base_src_install() {
821     debug-print-function ${FUNCNAME} "$@"
822    
823 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
824 scarabeus 1.22 install_library_dependencies
825     fi
826    
827 reavertm 1.61 # Install common documentation of KDE4 applications
828 ingmar 1.1 local doc
829 reavertm 1.61 if ! has kde4-meta ${INHERITED}; then
830 reavertm 1.62 for doc in "${S}"/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
831 scarabeus 1.87 [[ -f ${doc} && -s ${doc} ]] && dodoc "${doc}"
832 reavertm 1.62 done
833     for doc in "${S}"/*/{AUTHORS,CHANGELOG,ChangeLog*,README*,NEWS,TODO,HACKING}; do
834 scarabeus 1.87 [[ -f ${doc} && -s ${doc} ]] && newdoc "${doc}" "$(basename $(dirname ${doc})).$(basename ${doc})"
835 ingmar 1.1 done
836     fi
837 reavertm 1.61
838     cmake-utils_src_install
839 abcd 1.90
840 kensington 1.128 # We don't want ${PREFIX}/share/doc/HTML to be compressed,
841 abcd 1.90 # because then khelpcenter can't find the docs
842 kensington 1.128 [[ -d ${ED}/${PREFIX}/share/doc/HTML ]] &&
843 abcd 1.90 docompress -x ${PREFIX}/share/doc/HTML
844 ingmar 1.1 }
845    
846 scarabeus 1.87 # @FUNCTION: kde4-base_pkg_preinst
847     # @DESCRIPTION:
848     # Function storing icon caches
849     kde4-base_pkg_preinst() {
850     debug-print-function ${FUNCNAME} "$@"
851    
852     gnome2_icon_savelist
853 johu 1.120 if [[ ${KDE_BUILD_TYPE} == live && ${KDE_SCM} == svn ]]; then
854 abcd 1.110 subversion_pkg_preinst
855     fi
856 scarabeus 1.87 }
857    
858 ingmar 1.1 # @FUNCTION: kde4-base_pkg_postinst
859     # @DESCRIPTION:
860     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
861     kde4-base_pkg_postinst() {
862 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
863    
864 scarabeus 1.87 gnome2_icon_cache_update
865     fdo-mime_desktop_database_update
866     fdo-mime_mime_database_update
867 ingmar 1.1 buildsycoca
868 scarabeus 1.36
869 scarabeus 1.87 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
870 johu 1.120 if [[ ${KDE_BUILD_TYPE} = live ]]; then
871 scarabeus 1.87 echo
872     einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
873     einfo "Use it at your own risk."
874     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
875     echo
876     fi
877     # for all 3rd party soft tell user that he SHOULD install kdebase-startkde or kdebase-runtime-meta
878     if [[ ${KDEBASE} != kde-base ]] && \
879     ! has_version 'kde-base/kdebase-runtime-meta' && \
880     ! has_version 'kde-base/kdebase-startkde'; then
881     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
882     echo
883     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
884     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
885     ewarn "With this setting you are unsupported by KDE team."
886     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
887     fi
888 reavertm 1.58 fi
889     fi
890 ingmar 1.1 }
891    
892     # @FUNCTION: kde4-base_pkg_postrm
893     # @DESCRIPTION:
894     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
895     kde4-base_pkg_postrm() {
896 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
897    
898 scarabeus 1.87 gnome2_icon_cache_update
899     fdo-mime_desktop_database_update
900     fdo-mime_mime_database_update
901 ingmar 1.1 buildsycoca
902     }
903 kensington 1.125
904     fi

  ViewVC Help
Powered by ViewVC 1.1.20