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

Contents of /eclass/kde4-base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.58 - (hide annotations) (download)
Tue Feb 2 14:20:16 2010 UTC (4 years, 6 months ago) by reavertm
Branch: MAIN
Changes since 1.57: +20 -17 lines
Synchronized KDE eclasses from overlay, changes:
- KDE SC 4.5 support
- EAPI-3 support
- prefix support
- moved docs to /usr/share/doc/${PF}
- applied override for kdepim hardcoded checks

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 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 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     >=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 reavertm 1.58 4.[34].8[05] | 4.[34].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 reavertm 1.58 4.[34].[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 reavertm 1.58 elif [[ ${EAPI} == 2 ]]; then
497 scarabeus 1.54 local file
498     for file in ${A}; do
499 reavertm 1.58 # This setup is because EAPI <= 2 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 reavertm 1.58 # For EAPI >= 3, 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 reavertm 1.58
541     # Apply patches
542 scarabeus 1.22 base_src_prepare
543 reavertm 1.58 epatch_user
544 scarabeus 1.20
545 scarabeus 1.22 # Save library dependencies
546 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
547 scarabeus 1.22 save_library_dependencies
548     fi
549 scarabeus 1.20
550 scarabeus 1.22 # Inject library dependencies
551 scarabeus 1.30 if [[ -n ${KMLOADLIBS} ]] ; then
552 scarabeus 1.22 load_library_dependencies
553 jmbsvicetto 1.13 fi
554 ingmar 1.1 }
555    
556     # @FUNCTION: kde4-base_src_configure
557     # @DESCRIPTION:
558     # Function for configuring the build of KDE4 applications.
559     kde4-base_src_configure() {
560     debug-print-function ${FUNCNAME} "$@"
561    
562     # Build tests in src_test only, where we override this value
563 abcd 1.56 local cmakeargs=(-DKDE4_BUILD_TESTS=OFF)
564 ingmar 1.1
565 scarabeus 1.54 if has kdeenablefinal ${IUSE//+} && use kdeenablefinal; then
566 abcd 1.56 cmakeargs+=(-DKDE4_ENABLE_FINAL=ON)
567 scarabeus 1.54 fi
568    
569 scarabeus 1.38 if has debug ${IUSE//+} && use debug; then
570 scarabeus 1.54 # Set "real" debug mode
571 scarabeus 1.38 CMAKE_BUILD_TYPE="Debugfull"
572 scarabeus 1.54 else
573     # Handle common release builds
574     append-cppflags -DQT_NO_DEBUG
575 scarabeus 1.38 fi
576    
577 ingmar 1.1 # Set distribution name
578 abcd 1.56 [[ ${PN} = kdelibs ]] && cmakeargs+=(-DKDE_DISTRIBUTION_TEXT=Gentoo)
579 ingmar 1.1
580     # Here we set the install prefix
581 abcd 1.57 cmakeargs+=(-DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}")
582 jmbsvicetto 1.13
583 wired 1.42 # Use colors
584 ingmar 1.1 QTEST_COLORED=1
585 jmbsvicetto 1.13
586 scarabeus 1.34 # Shadow existing /usr installations
587     unset KDEDIRS
588    
589 scarabeus 1.45 # Handle kdeprefix-ed KDE
590 abcd 1.57 if [[ ${KDEDIR} != /usr ]]; then
591 scarabeus 1.37 # Override some environment variables - only when kdeprefix is different,
592     # to not break ccache/distcc
593 abcd 1.57 PATH="${EKDEDIR}/bin:${PATH}"
594     LDPATH="${EKDEDIR}/$(get_libdir)${LDPATH+:}${LDPATH}"
595 scarabeus 1.37
596     # Append full RPATH
597 abcd 1.56 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
598 scarabeus 1.34
599 scarabeus 1.45 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
600 scarabeus 1.34 # when more are present
601 abcd 1.57 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
602 scarabeus 1.45 fi
603    
604     # Handle kdeprefix in application itself
605     if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
606 scarabeus 1.34 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc
607 abcd 1.56 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
608     fi
609    
610 abcd 1.57 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
611 abcd 1.56 mycmakeargs=(${mycmakeargs})
612 scarabeus 1.22 fi
613    
614 abcd 1.56 mycmakeargs=("${cmakeargs[@]}" "${mycmakeargs[@]}")
615 scarabeus 1.34
616     cmake-utils_src_configure
617 scarabeus 1.22 }
618    
619     # @FUNCTION: kde4-base_src_compile
620     # @DESCRIPTION:
621     # General function for compiling KDE4 applications.
622     kde4-base_src_compile() {
623     debug-print-function ${FUNCNAME} "$@"
624    
625 wired 1.42 cmake-utils_src_compile "$@"
626 ingmar 1.1 }
627    
628     # @FUNCTION: kde4-base_src_test
629     # @DESCRIPTION:
630     # Function for testing KDE4 applications.
631     kde4-base_src_test() {
632     debug-print-function ${FUNCNAME} "$@"
633    
634     # Override this value, set in kde4-base_src_configure()
635 abcd 1.56 mycmakeargs+=(-DKDE4_BUILD_TESTS=ON)
636 scarabeus 1.30 cmake-utils_src_configure
637     kde4-base_src_compile
638 ingmar 1.1
639     cmake-utils_src_test
640     }
641    
642     # @FUNCTION: kde4-base_src_install
643     # @DESCRIPTION:
644     # Function for installing KDE4 applications.
645     kde4-base_src_install() {
646     debug-print-function ${FUNCNAME} "$@"
647    
648 abcd 1.57 # Prefix support, for usage in ebuilds
649     if [[ ${EAPI} == 2 ]] && ! use prefix; then
650     ED=${D}
651     fi
652    
653 scarabeus 1.30 if [[ -n ${KMSAVELIBS} ]] ; then
654 scarabeus 1.22 install_library_dependencies
655     fi
656    
657 ingmar 1.1 kde4-base_src_make_doc
658 scarabeus 1.32 cmake-utils_src_install
659 ingmar 1.1 }
660    
661     # @FUNCTION: kde4-base_src_make_doc
662     # @DESCRIPTION:
663     # Function for installing the documentation of KDE4 applications.
664     kde4-base_src_make_doc() {
665     debug-print-function ${FUNCNAME} "$@"
666    
667     local doc
668     for doc in AUTHORS ChangeLog* README* NEWS TODO; do
669 scarabeus 1.30 [[ -s ${doc} ]] && dodoc ${doc}
670 ingmar 1.1 done
671    
672 scarabeus 1.30 if [[ -z ${KMNAME} ]]; then
673 ingmar 1.1 for doc in {apps,runtime,workspace,.}/*/{AUTHORS,README*}; do
674 scarabeus 1.30 if [[ -s ${doc} ]]; then
675 ingmar 1.1 local doc_complete=${doc}
676     doc="${doc#*/}"
677     newdoc "$doc_complete" "${doc%/*}.${doc##*/}"
678     fi
679     done
680     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 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
708     # warn about not supported approach
709     if [[ ${KDE_REQUIRED} == always ]] || ( [[ ${KDE_REQUIRED} == optional ]] && use kde ); then
710     echo
711     ewarn "WARNING! Your system configuration contains neither \"kde-base/kdebase-runtime-meta\""
712     ewarn "nor \"kde-base/kdebase-startkde\". You need one of above."
713     ewarn "With this setting you are unsupported by KDE team."
714     ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
715     fi
716     fi
717 ingmar 1.1 }
718    
719     # @FUNCTION: kde4-base_pkg_postrm
720     # @DESCRIPTION:
721     # Function to rebuild the KDE System Configuration Cache after an application has been removed.
722     kde4-base_pkg_postrm() {
723 scarabeus 1.30 debug-print-function ${FUNCNAME} "$@"
724    
725 ingmar 1.1 buildsycoca
726     }

  ViewVC Help
Powered by ViewVC 1.1.20