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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.56 - (hide annotations) (download)
Thu Dec 10 17:35:52 2009 UTC (4 years, 10 months ago) by abcd
Branch: MAIN
Changes since 1.55: +57 -25 lines
Update cmake-utils.eclass and kde4-*.eclass from kde overlay

1 scarabeus 1.47 # Copyright 1999-2009 Gentoo Foundation
2 ingmar 1.1 # Distributed under the terms of the GNU General Public License v2
3 abcd 1.56 # $Header: $
4 ingmar 1.1
5     # @ECLASS: kde4-base.eclass
6     # @MAINTAINER:
7     # kde@gentoo.org
8 jmbsvicetto 1.13 # @BLURB: This eclass provides functions for kde 4.X ebuilds
9 ingmar 1.1 # @DESCRIPTION:
10 scarabeus 1.22 # The kde4-base.eclass provides support for building KDE4 based ebuilds
11 ingmar 1.1 # and KDE4 applications.
12     #
13 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     4.4* | 4.3.[6-9]*) SLOT="4.4" ;;
125     4.3*) SLOT="4.3" ;;
126     4.2*) SLOT="4.2" ;;
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     >=x11-libs/qt-gui-${QT_MINIMAL}:4[accessibility,dbus]
239     >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde]
240     >=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     dev-util/pkgconfig
264 scarabeus 1.54 !aqua? (
265 abcd 1.55 || ( >=x11-libs/libXtst-1.1.0 <x11-proto/xextproto-7.1.0 )
266 scarabeus 1.54 x11-proto/xf86vidmodeproto
267     )
268 scarabeus 1.34 "
269     case ${KDE_REQUIRED} in
270     always)
271 wired 1.42 IUSE+=" aqua"
272     COMMONDEPEND+=" ${kdecommondepend}"
273     DEPEND+=" ${kdedepend}"
274 scarabeus 1.34 ;;
275     optional)
276 wired 1.42 IUSE+=" aqua kde"
277     COMMONDEPEND+=" kde? ( ${kdecommondepend} )"
278     DEPEND+=" kde? ( ${kdedepend} )"
279 scarabeus 1.34 ;;
280     *) ;;
281     esac
282 scarabeus 1.54
283 scarabeus 1.34 unset kdecommondepend kdedepend
284    
285     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: COMMONDEPEND is ${COMMONDEPEND}"
286     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND (only) is ${DEPEND}"
287     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND (only) is ${RDEPEND}"
288    
289     # Accumulate dependencies set by this eclass
290 wired 1.42 DEPEND+=" ${COMMONDEPEND}"
291     RDEPEND+=" ${COMMONDEPEND}"
292     unset COMMONDEPEND
293 ingmar 1.1
294 scarabeus 1.54 # Add experimental kdeenablefinal, disabled by default
295     IUSE+=" kdeenablefinal"
296    
297 ingmar 1.1 # Fetch section - If the ebuild's category is not 'kde-base' and if it is not a
298     # koffice ebuild, the URI should be set in the ebuild itself
299 scarabeus 1.30 case ${BUILD_TYPE} in
300 scarabeus 1.22 live)
301 scarabeus 1.37 # Determine branch URL based on live type
302     local branch_prefix
303     case ${PV} in
304     9999*)
305     # trunk
306     branch_prefix="trunk/KDE"
307     ;;
308     *)
309     # branch
310     branch_prefix="branches/KDE/${SLOT}"
311     # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
312     # @DESCRIPTION
313     # Suffix appended to ESVN_PROJECT depending on fetched branch.
314     # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
315     ESVN_PROJECT_SUFFIX="-${PV}"
316     ;;
317     esac
318 scarabeus 1.30 SRC_URI=""
319 scarabeus 1.35 # @ECLASS-VARIABLE: ESVN_MIRROR
320     # @DESCRIPTION:
321     # This variable allows easy overriding of default kde mirror service
322     # (anonsvn) with anything else you might want to use.
323 scarabeus 1.22 ESVN_MIRROR=${ESVN_MIRROR:=svn://anonsvn.kde.org/home/kde}
324     # Split ebuild, or extragear stuff
325 scarabeus 1.30 if [[ -n ${KMNAME} ]]; then
326 scarabeus 1.37 ESVN_PROJECT="${KMNAME}${ESVN_PROJECT_SUFFIX}"
327 scarabeus 1.34 if [[ -z ${KMNOMODULE} ]] && [[ -z ${KMMODULE} ]]; then
328 jmbsvicetto 1.25 KMMODULE="${PN}"
329 scarabeus 1.22 fi
330     # Split kde-base/ ebuilds: (they reside in trunk/KDE)
331     case ${KMNAME} in
332     kdebase-*)
333 scarabeus 1.37 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdebase/${KMNAME#kdebase-}"
334 scarabeus 1.22 ;;
335 wired 1.42 kdelibs-*)
336     ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/kdelibs/${KMNAME#kdelibs-}"
337     ;;
338 scarabeus 1.54 kdereview*)
339 scarabeus 1.30 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
340 scarabeus 1.22 ;;
341 scarabeus 1.34 kdesupport)
342     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
343 scarabeus 1.37 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
344 scarabeus 1.34 ;;
345 scarabeus 1.22 kde*)
346 scarabeus 1.37 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${KMNAME}"
347 scarabeus 1.22 ;;
348     extragear*|playground*)
349 scarabeus 1.34 # Unpack them in toplevel dir, so that they won't conflict with kde4-meta
350     # build packages from same svn location.
351 scarabeus 1.30 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
352 scarabeus 1.37 ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
353 scarabeus 1.30 ;;
354 scarabeus 1.22 koffice)
355     ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}"
356     ;;
357     *)
358 scarabeus 1.30 ESVN_REPO_URI="${ESVN_MIRROR}/trunk/${KMNAME}/${KMMODULE}"
359 scarabeus 1.22 ;;
360     esac
361     else
362     # kdelibs, kdepimlibs
363 scarabeus 1.37 ESVN_REPO_URI="${ESVN_MIRROR}/${branch_prefix}/${PN}"
364     ESVN_PROJECT="${PN}${ESVN_PROJECT_SUFFIX}"
365 scarabeus 1.22 fi
366 scarabeus 1.38 # @ECLASS-VARIABLE: ESVN_UP_FREQ
367     # @DESCRIPTION:
368     # This variable is used for specifying the timeout between svn synces
369     # for kde-base and koffice modules. Does not affect misc apps.
370     # Default value is 1 hour.
371     [[ ${KDEBASE} = kde-base || ${KDEBASE} = koffice ]] && ESVN_UP_FREQ=${ESVN_UP_FREQ:-1}
372 scarabeus 1.22 ;;
373     *)
374 scarabeus 1.30 if [[ -n ${KDEBASE} ]]; then
375 scarabeus 1.22 if [[ -n ${KMNAME} ]]; then
376 scarabeus 1.30 case ${KMNAME} in
377     kdebase-apps)
378     _kmname="kdebase" ;;
379     *)
380 scarabeus 1.34 _kmname="${KMNAME}" ;;
381 scarabeus 1.30 esac
382 scarabeus 1.22 else
383     _kmname=${PN}
384     fi
385     _kmname_pv="${_kmname}-${PV}"
386     case ${KDEBASE} in
387     kde-base)
388     case ${PV} in
389 abcd 1.55 4.3.8[05] | 4.3.9[0568])
390 scarabeus 1.37 # block for normally packed unstable releases
391     SRC_URI="mirror://kde/unstable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
392 alexxy 1.46 4.3.[6-9]*)
393 scarabeus 1.54 # Repacked tarballs: need to depend on xz-utils to ensure that they can be unpacked
394     SRC_URI="http://dev.gentooexperimental.org/~alexxy/kde/${PV}/${_kmname_pv}.tar.xz"
395     DEPEND+=" app-arch/xz-utils"
396     ;;
397 scarabeus 1.22 *) SRC_URI="mirror://kde/stable/${PV}/src/${_kmname_pv}.tar.bz2" ;;
398     esac
399     ;;
400     koffice)
401 scarabeus 1.38 case ${PV} in
402 alexxy 1.46 2.0.[6-9]*) SRC_URI="mirror://kde/unstable/${_kmname_pv}/src/${_kmname_pv}.tar.bz2" ;;
403 tampakrap 1.53 *) SRC_URI="mirror://kde/stable/${_kmname_pv}/${_kmname_pv}.tar.bz2" ;;
404 scarabeus 1.38 esac
405 ingmar 1.1 esac
406 scarabeus 1.30 unset _kmname _kmname_pv
407     fi
408 scarabeus 1.22 ;;
409     esac
410 ingmar 1.1
411     debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
412    
413     # @ECLASS-VARIABLE: PREFIX
414     # @DESCRIPTION:
415 scarabeus 1.34 # Set the installation PREFIX for non kde-base applications. It defaults to /usr.
416     # kde-base packages go into KDE4 installation directory (KDEDIR) by default.
417 wired 1.42 # No matter the PREFIX, package will be built against KDE installed in KDEDIR.
418 ingmar 1.1
419     # @FUNCTION: kde4-base_pkg_setup
420     # @DESCRIPTION:
421 scarabeus 1.34 # Do the basic kdeprefix KDEDIR settings and determine with which kde should
422     # optional applications link
423 ingmar 1.1 kde4-base_pkg_setup() {
424 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
425 ingmar 1.1
426 scarabeus 1.47 # Prefix compat:
427 abcd 1.56 if [[ ${EAPI} == 2 ]] && ! use prefix; then
428     EPREFIX=
429     EROOT=${ROOT}
430     fi
431    
432 scarabeus 1.47 # Append missing trailing slash character
433     [[ ${EROOT} = */ ]] || EROOT+="/"
434    
435 scarabeus 1.34 # QA ebuilds
436     [[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})."
437    
438     # Don't set KDEHOME during compilation, it will cause access violations
439 jmbsvicetto 1.13 unset KDEHOME
440    
441 scarabeus 1.34 if [[ ${KDEBASE} = kde-base ]]; then
442     if use kdeprefix; then
443 abcd 1.56 KDEDIR=${EPREFIX}/usr/kde/${_kdedir}
444 scarabeus 1.34 else
445 abcd 1.56 KDEDIR=${EPREFIX}/usr
446 scarabeus 1.34 fi
447 abcd 1.56 : ${PREFIX:=${KDEDIR}}
448 scarabeus 1.29 else
449 scarabeus 1.34 # Determine KDEDIR by loooking for the closest match with KDE_MINIMAL
450     KDEDIR=
451     local kde_minimal_met
452     for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
453     [[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1
454     if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
455     if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
456 abcd 1.56 KDEDIR=${EPREFIX}/usr/kde/${slot}
457 scarabeus 1.34 else
458 abcd 1.56 KDEDIR=${EPREFIX}/usr
459 scarabeus 1.34 fi
460     break;
461     fi
462     done
463 scarabeus 1.37 unset slot
464 scarabeus 1.41
465     # Bail out if kdelibs required but not found
466     if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then
467     [[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!"
468     else
469 abcd 1.56 [[ -z ${KDEDIR} ]] && KDEDIR=${EPREFIX}/usr
470 scarabeus 1.41 fi
471    
472 abcd 1.56 : ${PREFIX:=${EPREFIX}/usr}
473 jmbsvicetto 1.13 fi
474 wired 1.42 # Point pkg-config path to KDE *.pc files
475     export PKG_CONFIG_PATH="${KDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
476     # Point to correct QT plugins path
477     QT_PLUGIN_PATH="${KDEDIR}/$(get_libdir)/kde4/plugins/"
478 jmbsvicetto 1.13
479 scarabeus 1.47 # Fix XDG collision with sandbox
480     export XDG_CONFIG_HOME="${T}"
481 scarabeus 1.34 # Not needed anymore
482 jmbsvicetto 1.13 unset _kdedir
483 zlin 1.4 }
484    
485     # @FUNCTION: kde4-base_src_unpack
486     # @DESCRIPTION:
487     # This function unpacks the source tarballs for KDE4 applications.
488 ingmar 1.1 kde4-base_src_unpack() {
489 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
490 ingmar 1.1
491 scarabeus 1.30 if [[ ${BUILD_TYPE} = live ]]; then
492 scarabeus 1.23 migrate_store_dir
493 scarabeus 1.22 subversion_src_unpack
494 abcd 1.56 elif [[ ${EAPI} == [23] ]]; then
495 scarabeus 1.54 local file
496     for file in ${A}; do
497 abcd 1.56 # This setup is because EAPI <= 3 cannot unpack *.tar.xz files
498 scarabeus 1.54 # directly, so we do it ourselves (using the exact same code as portage)
499     case ${file} in
500     *.tar.xz)
501     echo ">>> Unpacking ${file} to ${PWD}"
502     xz -dc "${DISTDIR}"/${file} | tar xof -
503     assert "failed unpacking ${file}"
504     ;;
505     *)
506     unpack ${file}
507     ;;
508     esac
509     done
510 ingmar 1.1 else
511 abcd 1.56 # For EAPI >= 4, we can just use unpack() directly
512 scarabeus 1.54 unpack ${A}
513 ingmar 1.1 fi
514 scarabeus 1.22 }
515 ingmar 1.1
516 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
517 scarabeus 1.22 # @DESCRIPTION:
518     # General pre-configure and pre-compile function for KDE4 applications.
519     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
520 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
521     # in kde4-functions.eclass(5) for further details.
522 scarabeus 1.22 kde4-base_src_prepare() {
523     debug-print-function ${FUNCNAME} "$@"
524 zlin 1.8
525     # Only enable selected languages, used for KDE extragear apps.
526 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
527 zlin 1.8 enable_selected_linguas
528     fi
529 ingmar 1.1
530 wired 1.42 # Enable/disable handbooks for kde4-base packages
531 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
532     # kdelibs inherits kde4-base but handle installing the handbook itself
533 wired 1.42 if ! has kde4-meta ${INHERITED}; then
534 scarabeus 1.44 has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas
535 wired 1.42 fi
536    
537 scarabeus 1.38 [[ ${BUILD_TYPE} = live ]] && subversion_src_prepare
538 scarabeus 1.22 base_src_prepare
539 scarabeus 1.20
540 scarabeus 1.22 # Save library dependencies
541 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
542 scarabeus 1.22 save_library_dependencies
543     fi
544 scarabeus 1.20
545 scarabeus 1.22 # Inject library dependencies
546 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
547 scarabeus 1.22 load_library_dependencies
548 jmbsvicetto 1.13 fi
549 ingmar 1.1 }
550    
551     # @FUNCTION: kde4-base_src_configure
552     # @DESCRIPTION:
553     # Function for configuring the build of KDE4 applications.
554     kde4-base_src_configure() {
555     debug-print-function ${FUNCNAME} "$@"
556    
557     # Build tests in src_test only, where we override this value
558 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
559 ingmar 1.1
560 scarabeus 1.54 if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
561 abcd 1.56 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
562 scarabeus 1.54 fi
563    
564 scarabeus 1.38 if has debug ${IUSE//+} && use debug; then
565 scarabeus 1.54 # Set "real" debug mode
566 scarabeus 1.38 CMAKE_BUILD_TYPE="Debugfull"
567 scarabeus 1.54 else
568     # Handle common release builds
569     append-cppflags -DQT_NO_DEBUG
570 scarabeus 1.38 fi
571    
572 ingmar 1.1 # Set distribution name
573 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
574 ingmar 1.1
575     # Here we set the install prefix
576 abcd 1.56 cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${PREFIX}")
577 jmbsvicetto 1.13
578 wired 1.42 # Use colors
579 ingmar 1.1 QTEST_COLORED=1
580 jmbsvicetto 1.13
581 scarabeus 1.34 # Shadow existing /usr installations
582     unset KDEDIRS
583    
584 scarabeus 1.45 # Handle kdeprefix-ed KDE
585 abcd 1.56 if [[ ${KDEDIR} != ${EPREFIX}/usr ]]; then
586 scarabeus 1.37 # Override some environment variables - only when kdeprefix is different,
587     # to not break ccache/distcc
588 scarabeus 1.34 PATH="${KDEDIR}/bin:${PATH}"
589     LDPATH="${KDEDIR}/$(get_libdir):${LDPATH}"
590 scarabeus 1.37
591     # Append full RPATH
592 abcd 1.56 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
593 scarabeus 1.34
594 scarabeus 1.45 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
595 scarabeus 1.34 # when more are present
596 abcd 1.56 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${KDEDIR}")
597 scarabeus 1.45 fi
598    
599     # Handle kdeprefix in application itself
600     if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
601 scarabeus 1.34 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
602 abcd 1.56 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
603     fi
604    
605     if [[ $(declare -p mycmakeargs) != "declare -a mycmakeargs="* ]]; then
606     mycmakeargs=(${mycmakeargs})
607 scarabeus 1.22 fi
608    
609 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
610 scarabeus 1.34
611     cmake-utils_src_configure
612 scarabeus 1.22 }
613    
614     # @FUNCTION: kde4-base_src_compile
615     # @DESCRIPTION:
616     # General function for compiling KDE4 applications.
617     kde4-base_src_compile() {
618     debug-print-function ${FUNCNAME} "$@"
619    
620 wired 1.42 cmake-utils_src_compile "$@"
621 ingmar 1.1 }
622    
623     # @FUNCTION: kde4-base_src_test
624     # @DESCRIPTION:
625     # Function for testing KDE4 applications.
626     kde4-base_src_test() {
627     debug-print-function ${FUNCNAME} "$@"
628    
629     # Override this value, set in kde4-base_src_configure()
630 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
631 scarabeus 1.30 cmake-utils_src_configure
632     kde4-base_src_compile
633 ingmar 1.1
634     cmake-utils_src_test
635     }
636    
637     # @FUNCTION: kde4-base_src_install
638     # @DESCRIPTION:
639     # Function for installing KDE4 applications.
640     kde4-base_src_install() {
641     debug-print-function ${FUNCNAME} "$@"
642    
643 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
644 scarabeus 1.22 install_library_dependencies
645     fi
646    
647 ingmar 1.1 kde4-base_src_make_doc
648 scarabeus 1.32 cmake-utils_src_install
649 ingmar 1.1 }
650    
651     # @FUNCTION: kde4-base_src_make_doc
652     # @DESCRIPTION:
653     # Function for installing the documentation of KDE4 applications.
654     kde4-base_src_make_doc() {
655     debug-print-function ${FUNCNAME} "$@"
656    
657     local doc
658     for doc in AUTHORS ChangeLog* README* NEWS TODO; do
659 scarabeus 1.30 [[ -s ${doc} ]] && dodoc ${doc}
660 ingmar 1.1 done
661    
662 scarabeus 1.30 if [[ -z ${KMNAME} ]]; then
663 ingmar 1.1 for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*}; do
664 scarabeus 1.30 if [[ -s ${doc} ]]; then
665 ingmar 1.1 local doc_complete=${doc}
666     doc="${doc#*/}"
667     newdoc "$doc_complete" "${doc%/*}.${doc##*/}"
668     fi
669     done
670     fi
671    
672 abcd 1.56 [[ -z ${ED} ]] && ED=${D}${EPREFIX}
673    
674     if [[ -n ${KDEBASE} ]] && [[ -d ${ED}usr/share/doc/${PF} ]]; then
675 ingmar 1.1 # work around bug #97196
676 scarabeus 1.34 dodir /usr/share/doc/KDE4 && \
677 abcd 1.56 cp -r "${ED}usr/share/doc/${PF}" "${ED}usr/share/doc/KDE4/" || \
678 scarabeus 1.34 die "Failed to move docs to KDE4/."
679 abcd 1.56 rm -rf "${ED}usr/share/doc/${PF}"
680 ingmar 1.1 fi
681     }
682    
683     # @FUNCTION: kde4-base_pkg_postinst
684     # @DESCRIPTION:
685     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
686     kde4-base_pkg_postinst() {
687 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
688    
689 ingmar 1.1 buildsycoca
690 scarabeus 1.36
691     if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
692     echo
693 wired 1.42 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
694 scarabeus 1.36 einfo "Use it at your own risk."
695     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
696     echo
697 scarabeus 1.39 elif [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then
698     # warning about kdeprefix for non-live users
699     echo
700 wired 1.42 ewarn "WARNING! You have the kdeprefix useflag enabled."
701     ewarn "This setting is strongly discouraged and might lead to potential trouble"
702 scarabeus 1.39 ewarn "with KDE update strategies."
703 wired 1.42 ewarn "You are using this setup at your own risk and the kde team does not"
704 scarabeus 1.39 ewarn "take responsibilities for dead kittens."
705     echo
706 scarabeus 1.36 fi
707 ingmar 1.1 }
708    
709     # @FUNCTION: kde4-base_pkg_postrm
710     # @DESCRIPTION:
711     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
712     kde4-base_pkg_postrm() {
713 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
714    
715 ingmar 1.1 buildsycoca
716     }

  ViewVC Help
Powered by ViewVC 1.1.20