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