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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.60 - (hide annotations) (download)
Sat May 15 14:03:06 2010 UTC (4 years, 4 months ago) by reavertm
Branch: MAIN
Changes since 1.59: +2 -1 lines
Added dev-util/automoc dependency for all KDE4 packages

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

  ViewVC Help
Powered by ViewVC 1.1.20