1 |
# Copyright 1999-2009 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.50 2009/10/28 14:23:43 abcd 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 |
# @ECLASS-VARIABLE: WANT_CMAKE |
17 |
# @DESCRIPTION: |
18 |
# Specify if cmake buildsystem is being used. Possible values are 'always' and 'never'. |
19 |
# Please note that if it's set to 'never' you need to explicitly override following phases: |
20 |
# src_configure, src_compile, src_test and src_install. |
21 |
# Defaults to 'always'. |
22 |
WANT_CMAKE="${WANT_CMAKE:-${CMAKE_REQUIRED:-always}}" |
23 |
if [[ ${WANT_CMAKE} = false || ${WANT_CMAKE} = never ]]; then |
24 |
buildsystem_eclass="" |
25 |
export_fns="" |
26 |
else |
27 |
buildsystem_eclass="cmake-utils" |
28 |
export_fns="src_configure src_compile src_test src_install" |
29 |
fi |
30 |
|
31 |
inherit kde4-functions |
32 |
|
33 |
get_build_type |
34 |
if [[ ${BUILD_TYPE} = live ]]; then |
35 |
subversion_eclass="subversion" |
36 |
fi |
37 |
|
38 |
inherit base ${buildsystem_eclass} eutils ${subversion_eclass} |
39 |
|
40 |
EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare ${export_fns} pkg_postinst pkg_postrm |
41 |
|
42 |
unset buildsystem_eclass |
43 |
unset export_fns |
44 |
unset subversion_eclass |
45 |
|
46 |
case ${KDEBASE} in |
47 |
kde-base) |
48 |
HOMEPAGE="http://www.kde.org/" |
49 |
LICENSE="GPL-2" |
50 |
;; |
51 |
koffice) |
52 |
HOMEPAGE="http://www.koffice.org/" |
53 |
LICENSE="GPL-2" |
54 |
;; |
55 |
esac |
56 |
|
57 |
# @ECLASS-VARIABLE: OPENGL_REQUIRED |
58 |
# @DESCRIPTION: |
59 |
# Is qt-opengl required? Possible values are 'always', 'optional' and 'never'. |
60 |
# This variable must be set before inheriting any eclasses. Defaults to 'never'. |
61 |
OPENGL_REQUIRED="${OPENGL_REQUIRED:-never}" |
62 |
|
63 |
# @ECLASS-VARIABLE: WEBKIT_REQUIRED |
64 |
# @DESCRIPTION: |
65 |
# Is qt-webkit requred? Possible values are 'always', 'optional' and 'never'. |
66 |
# This variable must be set before inheriting any eclasses. Defaults to 'never'. |
67 |
WEBKIT_REQUIRED="${WEBKIT_REQUIRED:-never}" |
68 |
|
69 |
# @ECLASS-VARIABLE: CPPUNIT_REQUIRED |
70 |
# @DESCRIPTION: |
71 |
# Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'. |
72 |
# This variable must be set before inheriting any eclasses. Defaults to 'never'. |
73 |
CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}" |
74 |
|
75 |
# @ECLASS-VARIABLE: KDE_REQUIRED |
76 |
# @DESCRIPTION: |
77 |
# Is kde required? Possible values are 'always', 'optional' and 'never'. |
78 |
# This variable must be set before inheriting any eclasses. Defaults to 'always' |
79 |
# If set to always or optional, KDE_MINIMAL may be overriden as well. |
80 |
# Note that for kde-base packages this variable is fixed to 'always'. |
81 |
KDE_REQUIRED="${KDE_REQUIRED:-always}" |
82 |
|
83 |
# Verify KDE_MINIMAL (display QA notice in pkg_setup, still we need to fix it here) |
84 |
if [[ -n ${KDE_MINIMAL} ]]; then |
85 |
for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do |
86 |
[[ ${KDE_MINIMAL} = ${slot} ]] && KDE_MINIMAL_VALID=1 && break |
87 |
done |
88 |
unset slot |
89 |
[[ -z ${KDE_MINIMAL_VALID} ]] && unset KDE_MINIMAL |
90 |
else |
91 |
KDE_MINIMAL_VALID=1 |
92 |
fi |
93 |
|
94 |
# @ECLASS-VARIABLE: KDE_MINIMAL |
95 |
# @DESCRIPTION: |
96 |
# This variable is used when KDE_REQUIRED is set, to specify required KDE minimal |
97 |
# version for apps to work. Currently defaults to 4.3 |
98 |
# One may override this variable to raise version requirements. |
99 |
# For possible values look at KDE_SLOTS and KDE_LIVE_SLOTS variables. |
100 |
# Note that it is fixed to ${SLOT} for kde-base packages. |
101 |
KDE_MINIMAL="${KDE_MINIMAL:-4.3}" |
102 |
|
103 |
# Setup packages inheriting this eclass |
104 |
case ${KDEBASE} in |
105 |
kde-base) |
106 |
if [[ $BUILD_TYPE = live ]]; then |
107 |
# Disable tests for live ebuilds |
108 |
RESTRICT+=" test" |
109 |
# Live ebuilds in kde-base default to kdeprefix by default |
110 |
IUSE+=" +kdeprefix" |
111 |
else |
112 |
# All other ebuild types default to -kdeprefix as before |
113 |
IUSE+=" kdeprefix" |
114 |
fi |
115 |
# Determine SLOT from PVs |
116 |
case ${PV} in |
117 |
*.9999*) SLOT="${PV/.9999*/}" ;; # stable live |
118 |
4.4* | 4.3.[6-9]*) SLOT="4.4" ;; |
119 |
4.3*) SLOT="4.3" ;; |
120 |
4.2*) SLOT="4.2" ;; |
121 |
9999*) SLOT="live" ;; # regular live |
122 |
*) die "Unsupported ${PV}" ;; |
123 |
esac |
124 |
# This code is to prevent portage from searching GENTOO_MIRRORS for |
125 |
# packages that will never be mirrored. (As they only will ever be in |
126 |
# the overlay). |
127 |
case ${PV} in |
128 |
*9999* | 4.?.[6-9]?) |
129 |
RESTRICT+=" mirror" |
130 |
;; |
131 |
esac |
132 |
KDE_MINIMAL="${SLOT}" |
133 |
_kdedir="${SLOT}" |
134 |
|
135 |
# Block installation of other SLOTS unless kdeprefix |
136 |
RDEPEND+=" $(block_other_slots)" |
137 |
;; |
138 |
koffice) |
139 |
SLOT="2" |
140 |
;; |
141 |
esac |
142 |
|
143 |
# @ECLASS-VARIABLE: QT_MINIMAL |
144 |
# @DESCRIPTION: |
145 |
# Determine version of qt we enforce as minimal for the package. 4.4.0 4.5.1.. |
146 |
# Currently defaults to 4.5.1 for KDE 4.3 and earlier |
147 |
# or 4.6.0_beta for KDE 4.4 and later |
148 |
if slot_is_at_least 4.4 "${KDE_MINIMAL}"; then |
149 |
QT_MINIMAL="${QT_MINIMAL:-4.6.0_beta}" |
150 |
fi |
151 |
|
152 |
QT_MINIMAL="${QT_MINIMAL:-4.5.1}" |
153 |
|
154 |
# OpenGL dependencies |
155 |
qtopengldepend=" |
156 |
>=x11-libs/qt-opengl-${QT_MINIMAL}:4 |
157 |
" |
158 |
case ${OPENGL_REQUIRED} in |
159 |
always) |
160 |
COMMONDEPEND+=" ${qtopengldepend}" |
161 |
;; |
162 |
optional) |
163 |
IUSE+=" opengl" |
164 |
COMMONDEPEND+=" opengl? ( ${qtopengldepend} )" |
165 |
;; |
166 |
*) ;; |
167 |
esac |
168 |
unset qtopengldepend |
169 |
|
170 |
# WebKit dependencies |
171 |
case ${KDE_REQUIRED} in |
172 |
always) |
173 |
qtwebkitusedeps="[kde]" |
174 |
;; |
175 |
optional) |
176 |
qtwebkitusedeps="[kde?]" |
177 |
;; |
178 |
*) ;; |
179 |
esac |
180 |
qtwebkitdepend=" |
181 |
>=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps} |
182 |
" |
183 |
unset qtwebkitusedeps |
184 |
case ${WEBKIT_REQUIRED} in |
185 |
always) |
186 |
COMMONDEPEND+=" ${qtwebkitdepend}" |
187 |
;; |
188 |
optional) |
189 |
IUSE+=" webkit" |
190 |
COMMONDEPEND+=" webkit? ( ${qtwebkitdepend} )" |
191 |
;; |
192 |
*) ;; |
193 |
esac |
194 |
unset qtwebkitdepend |
195 |
|
196 |
# CppUnit dependencies |
197 |
cppuintdepend=" |
198 |
dev-util/cppunit |
199 |
" |
200 |
case ${CPPUNIT_REQUIRED} in |
201 |
always) |
202 |
DEPEND+=" ${cppuintdepend}" |
203 |
;; |
204 |
optional) |
205 |
IUSE+=" test" |
206 |
DEPEND+=" test? ( ${cppuintdepend} )" |
207 |
;; |
208 |
*) ;; |
209 |
esac |
210 |
unset cppuintdepend |
211 |
|
212 |
# KDE dependencies |
213 |
kdecommondepend=" |
214 |
dev-lang/perl |
215 |
>=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl] |
216 |
>=x11-libs/qt-gui-${QT_MINIMAL}:4[accessibility,dbus] |
217 |
>=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde] |
218 |
>=x11-libs/qt-script-${QT_MINIMAL}:4 |
219 |
>=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support] |
220 |
>=x11-libs/qt-svg-${QT_MINIMAL}:4 |
221 |
>=x11-libs/qt-test-${QT_MINIMAL}:4 |
222 |
!aqua? ( |
223 |
x11-libs/libXext |
224 |
x11-libs/libXt |
225 |
x11-libs/libXxf86vm |
226 |
) |
227 |
" |
228 |
if [[ ${PN} != kdelibs ]]; then |
229 |
if [[ ${KDEBASE} = kde-base ]]; then |
230 |
kdecommondepend+=" $(add_kdebase_dep kdelibs)" |
231 |
# libknotificationitem only when SLOT is 4.3 |
232 |
[[ ${PN} != libknotificationitem ]] && [[ ${SLOT} = 4.3 ]] && \ |
233 |
kdecommondepend+=" $(add_kdebase_dep libknotificationitem)" |
234 |
else |
235 |
kdecommondepend+=" |
236 |
>=kde-base/kdelibs-${KDE_MINIMAL} |
237 |
" |
238 |
fi |
239 |
fi |
240 |
kdedepend=" |
241 |
dev-util/pkgconfig |
242 |
" |
243 |
case ${KDE_REQUIRED} in |
244 |
always) |
245 |
IUSE+=" aqua" |
246 |
COMMONDEPEND+=" ${kdecommondepend}" |
247 |
DEPEND+=" ${kdedepend}" |
248 |
;; |
249 |
optional) |
250 |
IUSE+=" aqua kde" |
251 |
COMMONDEPEND+=" kde? ( ${kdecommondepend} )" |
252 |
DEPEND+=" kde? ( ${kdedepend} )" |
253 |
;; |
254 |
*) ;; |
255 |
esac |
256 |
unset kdecommondepend kdedepend |
257 |
|
258 |
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}" |
259 |
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}" |
260 |
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}" |
261 |
|
262 |
# Accumulate dependencies set by this eclass |
263 |
DEPEND+=" ${COMMONDEPEND}" |
264 |
RDEPEND+=" ${COMMONDEPEND}" |
265 |
unset COMMONDEPEND |
266 |
|
267 |
# Fetch section - If the ebuild's category is not 'kde-base' and if it is not a |
268 |
# koffice ebuild, the URI should be set in the ebuild itself |
269 |
case ${BUILD_TYPE} in |
270 |
live) |
271 |
# Determine branch URL based on live type |
272 |
local branch_prefix |
273 |
case ${PV} in |
274 |
9999*) |
275 |
# trunk |
276 |
branch_prefix="trunk/KDE" |
277 |
;; |
278 |
*) |
279 |
# branch |
280 |
branch_prefix="branches/KDE/${SLOT}" |
281 |
# @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX |
282 |
# @DESCRIPTION |
283 |
# Suffix appended to ESVN_PROJECT depending on fetched branch. |
284 |
# Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise. |
285 |
ESVN_PROJECT_SUFFIX="-${PV}" |
286 |
;; |
287 |
esac |
288 |
SRC_URI="" |
289 |
# @ECLASS-VARIABLE: ESVN_MIRROR |
290 |
# @DESCRIPTION: |
291 |
# This variable allows easy overriding of default kde mirror service |
292 |
# (anonsvn) with anything else you might want to use. |
293 |
ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde} |
294 |
# Split ebuild, or extragear stuff |
295 |
if [[ -n ${KMNAME} ]]; then |
296 |
ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}" |
297 |
if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then |
298 |
KMMODULE="${PN}" |
299 |
fi |
300 |
# Split kde-base/ ebuilds: (they reside in trunk/KDE) |
301 |
case ${KMNAME} in |
302 |
kdebase-*) |
303 |
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}" |
304 |
;; |
305 |
kdelibs-*) |
306 |
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}" |
307 |
;; |
308 |
kdereview) |
309 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}" |
310 |
;; |
311 |
kdesupport) |
312 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}" |
313 |
ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}" |
314 |
;; |
315 |
kde*) |
316 |
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}" |
317 |
;; |
318 |
extragear*|playground*) |
319 |
# Unpack them in toplevel dir, so that they won't conflict with kde4-meta |
320 |
# build packages from same svn location. |
321 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}" |
322 |
ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}" |
323 |
;; |
324 |
koffice) |
325 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}" |
326 |
;; |
327 |
*) |
328 |
ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}" |
329 |
;; |
330 |
esac |
331 |
else |
332 |
# kdelibs, kdepimlibs |
333 |
ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}" |
334 |
ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}" |
335 |
fi |
336 |
# @ECLASS-VARIABLE: ESVN_UP_FREQ |
337 |
# @DESCRIPTION: |
338 |
# This variable is used for specifying the timeout between svn synces |
339 |
# for kde-base and koffice modules. Does not affect misc apps. |
340 |
# Default value is 1 hour. |
341 |
[[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1} |
342 |
;; |
343 |
*) |
344 |
if [[ -n ${KDEBASE} ]]; then |
345 |
if [[ -n ${KMNAME} ]]; then |
346 |
case ${KMNAME} in |
347 |
kdebase-apps) |
348 |
_kmname="kdebase" ;; |
349 |
*) |
350 |
_kmname="${KMNAME}" ;; |
351 |
esac |
352 |
else |
353 |
_kmname=${PN} |
354 |
fi |
355 |
_kmname_pv="${_kmname}-${PV}" |
356 |
case ${KDEBASE} in |
357 |
kde-base) |
358 |
case ${PV} in |
359 |
4.3.85 | 4.3.9[0568]) |
360 |
# block for normally packed unstable releases |
361 |
SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" ;; |
362 |
4.3.[6-9]*) |
363 |
SRC_URI="http://dev.gentooexperimental.org/~alexxy/kde/${PV}/${_kmname_pv}.tar.lzma" ;; |
364 |
*) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;; |
365 |
esac |
366 |
;; |
367 |
koffice) |
368 |
case ${PV} in |
369 |
2.0.[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/src/${_kmname_pv}.tar.bz2" ;; |
370 |
*) SRC_URI="mirror://kde/stable/${_kmname_pv}/src/${_kmname_pv}.tar.bz2" ;; |
371 |
esac |
372 |
esac |
373 |
unset _kmname _kmname_pv |
374 |
fi |
375 |
;; |
376 |
esac |
377 |
|
378 |
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}" |
379 |
|
380 |
# @ECLASS-VARIABLE: PREFIX |
381 |
# @DESCRIPTION: |
382 |
# Set the installation PREFIX for non kde-base applications. It defaults to /usr. |
383 |
# kde-base packages go into KDE4 installation directory (KDEDIR) by default. |
384 |
# No matter the PREFIX, package will be built against KDE installed in KDEDIR. |
385 |
|
386 |
# @FUNCTION: kde4-base_pkg_setup |
387 |
# @DESCRIPTION: |
388 |
# Do the basic kdeprefix KDEDIR settings and determine with which kde should |
389 |
# optional applications link |
390 |
kde4-base_pkg_setup() { |
391 |
debug-print-function ${FUNCNAME} "$@" |
392 |
|
393 |
# Prefix compat: |
394 |
use prefix || EROOT=${ROOT} |
395 |
# Append missing trailing slash character |
396 |
[[ ${EROOT} = */ ]] || EROOT+="/" |
397 |
|
398 |
# QA ebuilds |
399 |
[[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})." |
400 |
|
401 |
# Don't set KDEHOME during compilation, it will cause access violations |
402 |
unset KDEHOME |
403 |
|
404 |
if [[ ${KDEBASE} = kde-base ]]; then |
405 |
if use kdeprefix; then |
406 |
KDEDIR="${EROOT}usr/kde/${_kdedir}" |
407 |
else |
408 |
KDEDIR="${EROOT}usr" |
409 |
fi |
410 |
PREFIX="${PREFIX:-${KDEDIR}}" |
411 |
else |
412 |
# Determine KDEDIR by loooking for the closest match with KDE_MINIMAL |
413 |
KDEDIR= |
414 |
local kde_minimal_met |
415 |
for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do |
416 |
[[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1 |
417 |
if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then |
418 |
if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then |
419 |
KDEDIR="${EROOT}usr/kde/${slot}" |
420 |
else |
421 |
KDEDIR="${EROOT}usr" |
422 |
fi |
423 |
break; |
424 |
fi |
425 |
done |
426 |
unset slot |
427 |
|
428 |
# Bail out if kdelibs required but not found |
429 |
if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then |
430 |
[[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!" |
431 |
else |
432 |
[[ -z ${KDEDIR} ]] && KDEDIR="${EROOT}usr" |
433 |
fi |
434 |
|
435 |
PREFIX="${PREFIX:-${EROOT}usr}" |
436 |
fi |
437 |
# Point pkg-config path to KDE *.pc files |
438 |
export PKG_CONFIG_PATH="${KDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" |
439 |
# Point to correct QT plugins path |
440 |
QT_PLUGIN_PATH="${KDEDIR}/$(get_libdir)/kde4/plugins/" |
441 |
|
442 |
# Fix XDG collision with sandbox |
443 |
export XDG_CONFIG_HOME="${T}" |
444 |
# Not needed anymore |
445 |
unset _kdedir |
446 |
} |
447 |
|
448 |
# @FUNCTION: kde4-base_src_unpack |
449 |
# @DESCRIPTION: |
450 |
# This function unpacks the source tarballs for KDE4 applications. |
451 |
kde4-base_src_unpack() { |
452 |
debug-print-function ${FUNCNAME} "$@" |
453 |
|
454 |
if [[ ${BUILD_TYPE} = live ]]; then |
455 |
migrate_store_dir |
456 |
subversion_src_unpack |
457 |
else |
458 |
base_src_unpack |
459 |
fi |
460 |
} |
461 |
|
462 |
# @FUNCTION: kde4-base_src_prepare |
463 |
# @DESCRIPTION: |
464 |
# General pre-configure and pre-compile function for KDE4 applications. |
465 |
# It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and |
466 |
# enable_selected_linguas() and enable_selected_doc_linguas() |
467 |
# in kde4-functions.eclass(5) for further details. |
468 |
kde4-base_src_prepare() { |
469 |
debug-print-function ${FUNCNAME} "$@" |
470 |
|
471 |
# Only enable selected languages, used for KDE extragear apps. |
472 |
if [[ -n ${KDE_LINGUAS} ]]; then |
473 |
enable_selected_linguas |
474 |
fi |
475 |
|
476 |
# Enable/disable handbooks for kde4-base packages |
477 |
# kde-l10n inherits kde4-base but is metpackage, so no check for doc |
478 |
# kdelibs inherits kde4-base but handle installing the handbook itself |
479 |
if ! has kde4-meta ${INHERITED}; then |
480 |
has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas |
481 |
fi |
482 |
|
483 |
[[ ${BUILD_TYPE} = live ]] && subversion_src_prepare |
484 |
base_src_prepare |
485 |
|
486 |
# Save library dependencies |
487 |
if [[ -n ${KMSAVELIBS} ]] ; then |
488 |
save_library_dependencies |
489 |
fi |
490 |
|
491 |
# Inject library dependencies |
492 |
if [[ -n ${KMLOADLIBS} ]] ; then |
493 |
load_library_dependencies |
494 |
fi |
495 |
} |
496 |
|
497 |
# @FUNCTION: kde4-base_src_configure |
498 |
# @DESCRIPTION: |
499 |
# Function for configuring the build of KDE4 applications. |
500 |
kde4-base_src_configure() { |
501 |
debug-print-function ${FUNCNAME} "$@" |
502 |
|
503 |
# Handle common release builds |
504 |
if ! has debug ${IUSE//+} || ! use debug; then |
505 |
append-cppflags -DQT_NO_DEBUG |
506 |
fi |
507 |
|
508 |
# Build tests in src_test only, where we override this value |
509 |
local cmakeargs="-DKDE4_BUILD_TESTS=OFF" |
510 |
|
511 |
# set "real" debug mode |
512 |
if has debug ${IUSE//+} && use debug; then |
513 |
CMAKE_BUILD_TYPE="Debugfull" |
514 |
fi |
515 |
|
516 |
# Set distribution name |
517 |
[[ ${PN} = kdelibs ]] && cmakeargs+=" -DKDE_DISTRIBUTION_TEXT=Gentoo" |
518 |
|
519 |
# Here we set the install prefix |
520 |
cmakeargs+=" -DCMAKE_INSTALL_PREFIX=${PREFIX}" |
521 |
|
522 |
# Use colors |
523 |
QTEST_COLORED=1 |
524 |
|
525 |
# Shadow existing /usr installations |
526 |
unset KDEDIRS |
527 |
|
528 |
# Handle kdeprefix-ed KDE |
529 |
if [[ ${KDEDIR} != "${EROOT}usr" ]]; then |
530 |
# Override some environment variables - only when kdeprefix is different, |
531 |
# to not break ccache/distcc |
532 |
PATH="${KDEDIR}/bin:${PATH}" |
533 |
LDPATH="${KDEDIR}/$(get_libdir):${LDPATH}" |
534 |
|
535 |
# Append full RPATH |
536 |
cmakeargs+=" -DCMAKE_SKIP_RPATH=OFF" |
537 |
|
538 |
# Set cmake prefixes to allow buildsystem to locate valid KDE installation |
539 |
# when more are present |
540 |
cmakeargs+=" -DCMAKE_SYSTEM_PREFIX_PATH=${KDEDIR}" |
541 |
fi |
542 |
|
543 |
# Handle kdeprefix in application itself |
544 |
if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then |
545 |
# If prefix is /usr, sysconf needs to be /etc, not /usr/etc |
546 |
cmakeargs+=" -DSYSCONF_INSTALL_DIR=${EROOT}etc" |
547 |
fi |
548 |
|
549 |
mycmakeargs="${cmakeargs} ${mycmakeargs}" |
550 |
|
551 |
cmake-utils_src_configure |
552 |
} |
553 |
|
554 |
# @FUNCTION: kde4-base_src_compile |
555 |
# @DESCRIPTION: |
556 |
# General function for compiling KDE4 applications. |
557 |
kde4-base_src_compile() { |
558 |
debug-print-function ${FUNCNAME} "$@" |
559 |
|
560 |
cmake-utils_src_compile "$@" |
561 |
} |
562 |
|
563 |
# @FUNCTION: kde4-base_src_test |
564 |
# @DESCRIPTION: |
565 |
# Function for testing KDE4 applications. |
566 |
kde4-base_src_test() { |
567 |
debug-print-function ${FUNCNAME} "$@" |
568 |
|
569 |
# Override this value, set in kde4-base_src_configure() |
570 |
mycmakeargs+=" -DKDE4_BUILD_TESTS=ON" |
571 |
cmake-utils_src_configure |
572 |
kde4-base_src_compile |
573 |
|
574 |
cmake-utils_src_test |
575 |
} |
576 |
|
577 |
# @FUNCTION: kde4-base_src_install |
578 |
# @DESCRIPTION: |
579 |
# Function for installing KDE4 applications. |
580 |
kde4-base_src_install() { |
581 |
debug-print-function ${FUNCNAME} "$@" |
582 |
|
583 |
if [[ -n ${KMSAVELIBS} ]] ; then |
584 |
install_library_dependencies |
585 |
fi |
586 |
|
587 |
kde4-base_src_make_doc |
588 |
cmake-utils_src_install |
589 |
} |
590 |
|
591 |
# @FUNCTION: kde4-base_src_make_doc |
592 |
# @DESCRIPTION: |
593 |
# Function for installing the documentation of KDE4 applications. |
594 |
kde4-base_src_make_doc() { |
595 |
debug-print-function ${FUNCNAME} "$@" |
596 |
|
597 |
local doc |
598 |
for doc in AUTHORS ChangeLog* README* NEWS TODO; do |
599 |
[[ -s ${doc} ]] && dodoc ${doc} |
600 |
done |
601 |
|
602 |
if [[ -z ${KMNAME} ]]; then |
603 |
for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*}; do |
604 |
if [[ -s ${doc} ]]; then |
605 |
local doc_complete=${doc} |
606 |
doc="${doc#*/}" |
607 |
newdoc "$doc_complete" "${doc%/*}.${doc##*/}" |
608 |
fi |
609 |
done |
610 |
fi |
611 |
|
612 |
if [[ -n ${KDEBASE} ]] && [[ -d "${D}${EROOT}usr/share/doc/${PF}" ]]; then |
613 |
# work around bug #97196 |
614 |
dodir /usr/share/doc/KDE4 && \ |
615 |
cp -r "${D}${EROOT}usr/share/doc/${PF}" "${D}${EROOT}usr/share/doc/KDE4/" || \ |
616 |
die "Failed to move docs to KDE4/." |
617 |
rm -rf "${D}${EROOT}usr/share/doc/${PF}" |
618 |
fi |
619 |
} |
620 |
|
621 |
# @FUNCTION: kde4-base_pkg_postinst |
622 |
# @DESCRIPTION: |
623 |
# Function to rebuild the KDE System Configuration Cache after an application has been installed. |
624 |
kde4-base_pkg_postinst() { |
625 |
debug-print-function ${FUNCNAME} "$@" |
626 |
|
627 |
buildsycoca |
628 |
|
629 |
if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then |
630 |
echo |
631 |
einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}" |
632 |
einfo "Use it at your own risk." |
633 |
einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!" |
634 |
echo |
635 |
elif [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then |
636 |
# warning about kdeprefix for non-live users |
637 |
echo |
638 |
ewarn "WARNING! You have the kdeprefix useflag enabled." |
639 |
ewarn "This setting is strongly discouraged and might lead to potential trouble" |
640 |
ewarn "with KDE update strategies." |
641 |
ewarn "You are using this setup at your own risk and the kde team does not" |
642 |
ewarn "take responsibilities for dead kittens." |
643 |
echo |
644 |
fi |
645 |
} |
646 |
|
647 |
# @FUNCTION: kde4-base_pkg_postrm |
648 |
# @DESCRIPTION: |
649 |
# Function to rebuild the KDE System Configuration Cache after an application has been removed. |
650 |
kde4-base_pkg_postrm() { |
651 |
debug-print-function ${FUNCNAME} "$@" |
652 |
|
653 |
buildsycoca |
654 |
} |