1 |
# Copyright 2007-2008 Gentoo Foundation |
2 |
# Distributed under the terms of the GNU General Public License v2 |
3 |
# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.26 2009/01/31 14:00:22 yngwin Exp $ |
4 |
|
5 |
# @ECLASS: kde4-base.eclass |
6 |
# @MAINTAINER: |
7 |
# kde@gentoo.org |
8 |
# @BLURB: This eclass provides functions for kde 4.X ebuilds |
9 |
# @DESCRIPTION: |
10 |
# The kde4-base.eclass provides support for building KDE4 based ebuilds |
11 |
# and KDE4 applications. |
12 |
# |
13 |
# NOTE: KDE 4 ebuilds by default define EAPI="2", this can be redefined but |
14 |
# eclass will fail with version older than 2. |
15 |
|
16 |
inherit base cmake-utils eutils multilib kde4-functions |
17 |
|
18 |
get_build_type |
19 |
if [[ $BUILD_TYPE = live ]]; then |
20 |
inherit subversion |
21 |
fi |
22 |
|
23 |
EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_postinst pkg_postrm |
24 |
|
25 |
# @FUNCTION: kde4-base_set_qt_dependencies |
26 |
# @DESCRIPTION: |
27 |
# Set qt dependencies. And use opengl based on OPENGL_REQUIRED variable. |
28 |
kde4-base_set_qt_dependencies() { |
29 |
local qtdepend qtopengldepend |
30 |
|
31 |
qtdepend=" |
32 |
x11-libs/qt-core:4[qt3support,ssl] |
33 |
x11-libs/qt-gui:4[accessibility,dbus] |
34 |
x11-libs/qt-qt3support:4[accessibility] |
35 |
x11-libs/qt-script:4 |
36 |
x11-libs/qt-sql:4[qt3support] |
37 |
x11-libs/qt-svg:4 |
38 |
x11-libs/qt-test:4 |
39 |
x11-libs/qt-webkit:4" |
40 |
qtopengldepend="x11-libs/qt-opengl:4" |
41 |
|
42 |
# opengl dependencies |
43 |
case ${OPENGL_REQUIRED} in |
44 |
always) |
45 |
qtdepend="${qtdepend} |
46 |
${qtopengldepend}" |
47 |
;; |
48 |
optional) |
49 |
IUSE="${IUSE} opengl" |
50 |
qtdepend="${qtdepend} |
51 |
opengl? ( ${qtopengldepend} )" |
52 |
;; |
53 |
*) |
54 |
OPENGL_REQUIRED="never" |
55 |
;; |
56 |
esac |
57 |
|
58 |
COMMONDEPEND="${COMMONDEPEND} ${qtdepend}" |
59 |
} |
60 |
kde4-base_set_qt_dependencies |
61 |
|
62 |
# Set the cmake dependencies |
63 |
# Quite a few packages fail with cmake-2.4 even for KDE 4.1, so we just require 2.6.2 |
64 |
CMAKEDEPEND=">=dev-util/cmake-2.6.2" |
65 |
|
66 |
# Set the common dependencies |
67 |
DEPEND="${DEPEND} ${COMMONDEPEND} ${CMAKEDEPEND} |
68 |
dev-util/pkgconfig |
69 |
x11-libs/libXt |
70 |
x11-proto/xf86vidmodeproto" |
71 |
RDEPEND="${RDEPEND} ${COMMONDEPEND}" |
72 |
|
73 |
if [[ $BUILD_TYPE = live ]]; then |
74 |
# Disable tests for live ebuilds |
75 |
RESTRICT="${RESTRICT} test" |
76 |
# Live ebuilds in kde-base default to kdeprefix by default |
77 |
IUSE="${IUSE} +kdeprefix" |
78 |
else |
79 |
# All other ebuild types default to -kdeprefix as before |
80 |
IUSE="${IUSE} kdeprefix" |
81 |
fi |
82 |
|
83 |
# @ECLASS-VARIABLE: OPENGL_REQUIRED |
84 |
# @DESCRIPTION: |
85 |
# Is qt-opengl required? Possible values are 'always', 'optional' and 'never'. |
86 |
# This variable must be set before inheriting any eclasses. Defaults to 'never'. |
87 |
OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}" |
88 |
|
89 |
# @ECLASS-VARIABLE: CPPUNIT_REQUIRED |
90 |
# @DESCRIPTION: |
91 |
# Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'. |
92 |
# This variable must be set before inheriting any eclasses. Defaults to 'never'. |
93 |
CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}" |
94 |
|
95 |
case ${CPPUNIT_REQUIRED} in |
96 |
always) |
97 |
DEPEND="${DEPEND} dev-util/cppunit" |
98 |
;; |
99 |
optional) |
100 |
IUSE="${IUSE} test" |
101 |
DEPEND="${DEPEND} |
102 |
test? ( dev-util/cppunit )" |
103 |
;; |
104 |
*) |
105 |
CPPUNIT_REQUIRED="never" |
106 |
;; |
107 |
esac |
108 |
|
109 |
# @ECLASS-VARIABLE: NEED_KDE |
110 |
# @DESCRIPTION: |
111 |
# This variable sets the version of KDE4 which will be used by the eclass. |
112 |
# For kde-base packages, if it is not set by the ebuild, |
113 |
# it's assumed that the required KDE4 version is the latest available. |
114 |
# For non kde-base packages, it is also set to the latest by default. |
115 |
# |
116 |
# For more precise adjustments or for specifying particular kde version, |
117 |
# KDE_MINIMAL variable can be used. |
118 |
# |
119 |
# @CODE |
120 |
# Acceptable values are: |
121 |
# - latest - Use latest version in the portage tree |
122 |
# Default for kde-base ebuilds. |
123 |
# - live - Use live release (live ebuilds) |
124 |
# - none - Let the ebuild handle SLOT, kde dependencies, KDEDIR, ... |
125 |
# - 4.2, 4.1, kde-4 - respective slots for kde versions |
126 |
# @CODE |
127 |
# Note: default NEED_KDE is latest |
128 |
NEED_KDE="${NEED_KDE:=latest}" |
129 |
export NEED_KDE |
130 |
|
131 |
# @ECLASS-VARIABLE: KDE_MINIMAL |
132 |
# @DESCRIPTION: |
133 |
# This wariable is used when NEED_KDE="latest" is set, to specify the |
134 |
# required KDE minimal version for which apps will work. |
135 |
# @CODE |
136 |
# KDE_MINIMAL="-4.1" |
137 |
# @CODE |
138 |
# Note: default minimal version is kde-4.1, which means that the apps will work |
139 |
# with any KDE version >=${KDE_MINIMAL} |
140 |
KDE_MINIMAL="${KDE_MINIMAL:=4.1}" |
141 |
export KDE_MINIMAL |
142 |
|
143 |
# FIXME: the code section, explanation of live. The last sentence needs other |
144 |
# formulation too. |
145 |
# |
146 |
# @ECLASS-VARIABLE: KDE_WANTED |
147 |
# @DESCRIPTION: |
148 |
# When NEED_KDE=latest is inherited, KDE_WANTED serves to indicate the prefered kde |
149 |
# version. It's value is looked for before any other. Useful when having more |
150 |
# +kdeprefix installs: you can choose which kde version, if present, to link |
151 |
# against. |
152 |
# |
153 |
# @CODE |
154 |
# Acceptable values are: |
155 |
# stable = whatever is main tree (now 4.1) |
156 |
# testing = whatever is in testing on main tree |
157 |
# snapshot = whatever is released under snapshots (4.2 at present) |
158 |
# live = live svn ebuilds, also default value, do not be scared it goes in this |
159 |
# |
160 |
# order: live->snapshot->testing->stable, when searching for kde. This way we |
161 |
# allow users to use just kde4snapshots and use software from the tree. |
162 |
KDE_WANTED="${KDE_WANTED:=live}" |
163 |
export KDE_WANTED |
164 |
|
165 |
case ${NEED_KDE} in |
166 |
latest) |
167 |
if [[ $KDEBASE = kde-base ]]; then |
168 |
case ${PV} in |
169 |
4.2.6*) |
170 |
_kdedir="4.3" |
171 |
_pv="-${PV}:4.3" |
172 |
_pvn="-${PV}" |
173 |
;; |
174 |
4.2* | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) |
175 |
_kdedir="4.2" |
176 |
_pv="-${PV}:4.2" |
177 |
_pvn="-${PV}" |
178 |
;; |
179 |
4.1*| 4.0.9* | 4.0.8*) |
180 |
_kdedir="4.1" |
181 |
_pv="-${PV}:4.1" |
182 |
_pvn="-${PV}" |
183 |
;; |
184 |
4.0*) |
185 |
_kdedir="4.0" |
186 |
_pv="-${PV}:kde-4" |
187 |
_pvn="-${PV}" |
188 |
;; |
189 |
3.9*) |
190 |
_kdedir="3.9" |
191 |
_pv="-${PV}:kde-4" |
192 |
_pvn="-${PV}" |
193 |
;; |
194 |
9999*) |
195 |
_kdedir="live" |
196 |
_pv="-${PV}:live" |
197 |
_pvn="-${PV}" |
198 |
;; |
199 |
*) |
200 |
die "NEED_KDE=latest not supported for PV=${PV}" ;; |
201 |
esac |
202 |
_operator=">=" |
203 |
else |
204 |
# this creates dependency on any version of kde4 |
205 |
_operator=">=" |
206 |
_pv="-${KDE_MINIMAL}" |
207 |
_pvn=${_pv} |
208 |
fi |
209 |
;; |
210 |
|
211 |
# NEED_KDE="${PV}" |
212 |
scm|svn|live|9999*) |
213 |
_kdedir="live" |
214 |
_operator=">=" |
215 |
_pv="-${NEED_KDE}:live" |
216 |
_pvn="-${NEED_KDE}" |
217 |
export NEED_KDE="live" |
218 |
;; |
219 |
4.2.6*) |
220 |
_kdedir="4.3" |
221 |
_pv="-${NEED_KDE}:4.3" |
222 |
_pvn="-${NEED_KDE}" |
223 |
_operator=">=" |
224 |
;; |
225 |
4.2 | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) |
226 |
_kdedir="4.2" |
227 |
_pv="-${NEED_KDE}:4.2" |
228 |
_pvn="-${NEED_KDE}" |
229 |
_operator=">=" |
230 |
;; |
231 |
4.1 | 4.0.9* | 4.0.8*) |
232 |
_kdedir="4.1" |
233 |
_pv="-${NEED_KDE}:4.1" |
234 |
_pvn="-${NEED_KDE}" |
235 |
_operator=">=" |
236 |
;; |
237 |
4.0* | 4) |
238 |
_kdedir="4.0" |
239 |
_operator=">=" |
240 |
_pv="-${NEED_KDE}:kde-4" |
241 |
_pvn="-${NEED_KDE}" |
242 |
;; |
243 |
3.9*) |
244 |
_kdedir="3.9" |
245 |
_operator=">=" |
246 |
_pv="-${NEED_KDE}:kde-4" |
247 |
_pvn="-${NEED_KDE}" |
248 |
;; |
249 |
|
250 |
# The ebuild handles dependencies, KDEDIR, SLOT. |
251 |
none) |
252 |
: |
253 |
;; |
254 |
|
255 |
*) |
256 |
die "NEED_KDE=${NEED_KDE} currently not supported." |
257 |
;; |
258 |
esac |
259 |
|
260 |
if [[ ${NEED_KDE} != none ]]; then |
261 |
|
262 |
#Set the SLOT |
263 |
if [[ -n $KDEBASE ]]; then |
264 |
if [[ $NEED_KDE = live ]]; then |
265 |
SLOT="live" |
266 |
else |
267 |
case ${KMNAME} in |
268 |
koffice) |
269 |
case ${PV} in |
270 |
9999*) SLOT="live" ;; |
271 |
*) SLOT="2" ;; |
272 |
esac |
273 |
;; |
274 |
kdevelop) |
275 |
case ${PV} in |
276 |
9999*) SLOT="live" ;; |
277 |
4.0*|3.9*) SLOT="4" ;; |
278 |
esac |
279 |
;; |
280 |
kdevplatform) |
281 |
case ${PV} in |
282 |
9999*) SLOT="live" ;; |
283 |
1.0*|0.9*) SLOT="1" ;; |
284 |
esac |
285 |
;; |
286 |
*) |
287 |
case ${PV} in |
288 |
9999*) SLOT="live" ;; |
289 |
4.2* | 4.1.9* | 4.1.8* | 4.1.7* | 4.1.6*) SLOT="4.2" ;; |
290 |
4.1* | 4.0.9* | 4.0.8*) SLOT="4.1" ;; |
291 |
*) SLOT="4.1" ;; |
292 |
esac |
293 |
;; |
294 |
esac |
295 |
fi |
296 |
fi |
297 |
|
298 |
# Block installation of other SLOTS unless kdeprefix |
299 |
for KDE_SLOT in ${KDE_SLOTS[@]}; do |
300 |
# block non kdeprefix ${PN} on other slots |
301 |
# we do this only if we do not depend on any version of kde |
302 |
if [[ ${SLOT} != ${KDE_SLOT} ]]; then |
303 |
DEPEND="${DEPEND} |
304 |
!kdeprefix? ( !kde-base/${PN}:${KDE_SLOT}[-kdeprefix] )" |
305 |
RDEPEND="${RDEPEND} |
306 |
!kdeprefix? ( !kde-base/${PN}:${KDE_SLOT}[-kdeprefix] )" |
307 |
fi |
308 |
done |
309 |
|
310 |
# Adding kdelibs, kdepimlibs and kdebase-data deps to all other packages. |
311 |
# We only need to add the dependencies if ${PN} is not "kdelibs" or "kdepimlibs" |
312 |
if [[ $PN != kdelibs ]]; then |
313 |
DEPEND="${DEPEND} |
314 |
kdeprefix? ( ${_operator}kde-base/kdelibs${_pv}[kdeprefix] ) |
315 |
!kdeprefix? ( ${_operator}kde-base/kdelibs${_pvn}[-kdeprefix] )" |
316 |
RDEPEND="${RDEPEND} |
317 |
kdeprefix? ( ${_operator}kde-base/kdelibs${_pv}[kdeprefix] ) |
318 |
!kdeprefix? ( ${_operator}kde-base/kdelibs${_pvn}[-kdeprefix] )" |
319 |
if [[ $PN != kdepimlibs ]]; then |
320 |
DEPEND="${DEPEND} |
321 |
kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pv}[kdeprefix] ) |
322 |
!kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pvn}[-kdeprefix] )" |
323 |
RDEPEND="${RDEPEND} |
324 |
kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pv}[kdeprefix] ) |
325 |
!kdeprefix? ( ${_operator}kde-base/kdepimlibs${_pvn}[-kdeprefix] )" |
326 |
if [[ $PN != kdebase-data ]]; then |
327 |
RDEPEND="${RDEPEND} |
328 |
kdeprefix? ( ${_operator}kde-base/kdebase-data${_pv}[kdeprefix] ) |
329 |
!kdeprefix? ( ${_operator}kde-base/kdebase-data${_pvn}[-kdeprefix] )" |
330 |
fi |
331 |
fi |
332 |
fi |
333 |
unset _operator _pv _pvn |
334 |
fi |
335 |
|
336 |
# Fetch section - If the ebuild's category is not 'kde-base' and if it is not a |
337 |
# koffice ebuild, the URI should be set in the ebuild itself |
338 |
case ${SLOT} in |
339 |
live) |
340 |
ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde} |
341 |
# Split ebuild, or extragear stuff |
342 |
if [[ -n $KMNAME ]]; then |
343 |
ESVN_PROJECT="${KMNAME}" |
344 |
if [[ -z ${KMNOMODULE} && -z ${KMMODULE} ]]; then |
345 |
KMMODULE="${PN}" |
346 |
fi |
347 |
# Split kde-base/ ebuilds: (they reside in trunk/KDE) |
348 |
case ${KMNAME} in |
349 |
kdebase-*) |
350 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/KDE/kdebase/${KMNAME#kdebase-}/" |
351 |
;; |
352 |
kdereview) |
353 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/" |
354 |
;; |
355 |
kde*) |
356 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/KDE/${KMNAME}" |
357 |
;; |
358 |
extragear*|playground*) |
359 |
case ${PN} in |
360 |
*-plasma) |
361 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/" |
362 |
ESVN_PROJECT="${KMNAME}/${KMMODULE}/" |
363 |
;; |
364 |
*) |
365 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/" |
366 |
;; |
367 |
esac |
368 |
;; |
369 |
koffice) |
370 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}" |
371 |
;; |
372 |
*) |
373 |
# Extragear material |
374 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}/" |
375 |
;; |
376 |
esac |
377 |
else |
378 |
# kdelibs, kdepimlibs |
379 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/KDE/${PN}" |
380 |
ESVN_PROJECT="${PN}" |
381 |
fi |
382 |
# limit syncing to 1 hour. |
383 |
ESVN_UP_FREQ=${ESVN_UP_FREQ:-1} |
384 |
;; |
385 |
*) |
386 |
if [[ -n $KDEBASE ]]; then |
387 |
if [[ -n ${KMNAME} ]]; then |
388 |
_kmname=${KMNAME} |
389 |
else |
390 |
_kmname=${PN} |
391 |
fi |
392 |
_kmname_pv="${_kmname}-${PV}" |
393 |
if [[ $NEED_KDE != live ]]; then |
394 |
case ${KDEBASE} in |
395 |
kde-base) |
396 |
case ${PV} in |
397 |
4.2.60) |
398 |
SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.svn912032tar.bz2" ;; |
399 |
4.2.61) |
400 |
SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.svn917530.tar.bz2" ;; |
401 |
4.1.9* | 4.1.8* | 4.1.7* | 4.1.6* | 4.0.9* | 4.0.8*) |
402 |
SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" ;; |
403 |
*) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;; |
404 |
esac |
405 |
;; |
406 |
koffice) |
407 |
SRC_URI="mirror://kde/unstable/${_kmname_pv}/src/${_kmname_pv}.tar.bz2" |
408 |
;; |
409 |
esac |
410 |
fi |
411 |
unset _kmname _kmname_pv |
412 |
fi |
413 |
;; |
414 |
esac |
415 |
|
416 |
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}" |
417 |
|
418 |
# @ECLASS-VARIABLE: PREFIX |
419 |
# @DESCRIPTION: |
420 |
# Set the installation PREFIX. All kde-base ebuilds go into the KDE4 installation directory. |
421 |
# Applications installed by the other ebuilds go into ${KDEDIR} by default, this value |
422 |
# can be superseded by defining PREFIX before inheriting kde4-base. |
423 |
# This value is set on pkg_setup |
424 |
PREFIX="" |
425 |
|
426 |
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SLOT ${SLOT} - NEED_KDE ${NEED_KDE}" |
427 |
|
428 |
# @FUNCTION: kde4-base_pkg_setup |
429 |
# @DESCRIPTION: |
430 |
# Adds flags needed by all of KDE 4 to $QT4_BUILT_WITH_USE_CHECK. Uses |
431 |
# kde4-functions_check_use from kde4-functions.eclass to print appropriate |
432 |
# errors and die if any required flags listed in $QT4_BUILT_WITH_USE_CHECK or |
433 |
# $KDE4_BUILT_WITH_USE_CHECK are missing. |
434 |
kde4-base_pkg_setup() { |
435 |
debug-print-function $FUNCNAME "$@" |
436 |
|
437 |
# Don't set KDEHOME during compile, it will cause access violations |
438 |
unset KDEHOME |
439 |
|
440 |
# Search for best suitable kde installation for misc kde package. |
441 |
# Computation based on NEED_KDE and KDE_MINIMAL |
442 |
get_latest_kdedir |
443 |
|
444 |
if [[ $NEED_KDE != none ]]; then |
445 |
# Set PREFIX |
446 |
if use kdeprefix; then |
447 |
KDEDIR="/usr/kde/${_kdedir}" |
448 |
KDEDIRS="/usr/local/:/usr:${KDEDIR}" |
449 |
else |
450 |
KDEDIR="/usr" |
451 |
KDEDIRS="/usr/local/:/usr" |
452 |
fi |
453 |
fi |
454 |
# Set the prefix based on KDEDIR |
455 |
# Make it a consequence of kdeprefix |
456 |
PREFIX=$KDEDIR |
457 |
|
458 |
unset _kdedir |
459 |
|
460 |
# check if qt has correct deps |
461 |
[[ -n ${QT4_BUILT_WITH_USE_CHECK} || -n ${KDE4_BUILT_WITH_USE_CHECK[@]} ]] && \ |
462 |
die "built_with_use illegal in this EAPI!" |
463 |
|
464 |
if [[ $BUILD_TYPE = live && -z $I_KNOW_WHAT_I_AM_DOING ]]; then |
465 |
echo |
466 |
elog "WARNING! This is an experimental live ebuild of ${KMNAME:-${PN}}" |
467 |
elog "Use it at your own risk." |
468 |
elog "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!" |
469 |
echo |
470 |
fi |
471 |
} |
472 |
|
473 |
# @FUNCTION: kde4-base_src_unpack |
474 |
# @DESCRIPTION: |
475 |
# This function unpacks the source tarballs for KDE4 applications. |
476 |
# |
477 |
# If no argument is passed to this function, then standard src_unpack is |
478 |
# executed. Otherwise, options are passed to base_src_unpack. |
479 |
kde4-base_src_unpack() { |
480 |
debug-print-function $FUNCNAME "$@" |
481 |
|
482 |
if [[ $BUILD_TYPE = live ]]; then |
483 |
migrate_store_dir |
484 |
subversion_src_unpack |
485 |
else |
486 |
[[ -z $KDE_S ]] && KDE_S="${S}" |
487 |
if [[ -z $* ]]; then |
488 |
# Unpack first and deal with KDE patches after examing possible patch sets. |
489 |
# To be picked up, patches need to conform to the guidelines stated before. |
490 |
# Monolithic ebuilds will use the split ebuild patches. |
491 |
[[ -d "${KDE_S}" ]] || unpack ${A} |
492 |
fi |
493 |
# Updated cmake dir |
494 |
if [[ -d "${WORKDIR}/cmake" && -d "${KDE_S}/cmake" ]]; then |
495 |
ebegin "Updating cmake/ directory..." |
496 |
rm -rf "${KDE_S}/cmake" || die "Unable to remove old cmake/ directory" |
497 |
ln -s "${WORKDIR}/cmake" "${KDE_S}/cmake" || die "Unable to symlink the new cmake/ directory" |
498 |
eend 0 |
499 |
fi |
500 |
fi |
501 |
} |
502 |
|
503 |
# @FUNCTION: kde4-base_src_compile |
504 |
# @DESCRIPTION: |
505 |
# General pre-configure and pre-compile function for KDE4 applications. |
506 |
# It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and |
507 |
# enable_selected_linguas() in kde4-functions.eclass(5) for further details. |
508 |
kde4-base_src_prepare() { |
509 |
debug-print-function ${FUNCNAME} "$@" |
510 |
|
511 |
# Only enable selected languages, used for KDE extragear apps. |
512 |
if [[ -n $KDE_LINGUAS ]]; then |
513 |
enable_selected_linguas |
514 |
fi |
515 |
|
516 |
# Autopatch |
517 |
base_src_prepare |
518 |
|
519 |
# Save library dependencies |
520 |
if [[ -n $KMSAVELIBS ]] ; then |
521 |
save_library_dependencies |
522 |
fi |
523 |
|
524 |
# Inject library dependencies |
525 |
if [[ -n $KMLOADLIBS ]] ; then |
526 |
load_library_dependencies |
527 |
fi |
528 |
} |
529 |
|
530 |
# @FUNCTION: kde4-base_src_configure |
531 |
# @DESCRIPTION: |
532 |
# Function for configuring the build of KDE4 applications. |
533 |
kde4-base_src_configure() { |
534 |
debug-print-function ${FUNCNAME} "$@" |
535 |
|
536 |
# We prefer KDE's own Debugfull mode over the standard Debug |
537 |
if has debug ${IUSE//+} && use debug ; then |
538 |
ebegin "Enabling debug flag" |
539 |
mycmakeargs="${mycmakeargs} -DCMAKE_BUILD_TYPE=Debugfull" |
540 |
eend $? |
541 |
fi |
542 |
|
543 |
# Enable generation of HTML handbook |
544 |
if has htmlhandbook ${IUSE//+} && use htmlhandbook; then |
545 |
ebegin "Enabling building of HTML handbook" |
546 |
mycmakeargs="${mycmakeargs} -DKDE4_ENABLE_HTMLHANDBOOK=ON" |
547 |
eend $? |
548 |
fi |
549 |
|
550 |
# Build tests in src_test only, where we override this value |
551 |
mycmakeargs="${mycmakeargs} -DKDE4_BUILD_TESTS=OFF" |
552 |
|
553 |
# Set distribution name |
554 |
[[ $PN = kdelibs ]] && mycmakeargs="${mycmakeargs} -DKDE_DISTRIBUTION_TEXT=Gentoo" |
555 |
|
556 |
# runpath linking |
557 |
mycmakeargs="${mycmakeargs} -DKDE4_USE_ALWAYS_FULL_RPATH=ON" |
558 |
|
559 |
# Here we set the install prefix |
560 |
mycmakeargs="${mycmakeargs} -DCMAKE_INSTALL_PREFIX=${PREFIX}" |
561 |
|
562 |
# If prefix is /usr, sysconf needs to be /etc, not /usr/etc |
563 |
use kdeprefix || mycmakeargs="${mycmakeargs} -DSYSCONF_INSTALL_DIR=/etc" |
564 |
|
565 |
# Set environment |
566 |
QTEST_COLORED=1 |
567 |
QT_PLUGIN_PATH=${KDEDIR}/$(get_libdir)/kde4/plugins/ |
568 |
|
569 |
# hardcode path to *.cmake KDE files |
570 |
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH:+${PKG_CONFIG_PATH}:}${KDEDIR}/$(get_libdir)/pkgconfig" |
571 |
|
572 |
# additonal arguments for KOFFICE |
573 |
if [[ $KMNAME = koffice ]]; then |
574 |
case ${PN} in |
575 |
koffice-data) : ;; |
576 |
*) |
577 |
mycmakeargs="${mycmakeargs} |
578 |
-DWITH_OpenEXR=ON |
579 |
$(cmake-utils_use_with crypt QCA2) |
580 |
$(cmake-utils_use_with opengl OpenGL)" |
581 |
if use crypt; then |
582 |
mycmakeargs="${mycmakeargs} |
583 |
-DQCA2_LIBRARIES=/usr/$(get_libdir)/qca2/libqca.so.2" |
584 |
fi |
585 |
;; |
586 |
esac |
587 |
fi |
588 |
|
589 |
[ -e CMakeLists.txt ] && cmake-utils_src_configure |
590 |
} |
591 |
|
592 |
# @FUNCTION: kde4-base_src_compile |
593 |
# @DESCRIPTION: |
594 |
# General function for compiling KDE4 applications. |
595 |
kde4-base_src_compile() { |
596 |
debug-print-function ${FUNCNAME} "$@" |
597 |
|
598 |
kde4-base_src_make |
599 |
} |
600 |
|
601 |
# @FUNCTION: kde4-base_src_make |
602 |
# @DESCRIPTION: |
603 |
# Function for building KDE4 applications. |
604 |
# Options are passed to cmake-utils_src_make. |
605 |
kde4-base_src_make() { |
606 |
debug-print-function ${FUNCNAME} "$@" |
607 |
|
608 |
if [[ -d "$WORKDIR/${PN}_build" ]]; then |
609 |
pushd "${WORKDIR}"/${PN}_build > /dev/null |
610 |
fi |
611 |
[ -e [Mm]akefile ] && cmake-utils_src_make "$@" |
612 |
} |
613 |
|
614 |
# @FUNCTION: kde4-base_src_test |
615 |
# @DESCRIPTION: |
616 |
# Function for testing KDE4 applications. |
617 |
kde4-base_src_test() { |
618 |
debug-print-function ${FUNCNAME} "$@" |
619 |
|
620 |
# Override this value, set in kde4-base_src_configure() |
621 |
mycmakeargs="${mycmakeargs} -DKDE4_BUILD_TESTS=ON" |
622 |
cmake-utils_src_compile |
623 |
|
624 |
cmake-utils_src_test |
625 |
} |
626 |
|
627 |
# @FUNCTION: kde4-base_src_install |
628 |
# @DESCRIPTION: |
629 |
# Function for installing KDE4 applications. |
630 |
kde4-base_src_install() { |
631 |
debug-print-function ${FUNCNAME} "$@" |
632 |
|
633 |
if [[ -n $KMSAVELIBS ]] ; then |
634 |
install_library_dependencies |
635 |
fi |
636 |
|
637 |
kde4-base_src_make_doc |
638 |
if [[ -d "$WORKDIR/${PN}_build" ]]; then |
639 |
pushd "${WORKDIR}"/${PN}_build > /dev/null |
640 |
fi |
641 |
[ -e [Mm]akefile ] && cmake-utils_src_install |
642 |
} |
643 |
|
644 |
# @FUNCTION: kde4-base_src_make_doc |
645 |
# @DESCRIPTION: |
646 |
# Function for installing the documentation of KDE4 applications. |
647 |
kde4-base_src_make_doc() { |
648 |
debug-print-function ${FUNCNAME} "$@" |
649 |
|
650 |
local doc |
651 |
for doc in AUTHORS ChangeLog* README* NEWS TODO; do |
652 |
[[ -s $doc ]] && dodoc ${doc} |
653 |
done |
654 |
|
655 |
if [[ -z $KMNAME ]]; then |
656 |
for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*}; do |
657 |
if [[ -s $doc ]]; then |
658 |
local doc_complete=${doc} |
659 |
doc="${doc#*/}" |
660 |
newdoc "$doc_complete" "${doc%/*}.${doc##*/}" |
661 |
fi |
662 |
done |
663 |
fi |
664 |
|
665 |
if [[ -n ${KDEBASE} && -d "${D}/usr/share/doc/${PF}" ]]; then |
666 |
# work around bug #97196 |
667 |
dodir /usr/share/doc/kde && \ |
668 |
mv "${D}"/usr/share/doc/${PF} "${D}"/usr/share/doc/kde/ || \ |
669 |
die "Failed to move docs to kde/ failed." |
670 |
fi |
671 |
} |
672 |
|
673 |
# @FUNCTION: kde4-base_pkg_postinst |
674 |
# @DESCRIPTION: |
675 |
# Function to rebuild the KDE System Configuration Cache after an application has been installed. |
676 |
kde4-base_pkg_postinst() { |
677 |
buildsycoca |
678 |
} |
679 |
|
680 |
# @FUNCTION: kde4-base_pkg_postrm |
681 |
# @DESCRIPTION: |
682 |
# Function to rebuild the KDE System Configuration Cache after an application has been removed. |
683 |
kde4-base_pkg_postrm() { |
684 |
buildsycoca |
685 |
} |