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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.57 - (hide annotations) (download)
Mon Dec 14 19:44:15 2009 UTC (5 years, 6 months ago) by abcd
Branch: MAIN
Changes since 1.56: +22 -15 lines
Updates 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.57 KDEDIR=/usr/kde/${_kdedir}
444 scarabeus 1.34 else
445 abcd 1.57 KDEDIR=/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.57 KDEDIR=/usr/kde/${slot}
457 scarabeus 1.34 else
458 abcd 1.57 KDEDIR=/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.57 [[ -z ${KDEDIR} ]] && KDEDIR=/usr
470 scarabeus 1.41 fi
471    
472 abcd 1.57 : ${PREFIX:=/usr}
473 jmbsvicetto 1.13 fi
474 abcd 1.57 EKDEDIR=${EPREFIX}${KDEDIR}
475    
476 wired 1.42 # Point pkg-config path to KDE *.pc files
477 abcd 1.57 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
478 wired 1.42 # Point to correct QT plugins path
479 abcd 1.57 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/"
480 jmbsvicetto 1.13
481 scarabeus 1.47 # Fix XDG collision with sandbox
482     export XDG_CONFIG_HOME="${T}"
483 scarabeus 1.34 # Not needed anymore
484 jmbsvicetto 1.13 unset _kdedir
485 zlin 1.4 }
486    
487     # @FUNCTION: kde4-base_src_unpack
488     # @DESCRIPTION:
489     # This function unpacks the source tarballs for KDE4 applications.
490 ingmar 1.1 kde4-base_src_unpack() {
491 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
492 ingmar 1.1
493 scarabeus 1.30 if [[ ${BUILD_TYPE} = live ]]; then
494 scarabeus 1.23 migrate_store_dir
495 scarabeus 1.22 subversion_src_unpack
496 abcd 1.56 elif [[ ${EAPI} == [23] ]]; then
497 scarabeus 1.54 local file
498     for file in ${A}; do
499 abcd 1.56 # This setup is because EAPI <= 3 cannot unpack *.tar.xz files
500 scarabeus 1.54 # directly, so we do it ourselves (using the exact same code as portage)
501     case ${file} in
502     *.tar.xz)
503     echo ">>> Unpacking ${file} to ${PWD}"
504     xz -dc "${DISTDIR}"/${file} | tar xof -
505     assert "failed unpacking ${file}"
506     ;;
507     *)
508     unpack ${file}
509     ;;
510     esac
511     done
512 ingmar 1.1 else
513 abcd 1.56 # For EAPI >= 4, we can just use unpack() directly
514 scarabeus 1.54 unpack ${A}
515 ingmar 1.1 fi
516 scarabeus 1.22 }
517 ingmar 1.1
518 scarabeus 1.44 # @FUNCTION: kde4-base_src_prepare
519 scarabeus 1.22 # @DESCRIPTION:
520     # General pre-configure and pre-compile function for KDE4 applications.
521     # It also handles translations if KDE_LINGUAS is defined. See KDE_LINGUAS and
522 wired 1.42 # enable_selected_linguas() and enable_selected_doc_linguas()
523     # in kde4-functions.eclass(5) for further details.
524 scarabeus 1.22 kde4-base_src_prepare() {
525     debug-print-function ${FUNCNAME} "$@"
526 zlin 1.8
527     # Only enable selected languages, used for KDE extragear apps.
528 scarabeus 1.30 if [[ -n ${KDE_LINGUAS} ]]; then
529 zlin 1.8 enable_selected_linguas
530     fi
531 ingmar 1.1
532 wired 1.42 # Enable/disable handbooks for kde4-base packages
533 scarabeus 1.44 # kde-l10n inherits kde4-base but is metpackage, so no check for doc
534     # kdelibs inherits kde4-base but handle installing the handbook itself
535 wired 1.42 if ! has kde4-meta ${INHERITED}; then
536 scarabeus 1.44 has handbook ${IUSE//+} && [[ ${PN} != kde-l10n ]] && [[ ${PN} != kdelibs ]] && enable_selected_doc_linguas
537 wired 1.42 fi
538    
539 scarabeus 1.38 [[ ${BUILD_TYPE} = live ]] && subversion_src_prepare
540 scarabeus 1.22 base_src_prepare
541 scarabeus 1.20
542 scarabeus 1.22 # Save library dependencies
543 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
544 scarabeus 1.22 save_library_dependencies
545     fi
546 scarabeus 1.20
547 scarabeus 1.22 # Inject library dependencies
548 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
549 scarabeus 1.22 load_library_dependencies
550 jmbsvicetto 1.13 fi
551 ingmar 1.1 }
552    
553     # @FUNCTION: kde4-base_src_configure
554     # @DESCRIPTION:
555     # Function for configuring the build of KDE4 applications.
556     kde4-base_src_configure() {
557     debug-print-function ${FUNCNAME} "$@"
558    
559     # Build tests in src_test only, where we override this value
560 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
561 ingmar 1.1
562 scarabeus 1.54 if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
563 abcd 1.56 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
564 scarabeus 1.54 fi
565    
566 scarabeus 1.38 if has debug ${IUSE//+} && use debug; then
567 scarabeus 1.54 # Set "real" debug mode
568 scarabeus 1.38 CMAKE_BUILD_TYPE="Debugfull"
569 scarabeus 1.54 else
570     # Handle common release builds
571     append-cppflags -DQT_NO_DEBUG
572 scarabeus 1.38 fi
573    
574 ingmar 1.1 # Set distribution name
575 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
576 ingmar 1.1
577     # Here we set the install prefix
578 abcd 1.57 cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
579 jmbsvicetto 1.13
580 wired 1.42 # Use colors
581 ingmar 1.1 QTEST_COLORED=1
582 jmbsvicetto 1.13
583 scarabeus 1.34 # Shadow existing /usr installations
584     unset KDEDIRS
585    
586 scarabeus 1.45 # Handle kdeprefix-ed KDE
587 abcd 1.57 if [[ ${KDEDIR} != /usr ]]; then
588 scarabeus 1.37 # Override some environment variables - only when kdeprefix is different,
589     # to not break ccache/distcc
590 abcd 1.57 PATH="${EKDEDIR}/bin:${PATH}"
591     LDPATH="${EKDEDIR}/$(get_libdir)${LDPATH+:}${LDPATH}"
592 scarabeus 1.37
593     # Append full RPATH
594 abcd 1.56 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
595 scarabeus 1.34
596 scarabeus 1.45 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
597 scarabeus 1.34 # when more are present
598 abcd 1.57 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
599 scarabeus 1.45 fi
600    
601     # Handle kdeprefix in application itself
602     if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
603 scarabeus 1.34 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
604 abcd 1.56 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
605     fi
606    
607 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
608 abcd 1.56 mycmakeargs=(${mycmakeargs})
609 scarabeus 1.22 fi
610    
611 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
612 scarabeus 1.34
613     cmake-utils_src_configure
614 scarabeus 1.22 }
615    
616     # @FUNCTION: kde4-base_src_compile
617     # @DESCRIPTION:
618     # General function for compiling KDE4 applications.
619     kde4-base_src_compile() {
620     debug-print-function ${FUNCNAME} "$@"
621    
622 wired 1.42 cmake-utils_src_compile "$@"
623 ingmar 1.1 }
624    
625     # @FUNCTION: kde4-base_src_test
626     # @DESCRIPTION:
627     # Function for testing KDE4 applications.
628     kde4-base_src_test() {
629     debug-print-function ${FUNCNAME} "$@"
630    
631     # Override this value, set in kde4-base_src_configure()
632 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
633 scarabeus 1.30 cmake-utils_src_configure
634     kde4-base_src_compile
635 ingmar 1.1
636     cmake-utils_src_test
637     }
638    
639     # @FUNCTION: kde4-base_src_install
640     # @DESCRIPTION:
641     # Function for installing KDE4 applications.
642     kde4-base_src_install() {
643     debug-print-function ${FUNCNAME} "$@"
644    
645 abcd 1.57 # Prefix support, for usage in ebuilds
646     if [[ ${EAPI} == 2 ]] && ! use prefix; then
647     ED=${D}
648     fi
649    
650 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
651 scarabeus 1.22 install_library_dependencies
652     fi
653    
654 ingmar 1.1 kde4-base_src_make_doc
655 scarabeus 1.32 cmake-utils_src_install
656 ingmar 1.1 }
657    
658     # @FUNCTION: kde4-base_src_make_doc
659     # @DESCRIPTION:
660     # Function for installing the documentation of KDE4 applications.
661     kde4-base_src_make_doc() {
662     debug-print-function ${FUNCNAME} "$@"
663    
664     local doc
665     for doc in AUTHORS ChangeLog* README* NEWS TODO; do
666 scarabeus 1.30 [[ -s ${doc} ]] && dodoc ${doc}
667 ingmar 1.1 done
668    
669 scarabeus 1.30 if [[ -z ${KMNAME} ]]; then
670 ingmar 1.1 for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*}; do
671 scarabeus 1.30 if [[ -s ${doc} ]]; then
672 ingmar 1.1 local doc_complete=${doc}
673     doc="${doc#*/}"
674     newdoc "$doc_complete" "${doc%/*}.${doc##*/}"
675     fi
676     done
677     fi
678    
679 abcd 1.57 [[ -z ${ED} ]] && ED=${D}
680 abcd 1.56
681     if [[ -n ${KDEBASE} ]] && [[ -d ${ED}usr/share/doc/${PF} ]]; then
682 ingmar 1.1 # work around bug #97196
683 scarabeus 1.34 dodir /usr/share/doc/KDE4 && \
684 abcd 1.56 cp -r "${ED}usr/share/doc/${PF}" "${ED}usr/share/doc/KDE4/" || \
685 scarabeus 1.34 die "Failed to move docs to KDE4/."
686 abcd 1.56 rm -rf "${ED}usr/share/doc/${PF}"
687 ingmar 1.1 fi
688     }
689    
690     # @FUNCTION: kde4-base_pkg_postinst
691     # @DESCRIPTION:
692     # Function to rebuild the KDE System Configuration Cache after an application has been installed.
693     kde4-base_pkg_postinst() {
694 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
695    
696 ingmar 1.1 buildsycoca
697 scarabeus 1.36
698     if [[ ${BUILD_TYPE} = live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
699     echo
700 wired 1.42 einfo "WARNING! This is an experimental live ebuild of ${CATEGORY}/${PN}"
701 scarabeus 1.36 einfo "Use it at your own risk."
702     einfo "Do _NOT_ file bugs at bugs.gentoo.org because of this ebuild!"
703     echo
704 scarabeus 1.39 elif [[ ${BUILD_TYPE} != live ]] && [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && has kdeprefix ${IUSE//+} && use kdeprefix; then
705     # warning about kdeprefix for non-live users
706     echo
707 wired 1.42 ewarn "WARNING! You have the kdeprefix useflag enabled."
708     ewarn "This setting is strongly discouraged and might lead to potential trouble"
709 scarabeus 1.39 ewarn "with KDE update strategies."
710 wired 1.42 ewarn "You are using this setup at your own risk and the kde team does not"
711 scarabeus 1.39 ewarn "take responsibilities for dead kittens."
712     echo
713 scarabeus 1.36 fi
714 ingmar 1.1 }
715    
716     # @FUNCTION: kde4-base_pkg_postrm
717     # @DESCRIPTION:
718     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
719     kde4-base_pkg_postrm() {
720 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
721    
722 ingmar 1.1 buildsycoca
723     }

  ViewVC Help
Powered by ViewVC 1.1.20